]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/networkd-manager.h
pid1: make sure we send our calling service manager RELOADING=1 when reloading
[thirdparty/systemd.git] / src / network / networkd-manager.h
CommitLineData
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
634f0f98 11#include "dhcp-identifier.h"
761cf19d 12#include "firewall-util.h"
f579559b 13#include "hashmap.h"
fc2f9534 14#include "networkd-link.h"
71d35b6b 15#include "networkd-network.h"
bfbf150e
YW
16#include "ordered-set.h"
17#include "set.h"
18#include "time-util.h"
11bf3cce 19
f579559b 20struct Manager {
1c4baffc 21 sd_netlink *rtnl;
05d0c2e3
JT
22 /* lazy initialized */
23 sd_netlink *genl;
f579559b 24 sd_event *event;
05d0c2e3 25 sd_resolve *resolve;
1346b1f0 26 sd_bus *bus;
d2ebf952 27 sd_device_monitor *device_monitor;
15761549 28 Hashmap *polkit_registry;
c643bda5 29 int ethtool_fd;
f579559b 30
ea853de5
YW
31 KeepConfiguration keep_configuration;
32
4c78dc17 33 bool test_mode;
a78f938a
YW
34 bool enumerating;
35 bool dirty;
36 bool restarting;
5d3b8017 37 bool manage_foreign_routes;
d94dfe70 38 bool manage_foreign_rules;
84de38c5
TG
39
40 Set *dirty_links;
6a24f148 41
bbf7c048 42 char *state_file;
e331e246 43 LinkOperationalState operational_state;
7f3c07ad
YW
44 LinkCarrierState carrier_state;
45 LinkAddressState address_state;
8430841b
L
46 LinkAddressState ipv4_address_state;
47 LinkAddressState ipv6_address_state;
bcdcc596 48 LinkOnlineState online_state;
bbf7c048 49
6eab614d 50 Hashmap *links_by_index;
0b54c870 51 Hashmap *links_by_name;
fe321d45 52 Hashmap *links_by_hw_addr;
a27588d4 53 Hashmap *links_by_dhcp_pd_subnet_prefix;
52433f6b 54 Hashmap *netdevs;
715d398e 55 OrderedHashmap *networks;
bfbf150e 56 OrderedSet *address_pools;
a27588d4 57 Set *dhcp_pd_subnet_ids;
f579559b 58
4e26a5ba
YW
59 DUID dhcp_duid;
60 DUID dhcp6_duid;
28f9667d 61 DUID duid_product_uuid;
27dfc982 62 bool has_product_uuid;
4e26a5ba 63 bool product_uuid_requested;
27dfc982 64
7901cea1
MP
65 char* dynamic_hostname;
66 char* dynamic_timezone;
bce67bbe
SS
67
68 Set *rules;
4b600505 69
69e244e3
YW
70 /* Manage nexthops by id. */
71 Hashmap *nexthops_by_id;
72
30f10837
YW
73 /* Manager stores nexthops without RTA_OIF attribute. */
74 Set *nexthops;
30f10837 75
ad208fac 76 /* Manager stores routes without RTA_OIF attribute. */
76c5a0f2 77 unsigned route_remove_messages;
ad208fac
YW
78 Set *routes;
79 Set *routes_foreign;
80
c038ce46 81 /* Route table name */
552b90a2
YW
82 Hashmap *route_table_numbers_by_name;
83 Hashmap *route_table_names_by_number;
c038ce46 84
edb69db2
YW
85 /* Wiphy */
86 Hashmap *wiphy_by_index;
87 Hashmap *wiphy_by_name;
88
7802194a 89 /* For link speed meter */
a879e1a4
YW
90 bool use_speed_meter;
91 sd_event_source *speed_meter_event_source;
92 usec_t speed_meter_interval_usec;
93 usec_t speed_meter_usec_new;
94 usec_t speed_meter_usec_old;
dd9b10c8 95
4cbd379e 96 bool bridge_mdb_on_master_not_supported;
761cf19d
FW
97
98 FirewallContext *fw_ctx;
19d9a5ad
YW
99
100 OrderedSet *request_queue;
af7a86b8
YW
101
102 Hashmap *tuntap_fds_by_name;
f579559b
TG
103};
104
4c78dc17 105int manager_new(Manager **ret, bool test_mode);
75db809a 106Manager* manager_free(Manager *m);
f579559b 107
4c78dc17 108int manager_setup(Manager *m);
b76d99d9 109int manager_start(Manager *m);
a97dcc12 110
02b59d57 111int manager_load_config(Manager *m);
02b59d57 112
446aaaf3 113int manager_enumerate(Manager *m);
f579559b 114
59eb33e0
MP
115int manager_set_hostname(Manager *m, const char *hostname);
116int manager_set_timezone(Manager *m, const char *timezone);
117
f579559b 118DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);