]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/networkd-manager.h
Merge pull request #20303 from andir/sysconfig-example
[thirdparty/systemd.git] / src / network / networkd-manager.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3
4 #include "sd-bus.h"
5 #include "sd-device.h"
6 #include "sd-event.h"
7 #include "sd-id128.h"
8 #include "sd-netlink.h"
9 #include "sd-resolve.h"
10
11 #include "dhcp-identifier.h"
12 #include "firewall-util.h"
13 #include "hashmap.h"
14 #include "networkd-link.h"
15 #include "networkd-network.h"
16 #include "ordered-set.h"
17 #include "set.h"
18 #include "time-util.h"
19
20 struct Manager {
21 sd_netlink *rtnl;
22 /* lazy initialized */
23 sd_netlink *genl;
24 sd_event *event;
25 sd_resolve *resolve;
26 sd_bus *bus;
27 sd_device_monitor *device_monitor;
28 Hashmap *polkit_registry;
29 int ethtool_fd;
30
31 bool enumerating;
32 bool dirty;
33 bool restarting;
34 bool manage_foreign_routes;
35 bool manage_foreign_rules;
36
37 Set *dirty_links;
38
39 char *state_file;
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;
46
47 Hashmap *links_by_index;
48 Hashmap *links_by_name;
49 Hashmap *links_by_hw_addr;
50 Hashmap *netdevs;
51 OrderedHashmap *networks;
52 Hashmap *dhcp6_prefixes;
53 Set *dhcp6_pd_prefixes;
54 OrderedSet *address_pools;
55
56 usec_t network_dirs_ts_usec;
57
58 DUID dhcp_duid;
59 DUID dhcp6_duid;
60 DUID duid_product_uuid;
61 bool has_product_uuid;
62 bool product_uuid_requested;
63
64 char* dynamic_hostname;
65 char* dynamic_timezone;
66
67 unsigned routing_policy_rule_remove_messages;
68 Set *rules;
69 Set *rules_foreign;
70
71 /* Manage nexthops by id. */
72 Hashmap *nexthops_by_id;
73
74 /* Manager stores nexthops without RTA_OIF attribute. */
75 unsigned nexthop_remove_messages;
76 Set *nexthops;
77 Set *nexthops_foreign;
78
79 /* Manager stores routes without RTA_OIF attribute. */
80 unsigned route_remove_messages;
81 Set *routes;
82 Set *routes_foreign;
83
84 /* Route table name */
85 Hashmap *route_table_numbers_by_name;
86 Hashmap *route_table_names_by_number;
87
88 /* For link speed meter */
89 bool use_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;
94
95 bool dhcp4_prefix_root_cannot_set_table;
96 bool bridge_mdb_on_master_not_supported;
97
98 FirewallContext *fw_ctx;
99
100 OrderedSet *request_queue;
101 };
102
103 int manager_new(Manager **ret);
104 Manager* manager_free(Manager *m);
105
106 int manager_connect_bus(Manager *m);
107 int manager_start(Manager *m);
108
109 int manager_load_config(Manager *m);
110 bool manager_should_reload(Manager *m);
111
112 int manager_enumerate(Manager *m);
113
114 int manager_set_hostname(Manager *m, const char *hostname);
115 int manager_set_timezone(Manager *m, const char *timezone);
116
117 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);