Changeset 7715994 in mainline for uspace/srv/net/il/ip/ip_remote.c


Ignore:
Timestamp:
2010-03-13T12:17:02Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
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.
Message:

Merge mainline changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/il/ip/ip_remote.c

    rd0febca r7715994  
    5252#include "ip_messages.h"
    5353
    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 );
     54int 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);
    5656}
    5757
    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 );
     58int 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);
    6060}
    6161
    62 int ip_connect_module( services_t service ){
    63         return connect_to_service( SERVICE_IP );
     62int ip_connect_module(services_t service){
     63        return connect_to_service(SERVICE_IP);
    6464}
    6565
    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 );
     66int 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);
    6868}
    6969
    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 }
     70int 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;
    7374
    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        }
    7781
    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);
    10291                        }
    10392                }
    10493        }
    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);
    10898        }else{
    109                 * device_id = IPC_GET_DEVICE( & answer );
     99                *device_id = IPC_GET_DEVICE(&answer);
    110100        }
    111         return ( int ) result;
     101        return (int) result;
     102}
     103
     104int 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
     108int 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
     112int 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
     116int 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);
    112118}
    113119
Note: See TracChangeset for help on using the changeset viewer.