chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tests: unlink temp file used in test
[elogind.git]
/
src
/
network
/
networkd.h
diff --git
a/src/network/networkd.h
b/src/network/networkd.h
index d5154aa64e5ebfbdfa3305c3945ce9c775a4cd4c..3b081d52761a1d400ee6052ea5b615f6d9dc77b0 100644
(file)
--- a/
src/network/networkd.h
+++ b/
src/network/networkd.h
@@
-27,6
+27,7
@@
#include "sd-rtnl.h"
#include "sd-bus.h"
#include "sd-dhcp-client.h"
#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"
#include "sd-ipv4ll.h"
#include "udev.h"
@@
-37,6
+38,7
@@
#include "condition-util.h"
#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
#include "condition-util.h"
#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
+#define VXLAN_VID_MAX (1u << 24) - 1
typedef struct NetDev NetDev;
typedef struct Network Network;
typedef struct NetDev NetDev;
typedef struct Network Network;
@@
-68,9
+70,12
@@
typedef enum NetDevKind {
NETDEV_KIND_BOND,
NETDEV_KIND_VLAN,
NETDEV_KIND_MACVLAN,
NETDEV_KIND_BOND,
NETDEV_KIND_VLAN,
NETDEV_KIND_MACVLAN,
+ NETDEV_KIND_VXLAN,
NETDEV_KIND_IPIP,
NETDEV_KIND_GRE,
NETDEV_KIND_SIT,
NETDEV_KIND_IPIP,
NETDEV_KIND_GRE,
NETDEV_KIND_SIT,
+ NETDEV_KIND_VETH,
+ NETDEV_KIND_VTI,
_NETDEV_KIND_MAX,
_NETDEV_KIND_INVALID = -1
} NetDevKind;
_NETDEV_KIND_MAX,
_NETDEV_KIND_INVALID = -1
} NetDevKind;
@@
-98,19
+103,26
@@
struct NetDev {
char *description;
char *ifname;
char *description;
char *ifname;
+ char *ifname_peer;
size_t mtu;
size_t mtu;
+ struct ether_addr *mac;
+ struct ether_addr *mac_peer;
NetDevKind kind;
uint64_t vlanid;
NetDevKind kind;
uint64_t vlanid;
+ uint64_t vxlanid;
int32_t macvlan_mode;
int ifindex;
NetDevState state;
int32_t macvlan_mode;
int ifindex;
NetDevState state;
- unsigned tunnel_ttl;
- unsigned tunnel_tos;
- struct in_addr tunnel_local;
- struct in_addr tunnel_remote;
+ bool tunnel_pmtudisc;
+ bool learning;
+ unsigned ttl;
+ unsigned tos;
+ struct in_addr local;
+ struct in_addr remote;
+ struct in_addr group;
LIST_HEAD(netdev_enslave_callback, callbacks);
};
LIST_HEAD(netdev_enslave_callback, callbacks);
};
@@
-136,14
+148,18
@@
struct Network {
NetDev *tunnel;
Hashmap *vlans;
Hashmap *macvlans;
NetDev *tunnel;
Hashmap *vlans;
Hashmap *macvlans;
+ Hashmap *vxlans;
bool dhcp;
bool dhcp_dns;
bool dhcp;
bool dhcp_dns;
+ bool dhcp_ntp;
bool dhcp_mtu;
bool dhcp_hostname;
bool dhcp_domainname;
bool dhcp_critical;
bool ipv4ll;
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);
LIST_HEAD(Address, static_addresses);
LIST_HEAD(Route, static_routes);
@@
-151,6
+167,7
@@
struct Network {
Hashmap *routes_by_section;
LIST_HEAD(Address, dns);
Hashmap *routes_by_section;
LIST_HEAD(Address, dns);
+ LIST_HEAD(Address, ntp);
LIST_FIELDS(Network, networks);
};
LIST_FIELDS(Network, networks);
};
@@
-210,6
+227,16
@@
typedef enum LinkState {
_LINK_STATE_INVALID = -1
} LinkState;
_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 Link {
Manager *manager;
@@
-222,21
+249,26
@@
struct Link {
struct udev_device *udev_device;
unsigned flags;
struct udev_device *udev_device;
unsigned flags;
- uint8_t operstate;
+ uint8_t
kernel_
operstate;
Network *network;
LinkState state;
Network *network;
LinkState state;
+ LinkOperationalState operstate;
unsigned addr_messages;
unsigned route_messages;
unsigned enslaving;
unsigned addr_messages;
unsigned route_messages;
unsigned enslaving;
+ LIST_HEAD(Address, addresses);
+
sd_dhcp_client *dhcp_client;
sd_dhcp_lease *dhcp_lease;
char *lease_file;
uint16_t original_mtu;
sd_ipv4ll *ipv4ll;
sd_dhcp_client *dhcp_client;
sd_dhcp_lease *dhcp_lease;
char *lease_file;
uint16_t original_mtu;
sd_ipv4ll *ipv4ll;
+
+ sd_dhcp_server *dhcp_server;
};
struct Manager {
};
struct Manager {
@@
-254,10
+286,8
@@
struct Manager {
Hashmap *links;
Hashmap *netdevs;
LIST_HEAD(Network, networks);
Hashmap *links;
Hashmap *netdevs;
LIST_HEAD(Network, networks);
- LIST_HEAD(Address, fallback_dns);
usec_t network_dirs_ts_usec;
usec_t network_dirs_ts_usec;
- struct kmod_ctx *kmod_ctx;
};
extern const char* const network_dirs[];
};
extern const char* const network_dirs[];
@@
-276,18
+306,11
@@
int manager_rtnl_listen(Manager *m);
int manager_udev_listen(Manager *m);
int manager_bus_listen(Manager *m);
int manager_udev_listen(Manager *m);
int manager_bus_listen(Manager *m);
-int manager_update_resolv_conf(Manager *m);
int manager_save(Manager *m);
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
#define _cleanup_manager_free_ _cleanup_(manager_freep)
int manager_save(Manager *m);
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
#define _cleanup_manager_free_ _cleanup_(manager_freep)
-const struct ConfigPerfItem* networkd_gperf_lookup(const char *key, unsigned length);
-
-int config_parse_dnsv(const char *unit, const char *filename, unsigned line,
- const char *section, unsigned section_line, const char *lvalue,
- int ltype, const char *rvalue, void *data, void *userdata);
-
/* NetDev */
int netdev_load(Manager *manager);
/* NetDev */
int netdev_load(Manager *manager);
@@
-303,6
+326,8
@@
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_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);
+int netdev_create_vxlan(NetDev *netdev, Link *link, 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 *netdev_kind_to_string(NetDevKind d) _const_;
NetDevKind netdev_kind_from_string(const char *d) _pure_;
@@
-427,12
+452,15
@@
bool link_has_carrier(unsigned flags, uint8_t operstate);
const char* link_state_to_string(LinkState s) _const_;
LinkState link_state_from_string(const char *s) _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)
/* Macros which append INTERFACE= to the message */
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_unref);
#define _cleanup_link_unref_ _cleanup_(link_unrefp)
/* Macros which append INTERFACE= to the message */
-#define log_full_link(level, link, fmt, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "INTERFACE=", link->ifname, "%*s: " fmt, IFNAMSIZ, link->ifname, ##__VA_ARGS__)
+#define log_full_link(level, link, fmt, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "INTERFACE=", link->ifname, "%
-
*s: " fmt, IFNAMSIZ, link->ifname, ##__VA_ARGS__)
#define log_debug_link(link, ...) log_full_link(LOG_DEBUG, link, ##__VA_ARGS__)
#define log_info_link(link, ...) log_full_link(LOG_INFO, link, ##__VA_ARGS__)
#define log_notice_link(link, ...) log_full_link(LOG_NOTICE, link, ##__VA_ARGS__)
#define log_debug_link(link, ...) log_full_link(LOG_DEBUG, link, ##__VA_ARGS__)
#define log_info_link(link, ...) log_full_link(LOG_INFO, link, ##__VA_ARGS__)
#define log_notice_link(link, ...) log_full_link(LOG_NOTICE, link, ##__VA_ARGS__)
@@
-443,7
+471,7
@@
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_unref);
/* More macros which append INTERFACE= to the message */
/* More macros which append INTERFACE= to the message */
-#define log_full_netdev(level, netdev, fmt, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "INTERFACE=", netdev->ifname, "%*s: " fmt, IFNAMSIZ, netdev->ifname, ##__VA_ARGS__)
+#define log_full_netdev(level, netdev, fmt, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "INTERFACE=", netdev->ifname, "%
-
*s: " fmt, IFNAMSIZ, netdev->ifname, ##__VA_ARGS__)
#define log_debug_netdev(netdev, ...) log_full_netdev(LOG_DEBUG, netdev, ##__VA_ARGS__)
#define log_info_netdev(netdev, ...) log_full_netdev(LOG_INFO, netdev, ##__VA_ARGS__)
#define log_notice_netdev(netdev, ...) log_full_netdev(LOG_NOTICE, netdev, ##__VA_ARGS__)
#define log_debug_netdev(netdev, ...) log_full_netdev(LOG_DEBUG, netdev, ##__VA_ARGS__)
#define log_info_netdev(netdev, ...) log_full_netdev(LOG_INFO, netdev, ##__VA_ARGS__)
#define log_notice_netdev(netdev, ...) log_full_netdev(LOG_NOTICE, netdev, ##__VA_ARGS__)