]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: use address_equal()/route_equal() to compare addresses or routes configured...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 4 Aug 2021 04:14:03 +0000 (13:14 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 4 Aug 2021 08:22:38 +0000 (09:22 +0100)
Fixes #20244.

src/network/networkd-address.c
src/network/networkd-route.c
src/network/networkd-route.h

index 4df799e54813b4c2309adbfbd29f0ae78cde434d..c0d4e9ae673701a58f114182ebea8d488a36e14d 100644 (file)
@@ -166,7 +166,7 @@ Address *address_free(Address *address) {
                 set_remove(address->link->dhcp6_pd_addresses, address);
                 set_remove(address->link->dhcp6_pd_addresses_old, address);
                 SET_FOREACH(n, address->link->ndisc_addresses)
-                        if (n->address == address)
+                        if (address_equal(n->address, address))
                                 free(set_remove(address->link->ndisc_addresses, n));
 
                 if (address->family == AF_INET6 &&
index d8daa947be2f455771600e534185db0fc4cbfe76..46fbf4f324c7cb25809231d11f3465b214c37d6f 100644 (file)
@@ -276,7 +276,7 @@ Route *route_free(Route *route) {
                 set_remove(route->link->dhcp6_pd_routes, route);
                 set_remove(route->link->dhcp6_pd_routes_old, route);
                 SET_FOREACH(n, route->link->ndisc_routes)
-                        if (n->route == route)
+                        if (route_equal(n->route, route))
                                 free(set_remove(route->link->ndisc_routes, n));
         }
 
@@ -432,7 +432,7 @@ DEFINE_HASH_OPS_WITH_KEY_DESTRUCTOR(
                 route_compare_func,
                 route_free);
 
-static bool route_equal(const Route *r1, const Route *r2) {
+bool route_equal(const Route *r1, const Route *r2) {
         if (r1 == r2)
                 return true;
 
index fa0b3ba0fc9213fc7e30f660ef853d77b6db522b..2d262819add0f3877d10aece97b1afbbd4dd369d 100644 (file)
@@ -66,6 +66,7 @@ typedef struct Route {
 
 void route_hash_func(const Route *route, struct siphash *state);
 int route_compare_func(const Route *a, const Route *b);
+bool route_equal(const Route *r1, const Route *r2);
 extern const struct hash_ops route_hash_ops;
 
 int route_new(Route **ret);