]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: Disable IPv6 when DHCPv6 is only enabled
authorTom Yan <tom.ty89@gmail.com>
Wed, 25 May 2016 12:40:48 +0000 (20:40 +0800)
committerTom Yan <tom.ty89@gmail.com>
Wed, 25 May 2016 12:40:48 +0000 (20:40 +0800)
DHCPv6 requires an IPv6 link-local address to work. The client will not be started (even when enabled explicitly with `DHCP=`) if none is configured (either by autoconfiguration or manually). Therefore, disable IPv6 in such case.

src/network/networkd-link.c

index 9d2f244087ec66beb19514c2f0f150ec017bf9f5..6e6f9618b0d9d72335e8b34652b9ea937b4eb0c2 100644 (file)
@@ -110,7 +110,8 @@ static bool link_ipv6_enabled(Link *link) {
         if (!socket_ipv6_is_supported())
                 return false;
 
-        return link_dhcp6_enabled(link) || link_ipv6ll_enabled(link) || network_has_static_ipv6_addresses(link->network);
+        /* DHCPv6 client will not be started if no IPv6 link-local address is configured. */
+        return link_ipv6ll_enabled(link) || network_has_static_ipv6_addresses(link->network);
 }
 
 static bool link_lldp_rx_enabled(Link *link) {
@@ -1577,7 +1578,7 @@ static int link_up(Link *link) {
                         return log_link_error_errno(link, r, "Could not set MAC address: %m");
         }
 
-        /* If IPv6 not configured (no static IPv6 address and neither DHCPv6 nor IPv6LL is enabled)
+        /* If IPv6 not configured (no static IPv6 address and IPv6LL autoconfiguration is disabled)
            for this interface then disable IPv6 else enable it. */
         (void) link_enable_ipv6(link);