]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
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" |
f579559b TG |
12 | #include "hashmap.h" |
13 | #include "list.h" | |
a879e1a4 | 14 | #include "time-util.h" |
f579559b | 15 | |
fc2f9534 LP |
16 | #include "networkd-address-pool.h" |
17 | #include "networkd-link.h" | |
71d35b6b | 18 | #include "networkd-network.h" |
11bf3cce | 19 | |
f579559b | 20 | struct 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 | |
84de38c5 TG |
31 | bool enumerating:1; |
32 | bool dirty:1; | |
ab76be55 | 33 | bool restarting:1; |
5d3b8017 | 34 | bool manage_foreign_routes; |
84de38c5 TG |
35 | |
36 | Set *dirty_links; | |
6a24f148 | 37 | |
bbf7c048 | 38 | char *state_file; |
e331e246 | 39 | LinkOperationalState operational_state; |
7f3c07ad YW |
40 | LinkCarrierState carrier_state; |
41 | LinkAddressState address_state; | |
bbf7c048 | 42 | |
f579559b | 43 | Hashmap *links; |
52433f6b | 44 | Hashmap *netdevs; |
715d398e | 45 | OrderedHashmap *networks; |
e133b289 | 46 | Hashmap *dhcp6_prefixes; |
1633c457 | 47 | Set *dhcp6_pd_prefixes; |
11bf3cce | 48 | LIST_HEAD(AddressPool, address_pools); |
f579559b | 49 | |
f579559b | 50 | usec_t network_dirs_ts_usec; |
413708d1 | 51 | |
8341a5c3 | 52 | DUID duid; |
27dfc982 YW |
53 | sd_id128_t product_uuid; |
54 | bool has_product_uuid; | |
55 | Set *links_requesting_uuid; | |
56 | Set *duids_requesting_uuid; | |
57 | ||
7901cea1 MP |
58 | char* dynamic_hostname; |
59 | char* dynamic_timezone; | |
bce67bbe SS |
60 | |
61 | Set *rules; | |
62 | Set *rules_foreign; | |
63 | Set *rules_saved; | |
4b600505 | 64 | |
a879e1a4 YW |
65 | /* For link speed meter*/ |
66 | bool use_speed_meter; | |
67 | sd_event_source *speed_meter_event_source; | |
68 | usec_t speed_meter_interval_usec; | |
69 | usec_t speed_meter_usec_new; | |
70 | usec_t speed_meter_usec_old; | |
dd9b10c8 | 71 | |
17972401 YW |
72 | bool dhcp4_prefix_root_cannot_set_table:1; |
73 | bool bridge_mdb_on_master_not_supported:1; | |
f579559b TG |
74 | }; |
75 | ||
3534a043 | 76 | int manager_new(Manager **ret); |
f579559b TG |
77 | void manager_free(Manager *m); |
78 | ||
8f203c16 | 79 | int manager_connect_bus(Manager *m); |
b76d99d9 | 80 | int manager_start(Manager *m); |
a97dcc12 | 81 | |
02b59d57 TG |
82 | int manager_load_config(Manager *m); |
83 | bool manager_should_reload(Manager *m); | |
84 | ||
505f8da7 | 85 | int manager_rtnl_enumerate_links(Manager *m); |
45af44d4 | 86 | int manager_rtnl_enumerate_addresses(Manager *m); |
d1bdafd2 | 87 | int manager_rtnl_enumerate_neighbors(Manager *m); |
1c8e710c | 88 | int manager_rtnl_enumerate_routes(Manager *m); |
bce67bbe | 89 | int manager_rtnl_enumerate_rules(Manager *m); |
c16c7808 | 90 | int manager_rtnl_enumerate_nexthop(Manager *m); |
f579559b | 91 | |
200a0868 | 92 | int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, void *userdata); |
d1bdafd2 | 93 | int manager_rtnl_process_neighbor(sd_netlink *nl, sd_netlink_message *message, void *userdata); |
1c8e710c | 94 | int manager_rtnl_process_route(sd_netlink *nl, sd_netlink_message *message, void *userdata); |
bce67bbe | 95 | int manager_rtnl_process_rule(sd_netlink *nl, sd_netlink_message *message, void *userdata); |
c16c7808 | 96 | int manager_rtnl_process_nexthop(sd_netlink *nl, sd_netlink_message *message, void *userdata); |
200a0868 | 97 | |
84de38c5 | 98 | void manager_dirty(Manager *m); |
3bef724f | 99 | |
0dd25fb9 | 100 | int manager_address_pool_acquire(Manager *m, int family, unsigned prefixlen, union in_addr_union *found); |
11bf3cce | 101 | |
4f5f911e LP |
102 | Link* manager_find_uplink(Manager *m, Link *exclude); |
103 | ||
59eb33e0 MP |
104 | int manager_set_hostname(Manager *m, const char *hostname); |
105 | int manager_set_timezone(Manager *m, const char *timezone); | |
27dfc982 | 106 | int manager_request_product_uuid(Manager *m, Link *link); |
59eb33e0 | 107 | |
f579559b | 108 | DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free); |