diff options
author | Thomas Haller <thaller@redhat.com> | 2018-03-09 16:32:12 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-03-20 15:24:38 +0100 |
commit | 6cdf0b182077dd10fcb4dc6834a918595806f33f (patch) | |
tree | 7d3686e8a06474781eb9f5ac5b4ac5a751a8e28d | |
parent | a58d4f5d3f62b2bf0bec615370c3d98b35c06c27 (diff) | |
download | NetworkManager-6cdf0b182077dd10fcb4dc6834a918595806f33f.tar.gz |
device: fix check for existing addresses to ignore DADFAILED
Likewise, in ndisc_ra_timeout() we also want to include tentative
addresses. Looking into priv->ip6_config to determine whether
an other IP configuration is active, is anyway odd, and likely
a bug.
-rw-r--r-- | src/devices/nm-device.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index a82deb4fe3..f5b8ce8171 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -7210,8 +7210,7 @@ dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection) if (priv->ext_ip6_config_captured) { ll_addr = nm_ip6_config_find_first_address (priv->ext_ip6_config_captured, NM_PLATFORM_MATCH_WITH_ADDRTYPE_LINKLOCAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_DADFAILED); + | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL); } if (!ll_addr) { @@ -7431,8 +7430,7 @@ linklocal6_complete (NMDevice *self) nm_assert (priv->ext_ip6_config_captured); nm_assert (nm_ip6_config_find_first_address (priv->ext_ip6_config_captured, NM_PLATFORM_MATCH_WITH_ADDRTYPE_LINKLOCAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_DADFAILED)); + | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL)); nm_clear_g_source (&priv->linklocal6_timeout_id); @@ -7550,8 +7548,7 @@ linklocal6_start (NMDevice *self) if ( priv->ext_ip6_config_captured && nm_ip6_config_find_first_address (priv->ext_ip6_config_captured, NM_PLATFORM_MATCH_WITH_ADDRTYPE_LINKLOCAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_DADFAILED)) + | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL)) return TRUE; connection = nm_device_get_applied_connection (self); @@ -7948,12 +7945,14 @@ ndisc_ra_timeout (NMNDisc *ndisc, NMDevice *self) * ever receive one, then time out IPv6. But if there is other * IPv6 configuration, like manual IPv6 addresses or external IPv6 * config, consider that sufficient for IPv6 success. + * + * FIXME: it doesn't seem correct to determine this based on which + * addresses we find inside priv->ip6_config. */ if ( priv->ip6_config && nm_ip6_config_find_first_address (priv->ip6_config, NM_PLATFORM_MATCH_WITH_ADDRTYPE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_DADFAILED)) + | NM_PLATFORM_MATCH_WITH_ADDRSTATE__ANY)) nm_device_activate_schedule_ip6_config_result (self); else nm_device_activate_schedule_ip6_config_timeout (self); @@ -11549,8 +11548,7 @@ update_ip_config (NMDevice *self, int addr_family, gboolean initial) && priv->ext_ip6_config_captured && nm_ip6_config_find_first_address (priv->ext_ip6_config_captured, NM_PLATFORM_MATCH_WITH_ADDRTYPE_LINKLOCAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL - | NM_PLATFORM_MATCH_WITH_ADDRSTATE_DADFAILED)) { + | NM_PLATFORM_MATCH_WITH_ADDRSTATE_NORMAL)) { /* linklocal6 is ready now, do the state transition... we are also * invoked as g_idle_add, so no problems with reentrance doing it now. */ |