Changeset 7715994 in mainline for uspace/srv/net/il/ip/ip_remote.c
- Timestamp:
- 2010-03-13T12:17:02Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6ba20a6b
- Parents:
- d0febca (diff), 2070570 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/il/ip/ip_remote.c
rd0febca r7715994 52 52 #include "ip_messages.h" 53 53 54 int ip_ device_req( int ip_phone, device_id_t device_id, services_t service){55 return generic_device_req( ip_phone, NET_IL_DEVICE, device_id, 0, service);54 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){ 55 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); 56 56 } 57 57 58 int ip_ send_msg( int ip_phone, device_id_t device_id, packet_t packet, services_t sender, services_t error){59 return generic_send_msg( ip_phone, NET_IL_SEND, device_id, packet_get_id( packet ), sender, error);58 int ip_bind_service(services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg){ 59 return (int) bind_service(service, (ipcarg_t) protocol, me, service, receiver); 60 60 } 61 61 62 int ip_connect_module( services_t service){63 return connect_to_service( SERVICE_IP);62 int ip_connect_module(services_t service){ 63 return connect_to_service(SERVICE_IP); 64 64 } 65 65 66 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){67 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);66 int ip_device_req(int ip_phone, device_id_t device_id, services_t service){ 67 return generic_device_req(ip_phone, NET_IL_DEVICE, device_id, 0, service); 68 68 } 69 69 70 int ip_set_gateway_req( int ip_phone, device_id_t device_id, in_addr_t gateway ){ 71 return ( int ) async_req_2_0( ip_phone, NET_IP_SET_GATEWAY, ( ipcarg_t ) device_id, ( ipcarg_t ) gateway.s_addr ); 72 } 70 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){ 71 aid_t message_id; 72 ipcarg_t result; 73 ipc_call_t answer; 73 74 74 int ip_packet_size_req( int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension ){ 75 return generic_packet_size_req( ip_phone, NET_IL_PACKET_SPACE, device_id, packet_dimension ); 76 } 75 if(!(destination && (addrlen > 0))){ 76 return EINVAL; 77 } 78 if(!(device_id && header && headerlen)){ 79 return EBADMEM; 80 } 77 81 78 int ip_bind_service( services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg ){ 79 return ( int ) bind_service( service, ( ipcarg_t ) protocol, me, service, receiver ); 80 } 81 82 int ip_received_error_msg( int ip_phone, device_id_t device_id, packet_t packet, services_t target, services_t error ){ 83 return generic_received_msg( ip_phone, NET_IP_RECEIVED_ERROR, device_id, packet_get_id( packet ), target, error ); 84 } 85 86 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 ){ 87 aid_t message_id; 88 ipcarg_t result; 89 ipc_call_t answer; 90 91 if( !( destination && ( addrlen > 0 ))) return EINVAL; 92 if( !( device_id && header && headerlen )) return EBADMEM; 93 * header = NULL; 94 message_id = async_send_1( ip_phone, NET_IP_GET_ROUTE, ( ipcarg_t ) protocol, & answer ); 95 if(( async_data_write_start( ip_phone, destination, addrlen ) == EOK ) 96 && ( async_data_read_start( ip_phone, headerlen, sizeof( * headerlen )) == EOK ) 97 && ( * headerlen > 0 )){ 98 * header = ( ip_pseudo_header_ref ) malloc( * headerlen ); 99 if( * header ){ 100 if( async_data_read_start( ip_phone, * header, * headerlen ) != EOK ){ 101 free( * header ); 82 *header = NULL; 83 message_id = async_send_1(ip_phone, NET_IP_GET_ROUTE, (ipcarg_t) protocol, &answer); 84 if((async_data_write_start(ip_phone, destination, addrlen) == EOK) 85 && (async_data_read_start(ip_phone, headerlen, sizeof(*headerlen)) == EOK) 86 && (*headerlen > 0)){ 87 *header = (ip_pseudo_header_ref) malloc(*headerlen); 88 if(*header){ 89 if(async_data_read_start(ip_phone, * header, * headerlen) != EOK){ 90 free(*header); 102 91 } 103 92 } 104 93 } 105 async_wait_for( message_id, & result ); 106 if(( result != EOK ) && ( * header )){ 107 free( * header ); 94 async_wait_for(message_id, &result); 95 96 if((result != EOK) && (*header)){ 97 free(*header); 108 98 }else{ 109 * device_id = IPC_GET_DEVICE( & answer);99 *device_id = IPC_GET_DEVICE(&answer); 110 100 } 111 return ( int ) result; 101 return (int) result; 102 } 103 104 int ip_packet_size_req(int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension){ 105 return generic_packet_size_req(ip_phone, NET_IL_PACKET_SPACE, device_id, packet_dimension); 106 } 107 108 int ip_received_error_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t target, services_t error){ 109 return generic_received_msg(ip_phone, NET_IP_RECEIVED_ERROR, device_id, packet_get_id(packet), target, error); 110 } 111 112 int ip_send_msg(int ip_phone, device_id_t device_id, packet_t packet, services_t sender, services_t error){ 113 return generic_send_msg(ip_phone, NET_IL_SEND, device_id, packet_get_id(packet), sender, error); 114 } 115 116 int ip_set_gateway_req(int ip_phone, device_id_t device_id, in_addr_t gateway){ 117 return (int) async_req_2_0(ip_phone, NET_IP_SET_GATEWAY, (ipcarg_t) device_id, (ipcarg_t) gateway.s_addr); 112 118 } 113 119
Note:
See TracChangeset
for help on using the changeset viewer.