diff options
author | Michael Braun <michael-dev@fami-braun.de> | 2013-05-16 14:54:13 (GMT) |
---|---|---|
committer | Michael Braun <michael-dev@fami-braun.de> | 2013-05-16 15:04:08 (GMT) |
commit | c76393e2037d78eb60c32f95b26f5b1e5b9422a6 (patch) | |
tree | 05e4c9aa66477a014112572793b214c1d5fba992 /doc | |
parent | 807fddc4cd9ecb12ba64e1b7fa26d86b6c2f19b0 (diff) | |
download | libnl-c76393e2037d78eb60c32f95b26f5b1e5b9422a6.zip libnl-c76393e2037d78eb60c32f95b26f5b1e5b9422a6.tar.gz libnl-c76393e2037d78eb60c32f95b26f5b1e5b9422a6.tar.bz2 |
Add macvlan support
This patch add support for kernel macvlan interfaces.
Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/route.txt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/doc/route.txt b/doc/route.txt index c8f1735..6c97f7b 100644 --- a/doc/route.txt +++ b/doc/route.txt @@ -706,6 +706,63 @@ if ((err = rtnl_link_add(sk, link, NLM_F_CREATE)) < 0) rtnl_link_put(link); ----- +[[link_macvlan]] +==== MACVLAN + +[source,c] +----- +extern struct rtnl_link *rtnl_link_macvlan_alloc(void); + +extern int rtnl_link_is_macvlan(struct rtnl_link *); + +extern char * rtnl_link_macvlan_mode2str(int, char *, size_t); +extern int rtnl_link_macvlan_str2mode(const char *); + +extern char * rtnl_link_macvlan_flags2str(int, char *, size_t); +extern int rtnl_link_macvlan_str2flags(const char *); + +extern int rtnl_link_macvlan_set_mode(struct rtnl_link *, + uint32_t); +extern uint32_t rtnl_link_macvlan_get_mode(struct rtnl_link *); + +extern int rtnl_link_macvlan_set_flags(struct rtnl_link *, + uint16_t); +extern int rtnl_link_macvlan_unset_flags(struct rtnl_link *, + uint16_t); +extern uint16_t rtnl_link_macvlan_get_flags(struct rtnl_link *); +----- + +.Example: Add a MACVLAN device +[source,c] +----- +struct rtnl_link *link; +int master_index; +struct nl_addr* addr; + +/* lookup interface index of eth0 */ +if (!(master_index = rtnl_link_name2i(link_cache, "eth0"))) + /* error */ + +/* allocate new link object of type macvlan */ +link = rtnl_link_macvlan_alloc(); + +/* set eth0 to be our master device */ +rtnl_link_set_link(link, master_index); + +/* set address of virtual interface */ +addr = nl_addr_build(AF_LLC, ether_aton("00:11:22:33:44:55"), ETH_ALEN); +rtnl_link_set_addr(link, addr); +nl_addr_put(addr); + +/* set mode of virtual interface */ +rtnl_link_macvlan_set_mode(link, rtnl_link_macvlan_str2mode("bridge")); + +if ((err = rtnl_link_add(sk, link, NLM_F_CREATE)) < 0) + /* error */ + +rtnl_link_put(link); +----- + == Neighbouring == Routing |