device: split handling for dad6_failed_addrs and dad6_ip6_config in queued_ip_config_change()

There is no change in behavior, however don't handle dad6_failed_addrs
and dad6_ip6_config in the same block.

While both parts are related to IPv6 DAD, they do something rather
different:

 - the first block, checks all candidates from dad6_failed_addrs whether
   they actually indicate DAD failed, and handles them by notifying
   NMNDisc about failed addresses.

 - the second block, checks whether we have now all addresses from
   dad6_ip6_config that we are waiting for.

Split the blocks.

(cherry picked from commit 3fcdba1a19)
This commit is contained in:
Thomas Haller
2018-06-20 12:46:02 +02:00
parent b86d8968d5
commit f5b48bd973

View File

@@ -12228,9 +12228,7 @@ static gboolean
queued_ip_config_change (NMDevice *self, int addr_family)
{
NMDevicePrivate *priv;
gboolean need_ipv6ll = FALSE;
const gboolean IS_IPv4 = (addr_family == AF_INET);
NMPlatform *platform;
g_return_val_if_fail (NM_IS_DEVICE (self), G_SOURCE_REMOVE);
@@ -12263,6 +12261,9 @@ queued_ip_config_change (NMDevice *self, int addr_family)
}
if (!IS_IPv4) {
NMPlatform *platform;
gboolean need_ipv6ll = FALSE;
if ( priv->state < NM_DEVICE_STATE_DEACTIVATING
&& (platform = nm_device_get_platform (self))
&& nm_platform_link_get (platform, priv->ifindex)) {
@@ -12303,7 +12304,9 @@ queued_ip_config_change (NMDevice *self, int addr_family)
g_slist_free_full (priv->dad6_failed_addrs, (GDestroyNotify) nmp_object_unref);
priv->dad6_failed_addrs = NULL;
}
}
if (!IS_IPv4) {
/* Check if DAD is still pending */
if ( priv->ip6_state == IP_CONF
&& priv->dad6_ip6_config