mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-27 10:30:13 +01:00
device: fail DHCPv6 if a link-local address is not present
Instead of throwing an assertion, fail DHCPv6 when a IPv6 link-local address is not configured on the device. There are different reasons why the assertion may fail: for example the address was removed externally; or the device is gone (and thus the platform already received the notification of addresses removal) but the device is still connecting because its disposal happens in an idle callback. None of these deserves an assertion, which should only be for programming errors. https://bugzilla.redhat.com/show_bug.cgi?id=1432251
This commit is contained in:
parent
a1325ebd75
commit
4987ec408a
1 changed files with 8 additions and 5 deletions
|
|
@ -6226,17 +6226,20 @@ dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection)
|
|||
s_ip6 = nm_connection_get_setting_ip6_config (connection);
|
||||
g_assert (s_ip6);
|
||||
|
||||
if (priv->ext_ip6_config_captured)
|
||||
ll_addr = nm_ip6_config_get_address_first_nontentative (priv->ext_ip6_config_captured, TRUE);
|
||||
|
||||
if (!ll_addr) {
|
||||
_LOGW (LOGD_DHCP6, "can't start DHCPv6: no link-local address");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hw_addr = nm_platform_link_get_address (NM_PLATFORM_GET, nm_device_get_ip_ifindex (self), &hw_addr_len);
|
||||
if (hw_addr_len) {
|
||||
tmp = g_byte_array_sized_new (hw_addr_len);
|
||||
g_byte_array_append (tmp, hw_addr, hw_addr_len);
|
||||
}
|
||||
|
||||
if (priv->ext_ip6_config_captured)
|
||||
ll_addr = nm_ip6_config_get_address_first_nontentative (priv->ext_ip6_config_captured, TRUE);
|
||||
|
||||
g_return_val_if_fail (ll_addr, FALSE);
|
||||
|
||||
priv->dhcp6.client = nm_dhcp_manager_start_ip6 (nm_dhcp_manager_get (),
|
||||
nm_device_get_ip_iface (self),
|
||||
nm_device_get_ip_ifindex (self),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue