[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