[arch-projects] [netctl][PATCH] Start DHCPv6 after DAD (FS#43183)

Jouke Witteveen j.witteveen at gmail.com
Thu Jan 8 14:11:12 UTC 2015


We need our link-local address to not be tentative.

After DHCPv6 we do not need to do DAD again, as it is part of DHCPv6
per RFT 3315, section 18.1.8.
---
 src/lib/ip | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/lib/ip b/src/lib/ip
index b7847a2..b6692c3 100644
--- a/src/lib/ip
+++ b/src/lib/ip
@@ -100,20 +100,15 @@ ip_set() {
         fi
     fi
 
-    case "$IP6" in
-      dhcp|dhcp-noaddr)
-        dhcp_call "${DHCP6Client:-dhclient}" start 6 ${IP6:5} || return
-      ;;
-      stateless|static)
-        for addr in "${Address6[@]}"; do
-            if ! do_debug ip -6 addr add $addr $(is_yes "${SkipDAD:-no}" && printf nodad) dev "$Interface"; then
-                report_error "Could not add address '$addr' to interface '$Interface'"
-            fi
-        done
-      ;;
-    esac
-
     if [[ $IP6 ]]; then
+        if [[ $IP6 == @(stateless|static) ]]; then
+            for addr in "${Address6[@]}"; do
+                if ! do_debug ip -6 addr add $addr $(is_yes "${SkipDAD:-no}" && printf nodad) dev "$Interface"; then
+                    report_error "Could not add address '$addr' to interface '$Interface'"
+                fi
+            done
+        fi
+
         if ! is_yes "${SkipDAD:-no}"; then
             # Wait for Duplicate Address Detection to finish
             if ! timeout_wait "${TimeoutDAD:-3}" '[[ -z "$(ip -6 addr show dev "$Interface" tentative)" ]]'; then
@@ -122,6 +117,11 @@ ip_set() {
             fi
         fi
 
+        # Start a DHCPv6 client after DAD has finished for the link-local address
+        if [[ $IP6 == @(dhcp|dhcp-noaddr) ]]; then
+            dhcp_call "${DHCP6Client:-dhclient}" start 6 ${IP6:5} || return
+        fi
+
         # Add static IPv6 routes after DAD has finished
         for route in "${Routes6[@]}"; do
             if ! do_debug ip -6 route add $route dev "$Interface"; then
-- 
2.2.1


More information about the arch-projects mailing list