]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: ndisc: change link state into "configuring" only when a new address or route...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 3 Feb 2021 16:00:42 +0000 (01:00 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 12 Feb 2021 13:44:05 +0000 (22:44 +0900)
src/network/networkd-ndisc.c

index 47b35bd543e6e1dd6c4b2de5c2cac383f0969ad8..4b9485b6b270cd29df0973e2e8b241af2e337082 100644 (file)
@@ -343,6 +343,8 @@ static int ndisc_route_configure(Route *route, Link *link, sd_ndisc_router *rt)
         r = route_configure(route, link, ndisc_route_handler, &ret);
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to set NDisc route: %m");
+        if (r > 0)
+                link->ndisc_routes_configured = false;
 
         link->ndisc_routes_messages++;
 
@@ -437,6 +439,8 @@ static int ndisc_address_configure(Address *address, Link *link, sd_ndisc_router
         r = address_configure(address, link, ndisc_address_handler, &ret);
         if (r < 0)
                 return log_link_error_errno(link, r, "Failed to set NDisc SLAAC address: %m");
+        if (r > 0)
+                link->ndisc_addresses_configured = false;
 
         link->ndisc_addresses_messages++;
 
@@ -1213,9 +1217,6 @@ static int ndisc_router_handler(Link *link, sd_ndisc_router *rt) {
                 return 0;
         }
 
-        link->ndisc_addresses_configured = false;
-        link->ndisc_routes_configured = false;
-
         SET_FOREACH(na, link->ndisc_addresses)
                 if (IN6_ARE_ADDR_EQUAL(&na->router, &router.in6))
                         na->marked = true;