]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: do not make link in configured state when no address is assigned
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 12 Jul 2020 05:57:45 +0000 (14:57 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 15 Jul 2020 08:15:25 +0000 (17:15 +0900)
When DHCP6 and RA are enabled, and RA does not provide any addresses,
then link may become configured state even if no address is assigned,
due to the time-lag between RA completion and DHCP reply.
This makes if DHCP is explicitly enabled, then link must have at least
one valid address to be in the configured state.

src/network/networkd-link.c

index c6fa56cc6a0371c472d9c8ae49854db0baa218bd..4c16255a7547b84987629cca54b3a7377102e1a8 100644 (file)
@@ -1168,6 +1168,11 @@ void link_check_ready(Link *link) {
                         return;
                 }
 
+                if ((link_dhcp4_enabled(link) || link_dhcp6_enabled(link)) && set_isempty(link->addresses)) {
+                        log_link_debug(link, "%s(): DHCP4 or DHCP6 is enabled but no address is assigned yet.", __func__);
+                        return;
+                }
+
                 if (link_dhcp4_enabled(link) || link_dhcp6_enabled(link) || dhcp6_get_prefix_delegation(link) || link_ipv6_accept_ra_enabled(link)) {
                         if (!link->dhcp4_configured &&
                             !(link->dhcp6_address_configured && link->dhcp6_route_configured) &&