summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2019-05-04 11:00:33 +0200
committerYu Watanabe <watanabe.yu+github@gmail.com>2019-05-04 16:46:02 +0200
commit6c0c041a8ec58be9505b1cf25e28358b0b1d7c61 (patch)
tree365a7e9279d8bf10aedd373e1543f4c7aed33488
parent552081a4992e2d17a769c65b991c8f41b9802c12 (diff)
downloadsystemd-6c0c041a8ec58be9505b1cf25e28358b0b1d7c61.tar.gz
network: make link_check_ready() handle LinkLocalAddressing=fallback
-rw-r--r--src/network/networkd-link.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 52577f5269..532f2d7f96 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)