X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd.h;h=8bdc2bed82b24191a1581790b687efa3cd632143;hb=3e43b2cd97bd82efe6a09e8b9b2e6b5f33f578a0;hp=e6d84f105b81257692493a32a2f03474249c2c0e;hpb=a97dcc12e486ecff531809802930a26c4da827f2;p=elogind.git diff --git a/src/network/networkd.h b/src/network/networkd.h index e6d84f105..8bdc2bed8 100644 --- a/src/network/networkd.h +++ b/src/network/networkd.h @@ -83,6 +83,13 @@ typedef enum LinkOperationalState { _LINK_OPERSTATE_INVALID = -1 } LinkOperationalState; +typedef enum DCHPClientIdentifier { + DHCP_CLIENT_ID_MAC, + DHCP_CLIENT_ID_DUID, + _DHCP_CLIENT_ID_MAX, + _DHCP_CLIENT_ID_INVALID = -1, +} DCHPClientIdentifier; + struct FdbEntry { Network *network; unsigned section; @@ -97,13 +104,13 @@ struct Network { 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; + char **match_path; + char **match_driver; + char **match_type; + char **match_name; Condition *match_host; Condition *match_virt; @@ -115,6 +122,8 @@ struct Network { NetDev *bond; Hashmap *stacked_netdevs; AddressFamilyBoolean dhcp; + DCHPClientIdentifier dhcp_client_identifier; + char *dhcp_vendor_class_identifier; bool dhcp_dns; bool dhcp_ntp; bool dhcp_mtu; @@ -125,8 +134,9 @@ struct Network { 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; @@ -149,7 +159,7 @@ struct Network { Hashmap *fdb_entries_by_section; bool wildcard_domain; - char **domains, **dns, **ntp; + char **domains, **dns, **ntp, **bind_carrier; LLMNRSupport llmnr; @@ -224,6 +234,7 @@ struct Manager { Hashmap *links; Hashmap *netdevs; + Hashmap *networks_by_name; LIST_HEAD(Network, networks); LIST_HEAD(AddressPool, address_pools); @@ -239,6 +250,7 @@ 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); @@ -264,6 +276,7 @@ void network_free(Network *network); 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); @@ -317,6 +330,11 @@ int config_parse_vxlan_group_address(const char *unit, 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); @@ -342,6 +360,10 @@ int config_parse_destination(const char *unit, const char *filename, unsigned li int config_parse_route_priority(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); + +int config_parse_route_scope(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); /* Address */ int address_new_static(Network *network, unsigned section, Address **ret); int address_new_dynamic(Address **ret); @@ -369,7 +391,7 @@ int config_parse_label(const char *unit, const char *filename, unsigned line, int ltype, const char *rvalue, void *data, void *userdata); /* Forwarding database table. */ -int fdb_entry_configure(sd_rtnl *const rtnl, FdbEntry *const fdb_entry, const int ifindex); +int fdb_entry_configure(Link *const link, FdbEntry *const fdb_entry); void fdb_entry_free(FdbEntry *fdb_entry); int fdb_entry_new_static(Network *const network, const unsigned section, FdbEntry **ret); @@ -389,6 +411,20 @@ int config_parse_fdb_vlan_id(const char *unit, const char *filename, unsigned li int config_parse_dhcp(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); +int config_parse_dhcp_client_identifier(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); + +/* 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_ipv6token(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 */