Changeset 8d7ec69d in mainline for uspace/srv/net
- Timestamp:
- 2012-01-22T10:40:07Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c38e417, cf9cb36
- Parents:
- e98fe28c
- Location:
- uspace/srv/net
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/net/net.c
re98fe28c r8d7ec69d 2 2 * Copyright (c) 2009 Lukas Mejdrech 3 3 * Copyright (c) 2011 Radim Vansa 4 * Copyright (c) 2011 Jiri Svoboda 4 5 * All rights reserved. 5 6 * … … 363 364 break; 364 365 default: 366 printf("%s: Unknown service\n", NAME); 365 367 return ENOENT; 366 368 } -
uspace/srv/net/nil/eth/eth.c
re98fe28c r8d7ec69d 170 170 INT_MAP_IMPLEMENT(eth_protos, eth_proto_t); 171 171 172 int nil_device_state_msg_local(nic_device_id_t device_id, sysarg_t state) 172 static void eth_nic_cb_connection(ipc_callid_t iid, ipc_call_t *icall, 173 void *arg); 174 175 static int eth_device_state(nic_device_id_t device_id, sysarg_t state) 173 176 { 174 177 int index; … … 344 347 } 345 348 346 nic_connect_to_nil(device->sess, SERVICE_ETHERNET, device_id); 349 rc = nic_callback_create(device->sess, device_id, 350 eth_nic_cb_connection, NULL); 351 if (rc != EOK) { 352 fibril_rwlock_write_unlock(ð_globals.devices_lock); 353 async_hangup(device->sess); 354 free(device); 355 return EIO; 356 } 347 357 348 358 /* Get hardware address */ … … 822 832 823 833 rc = async_data_write_accept(&data, false, 0, 0, 0, &size); 824 if (rc != EOK) 834 if (rc != EOK) { 835 printf("%s: data_write_accept() failed\n", NAME); 825 836 return rc; 837 } 826 838 827 839 packet_t *packet = packet_get_1_remote(eth_globals.net_sess, size); … … 943 955 944 956 return EOK; 945 case NET_NIL_DEVICE_STATE:946 nil_device_state_msg_local(IPC_GET_DEVICE(*call), IPC_GET_STATE(*call));947 async_answer_0(callid, EOK);948 return EOK;949 case NET_NIL_RECEIVED:950 rc = eth_received(IPC_GET_ARG1(*call));951 async_answer_0(callid, (sysarg_t) rc);952 return rc;953 case NET_NIL_ADDR_CHANGED:954 rc = eth_addr_changed(IPC_GET_DEVICE(*call));955 async_answer_0(callid, (sysarg_t) rc);956 return rc;957 957 } 958 958 959 959 return ENOTSUP; 960 } 961 962 static void eth_nic_cb_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg) 963 { 964 int rc; 965 966 async_answer_0(iid, EOK); 967 968 while (true) { 969 ipc_call_t call; 970 ipc_callid_t callid = async_get_call(&call); 971 972 if (!IPC_GET_IMETHOD(call)) 973 break; 974 975 switch (IPC_GET_IMETHOD(call)) { 976 case NIC_EV_DEVICE_STATE: 977 rc = eth_device_state(IPC_GET_ARG1(call), 978 IPC_GET_ARG2(call)); 979 async_answer_0(callid, (sysarg_t) rc); 980 break; 981 case NIC_EV_RECEIVED: 982 rc = eth_received(IPC_GET_ARG1(call)); 983 async_answer_0(callid, (sysarg_t) rc); 984 break; 985 case NIC_EV_ADDR_CHANGED: 986 rc = eth_addr_changed(IPC_GET_ARG1(call)); 987 async_answer_0(callid, (sysarg_t) rc); 988 break; 989 default: 990 async_answer_0(callid, ENOTSUP); 991 } 992 } 960 993 } 961 994 -
uspace/srv/net/nil/nildummy/nildummy.c
re98fe28c r8d7ec69d 2 2 * Copyright (c) 2009 Lukas Mejdrech 3 3 * Copyright (c) 2011 Radim Vansa 4 * Copyright (c) 2011 Jiri Svoboda 4 5 * All rights reserved. 5 6 * … … 69 70 DEVICE_MAP_IMPLEMENT(nildummy_devices, nildummy_device_t); 70 71 71 int nil_device_state_msg_local(nic_device_id_t device_id, sysarg_t state) 72 static void nildummy_nic_cb_conn(ipc_callid_t iid, ipc_call_t *icall, 73 void *arg); 74 75 static int nildummy_device_state(nic_device_id_t device_id, sysarg_t state) 72 76 { 73 77 fibril_rwlock_read_lock(&nildummy_globals.protos_lock); … … 78 82 79 83 return EOK; 84 } 85 86 static int nildummy_addr_changed(nic_device_id_t device_id) 87 { 88 return ENOTSUP; 80 89 } 81 90 … … 173 182 } 174 183 175 nic_connect_to_nil(device->sess, SERVICE_NILDUMMY, device_id); 184 int rc = nic_callback_create(device->sess, device_id, 185 nildummy_nic_cb_conn, NULL); 186 if (rc != EOK) { 187 async_hangup(device->sess); 188 189 return ENOENT; 190 } 176 191 177 192 /* Get hardware address */ 178 intrc = nic_get_address(device->sess, &device->addr);193 rc = nic_get_address(device->sess, &device->addr); 179 194 if (rc != EOK) { 180 195 fibril_rwlock_write_unlock(&nildummy_globals.devices_lock); … … 445 460 *answer_count = 1; 446 461 return rc; 447 case NET_NIL_DEVICE_STATE:448 rc = nil_device_state_msg_local(IPC_GET_DEVICE(*call),449 IPC_GET_STATE(*call));450 async_answer_0(callid, (sysarg_t) rc);451 return rc;452 453 case NET_NIL_RECEIVED:454 rc = nildummy_received(IPC_GET_ARG1(*call));455 async_answer_0(callid, (sysarg_t) rc);456 return rc;457 462 } 458 463 459 464 return ENOTSUP; 460 465 } 466 467 static void nildummy_nic_cb_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg) 468 { 469 int rc; 470 471 async_answer_0(iid, EOK); 472 473 while (true) { 474 ipc_call_t call; 475 ipc_callid_t callid = async_get_call(&call); 476 477 if (!IPC_GET_IMETHOD(call)) 478 break; 479 480 switch (IPC_GET_IMETHOD(call)) { 481 case NIC_EV_DEVICE_STATE: 482 rc = nildummy_device_state(IPC_GET_ARG1(call), 483 IPC_GET_ARG2(call)); 484 async_answer_0(callid, (sysarg_t) rc); 485 break; 486 case NIC_EV_RECEIVED: 487 rc = nildummy_received(IPC_GET_ARG1(call)); 488 async_answer_0(callid, (sysarg_t) rc); 489 break; 490 case NIC_EV_ADDR_CHANGED: 491 rc = nildummy_addr_changed(IPC_GET_ARG1(call)); 492 async_answer_0(callid, (sysarg_t) rc); 493 break; 494 default: 495 async_answer_0(callid, ENOTSUP); 496 } 497 } 498 } 499 461 500 462 501 int main(int argc, char *argv[])
Note:
See TracChangeset
for help on using the changeset viewer.