]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/ndisc: several cleanups for ndisc_remove_route()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 11 Nov 2024 17:06:21 +0000 (02:06 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 12 Nov 2024 09:08:25 +0000 (18:08 +0900)
- drop unnecessary call of ndisc_set_route_priority() at the beginning,
  as it is called later in the loop below,
- use RET_GATHER() and remove all possible routes even if failed.

src/network/networkd-ndisc.c

index 3b130ee4ccf4d1629ed87fdafef460d3c55bed14..698fdbdb032e7ec434fa017c6fb88fbb430b45d4 100644 (file)
@@ -292,14 +292,12 @@ static int ndisc_request_router_route(Route *route, Link *link, sd_ndisc_router
 }
 
 static int ndisc_remove_route(Route *route, Link *link) {
-        int r;
+        int r, ret = 0;
 
         assert(route);
         assert(link);
         assert(link->manager);
 
-        ndisc_set_route_priority(link, route);
-
         if (!route->table_set)
                 route->table = link_get_ndisc_route_table(link);
 
@@ -331,9 +329,7 @@ static int ndisc_remove_route(Route *route, Link *link) {
                         if (existing->source == NETWORK_CONFIG_SOURCE_STATIC)
                                 continue;
 
-                        r = route_remove_and_cancel(existing, link->manager);
-                        if (r < 0)
-                                return r;
+                        RET_GATHER(ret, route_remove_and_cancel(existing, link->manager));
                 }
 
                 /* Then, check if the route exists. */
@@ -341,13 +337,11 @@ static int ndisc_remove_route(Route *route, Link *link) {
                         if (existing->source == NETWORK_CONFIG_SOURCE_STATIC)
                                 continue;
 
-                        r = route_remove_and_cancel(existing, link->manager);
-                        if (r < 0)
-                                return r;
+                        RET_GATHER(ret, route_remove_and_cancel(existing, link->manager));
                 }
         }
 
-        return 0;
+        return ret;
 }
 
 static int ndisc_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Request *req, Link *link, Address *address) {