summaryrefslogtreecommitdiff
path: root/src/network/networkd-manager.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-10-14 03:10:31 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-10-19 00:57:23 +0900
commitcde09c34508947fbb4097facd9185dd385a1dbb5 (patch)
treedc1f8f2e85ce9b3d5c81add6d5abb4d00f7c389e /src/network/networkd-manager.c
parent3f3bc1f2e70b7af71b58a551ed0be4438b0d9a9e (diff)
downloadsystemd-cde09c34508947fbb4097facd9185dd385a1dbb5.tar.gz
network: dhcp6: manage assigned downstream prefixes by using Hashmap
When a system has thousands of downstream interfaces, previously the total cost of finding free subnet ID was O(n^2), where n is the number of downstream interfaces. This makes assigned prefixes are managed by Manager with Hashmap. So, the cost becomes O(n log n).
Diffstat (limited to 'src/network/networkd-manager.c')
-rw-r--r--src/network/networkd-manager.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index b4494d5182..c5ccfb4b58 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -485,6 +485,7 @@ Manager* manager_free(Manager *m) {
m->dirty_links = set_free_with_destructor(m->dirty_links, link_unref);
m->links_by_name = hashmap_free(m->links_by_name);
m->links_by_hw_addr = hashmap_free(m->links_by_hw_addr);
+ 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->networks = ordered_hashmap_free_with_destructor(m->networks, network_unref);