chiark / gitweb /
networkd: add support for peer address
[elogind.git] / src / network / networkd.h
index e0232af1e55f6e20393a22145b123c08d6dbc672..5df52c98f4e9a5bc7c34dbc4091cfe6d77b071b9 100644 (file)
@@ -82,6 +82,8 @@ typedef enum NetDevKind {
         NETDEV_KIND_VETH,
         NETDEV_KIND_VTI,
         NETDEV_KIND_DUMMY,
+        NETDEV_KIND_TUN,
+        NETDEV_KIND_TAP,
         _NETDEV_KIND_MAX,
         _NETDEV_KIND_INVALID = -1
 } NetDevKind;
@@ -110,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;
@@ -124,11 +128,16 @@ struct NetDev {
 
         bool tunnel_pmtudisc;
         bool learning;
+        bool one_queue;
+        bool multi_queue;
+        bool packet_info;
+
         unsigned ttl;
         unsigned tos;
-        struct in_addr local;
-        struct in_addr remote;
-        struct in_addr group;
+        unsigned char family;
+        union in_addr_union local;
+        union in_addr_union remote;
+        union in_addr_union group;
 
         LIST_HEAD(netdev_enslave_callback, callbacks);
 };
@@ -202,6 +211,7 @@ struct Address {
         struct ifa_cacheinfo cinfo;
 
         union in_addr_union in_addr;
+        union in_addr_union in_addr_peer;
 
         LIST_FIELDS(Address, addresses);
 };
@@ -339,6 +349,8 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
 
 /* NetDev */
 
+#define VLANID_MAX 4094
+
 int netdev_load(Manager *manager);
 void netdev_drop(NetDev *netdev);
 
@@ -354,7 +366,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_;