summaryrefslogtreecommitdiff
path: root/src/network/networkd-manager.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-12-01 19:43:40 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-12-01 20:35:03 +0900
commit1a4ca0e2f35d859f2d7f3bb8c94eefe2ad1c2ff4 (patch)
tree3bdbf81e7b85b7fb5d0dfe3d8604bc34a882abfb /src/network/networkd-manager.c
parenta74229c58ed4e472875829589502119e4badc483 (diff)
downloadsystemd-1a4ca0e2f35d859f2d7f3bb8c94eefe2ad1c2ff4.tar.gz
network: dhcp6-pd: exclude all explicitly specified subnet IDs when searching free IDs
When the upstream link gained a lease, then several downstream links may not appear yet. Previously, the explicitly specified subnet ID for a downstream link which appears later may be already assigned to an interface which does not request specific subnet ID. To avoid such situation, this makes all specified IDs are excluded when searching free IDs. As a side effect, we can avoid the second call of dhcp6_pd_distribute_prefix().
Diffstat (limited to 'src/network/networkd-manager.c')
-rw-r--r--src/network/networkd-manager.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index 2141e20622..a122e08800 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -502,6 +502,7 @@ Manager* manager_free(Manager *m) {
m->links_by_dhcp6_pd_prefix = hashmap_free(m->links_by_dhcp6_pd_prefix);
m->links_by_index = hashmap_free_with_destructor(m->links_by_index, link_unref);
+ m->dhcp6_pd_subnet_ids = set_free(m->dhcp6_pd_subnet_ids);
m->networks = ordered_hashmap_free_with_destructor(m->networks, network_unref);
m->netdevs = hashmap_free_with_destructor(m->netdevs, netdev_unref);
@@ -585,7 +586,7 @@ int manager_load_config(Manager *m) {
if (r < 0)
return r;
- return 0;
+ return manager_build_dhcp6_pd_subnet_ids(m);
}
bool manager_should_reload(Manager *m) {