chiark / gitweb /
networkd: Introduce tun/tap device
[elogind.git] / src / network / networkd.h
index c2b88acd61b3f97d311d2edf32634fa49edc8e5d..67ca41b8a4059cee0a237915cde5a889665458f4 100644 (file)
@@ -81,6 +81,9 @@ typedef enum NetDevKind {
         NETDEV_KIND_SIT,
         NETDEV_KIND_VETH,
         NETDEV_KIND_VTI,
+        NETDEV_KIND_DUMMY,
+        NETDEV_KIND_TUN,
+        NETDEV_KIND_TAP,
         _NETDEV_KIND_MAX,
         _NETDEV_KIND_INVALID = -1
 } NetDevKind;
@@ -109,6 +112,8 @@ struct NetDev {
         char *description;
         char *ifname;
         char *ifname_peer;
+        char *user_name;
+        char *group_name;
         size_t mtu;
         struct ether_addr *mac;
         struct ether_addr *mac_peer;
@@ -123,6 +128,10 @@ struct NetDev {
 
         bool tunnel_pmtudisc;
         bool learning;
+        bool one_queue;
+        bool multi_queue;
+        bool packet_info;
+
         unsigned ttl;
         unsigned tos;
         struct in_addr local;
@@ -338,6 +347,8 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
 
 /* NetDev */
 
+#define VLANID_MAX 4094
+
 int netdev_load(Manager *manager);
 void netdev_drop(NetDev *netdev);
 
@@ -353,6 +364,10 @@ int netdev_enslave(NetDev *netdev, Link *link, sd_rtnl_message_handler_t cb);
 int netdev_create_tunnel(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callback);
 int netdev_create_veth(NetDev *netdev, sd_rtnl_message_handler_t callback);
 int netdev_create_vxlan(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callback);
+int netdev_create_vlan(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callback);
+int netdev_create_macvlan(NetDev *netdev, Link *link, sd_rtnl_message_handler_t callback);
+int netdev_create_dummy(NetDev *netdev, sd_rtnl_message_handler_t callback);
+int netdev_create_tuntap(NetDev *netdev);
 
 const char *netdev_kind_to_string(NetDevKind d) _const_;
 NetDevKind netdev_kind_from_string(const char *d) _pure_;