]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/networkd-manager.h
network/varlink: introduce io.systemd.Network.SetPersistentStorage method
[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
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 22struct 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;
f90eb086 44 bool persistent_storage_is_ready;
84de38c5
TG
45
46 Set *dirty_links;
9c5b8d46 47 Set *new_wlan_ifindices;
6a24f148 48
bbf7c048 49 char *state_file;
e331e246 50 LinkOperationalState operational_state;
7f3c07ad
YW
51 LinkCarrierState carrier_state;
52 LinkAddressState address_state;
8430841b
L
53 LinkAddressState ipv4_address_state;
54 LinkAddressState ipv6_address_state;
bcdcc596 55 LinkOnlineState online_state;
bbf7c048 56
6eab614d 57 Hashmap *links_by_index;
0b54c870 58 Hashmap *links_by_name;
fe321d45 59 Hashmap *links_by_hw_addr;
a27588d4 60 Hashmap *links_by_dhcp_pd_subnet_prefix;
52433f6b 61 Hashmap *netdevs;
715d398e 62 OrderedHashmap *networks;
bfbf150e 63 OrderedSet *address_pools;
a27588d4 64 Set *dhcp_pd_subnet_ids;
f579559b 65
4e26a5ba
YW
66 DUID dhcp_duid;
67 DUID dhcp6_duid;
28f9667d 68 DUID duid_product_uuid;
27dfc982 69 bool has_product_uuid;
4e26a5ba 70 bool product_uuid_requested;
27dfc982 71
7901cea1
MP
72 char* dynamic_hostname;
73 char* dynamic_timezone;
bce67bbe
SS
74
75 Set *rules;
4b600505 76
69e244e3
YW
77 /* Manage nexthops by id. */
78 Hashmap *nexthops_by_id;
fb126bb1 79 Set *nexthop_ids; /* requested IDs in .network files */
69e244e3 80
ad208fac 81 /* Manager stores routes without RTA_OIF attribute. */
76c5a0f2 82 unsigned route_remove_messages;
ad208fac 83 Set *routes;
ad208fac 84
c038ce46 85 /* Route table name */
552b90a2
YW
86 Hashmap *route_table_numbers_by_name;
87 Hashmap *route_table_names_by_number;
c038ce46 88
edb69db2
YW
89 /* Wiphy */
90 Hashmap *wiphy_by_index;
91 Hashmap *wiphy_by_name;
92
7802194a 93 /* For link speed meter */
a879e1a4
YW
94 bool use_speed_meter;
95 sd_event_source *speed_meter_event_source;
96 usec_t speed_meter_interval_usec;
97 usec_t speed_meter_usec_new;
98 usec_t speed_meter_usec_old;
dd9b10c8 99
4cbd379e 100 bool bridge_mdb_on_master_not_supported;
761cf19d
FW
101
102 FirewallContext *fw_ctx;
19d9a5ad 103
4f6b801b 104 bool request_queued;
19d9a5ad 105 OrderedSet *request_queue;
85a6f300 106 OrderedSet *remove_request_queue;
af7a86b8
YW
107
108 Hashmap *tuntap_fds_by_name;
1e869a5d
YW
109
110 unsigned reloading;
3976c430
YW
111
112 /* sysctl */
113 int ip_forwarding[2];
f579559b
TG
114};
115
4c78dc17 116int manager_new(Manager **ret, bool test_mode);
75db809a 117Manager* manager_free(Manager *m);
f579559b 118
4c78dc17 119int manager_setup(Manager *m);
b76d99d9 120int manager_start(Manager *m);
a97dcc12 121
02b59d57 122int manager_load_config(Manager *m);
02b59d57 123
41476186
YW
124int manager_enumerate_internal(
125 Manager *m,
126 sd_netlink *nl,
127 sd_netlink_message *req,
128 int (*process)(sd_netlink *, sd_netlink_message *, Manager *));
446aaaf3 129int manager_enumerate(Manager *m);
f579559b 130
59eb33e0
MP
131int manager_set_hostname(Manager *m, const char *hostname);
132int manager_set_timezone(Manager *m, const char *timezone);
133
1e869a5d 134int manager_reload(Manager *m, sd_bus_message *message);
0e07cdb0 135
f579559b 136DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);