Changeset 962f03b in mainline for uspace/lib/c


Ignore:
Timestamp:
2012-02-27T19:32:15Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56792a2
Parents:
87e5658c
Message:

IP links need to be made aware of configured IP addresses.

Location:
uspace/lib/c
Files:
5 edited

Legend:

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

    r87e5658c r962f03b  
    121121}
    122122
     123int iplink_addr_add(iplink_t *iplink, iplink_addr_t *addr)
     124{
     125        async_exch_t *exch = async_exchange_begin(iplink->sess);
     126
     127        int rc = async_req_1_0(exch, IPLINK_ADDR_ADD, (sysarg_t)addr->ipv4);
     128        async_exchange_end(exch);
     129
     130        return rc;
     131}
     132
     133int iplink_addr_remove(iplink_t *iplink, iplink_addr_t *addr)
     134{
     135        async_exch_t *exch = async_exchange_begin(iplink->sess);
     136
     137        int rc = async_req_1_0(exch, IPLINK_ADDR_REMOVE, (sysarg_t)addr->ipv4);
     138        async_exchange_end(exch);
     139
     140        return rc;
     141}
     142
    123143static void iplink_ev_recv(iplink_t *iplink, ipc_callid_t callid,
    124144    ipc_call_t *call)
  • uspace/lib/c/generic/iplink_srv.c

    r87e5658c r962f03b  
    4949        rc = srv->ops->get_mtu(srv, &mtu);
    5050        async_answer_1(callid, rc, mtu);
     51}
     52
     53static void iplink_addr_add_srv(iplink_srv_t *srv, ipc_callid_t callid,
     54    ipc_call_t *call)
     55{
     56        int rc;
     57        iplink_srv_addr_t addr;
     58
     59        addr.ipv4 = IPC_GET_ARG1(*call);
     60
     61        rc = srv->ops->addr_add(srv, &addr);
     62        async_answer_0(callid, rc);
     63}
     64
     65static void iplink_addr_remove_srv(iplink_srv_t *srv, ipc_callid_t callid,
     66    ipc_call_t *call)
     67{
     68        int rc;
     69        iplink_srv_addr_t addr;
     70
     71        addr.ipv4 = IPC_GET_ARG1(*call);
     72
     73        rc = srv->ops->addr_remove(srv, &addr);
     74        async_answer_0(callid, rc);
    5175}
    5276
     
    126150                        iplink_send_srv(srv, callid, &call);
    127151                        break;
     152                case IPLINK_ADDR_ADD:
     153                        iplink_addr_add_srv(srv, callid, &call);
     154                        break;
     155                case IPLINK_ADDR_REMOVE:
     156                        iplink_addr_remove_srv(srv, callid, &call);
     157                        break;
    128158                default:
    129159                        async_answer_0(callid, EINVAL);
  • uspace/lib/c/include/inet/iplink.h

    r87e5658c r962f03b  
    6969extern void iplink_close(iplink_t *);
    7070extern int iplink_send(iplink_t *, iplink_sdu_t *);
     71extern int iplink_addr_add(iplink_t *, iplink_addr_t *);
     72extern int iplink_addr_remove(iplink_t *, iplink_addr_t *);
    7173extern int iplink_get_mtu(iplink_t *, size_t *);
    7274
  • uspace/lib/c/include/inet/iplink_srv.h

    r87e5658c r962f03b  
    7272        int (*send)(iplink_srv_t *, iplink_srv_sdu_t *);
    7373        int (*get_mtu)(iplink_srv_t *, size_t *);
     74        int (*addr_add)(iplink_srv_t *, iplink_srv_addr_t *);
     75        int (*addr_remove)(iplink_srv_t *, iplink_srv_addr_t *);
    7476} iplink_ops_t;
    7577
  • uspace/lib/c/include/ipc/iplink.h

    r87e5658c r962f03b  
    4040typedef enum {
    4141        IPLINK_GET_MTU = IPC_FIRST_USER_METHOD,
    42         IPLINK_SEND
     42        IPLINK_SEND,
     43        IPLINK_ADDR_ADD,
     44        IPLINK_ADDR_REMOVE
    4345} iplink_request_t;
    4446
Note: See TracChangeset for help on using the changeset viewer.