1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
8 #include "sd-netlink.h"
9 #include "sd-resolve.h"
11 #include "dhcp-duid-internal.h"
12 #include "firewall-util.h"
14 #include "networkd-link.h"
15 #include "networkd-network.h"
16 #include "networkd-sysctl.h"
17 #include "ordered-set.h"
19 #include "time-util.h"
24 /* lazy initialized */
29 VarlinkServer
*varlink_server
;
30 sd_device_monitor
*device_monitor
;
31 Hashmap
*polkit_registry
;
33 int persistent_storage_fd
;
35 KeepConfiguration keep_configuration
;
36 IPv6PrivacyExtensions ipv6_privacy_extensions
;
42 bool manage_foreign_routes
;
43 bool manage_foreign_rules
;
44 bool manage_foreign_nexthops
;
45 bool dhcp_server_persist_leases
;
48 Set
*new_wlan_ifindices
;
51 LinkOperationalState operational_state
;
52 LinkCarrierState carrier_state
;
53 LinkAddressState address_state
;
54 LinkAddressState ipv4_address_state
;
55 LinkAddressState ipv6_address_state
;
56 LinkOnlineState online_state
;
58 Hashmap
*links_by_index
;
59 Hashmap
*links_by_name
;
60 Hashmap
*links_by_hw_addr
;
61 Hashmap
*links_by_dhcp_pd_subnet_prefix
;
63 OrderedHashmap
*networks
;
64 OrderedSet
*address_pools
;
65 Set
*dhcp_pd_subnet_ids
;
67 DHCPUseDomains dhcp_use_domains
;
68 DHCPUseDomains dhcp6_use_domains
;
72 DUID duid_product_uuid
;
73 bool has_product_uuid
;
74 bool product_uuid_requested
;
76 char* dynamic_hostname
;
77 char* dynamic_timezone
;
81 /* Manage nexthops by id. */
82 Hashmap
*nexthops_by_id
;
83 Set
*nexthop_ids
; /* requested IDs in .network files */
85 /* Manager stores routes without RTA_OIF attribute. */
86 unsigned route_remove_messages
;
89 /* Route table name */
90 Hashmap
*route_table_numbers_by_name
;
91 Hashmap
*route_table_names_by_number
;
94 Hashmap
*wiphy_by_index
;
95 Hashmap
*wiphy_by_name
;
97 /* For link speed meter */
99 sd_event_source
*speed_meter_event_source
;
100 usec_t speed_meter_interval_usec
;
101 usec_t speed_meter_usec_new
;
102 usec_t speed_meter_usec_old
;
104 bool bridge_mdb_on_master_not_supported
;
106 FirewallContext
*fw_ctx
;
109 OrderedSet
*request_queue
;
110 OrderedSet
*remove_request_queue
;
112 Hashmap
*tuntap_fds_by_name
;
117 int ip_forwarding
[2];
120 int manager_new(Manager
**ret
, bool test_mode
);
121 Manager
* manager_free(Manager
*m
);
123 int manager_setup(Manager
*m
);
124 int manager_start(Manager
*m
);
126 int manager_load_config(Manager
*m
);
128 int manager_enumerate_internal(
131 sd_netlink_message
*req
,
132 int (*process
)(sd_netlink
*, sd_netlink_message
*, Manager
*));
133 int manager_enumerate(Manager
*m
);
135 int manager_set_hostname(Manager
*m
, const char *hostname
);
136 int manager_set_timezone(Manager
*m
, const char *timezone
);
138 int manager_reload(Manager
*m
, sd_bus_message
*message
);
140 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager
*, manager_free
);