Changeset a2e3ee6 in mainline for uspace/srv/net/inetsrv/inetsrv.c


Ignore:
Timestamp:
2013-06-20T16:45:58Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
08bb73b
Parents:
19a4f73
Message:

use new network address infrastructure (towards IPv6 support)

File:
1 edited

Legend:

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

    r19a4f73 ra2e3ee6  
    104104        }
    105105
    106         sroute->dest.ipv4 = 0;
    107         sroute->dest.bits = 0;
    108         sroute->router.ipv4 = (10 << 24) | (0 << 16) | (2 << 8) | 2;
     106        inet_naddr(&sroute->dest, 0, 0, 0, 0, 0);
     107        inet_addr(&sroute->router, 10, 0, 2, 2);
    109108        sroute->name = str_dup("default");
    110109        inet_sroute_add(sroute);
    111110
    112         rc = inet_link_discovery_start();
     111        rc = inet_link_discovery_start();
    113112        if (rc != EOK)
    114113                return EEXIST;
     
    194193
    195194        /* Take source address from the address object */
    196         local->ipv4 = dir.aobj->naddr.ipv4;
     195        inet_naddr_addr(&dir.aobj->naddr, local);
    197196        return EOK;
    198197}
     
    201200    ipc_call_t *call)
    202201{
     202        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()");
     203       
    203204        inet_addr_t remote;
    204         uint8_t tos;
     205        inet_addr_unpack(IPC_GET_ARG1(*call), &remote);
     206        uint8_t tos = IPC_GET_ARG2(*call);
     207       
    205208        inet_addr_t local;
    206         int rc;
    207 
    208         log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_get_srcaddr_srv()");
    209 
    210         remote.ipv4 = IPC_GET_ARG1(*call);
    211         tos = IPC_GET_ARG2(*call);
    212         local.ipv4 = 0;
    213 
    214         rc = inet_get_srcaddr(&remote, tos, &local);
    215         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);
    216223}
    217224
     
    219226    ipc_call_t *call)
    220227{
     228        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()");
     229       
    221230        inet_dgram_t dgram;
    222         uint8_t ttl;
    223         int df;
    224         int rc;
    225 
    226         log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_send_srv()");
    227 
    228         dgram.src.ipv4 = IPC_GET_ARG1(*call);
    229         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);
    230234        dgram.tos = IPC_GET_ARG3(*call);
    231         ttl = IPC_GET_ARG4(*call);
    232         df = IPC_GET_ARG5(*call);
    233 
    234         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);
    235241        if (rc != EOK) {
    236242                async_answer_0(callid, rc);
    237243                return;
    238244        }
    239 
     245       
    240246        rc = inet_send(client, &dgram, client->protocol, ttl, df);
    241 
     247       
    242248        free(dgram.data);
    243249        async_answer_0(callid, rc);
     
    365371int inet_ev_recv(inet_client_t *client, inet_dgram_t *dgram)
    366372{
     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       
    367383        async_exch_t *exch = async_exchange_begin(client->sess);
    368 
     384       
    369385        ipc_call_t answer;
    370         aid_t req = async_send_3(exch, INET_EV_RECV, dgram->src.ipv4,
    371             dgram->dest.ipv4, dgram->tos, &answer);
    372         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);
    373389        async_exchange_end(exch);
    374 
     390       
    375391        if (rc != EOK) {
    376392                async_forget(req);
    377393                return rc;
    378394        }
    379 
     395       
    380396        sysarg_t retval;
    381397        async_wait_for(req, &retval);
    382398        if (retval != EOK)
    383399                return retval;
    384 
     400       
    385401        return EOK;
    386402}
Note: See TracChangeset for help on using the changeset viewer.