From: Yu Watanabe Date: Sat, 4 May 2019 09:00:33 +0000 (+0200) Subject: network: make link_check_ready() handle LinkLocalAddressing=fallback X-Git-Tag: v243-rc1~488^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c0c041a8ec58be9505b1cf25e28358b0b1d7c61;p=thirdparty%2Fsystemd.git network: make link_check_ready() handle LinkLocalAddressing=fallback --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 52577f52693..532f2d7f96a 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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)