Changeset 24ab58b3 in mainline for uspace/lib/net/il/ip_remote.c
- Timestamp:
- 2010-04-06T11:41:48Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 14f1db0
- Parents:
- 4dd8529
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/net/il/ip_remote.c
r4dd8529 r24ab58b3 28 28 29 29 /** @addtogroup ip 30 * 30 * @{ 31 31 */ 32 32 33 33 /** @file 34 * IP interface implementation for standalone remote modules. 35 * @see ip_interface.h 36 * @see il_interface.h 34 * 35 * IP interface implementation for standalone remote modules. 36 * 37 * @see ip_interface.h 38 * @see il_interface.h 39 * 37 40 */ 38 41 … … 48 51 #include <ip_messages.h> 49 52 50 int ip_add_route_req(int ip_phone, device_id_t device_id, in_addr_t address, in_addr_t netmask, in_addr_t gateway){ 51 return (int) async_req_4_0(ip_phone, NET_IP_ADD_ROUTE, (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr, (ipcarg_t) address.s_addr, (ipcarg_t) netmask.s_addr); 53 int ip_add_route_req(int ip_phone, device_id_t device_id, in_addr_t address, 54 in_addr_t netmask, in_addr_t gateway) 55 { 56 return (int) async_req_4_0(ip_phone, NET_IP_ADD_ROUTE, 57 (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr, 58 (ipcarg_t) address.s_addr, (ipcarg_t) netmask.s_addr); 52 59 } 53 60 54 int ip_bind_service(services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg){ 55 return (int) bind_service(service, (ipcarg_t) protocol, me, service, receiver); 61 int ip_bind_service(services_t service, int protocol, services_t me, 62 async_client_conn_t receiver, tl_received_msg_t tl_received_msg) 63 { 64 return (int) bind_service(service, (ipcarg_t) protocol, me, service, 65 receiver); 56 66 } 57 67 58 int ip_connect_module(services_t service){ 68 int ip_connect_module(services_t service) 69 { 59 70 return connect_to_service(SERVICE_IP); 60 71 } 61 72 62 int ip_device_req(int ip_phone, device_id_t device_id, services_t service){ 73 int ip_device_req(int ip_phone, device_id_t device_id, services_t service) 74 { 63 75 return generic_device_req(ip_phone, NET_IL_DEVICE, device_id, 0, service); 64 76 } 65 77 66 int ip_get_route_req(int ip_phone, ip_protocol_t protocol, const struct sockaddr * destination, socklen_t addrlen, device_id_t * device_id, ip_pseudo_header_ref * header, size_t * headerlen){ 67 aid_t message_id; 68 ipcarg_t result; 78 int ip_get_route_req(int ip_phone, ip_protocol_t protocol, 79 const struct sockaddr *destination, socklen_t addrlen, 80 device_id_t *device_id, ip_pseudo_header_ref *header, size_t *headerlen) 81 { 82 if ((!destination) || (addrlen == 0)) 83 return EINVAL; 84 85 if ((!device_id) || (header) || (headerlen)) 86 return EBADMEM; 87 88 *header = NULL; 89 69 90 ipc_call_t answer; 70 71 if(!(destination && (addrlen > 0))){ 72 return EINVAL; 73 } 74 if(!(device_id && header && headerlen)){ 75 return EBADMEM; 76 } 77 78 *header = NULL; 79 message_id = async_send_1(ip_phone, NET_IP_GET_ROUTE, (ipcarg_t) protocol, &answer); 80 if((async_data_write_start(ip_phone, destination, addrlen) == EOK) 81 && (async_data_read_start(ip_phone, headerlen, sizeof(*headerlen)) == EOK) 82 && (*headerlen > 0)){ 91 aid_t message_id = async_send_1(ip_phone, NET_IP_GET_ROUTE, 92 (ipcarg_t) protocol, &answer); 93 94 if ((async_data_write_start(ip_phone, destination, addrlen) == EOK) 95 && (async_data_read_start(ip_phone, headerlen, sizeof(*headerlen)) == EOK) 96 && (*headerlen > 0)) { 83 97 *header = (ip_pseudo_header_ref) malloc(*headerlen); 84 if (*header){85 if (async_data_read_start(ip_phone, * header, * headerlen) != EOK){98 if (*header) { 99 if (async_data_read_start(ip_phone, *header, *headerlen) != EOK) 86 100 free(*header); 87 }88 101 } 89 102 } 103 104 ipcarg_t result; 90 105 async_wait_for(message_id, &result); 91 92 if ((result != EOK) && (*header)){106 107 if ((result != EOK) && (*header)) 93 108 free(*header); 94 }else{109 else 95 110 *device_id = IPC_GET_DEVICE(&answer); 96 }111 97 112 return (int) result; 98 113 } 99 114 100 int ip_packet_size_req(int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension){ 101 return generic_packet_size_req(ip_phone, NET_IL_PACKET_SPACE, device_id, packet_dimension); 115 int ip_packet_size_req(int ip_phone, device_id_t device_id, 116 packet_dimension_ref packet_dimension) 117 { 118 return generic_packet_size_req(ip_phone, NET_IL_PACKET_SPACE, device_id, 119 packet_dimension); 102 120 } 103 121 104 int ip_received_error_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t target, services_t error){ 105 return generic_received_msg(ip_phone, NET_IP_RECEIVED_ERROR, device_id, packet_get_id(packet), target, error); 122 int ip_received_error_msg(int ip_phone, device_id_t device_id, 123 packet_t packet, services_t target, services_t error) 124 { 125 return generic_received_msg(ip_phone, NET_IP_RECEIVED_ERROR, device_id, 126 packet_get_id(packet), target, error); 106 127 } 107 128 108 int ip_send_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t sender, services_t error){ 109 return generic_send_msg(ip_phone, NET_IL_SEND, device_id, packet_get_id(packet), sender, error); 129 int ip_send_msg(int ip_phone, device_id_t device_id, packet_t packet, 130 services_t sender, services_t error) 131 { 132 return generic_send_msg(ip_phone, NET_IL_SEND, device_id, 133 packet_get_id(packet), sender, error); 110 134 } 111 135 112 int ip_set_gateway_req(int ip_phone, device_id_t device_id, in_addr_t gateway){ 113 return (int) async_req_2_0(ip_phone, NET_IP_SET_GATEWAY, (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr); 136 int ip_set_gateway_req(int ip_phone, device_id_t device_id, in_addr_t gateway) 137 { 138 return (int) async_req_2_0(ip_phone, NET_IP_SET_GATEWAY, 139 (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr); 114 140 } 115 141
Note:
See TracChangeset
for help on using the changeset viewer.