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;
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;
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);
};
bool dhcp_mtu;
bool dhcp_hostname;
bool dhcp_domainname;
+ bool dhcp_sendhost;
bool dhcp_critical;
bool dhcp_routes;
bool ipv4ll;
/* NetDev */
+#define VLANID_MAX 4094
+
int netdev_load(Manager *manager);
void netdev_drop(NetDev *netdev);
int netdev_get(Manager *manager, const char *name, NetDev **ret);
int netdev_set_ifindex(NetDev *netdev, sd_rtnl_message *newlink);
int netdev_enslave(NetDev *netdev, Link *link, sd_rtnl_message_handler_t cb);
-int netdev_create_tunnel(Link *link, sd_rtnl_message_handler_t callback);
+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_;