Changeset 45aa22c in mainline for uspace/srv/inet/inetcfg.c


Ignore:
Timestamp:
2012-03-07T23:05:42Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a88a6eac
Parents:
0e25780
Message:

Creating static addresses with inetcfg.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/inet/inetcfg.c

    r0e25780 r45aa22c  
    3535 */
    3636
    37 #include <adt/list.h>
    3837#include <async.h>
    3938#include <errno.h>
    4039#include <macros.h>
    41 #include <fibril_synch.h>
    4240#include <io/log.h>
    4341#include <ipc/inet.h>
    44 #include <ipc/services.h>
    4542#include <loc.h>
    46 #include <stdio.h>
    4743#include <stdlib.h>
    4844#include <sys/types.h>
    4945
     46#include "addrobj.h"
    5047#include "inet.h"
     48#include "inet_link.h"
    5149#include "inetcfg.h"
    5250
    53 static int inetcfg_addr_create_static(inet_naddr_t *naddr, sysarg_t *addr_id)
    54 {
    55         return ENOTSUP;
     51static int inetcfg_addr_create_static(inet_naddr_t *naddr, sysarg_t link_id,
     52    sysarg_t *addr_id)
     53{
     54        inet_link_t *ilink;
     55        inet_addrobj_t *addr;
     56        iplink_addr_t iaddr;
     57        int rc;
     58
     59        ilink = inet_link_get_by_id(link_id);
     60        if (ilink == NULL) {
     61                log_msg(LVL_DEBUG, "Link %lu not found.",
     62                    (unsigned long) link_id);
     63                return ENOENT;
     64        }
     65
     66        addr = inet_addrobj_new();
     67        addr->naddr = *naddr;
     68        addr->ilink = ilink;
     69        inet_addrobj_add(addr);
     70
     71        iaddr.ipv4 = addr->naddr.ipv4;
     72        rc = iplink_addr_add(ilink->iplink, &iaddr);
     73        if (rc != EOK) {
     74                log_msg(LVL_ERROR, "Failed setting IP address on internet link.");
     75                inet_addrobj_remove(addr);
     76                inet_addrobj_delete(addr);
     77                return rc;
     78        }
     79
     80        return EOK;
    5681}
    5782
     
    85110{
    86111        inet_naddr_t naddr;
     112        sysarg_t link_id;
    87113        sysarg_t addr_id;
    88114        int rc;
     
    92118        naddr.ipv4 = IPC_GET_ARG1(*call);
    93119        naddr.bits = IPC_GET_ARG2(*call);
     120        link_id    = IPC_GET_ARG3(*call);
    94121
    95122        addr_id = 0;
    96         rc = inetcfg_addr_create_static(&naddr, &addr_id);
     123        rc = inetcfg_addr_create_static(&naddr, link_id, &addr_id);
    97124        async_answer_1(callid, rc, addr_id);
    98125}
Note: See TracChangeset for help on using the changeset viewer.