Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset bd8bfc5a in mainline


Ignore:
Timestamp:
2012-02-12T20:43:13Z (8 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
fe4310f
Parents:
df15e5f
Message:

Implement inet_get_srcaddr().

Location:
uspace
Files:
3 edited

Legend:

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

    rdf15e5f rbd8bfc5a  
    137137        async_exch_t *exch = async_exchange_begin(inet_sess);
    138138
    139         int rc = async_req_1_1(exch, INET_GET_SRCADDR, remote->ipv4,
    140             &local_addr);
     139        int rc = async_req_2_1(exch, INET_GET_SRCADDR, remote->ipv4,
     140            tos, &local_addr);
    141141        async_exchange_end(exch);
    142142
  • uspace/srv/ethip/ethip_nic.c

    rdf15e5f rbd8bfc5a  
    303303int ethip_nic_send(ethip_nic_t *nic, void *data, size_t size)
    304304{
     305        log_msg(LVL_DEBUG, "ethip_nic_send(size=%zu)", size);
    305306        return nic_send_frame(nic->sess, data, size);
    306307}
  • uspace/srv/inet/inet.c

    rdf15e5f rbd8bfc5a  
    122122}
    123123
     124static int inet_get_srcaddr(inet_client_t *client, inet_addr_t *remote,
     125    uint8_t tos, inet_addr_t *local)
     126{
     127        inet_addrobj_t *addr;
     128
     129        addr = inet_addrobj_find(remote, iaf_net);
     130        if (addr != NULL) {
     131                /* Destination is directly accessible */
     132                local->ipv4 = addr->naddr.ipv4;
     133                return EOK;
     134        }
     135
     136        return ENOENT;
     137}
     138
    124139static void inet_get_srcaddr_srv(inet_client_t *client, ipc_callid_t callid,
    125140    ipc_call_t *call)
    126141{
     142        inet_addr_t remote;
     143        uint8_t tos;
     144        inet_addr_t local;
     145        int rc;
     146
    127147        log_msg(LVL_DEBUG, "inet_get_srcaddr_srv()");
    128148
    129         async_answer_0(callid, ENOTSUP);
     149        remote.ipv4 = IPC_GET_ARG1(*call);
     150        tos = IPC_GET_ARG2(*call);
     151        local.ipv4 = 0;
     152
     153        rc = inet_get_srcaddr(client, &remote, tos, &local);
     154        async_answer_1(callid, rc, local.ipv4);
    130155}
    131156
Note: See TracChangeset for help on using the changeset viewer.