Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/inet.c

    ra2e3ee6 r77ad86c  
    107107int inet_send(inet_dgram_t *dgram, uint8_t ttl, inet_df_t df)
    108108{
    109         uint32_t src;
    110         int rc = inet_addr_pack(&dgram->src, &src);
    111         if (rc != EOK)
    112                 return rc;
    113        
    114         uint32_t dest;
    115         rc = inet_addr_pack(&dgram->dest, &dest);
    116         if (rc != EOK)
    117                 return EOK;
    118        
    119109        async_exch_t *exch = async_exchange_begin(inet_sess);
    120        
     110
    121111        ipc_call_t answer;
    122         aid_t req = async_send_5(exch, INET_SEND, (sysarg_t) src,
    123             (sysarg_t) dest, dgram->tos, ttl, df, &answer);
    124         rc = async_data_write_start(exch, dgram->data, dgram->size);
    125        
     112        aid_t req = async_send_5(exch, INET_SEND, dgram->src.ipv4,
     113            dgram->dest.ipv4, dgram->tos, ttl, df, &answer);
     114        int rc = async_data_write_start(exch, dgram->data, dgram->size);
    126115        async_exchange_end(exch);
    127        
     116
    128117        if (rc != EOK) {
    129118                async_forget(req);
    130119                return rc;
    131120        }
    132        
     121
    133122        sysarg_t retval;
    134123        async_wait_for(req, &retval);
    135124        if (retval != EOK)
    136125                return retval;
    137        
     126
    138127        return EOK;
    139128}
     
    141130int inet_get_srcaddr(inet_addr_t *remote, uint8_t tos, inet_addr_t *local)
    142131{
    143         uint32_t remote_addr;
    144         int rc = inet_addr_pack(remote, &remote_addr);
     132        sysarg_t local_addr;
     133        async_exch_t *exch = async_exchange_begin(inet_sess);
     134
     135        int rc = async_req_2_1(exch, INET_GET_SRCADDR, remote->ipv4,
     136            tos, &local_addr);
     137        async_exchange_end(exch);
     138
    145139        if (rc != EOK)
    146140                return rc;
    147        
    148         async_exch_t *exch = async_exchange_begin(inet_sess);
    149        
    150         sysarg_t local_addr;
    151         rc = async_req_2_1(exch, INET_GET_SRCADDR, (sysarg_t) remote_addr,
    152             tos, &local_addr);
    153        
    154         async_exchange_end(exch);
    155        
    156         if (rc != EOK)
    157                 return rc;
    158        
    159         inet_addr_unpack(local_addr, local);
     141
     142        local->ipv4 = local_addr;
    160143        return EOK;
    161144}
     
    165148        int rc;
    166149        inet_dgram_t dgram;
    167        
    168         inet_addr_unpack(IPC_GET_ARG1(*call), &dgram.src);
    169         inet_addr_unpack(IPC_GET_ARG2(*call), &dgram.dest);
     150
     151        dgram.src.ipv4 = IPC_GET_ARG1(*call);
     152        dgram.dest.ipv4 = IPC_GET_ARG2(*call);
    170153        dgram.tos = IPC_GET_ARG3(*call);
    171154
Note: See TracChangeset for help on using the changeset viewer.