X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd.h;h=7107c5f9321dd47b5a897ff6268b43c9bfc5e97c;hp=5f553fb3b9ea230577036bd66e3cc2c85954609f;hb=ce43e484465050c619ea9a1991d49b3d6215028b;hpb=c106cc36b9b8e8998eb95299b02f1db9c1209122 diff --git a/src/network/networkd.h b/src/network/networkd.h index 5f553fb3b..7107c5f93 100644 --- a/src/network/networkd.h +++ b/src/network/networkd.h @@ -32,6 +32,7 @@ #include "sd-icmp6-nd.h" #include "sd-dhcp6-client.h" #include "udev.h" +#include "sd-lldp.h" #include "rtnl-util.h" #include "hashmap.h" @@ -51,6 +52,7 @@ typedef struct Address Address; typedef struct Route Route; typedef struct Manager Manager; typedef struct AddressPool AddressPool; +typedef struct FdbEntry FdbEntry; typedef enum DHCPSupport { DHCP_SUPPORT_NONE, @@ -69,6 +71,16 @@ typedef enum LLMNRSupport { _LLMNR_SUPPORT_INVALID = -1, } LLMNRSupport; +struct FdbEntry { + Network *network; + unsigned section; + + struct ether_addr *mac_addr; + uint16_t vlan_id; + + LIST_FIELDS(FdbEntry, static_fdb_entries); +}; + struct Network { Manager *manager; @@ -111,11 +123,15 @@ struct Network { struct ether_addr *mac; unsigned mtu; + bool lldp; + LIST_HEAD(Address, static_addresses); LIST_HEAD(Route, static_routes); + LIST_HEAD(FdbEntry, static_fdb_entries); Hashmap *addresses_by_section; Hashmap *routes_by_section; + Hashmap *fdb_entries_by_section; bool wildcard_domain; char **domains, **dns, **ntp; @@ -203,6 +219,7 @@ 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_rtnl_listen(Manager *m); int manager_udev_listen(Manager *m); @@ -326,6 +343,22 @@ int config_parse_label(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); +/* Forwarding database table. */ +int fdb_entry_configure(sd_rtnl *const rtnl, FdbEntry *const fdb_entry, const int ifindex); +void fdb_entry_free(FdbEntry *fdb_entry); +int fdb_entry_new_static(Network *const network, const unsigned section, FdbEntry **ret); + +DEFINE_TRIVIAL_CLEANUP_FUNC(FdbEntry*, fdb_entry_free); +#define _cleanup_fdbentry_free_ _cleanup_(fdb_entry_freep) + +int config_parse_fdb_hwaddr(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_fdb_vlan_id(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); + /* DHCP support */ const char* dhcp_support_to_string(DHCPSupport i) _const_;