Skip to content

Commit

Permalink
add bridge manipulation routines to netconfig
Browse files Browse the repository at this point in the history
  • Loading branch information
anttikantee committed Jun 29, 2015
1 parent a4a15fd commit cb75be9
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 0 deletions.
38 changes: 38 additions & 0 deletions brlib/libnetconfig/netconfig.c
Expand Up @@ -30,6 +30,7 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_ether.h>
#include <net/if_bridgevar.h>
#include <net/if_types.h>
#include <net/route.h>

Expand Down Expand Up @@ -142,6 +143,43 @@ rump_netconfig_ifdestroy(const char *ifname)
return wrapifioctl(in4so, SIOCIFDESTROY, &ifr);
}

/*
* network bridge manipulation (bridge is created with ifbridge)
*/

static int
brioctl(const char *bridgename, const char *ifname, unsigned long op)
{
struct ifdrv ifd;
struct ifbreq req;

memset(&req, 0, sizeof(req));
strlcpy(req.ifbr_ifsname, ifname, sizeof(req.ifbr_ifsname));

memset(&ifd, 0, sizeof(ifd));
strlcpy(ifd.ifd_name, bridgename, sizeof(ifd.ifd_name));
ifd.ifd_cmd = op;
ifd.ifd_len = sizeof(req);
ifd.ifd_data = &req;


return wrapifioctl(in4so, SIOCSDRVSPEC, &ifd);
}

int
rump_netconfig_bradd(const char *bridgename, const char *ifname)
{

return brioctl(bridgename, ifname, BRDGADD);
}

int
rump_netconfig_brdel(const char *bridgename, const char *ifname)
{

return brioctl(bridgename, ifname, BRDGDEL);
}

static int
cfg_ipv4(const char *ifname, const char *addr, in_addr_t m_addr)
{
Expand Down
5 changes: 5 additions & 0 deletions brlib/libnetconfig/netconfig.ifspec
Expand Up @@ -24,6 +24,11 @@ int |netconfig_ifdown |const char *
int |netconfig_ifdestroy |const char *


; network bridge manipulation
int |netconfig_bradd |const char *, const char *
int |netconfig_brdel |const char *, const char *


; address configuration (ipv4, ipv6)
int |netconfig_ipv4_ifaddr |const char *, const char *, const char *
int |netconfig_ipv4_ifaddr_cidr |const char *, const char *, int
Expand Down
4 changes: 4 additions & 0 deletions brlib/libnetconfig/netconfig_if_priv.h
Expand Up @@ -19,6 +19,10 @@ int rump_netconfig_ifdown(const char *);
typedef int (*rump_netconfig_ifdown_fn)(const char *);
int rump_netconfig_ifdestroy(const char *);
typedef int (*rump_netconfig_ifdestroy_fn)(const char *);
int rump_netconfig_bradd(const char *, const char *);
typedef int (*rump_netconfig_bradd_fn)(const char *, const char *);
int rump_netconfig_brdel(const char *, const char *);
typedef int (*rump_netconfig_brdel_fn)(const char *, const char *);
int rump_netconfig_ipv4_ifaddr(const char *, const char *, const char *);
typedef int (*rump_netconfig_ipv4_ifaddr_fn)(const char *, const char *, const char *);
int rump_netconfig_ipv4_ifaddr_cidr(const char *, const char *, int);
Expand Down
24 changes: 24 additions & 0 deletions brlib/libnetconfig/netconfig_if_wrappers.c
Expand Up @@ -83,6 +83,30 @@ rump_pub_netconfig_ifdestroy(const char *arg1)
return rv;
}

int
rump_pub_netconfig_bradd(const char *arg1, const char *arg2)
{
int rv;

rump_schedule();
rv = rump_netconfig_bradd(arg1, arg2);
rump_unschedule();

return rv;
}

int
rump_pub_netconfig_brdel(const char *arg1, const char *arg2)
{
int rv;

rump_schedule();
rv = rump_netconfig_brdel(arg1, arg2);
rump_unschedule();

return rv;
}

int
rump_pub_netconfig_ipv4_ifaddr(const char *arg1, const char *arg2, const char *arg3)
{
Expand Down
2 changes: 2 additions & 0 deletions brlib/libnetconfig/rump/netconfig.h
Expand Up @@ -11,6 +11,8 @@ int rump_pub_netconfig_ifup(const char *);
int rump_pub_netconfig_ifsetlinkstr(const char *, const char *);
int rump_pub_netconfig_ifdown(const char *);
int rump_pub_netconfig_ifdestroy(const char *);
int rump_pub_netconfig_bradd(const char *, const char *);
int rump_pub_netconfig_brdel(const char *, const char *);
int rump_pub_netconfig_ipv4_ifaddr(const char *, const char *, const char *);
int rump_pub_netconfig_ipv4_ifaddr_cidr(const char *, const char *, int);
int rump_pub_netconfig_ipv6_ifaddr(const char *, const char *, int);
Expand Down

0 comments on commit cb75be9

Please sign in to comment.