]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: make link_check_ready() handle LinkLocalAddressing=fallback
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 May 2019 09:00:33 +0000 (11:00 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 4 May 2019 14:46:02 +0000 (16:46 +0200)
src/network/networkd-link.c

index 52577f526933704ad39af506c831db523fef6471..532f2d7f96afdaca587153329c1fdf2b894fcd1f 100644 (file)
@@ -1012,18 +1012,18 @@ void link_check_ready(Link *link) {
         if (!link->routing_policy_rules_configured)
                 return;
 
-        if (link_ipv4ll_enabled(link))
-                if (!link->ipv4ll_address ||
-                    !link->ipv4ll_route)
-                        return;
+        if (link_ipv4ll_enabled(link) && !(link->ipv4ll_address && link->ipv4ll_route))
+                return;
 
         if (link_ipv6ll_enabled(link) &&
             in_addr_is_null(AF_INET6, (const union in_addr_union*) &link->ipv6ll_address))
                 return;
 
         if ((link_dhcp4_enabled(link) || link_dhcp6_enabled(link)) &&
-            !(link->dhcp4_configured || link->dhcp6_configured))
-                /* When DHCP is enabled, at least one protocol must provide an address. */
+            !(link->dhcp4_configured || link->dhcp6_configured) &&
+            !(link_ipv4ll_fallback_enabled(link) && link->ipv4ll_address && link->ipv4ll_route))
+                /* When DHCP is enabled, at least one protocol must provide an address, or
+                 * an IPv4ll fallback address must be configured. */
                 return;
 
         if (link_ipv6_accept_ra_enabled(link) && !link->ndisc_configured)