Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/inetsrv.c

    ra1a101d ra2e3ee6  
    9898        }
    9999       
     100        inet_sroute_t *sroute = inet_sroute_new();
     101        if (sroute == NULL) {
     102                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed creating default route (%d).", rc);
     103                return ENOMEM;
     104        }
     105
     106        inet_naddr(&sroute->dest, 0, 0, 0, 0, 0);
     107        inet_addr(&sroute->router, 10, 0, 2, 2);
     108        sroute->name = str_dup("default");
     109        inet_sroute_add(sroute);
     110
    100111        rc = inet_link_discovery_start();
    101112        if (rc != EOK)
     
    182193
    183194        /* Take source address from the address object */
    184         local->ipv4 = dir.aobj->naddr.ipv4;
     195        inet_naddr_addr(&dir.aobj->naddr, local);
    185196        return EOK;
    186197}
     
    189200    ipc_call_t *call)
    190201{
     202        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()");
     203       
    191204        inet_addr_t remote;
    192         uint8_t tos;
     205        inet_addr_unpack(IPC_GET_ARG1(*call), &remote);
     206        uint8_t tos = IPC_GET_ARG2(*call);
     207       
    193208        inet_addr_t local;
    194         int rc;
    195 
    196         log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()");
    197 
    198         remote.ipv4 = IPC_GET_ARG1(*call);
    199         tos = IPC_GET_ARG2(*call);
    200         local.ipv4 = 0;
    201 
    202         rc = inet_get_srcaddr(&remote, tos, &local);
    203         async_answer_1(callid, rc, local.ipv4);
     209        int rc = inet_get_srcaddr(&remote, tos, &local);
     210        if (rc != EOK) {
     211                async_answer_0(callid, rc);
     212                return;
     213        }
     214       
     215        uint32_t local_addr;
     216        rc = inet_addr_pack(&local, &local_addr);
     217        if (rc != EOK) {
     218                async_answer_0(callid, rc);
     219                return;
     220        }
     221       
     222        async_answer_1(callid, rc, (sysarg_t) local_addr);
    204223}
    205224
     
    207226    ipc_call_t *call)
    208227{
     228        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()");
     229       
    209230        inet_dgram_t dgram;
    210         uint8_t ttl;
    211         int df;
    212         int rc;
    213 
    214         log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()");
    215 
    216         dgram.src.ipv4 = IPC_GET_ARG1(*call);
    217         dgram.dest.ipv4 = IPC_GET_ARG2(*call);
     231       
     232        inet_addr_unpack(IPC_GET_ARG1(*call), &dgram.src);
     233        inet_addr_unpack(IPC_GET_ARG2(*call), &dgram.dest);
    218234        dgram.tos = IPC_GET_ARG3(*call);
    219         ttl = IPC_GET_ARG4(*call);
    220         df = IPC_GET_ARG5(*call);
    221 
    222         rc = async_data_write_accept(&dgram.data, false, 0, 0, 0, &dgram.size);
     235       
     236        uint8_t ttl = IPC_GET_ARG4(*call);
     237        int df = IPC_GET_ARG5(*call);
     238       
     239        int rc = async_data_write_accept(&dgram.data, false, 0, 0, 0,
     240            &dgram.size);
    223241        if (rc != EOK) {
    224242                async_answer_0(callid, rc);
    225243                return;
    226244        }
    227 
     245       
    228246        rc = inet_send(client, &dgram, client->protocol, ttl, df);
    229 
     247       
    230248        free(dgram.data);
    231249        async_answer_0(callid, rc);
     
    353371int inet_ev_recv(inet_client_t *client, inet_dgram_t *dgram)
    354372{
     373        uint32_t src;
     374        int rc = inet_addr_pack(&dgram->src, &src);
     375        if (rc != EOK)
     376                return rc;
     377       
     378        uint32_t dest;
     379        rc = inet_addr_pack(&dgram->dest, &dest);
     380        if (rc != EOK)
     381                return rc;
     382       
    355383        async_exch_t *exch = async_exchange_begin(client->sess);
    356 
     384       
    357385        ipc_call_t answer;
    358         aid_t req = async_send_3(exch, INET_EV_RECV, dgram->src.ipv4,
    359             dgram->dest.ipv4, dgram->tos, &answer);
    360         int rc = async_data_write_start(exch, dgram->data, dgram->size);
     386        aid_t req = async_send_3(exch, INET_EV_RECV, (sysarg_t) src,
     387            (sysarg_t) dest, dgram->tos, &answer);
     388        rc = async_data_write_start(exch, dgram->data, dgram->size);
    361389        async_exchange_end(exch);
    362 
     390       
    363391        if (rc != EOK) {
    364392                async_forget(req);
    365393                return rc;
    366394        }
    367 
     395       
    368396        sysarg_t retval;
    369397        async_wait_for(req, &retval);
    370398        if (retval != EOK)
    371399                return retval;
    372 
     400       
    373401        return EOK;
    374402}
Note: See TracChangeset for help on using the changeset viewer.