_LLMNR_SUPPORT_INVALID = -1,
} LLMNRSupport;
+typedef enum LinkOperationalState {
+ LINK_OPERSTATE_OFF,
+ LINK_OPERSTATE_NO_CARRIER,
+ LINK_OPERSTATE_DORMANT,
+ LINK_OPERSTATE_CARRIER,
+ LINK_OPERSTATE_DEGRADED,
+ LINK_OPERSTATE_ROUTABLE,
+ _LINK_OPERSTATE_MAX,
+ _LINK_OPERSTATE_INVALID = -1
+} LinkOperationalState;
+
struct FdbEntry {
Network *network;
unsigned section;
Manager *manager;
char *filename;
+ char *name;
struct ether_addr *match_mac;
char *match_path;
char *match_driver;
char *match_type;
char *match_name;
- char *dhcp_vendor_class_identifier;
Condition *match_host;
Condition *match_virt;
NetDev *bond;
Hashmap *stacked_netdevs;
AddressFamilyBoolean dhcp;
+ char *dhcp_vendor_class_identifier;
bool dhcp_dns;
bool dhcp_ntp;
bool dhcp_mtu;
bool dhcp_critical;
bool dhcp_routes;
unsigned dhcp_route_metric;
- bool ipv4ll;
+ AddressFamilyBoolean link_local;
bool ipv4ll_route;
+ union in_addr_union ipv6_token;
bool dhcp_server;
struct udev_monitor *udev_monitor;
sd_event_source *udev_event_source;
+ bool enumerating;
+
char *state_file;
+ LinkOperationalState operational_state;
Hashmap *links;
Hashmap *netdevs;
+ Hashmap *networks_by_name;
LIST_HEAD(Network, networks);
LIST_HEAD(AddressPool, address_pools);
/* Manager */
+extern const sd_bus_vtable manager_vtable[];
+
int manager_new(Manager **ret);
void manager_free(Manager *m);
+int manager_connect_bus(Manager *m);
+int manager_run(Manager *m);
+
int manager_load_config(Manager *m);
bool manager_should_reload(Manager *m);
int manager_rtnl_enumerate_links(Manager *m);
int manager_rtnl_enumerate_addresses(Manager *m);
+int manager_send_changed(Manager *m, const char *property, ...) _sentinel_;
int manager_save(Manager *m);
int manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found);
DEFINE_TRIVIAL_CLEANUP_FUNC(Network*, network_free);
#define _cleanup_network_free_ _cleanup_(network_freep)
+int network_get_by_name(Manager *manager, const char *name, Network **ret);
int network_get(Manager *manager, struct udev_device *device,
const char *ifname, const struct ether_addr *mac,
Network **ret);
void *data,
void *userdata);
+extern const sd_bus_vtable network_vtable[];
+
+int network_node_enumerator(sd_bus *bus, const char *path, void *userdata, char ***nodes, sd_bus_error *error);
+int network_object_find(sd_bus *bus, const char *path, const char *interface, void *userdata, void **found, sd_bus_error *error);
+
/* gperf */
const struct ConfigPerfItem* network_network_gperf_lookup(const char *key, unsigned length);
const char *section, unsigned section_line, const char *lvalue,
int ltype, const char *rvalue, void *data, void *userdata);
+/* IPv4LL support (legacy) */
+
+int config_parse_ipv4ll(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);
+
+/* IPv6 support */
+int config_parse_token(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);
+
/* LLMNR support */
const char* llmnr_support_to_string(LLMNRSupport i) _const_;
AddressFamilyBoolean address_family_boolean_from_string(const char *s) _const_;
int config_parse_address_family_boolean(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);
+
+/* Opeartional State */
+
+const char* link_operstate_to_string(LinkOperationalState s) _const_;
+LinkOperationalState link_operstate_from_string(const char *s) _pure_;