diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2017-02-10 06:30:17 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-02-11 21:48:38 +0100 |
commit | 6397f5edb977b5963aa8eec1deaa709355bbbc7d (patch) | |
tree | e8e8bf3c162794e574e458b06a3b9d6d8c2c0afb /system.h | |
parent | 6228d0f21b2dcf20d7b2223c43f8b90b9b51bc4d (diff) |
device: add veth support
The veth config code mostly handles the primary interface of a veth pair,
the secondary interface is not explicitly referenced and will be found as
an unrelated interface after the pair has been created.
This doesn't only allow us to keep the veth code simple (and similar to
existing device handlers), but will also avoid complicating handling
unnecessarily in case the secondary interface is moved into another network
namespace.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Diffstat (limited to 'system.h')
-rw-r--r-- | system.h | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -14,6 +14,7 @@ #ifndef __NETIFD_SYSTEM_H #define __NETIFD_SYSTEM_H +#include <net/if.h> #include <sys/time.h> #include <sys/socket.h> #include <arpa/inet.h> @@ -82,6 +83,20 @@ struct macvlan_config { unsigned char macaddr[6]; }; +enum veth_opt { + VETH_OPT_MACADDR = (1 << 0), + VETH_OPT_PEER_NAME = (1 << 1), + VETH_OPT_PEER_MACADDR = (1 << 2), +}; + +struct veth_config { + enum veth_opt flags; + + unsigned char macaddr[6]; + char peer_name[IFNAMSIZ]; + unsigned char peer_macaddr[6]; +}; + enum vlan_proto { VLAN_PROTO_8021Q = 0x8100, VLAN_PROTO_8021AD = 0x88A8 @@ -118,6 +133,9 @@ int system_bridge_delif(struct device *bridge, struct device *dev); int system_macvlan_add(struct device *macvlan, struct device *dev, struct macvlan_config *cfg); int system_macvlan_del(struct device *macvlan); +int system_veth_add(struct device *veth, struct veth_config *cfg); +int system_veth_del(struct device *veth); + int system_vlan_add(struct device *dev, int id); int system_vlan_del(struct device *dev); |