1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
8 #include "sd-netlink.h"
9 #include "sd-resolve.h"
11 #include "dhcp-identifier.h"
12 #include "firewall-util.h"
14 #include "networkd-link.h"
15 #include "networkd-network.h"
16 #include "ordered-set.h"
18 #include "time-util.h"
22 /* lazy initialized */
27 sd_device_monitor
*device_monitor
;
28 Hashmap
*polkit_registry
;
34 bool manage_foreign_routes
;
35 bool manage_foreign_rules
;
40 LinkOperationalState operational_state
;
41 LinkCarrierState carrier_state
;
42 LinkAddressState address_state
;
43 LinkAddressState ipv4_address_state
;
44 LinkAddressState ipv6_address_state
;
45 LinkOnlineState online_state
;
48 Hashmap
*links_by_name
;
50 OrderedHashmap
*networks
;
51 Hashmap
*dhcp6_prefixes
;
52 Set
*dhcp6_pd_prefixes
;
53 OrderedSet
*address_pools
;
55 usec_t network_dirs_ts_usec
;
59 DUID duid_product_uuid
;
60 bool has_product_uuid
;
61 bool product_uuid_requested
;
62 Set
*links_requesting_uuid
;
64 char* dynamic_hostname
;
65 char* dynamic_timezone
;
67 unsigned routing_policy_rule_remove_messages
;
71 /* Manage nexthops by id. */
72 Hashmap
*nexthops_by_id
;
74 /* Manager stores nexthops without RTA_OIF attribute. */
75 unsigned nexthop_remove_messages
;
77 Set
*nexthops_foreign
;
79 /* Manager stores routes without RTA_OIF attribute. */
80 unsigned route_remove_messages
;
84 /* Route table name */
85 Hashmap
*route_table_numbers_by_name
;
86 Hashmap
*route_table_names_by_number
;
88 /* For link speed meter*/
90 sd_event_source
*speed_meter_event_source
;
91 usec_t speed_meter_interval_usec
;
92 usec_t speed_meter_usec_new
;
93 usec_t speed_meter_usec_old
;
95 bool dhcp4_prefix_root_cannot_set_table
;
96 bool bridge_mdb_on_master_not_supported
;
98 FirewallContext
*fw_ctx
;
100 OrderedSet
*request_queue
;
103 int manager_new(Manager
**ret
);
104 Manager
* manager_free(Manager
*m
);
106 int manager_connect_bus(Manager
*m
);
107 int manager_start(Manager
*m
);
109 int manager_load_config(Manager
*m
);
110 bool manager_should_reload(Manager
*m
);
112 int manager_enumerate(Manager
*m
);
114 Link
* manager_find_uplink(Manager
*m
, Link
*exclude
);
116 int manager_set_hostname(Manager
*m
, const char *hostname
);
117 int manager_set_timezone(Manager
*m
, const char *timezone
);
119 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager
*, manager_free
);