summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2017-04-30 17:30:44 +0200
committerLubomir Rintel <lkundrak@v3.sk>2017-05-10 13:17:23 +0200
commitbd9988f9845313b9c281fab7a6d7488d7911a1a0 (patch)
tree15fe486da52518bef4403f2956e7aa1554ccb160
parent1f2b5a2032242838c3e0dcf0b316385b96c3aee4 (diff)
downloadNetworkManager-bd9988f9845313b9c281fab7a6d7488d7911a1a0.tar.gz
device: don't await for IPv6 DAD to finish if we are ignoring that there's no carrier
It's not the correct thing to do, but is the same behavior we've done previously. DAD is not even going to start until there's carrier and the client would just wait indefinitely. Ideally, the client would choose not to waiat, but it currently there's no way the client would discover what is going on. https://bugzilla.redhat.com/show_bug.cgi?id=1446367
-rw-r--r--src/devices/nm-device.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 1b6fc97f2d..c886d34879 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -8499,11 +8499,14 @@ activate_stage5_ip6_config_commit (NMDevice *self)
/* Check if we have to wait for DAD */
if (priv->ip6_state == IP_CONF && !priv->dad6_ip6_config) {
- priv->dad6_ip6_config = dad6_get_pending_addresses (self);
+ if (!priv->carrier && priv->ignore_carrier && get_ip_config_may_fail (self, AF_INET6))
+ _LOGI (LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: carrier missing and ignored, not delaying activation");
+ else
+ priv->dad6_ip6_config = dad6_get_pending_addresses (self);
+
if (priv->dad6_ip6_config) {
- _LOGD (LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: waiting termination");
+ _LOGD (LOGD_DEVICE | LOGD_IP6, "IPv6 DAD: awaiting termination");
} else {
- /* No tentative addresses, proceed right away */
_set_ip_state (self, AF_INET6, IP_DONE);
check_ip_state (self, FALSE);
}