]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/network/networkd-link.h
network: configure bridge MDB entries after bridge has carrier
[thirdparty/systemd.git] / src / network / networkd-link.h
index 2d36ed24630cb3a19c7beeaabfe3168a5e40457f..1550db8a23926edfd0f485300d063099812cd4de 100644 (file)
@@ -35,15 +35,6 @@ typedef enum LinkState {
         _LINK_STATE_INVALID = -1
 } LinkState;
 
-typedef enum LinkIPv6AddressGenMode {
-       LINK_IPV6_ADDRESSS_GEN_MODE_EUI64          = IN6_ADDR_GEN_MODE_EUI64,
-       LINK_IPV6_ADDRESSS_GEN_MODE_NONE           = IN6_ADDR_GEN_MODE_NONE,
-       LINK_IPV6_ADDRESSS_GEN_MODE_STABLE_PRIVACY = IN6_ADDR_GEN_MODE_STABLE_PRIVACY,
-       LINK_IPV6_ADDRESSS_GEN_MODE_RANDOM         = IN6_ADDR_GEN_MODE_RANDOM,
-       _LINK_IPV6_ADDRESS_GEN_MODE_MAX,
-       _LINK_IPV6_ADDRESS_GEN_MODE_INVALID        = -1
-} LinkIPv6AddressGenMode;
-
 typedef struct Manager Manager;
 typedef struct Network Network;
 typedef struct Address Address;
@@ -84,6 +75,7 @@ typedef struct Link {
         LinkAddressState address_state;
 
         unsigned address_messages;
+        unsigned address_remove_messages;
         unsigned address_label_messages;
         unsigned neighbor_messages;
         unsigned route_messages;
@@ -91,10 +83,13 @@ typedef struct Link {
         unsigned routing_policy_rule_messages;
         unsigned routing_policy_rule_remove_messages;
         unsigned tc_messages;
+        unsigned sr_iov_messages;
         unsigned enslaving;
+        unsigned bridge_mdb_messages;
 
         Set *addresses;
         Set *addresses_foreign;
+        Set *static_addresses;
         Set *neighbors;
         Set *neighbors_foreign;
         Set *routes;
@@ -103,33 +98,34 @@ typedef struct Link {
         Set *nexthops_foreign;
 
         sd_dhcp_client *dhcp_client;
-        sd_dhcp_lease *dhcp_lease, *dhcp_lease_old;
-        Set *dhcp_routes;
+        sd_dhcp_lease *dhcp_lease;
+        Address *dhcp_address, *dhcp_address_old;
+        Set *dhcp_routes, *dhcp_routes_old;
         char *lease_file;
         uint32_t original_mtu;
         unsigned dhcp4_messages;
+        unsigned dhcp4_remove_messages;
         bool dhcp4_route_failed:1;
         bool dhcp4_route_retrying:1;
         bool dhcp4_configured:1;
-        bool dhcp6_configured:1;
-
-        unsigned ndisc_messages;
-        bool ndisc_configured;
+        bool dhcp4_address_bind:1;
 
         sd_ipv4ll *ipv4ll;
-        bool ipv4ll_address:1;
+        bool ipv4ll_address_configured:1;
 
+        bool request_static_addresses:1;
         bool addresses_configured:1;
         bool addresses_ready:1;
         bool neighbors_configured:1;
         bool static_routes_configured:1;
-        bool static_routes_ready:1;
         bool static_nexthops_configured:1;
         bool routing_policy_rules_configured:1;
         bool tc_configured:1;
+        bool sr_iov_configured:1;
         bool setting_mtu:1;
         bool setting_genmode:1;
         bool ipv6_mtu_set:1;
+        bool bridge_mdb_configured:1;
 
         LIST_HEAD(Address, pool_addresses);
 
@@ -138,10 +134,30 @@ typedef struct Link {
         sd_ndisc *ndisc;
         Set *ndisc_rdnss;
         Set *ndisc_dnssl;
+        Set *ndisc_addresses;
+        Set *ndisc_routes;
+        unsigned ndisc_addresses_messages;
+        unsigned ndisc_routes_messages;
+        bool ndisc_addresses_configured:1;
+        bool ndisc_routes_configured:1;
 
         sd_radv *radv;
 
         sd_dhcp6_client *dhcp6_client;
+        sd_dhcp6_lease *dhcp6_lease;
+        Set *dhcp6_addresses, *dhcp6_addresses_old;
+        Set *dhcp6_routes, *dhcp6_routes_old;
+        Set *dhcp6_pd_addresses, *dhcp6_pd_addresses_old;
+        Set *dhcp6_pd_routes, *dhcp6_pd_routes_old;
+        unsigned dhcp6_address_messages;
+        unsigned dhcp6_route_messages;
+        unsigned dhcp6_pd_address_messages;
+        unsigned dhcp6_pd_route_messages;
+        bool dhcp6_address_configured:1;
+        bool dhcp6_route_configured:1;
+        bool dhcp6_pd_address_configured:1;
+        bool dhcp6_pd_route_configured:1;
+        bool dhcp6_pd_prefixes_assigned:1;
 
         /* This is about LLDP reception */
         sd_lldp *lldp;
@@ -160,7 +176,7 @@ typedef struct Link {
         bool stats_updated;
 
         /* All kinds of DNS configuration the user configured via D-Bus */
-        struct in_addr_data *dns;
+        struct in_addr_full **dns;
         unsigned n_dns;
         OrderedSet *search_domains, *route_domains;
 
@@ -205,6 +221,7 @@ int link_update(Link *link, sd_netlink_message *message);
 void link_dirty(Link *link);
 void link_clean(Link *link);
 int link_save(Link *link);
+int link_save_and_clean(Link *link);
 
 int link_carrier_reset(Link *link);
 bool link_has_carrier(Link *link);
@@ -220,19 +237,12 @@ int link_stop_clients(Link *link, bool may_keep_dhcp);
 const char* link_state_to_string(LinkState s) _const_;
 LinkState link_state_from_string(const char *s) _pure_;
 
-const char* link_ipv6_address_gen_mode_to_string(LinkIPv6AddressGenMode s) _const_;
-LinkIPv6AddressGenMode link_ipv6_address_gen_mode_from_string(const char *s) _pure_;
-
 uint32_t link_get_vrf_table(Link *link);
 uint32_t link_get_dhcp_route_table(Link *link);
 uint32_t link_get_ipv6_accept_ra_route_table(Link *link);
 int link_request_set_routes(Link *link);
-int link_request_set_nexthop(Link *link);
 
 int link_reconfigure(Link *link, bool force);
-int address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link);
-
-CONFIG_PARSER_PROTOTYPE(config_parse_link_ipv6_address_gen_mode);
 
 int log_link_message_full_errno(Link *link, sd_netlink_message *m, int level, int err, const char *msg);
 #define log_link_message_error_errno(link, m, err, msg)   log_link_message_full_errno(link, m, LOG_ERR, err, msg)