1 /* SPDX-License-Identifier: LGPL-2.1+ */
8 #include "sd-netlink.h"
9 #include "sd-resolve.h"
11 #include "dhcp-identifier.h"
14 #include "time-util.h"
16 #include "networkd-address-pool.h"
17 #include "networkd-link.h"
18 #include "networkd-network.h"
22 /* lazy initialized */
27 sd_device_monitor
*device_monitor
;
28 Hashmap
*polkit_registry
;
33 bool manage_foreign_routes
;
38 LinkOperationalState operational_state
;
39 LinkCarrierState carrier_state
;
40 LinkAddressState address_state
;
44 OrderedHashmap
*networks
;
45 Hashmap
*dhcp6_prefixes
;
46 LIST_HEAD(AddressPool
, address_pools
);
48 usec_t network_dirs_ts_usec
;
51 sd_id128_t product_uuid
;
52 bool has_product_uuid
;
53 Set
*links_requesting_uuid
;
54 Set
*duids_requesting_uuid
;
56 char* dynamic_hostname
;
57 char* dynamic_timezone
;
63 /* For link speed meter*/
65 sd_event_source
*speed_meter_event_source
;
66 usec_t speed_meter_interval_usec
;
67 usec_t speed_meter_usec_new
;
68 usec_t speed_meter_usec_old
;
70 bool dhcp4_prefix_root_cannot_set_table
;
73 int manager_new(Manager
**ret
);
74 void manager_free(Manager
*m
);
76 int manager_connect_bus(Manager
*m
);
77 int manager_start(Manager
*m
);
79 int manager_load_config(Manager
*m
);
80 bool manager_should_reload(Manager
*m
);
82 int manager_rtnl_enumerate_links(Manager
*m
);
83 int manager_rtnl_enumerate_addresses(Manager
*m
);
84 int manager_rtnl_enumerate_neighbors(Manager
*m
);
85 int manager_rtnl_enumerate_routes(Manager
*m
);
86 int manager_rtnl_enumerate_rules(Manager
*m
);
87 int manager_rtnl_enumerate_nexthop(Manager
*m
);
89 int manager_rtnl_process_address(sd_netlink
*nl
, sd_netlink_message
*message
, void *userdata
);
90 int manager_rtnl_process_neighbor(sd_netlink
*nl
, sd_netlink_message
*message
, void *userdata
);
91 int manager_rtnl_process_route(sd_netlink
*nl
, sd_netlink_message
*message
, void *userdata
);
92 int manager_rtnl_process_rule(sd_netlink
*nl
, sd_netlink_message
*message
, void *userdata
);
93 int manager_rtnl_process_nexthop(sd_netlink
*nl
, sd_netlink_message
*message
, void *userdata
);
95 void manager_dirty(Manager
*m
);
97 int manager_address_pool_acquire(Manager
*m
, int family
, unsigned prefixlen
, union in_addr_union
*found
);
99 Link
* manager_find_uplink(Manager
*m
, Link
*exclude
);
101 int manager_set_hostname(Manager
*m
, const char *hostname
);
102 int manager_set_timezone(Manager
*m
, const char *timezone
);
103 int manager_request_product_uuid(Manager
*m
, Link
*link
);
105 DEFINE_TRIVIAL_CLEANUP_FUNC(Manager
*, manager_free
);