commit: 7e3c6ff7af8c1559301bf1e28f1b9c8188c519ac
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 24 16:44:45 2016 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Oct 24 16:44:50 2016 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=7e3c6ff7
net/iproute2: IPv6 DAD delay must be non-fatal.
Commit 50c9fd7827fa58d27a593c8c480068f85c047cec introduced a subtle
accidental change in the handling of IPv6 tentative addresses.
In an environment where the DAD completion time exceeds the configured
timeout (which was also reduced to 5 seconds, while the docs say 10
seconds), the interface was recorded as failing to start when the
timeout was hit without DAD completion. This means that the interface
was then marked as failed and later services did not start. No rollback
took place either.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
net/iproute2.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/iproute2.sh b/net/iproute2.sh
index 9ef704d..32d3c88 100644
--- a/net/iproute2.sh
+++ b/net/iproute2.sh
@@ -441,6 +441,8 @@ iproute2_post_start()
[ -z "$policyroute_order" ] &&
policyroute_order=${policy_rules_before_routes:-no}
yesno "$policyroute_order" || _iproute2_policy_routing
+ # This block must be non-fatal, otherwise the interface will not be
+ # recorded as starting, and later services may be blocked.
if _iproute2_ipv6_tentative; then
einfon "Waiting for IPv6 addresses (${_dad_timeout} seconds) "
while [ $_dad_timeout -gt 0 ]; do
@@ -454,7 +456,6 @@ iproute2_post_start()
if [ $_dad_timeout -le 0 ]; then
eend 1
- return 1
else
eend 0
fi