#include "sd-rtnl.h"
#include "sd-bus.h"
#include "sd-dhcp-client.h"
+#include "sd-dhcp-server.h"
#include "sd-ipv4ll.h"
#include "udev.h"
NETDEV_KIND_IPIP,
NETDEV_KIND_GRE,
NETDEV_KIND_SIT,
+ NETDEV_KIND_VETH,
+ NETDEV_KIND_VTI,
_NETDEV_KIND_MAX,
_NETDEV_KIND_INVALID = -1
} NetDevKind;
char *description;
char *ifname;
+ char *ifname_peer;
size_t mtu;
NetDevKind kind;
int ifindex;
NetDevState state;
+ bool tunnel_pmtudisc;
unsigned tunnel_ttl;
unsigned tunnel_tos;
struct in_addr tunnel_local;
Hashmap *macvlans;
bool dhcp;
bool dhcp_dns;
+ bool dhcp_ntp;
bool dhcp_mtu;
bool dhcp_hostname;
bool dhcp_domainname;
bool dhcp_critical;
bool ipv4ll;
+ bool dhcp_server;
+
LIST_HEAD(Address, static_addresses);
LIST_HEAD(Route, static_routes);
Hashmap *routes_by_section;
LIST_HEAD(Address, dns);
+ LIST_HEAD(Address, ntp);
LIST_FIELDS(Network, networks);
};
_LINK_STATE_INVALID = -1
} LinkState;
+typedef enum LinkOperationalState {
+ LINK_OPERSTATE_UNKNOWN,
+ LINK_OPERSTATE_DORMANT,
+ LINK_OPERSTATE_CARRIER,
+ LINK_OPERSTATE_DEGRADED,
+ LINK_OPERSTATE_ROUTABLE,
+ _LINK_OPERSTATE_MAX,
+ _LINK_OPERSTATE_INVALID = -1
+} LinkOperationalState;
+
struct Link {
Manager *manager;
struct udev_device *udev_device;
unsigned flags;
- uint8_t operstate;
+ uint8_t kernel_operstate;
Network *network;
LinkState state;
+ LinkOperationalState operstate;
unsigned addr_messages;
unsigned route_messages;
char *lease_file;
uint16_t original_mtu;
sd_ipv4ll *ipv4ll;
+
+ sd_dhcp_server *dhcp_server;
};
struct Manager {
LIST_HEAD(Network, networks);
usec_t network_dirs_ts_usec;
- struct kmod_ctx *kmod_ctx;
};
extern const char* const network_dirs[];
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_veth(NetDev *netdev, sd_rtnl_message_handler_t callback);
const char *netdev_kind_to_string(NetDevKind d) _const_;
NetDevKind netdev_kind_from_string(const char *d) _pure_;
const char* link_state_to_string(LinkState s) _const_;
LinkState link_state_from_string(const char *s) _pure_;
+const char* link_operstate_to_string(LinkOperationalState s) _const_;
+LinkOperationalState link_operstate_from_string(const char *s) _pure_;
+
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_unref);
#define _cleanup_link_unref_ _cleanup_(link_unrefp)