]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: route: make route_cancel_request() take Link*
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 Dec 2021 20:01:30 +0000 (05:01 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 6 Dec 2021 12:30:57 +0000 (21:30 +0900)
As the Route object may be managed by Manager.

src/network/networkd-dhcp-prefix-delegation.c
src/network/networkd-dhcp4.c
src/network/networkd-dhcp6.c
src/network/networkd-ndisc.c
src/network/networkd-route.c
src/network/networkd-route.h

index 85de6757f66299d865b34915754cad807343fde4..2b2f78779508d11b55a2890cb798601ab4cf0bbd 100644 (file)
@@ -184,7 +184,7 @@ int dhcp6_pd_remove(Link *link, bool only_marked) {
                         if (k < 0)
                                 r = k;
 
-                        route_cancel_request(route);
+                        route_cancel_request(route, link);
                 }
         } else {
                 Address *address;
index 1ee0052a751c759e5c41a5f5bc93599b03d2ed8e..cd30cae7c9c4fc63635eb7c3b7b8f1171e74ead5 100644 (file)
@@ -71,7 +71,7 @@ static int dhcp4_remove_address_and_routes(Link *link, bool only_marked) {
                 if (k < 0)
                         r = k;
 
-                route_cancel_request(route);
+                route_cancel_request(route, link);
         }
 
         SET_FOREACH(address, link->addresses) {
index f86efca5c728197e154bcdca1444b655560cd56e..b9831e7fa1272a721b5f315ec3526096b3130a90 100644 (file)
@@ -63,7 +63,7 @@ static int dhcp6_remove(Link *link, bool only_marked) {
                 if (k < 0)
                         r = k;
 
-                route_cancel_request(route);
+                route_cancel_request(route, link);
         }
 
         SET_FOREACH(address, link->addresses) {
index 470c96932903427963c21355fbf1906ca4ea5130..df5e580aeffbbe5590843a9656dbdab0e954776f 100644 (file)
@@ -90,7 +90,7 @@ static int ndisc_remove(Link *link, struct in6_addr *router) {
                 if (k < 0)
                         r = k;
 
-                route_cancel_request(route);
+                route_cancel_request(route, link);
         }
 
         SET_FOREACH(address, link->addresses) {
index 20d6aa47f6609f894ea52dc53a557224fc219c98..0995402bc56be3ee4488ae72bb6d5423d4e8a77e 100644 (file)
@@ -1260,24 +1260,25 @@ static int route_configure(
         return 0;
 }
 
-void route_cancel_request(Route *route) {
+void route_cancel_request(Route *route, Link *link) {
         Request req;
 
         assert(route);
 
-        if (!route_is_requesting(route))
-                return;
+        link = route->link ?: link;
 
-        if (!route->link)
+        assert(link);
+
+        if (!route_is_requesting(route))
                 return;
 
         req = (Request) {
-                .link = route->link,
+                .link = link,
                 .type = REQUEST_TYPE_ROUTE,
                 .route = route,
         };
 
-        request_drop(ordered_set_get(route->link->manager->request_queue, &req));
+        request_drop(ordered_set_get(link->manager->request_queue, &req));
         route_cancel_requesting(route);
 }
 
index a3194de1ae71930319101cff8a460051fcc60906..e3e22a59853ce95e5c5c7800318dd3b7f81f8905 100644 (file)
@@ -86,7 +86,7 @@ int link_drop_routes(Link *link);
 int link_drop_foreign_routes(Link *link);
 void link_foreignize_routes(Link *link);
 
-void route_cancel_request(Route *route);
+void route_cancel_request(Route *route, Link *link);
 int link_request_route(
                 Link *link,
                 Route *route,