summaryrefslogtreecommitdiff
path: root/system.h
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2017-02-10 06:30:17 +0100
committerFelix Fietkau <nbd@nbd.name>2017-02-11 21:48:38 +0100
commit6397f5edb977b5963aa8eec1deaa709355bbbc7d (patch)
treee8e8bf3c162794e574e458b06a3b9d6d8c2c0afb /system.h
parent6228d0f21b2dcf20d7b2223c43f8b90b9b51bc4d (diff)
downloadnetifd-6397f5edb977b5963aa8eec1deaa709355bbbc7d.tar.gz
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.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/system.h b/system.h
index 9c40e4c..6077b95 100644
--- a/system.h
+++ b/system.h
@@ -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);