]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
0ef6f454 LP |
2 | #pragma once |
3 | ||
71d35b6b | 4 | #include "sd-bus.h" |
d2ebf952 | 5 | #include "sd-device.h" |
f579559b | 6 | #include "sd-event.h" |
27dfc982 | 7 | #include "sd-id128.h" |
1c4baffc | 8 | #include "sd-netlink.h" |
05d0c2e3 | 9 | #include "sd-resolve.h" |
f579559b | 10 | |
97c3506d | 11 | #include "dhcp-duid-internal.h" |
761cf19d | 12 | #include "firewall-util.h" |
f579559b | 13 | #include "hashmap.h" |
fc2f9534 | 14 | #include "networkd-link.h" |
71d35b6b | 15 | #include "networkd-network.h" |
932ef6ec | 16 | #include "networkd-sysctl.h" |
bfbf150e YW |
17 | #include "ordered-set.h" |
18 | #include "set.h" | |
19 | #include "time-util.h" | |
c5c74d85 | 20 | #include "varlink.h" |
11bf3cce | 21 | |
f579559b | 22 | struct Manager { |
1c4baffc | 23 | sd_netlink *rtnl; |
05d0c2e3 JT |
24 | /* lazy initialized */ |
25 | sd_netlink *genl; | |
f579559b | 26 | sd_event *event; |
05d0c2e3 | 27 | sd_resolve *resolve; |
1346b1f0 | 28 | sd_bus *bus; |
c5c74d85 | 29 | VarlinkServer *varlink_server; |
d2ebf952 | 30 | sd_device_monitor *device_monitor; |
15761549 | 31 | Hashmap *polkit_registry; |
c643bda5 | 32 | int ethtool_fd; |
f579559b | 33 | |
ea853de5 | 34 | KeepConfiguration keep_configuration; |
932ef6ec | 35 | IPv6PrivacyExtensions ipv6_privacy_extensions; |
ea853de5 | 36 | |
4c78dc17 | 37 | bool test_mode; |
a78f938a YW |
38 | bool enumerating; |
39 | bool dirty; | |
40 | bool restarting; | |
5d3b8017 | 41 | bool manage_foreign_routes; |
d94dfe70 | 42 | bool manage_foreign_rules; |
bbc05bec | 43 | bool manage_foreign_nexthops; |
84de38c5 TG |
44 | |
45 | Set *dirty_links; | |
9c5b8d46 | 46 | Set *new_wlan_ifindices; |
6a24f148 | 47 | |
bbf7c048 | 48 | char *state_file; |
e331e246 | 49 | LinkOperationalState operational_state; |
7f3c07ad YW |
50 | LinkCarrierState carrier_state; |
51 | LinkAddressState address_state; | |
8430841b L |
52 | LinkAddressState ipv4_address_state; |
53 | LinkAddressState ipv6_address_state; | |
bcdcc596 | 54 | LinkOnlineState online_state; |
bbf7c048 | 55 | |
6eab614d | 56 | Hashmap *links_by_index; |
0b54c870 | 57 | Hashmap *links_by_name; |
fe321d45 | 58 | Hashmap *links_by_hw_addr; |
a27588d4 | 59 | Hashmap *links_by_dhcp_pd_subnet_prefix; |
52433f6b | 60 | Hashmap *netdevs; |
715d398e | 61 | OrderedHashmap *networks; |
bfbf150e | 62 | OrderedSet *address_pools; |
a27588d4 | 63 | Set *dhcp_pd_subnet_ids; |
f579559b | 64 | |
4e26a5ba YW |
65 | DUID dhcp_duid; |
66 | DUID dhcp6_duid; | |
28f9667d | 67 | DUID duid_product_uuid; |
27dfc982 | 68 | bool has_product_uuid; |
4e26a5ba | 69 | bool product_uuid_requested; |
27dfc982 | 70 | |
7901cea1 MP |
71 | char* dynamic_hostname; |
72 | char* dynamic_timezone; | |
bce67bbe SS |
73 | |
74 | Set *rules; | |
4b600505 | 75 | |
69e244e3 YW |
76 | /* Manage nexthops by id. */ |
77 | Hashmap *nexthops_by_id; | |
fb126bb1 | 78 | Set *nexthop_ids; /* requested IDs in .network files */ |
69e244e3 | 79 | |
ad208fac | 80 | /* Manager stores routes without RTA_OIF attribute. */ |
76c5a0f2 | 81 | unsigned route_remove_messages; |
ad208fac | 82 | Set *routes; |
ad208fac | 83 | |
c038ce46 | 84 | /* Route table name */ |
552b90a2 YW |
85 | Hashmap *route_table_numbers_by_name; |
86 | Hashmap *route_table_names_by_number; | |
c038ce46 | 87 | |
edb69db2 YW |
88 | /* Wiphy */ |
89 | Hashmap *wiphy_by_index; | |
90 | Hashmap *wiphy_by_name; | |
91 | ||
7802194a | 92 | /* For link speed meter */ |
a879e1a4 YW |
93 | bool use_speed_meter; |
94 | sd_event_source *speed_meter_event_source; | |
95 | usec_t speed_meter_interval_usec; | |
96 | usec_t speed_meter_usec_new; | |
97 | usec_t speed_meter_usec_old; | |
dd9b10c8 | 98 | |
4cbd379e | 99 | bool bridge_mdb_on_master_not_supported; |
761cf19d FW |
100 | |
101 | FirewallContext *fw_ctx; | |
19d9a5ad | 102 | |
4f6b801b | 103 | bool request_queued; |
19d9a5ad | 104 | OrderedSet *request_queue; |
85a6f300 | 105 | OrderedSet *remove_request_queue; |
af7a86b8 YW |
106 | |
107 | Hashmap *tuntap_fds_by_name; | |
1e869a5d YW |
108 | |
109 | unsigned reloading; | |
3976c430 YW |
110 | |
111 | /* sysctl */ | |
112 | int ip_forwarding[2]; | |
f579559b TG |
113 | }; |
114 | ||
4c78dc17 | 115 | int manager_new(Manager **ret, bool test_mode); |
75db809a | 116 | Manager* manager_free(Manager *m); |
f579559b | 117 | |
4c78dc17 | 118 | int manager_setup(Manager *m); |
b76d99d9 | 119 | int manager_start(Manager *m); |
a97dcc12 | 120 | |
02b59d57 | 121 | int manager_load_config(Manager *m); |
02b59d57 | 122 | |
41476186 YW |
123 | int manager_enumerate_internal( |
124 | Manager *m, | |
125 | sd_netlink *nl, | |
126 | sd_netlink_message *req, | |
127 | int (*process)(sd_netlink *, sd_netlink_message *, Manager *)); | |
446aaaf3 | 128 | int manager_enumerate(Manager *m); |
f579559b | 129 | |
59eb33e0 MP |
130 | int manager_set_hostname(Manager *m, const char *hostname); |
131 | int manager_set_timezone(Manager *m, const char *timezone); | |
132 | ||
1e869a5d | 133 | int manager_reload(Manager *m, sd_bus_message *message); |
0e07cdb0 | 134 | |
f579559b | 135 | DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free); |