diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-10-14 03:10:31 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-10-19 00:57:23 +0900 |
commit | cde09c34508947fbb4097facd9185dd385a1dbb5 (patch) | |
tree | dc1f8f2e85ce9b3d5c81add6d5abb4d00f7c389e /src/network/networkd-manager.c | |
parent | 3f3bc1f2e70b7af71b58a551ed0be4438b0d9a9e (diff) | |
download | systemd-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.c | 1 |
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); |