device: move have_ip6_address() to nm_ip6_config_get_address_first_nontentative()
This commit is contained in:
@@ -405,7 +405,6 @@ static void nm_device_slave_notify_enslave (NMDevice *self, gboolean success);
|
|||||||
static void nm_device_slave_notify_release (NMDevice *self, NMDeviceStateReason reason);
|
static void nm_device_slave_notify_release (NMDevice *self, NMDeviceStateReason reason);
|
||||||
|
|
||||||
static gboolean addrconf6_start_with_link_ready (NMDevice *self);
|
static gboolean addrconf6_start_with_link_ready (NMDevice *self);
|
||||||
static gboolean dhcp6_start_with_link_ready (NMDevice *self, NMConnection *connection);
|
|
||||||
static NMActStageReturn linklocal6_start (NMDevice *self);
|
static NMActStageReturn linklocal6_start (NMDevice *self);
|
||||||
|
|
||||||
static void _carrier_wait_check_queued_act_request (NMDevice *self);
|
static void _carrier_wait_check_queued_act_request (NMDevice *self);
|
||||||
@@ -5397,27 +5396,6 @@ nm_device_dhcp6_renew (NMDevice *self, gboolean release)
|
|||||||
|
|
||||||
/******************************************/
|
/******************************************/
|
||||||
|
|
||||||
static gboolean
|
|
||||||
have_ip6_address (const NMIP6Config *ip6_config, gboolean linklocal)
|
|
||||||
{
|
|
||||||
guint i;
|
|
||||||
|
|
||||||
if (!ip6_config)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
linklocal = !!linklocal;
|
|
||||||
|
|
||||||
for (i = 0; i < nm_ip6_config_get_num_addresses (ip6_config); i++) {
|
|
||||||
const NMPlatformIP6Address *addr = nm_ip6_config_get_address (ip6_config, i);
|
|
||||||
|
|
||||||
if ((IN6_IS_ADDR_LINKLOCAL (&addr->address) == linklocal) &&
|
|
||||||
!(addr->flags & IFA_F_TENTATIVE))
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
linklocal6_cleanup (NMDevice *self)
|
linklocal6_cleanup (NMDevice *self)
|
||||||
{
|
{
|
||||||
@@ -5451,7 +5429,7 @@ linklocal6_complete (NMDevice *self)
|
|||||||
const char *method;
|
const char *method;
|
||||||
|
|
||||||
g_assert (priv->linklocal6_timeout_id);
|
g_assert (priv->linklocal6_timeout_id);
|
||||||
g_assert (have_ip6_address (priv->ip6_config, TRUE));
|
g_assert (nm_ip6_config_get_address_first_nontentative (priv->ip6_config, TRUE));
|
||||||
|
|
||||||
linklocal6_cleanup (self);
|
linklocal6_cleanup (self);
|
||||||
|
|
||||||
@@ -5568,7 +5546,7 @@ linklocal6_start (NMDevice *self)
|
|||||||
|
|
||||||
linklocal6_cleanup (self);
|
linklocal6_cleanup (self);
|
||||||
|
|
||||||
if (have_ip6_address (priv->ip6_config, TRUE))
|
if (nm_ip6_config_get_address_first_nontentative (priv->ip6_config, TRUE))
|
||||||
return NM_ACT_STAGE_RETURN_FINISH;
|
return NM_ACT_STAGE_RETURN_FINISH;
|
||||||
|
|
||||||
connection = nm_device_get_applied_connection (self);
|
connection = nm_device_get_applied_connection (self);
|
||||||
@@ -5803,7 +5781,7 @@ rdisc_ra_timeout (NMRDisc *rdisc, NMDevice *self)
|
|||||||
* IPv6 configuration, like manual IPv6 addresses or external IPv6
|
* IPv6 configuration, like manual IPv6 addresses or external IPv6
|
||||||
* config, consider that sufficient for IPv6 success.
|
* config, consider that sufficient for IPv6 success.
|
||||||
*/
|
*/
|
||||||
if (have_ip6_address (priv->ip6_config, FALSE))
|
if (nm_ip6_config_get_address_first_nontentative (priv->ip6_config, FALSE))
|
||||||
nm_device_activate_schedule_ip6_config_result (self);
|
nm_device_activate_schedule_ip6_config_result (self);
|
||||||
else
|
else
|
||||||
nm_device_activate_schedule_ip6_config_timeout (self);
|
nm_device_activate_schedule_ip6_config_timeout (self);
|
||||||
@@ -8735,7 +8713,7 @@ update_ip6_config (NMDevice *self, gboolean initial)
|
|||||||
|
|
||||||
if ( priv->linklocal6_timeout_id
|
if ( priv->linklocal6_timeout_id
|
||||||
&& priv->ext_ip6_config_captured
|
&& priv->ext_ip6_config_captured
|
||||||
&& have_ip6_address (priv->ext_ip6_config_captured, TRUE)) {
|
&& nm_ip6_config_get_address_first_nontentative (priv->ext_ip6_config_captured, TRUE)) {
|
||||||
/* linklocal6 is ready now, do the state transition... we are also
|
/* linklocal6 is ready now, do the state transition... we are also
|
||||||
* invoked as g_idle_add, so no problems with reentrance doing it now.
|
* invoked as g_idle_add, so no problems with reentrance doing it now.
|
||||||
*/
|
*/
|
||||||
|
@@ -1362,6 +1362,29 @@ nm_ip6_config_address_exists (const NMIP6Config *config,
|
|||||||
return _addresses_get_index (config, needle) >= 0;
|
return _addresses_get_index (config, needle) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const NMPlatformIP6Address *
|
||||||
|
nm_ip6_config_get_address_first_nontentative (const NMIP6Config *config, gboolean linklocal)
|
||||||
|
{
|
||||||
|
NMIP6ConfigPrivate *priv;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
|
||||||
|
|
||||||
|
priv = NM_IP6_CONFIG_GET_PRIVATE (config);
|
||||||
|
|
||||||
|
linklocal = !!linklocal;
|
||||||
|
|
||||||
|
for (i = 0; i < priv->addresses->len; i++) {
|
||||||
|
const NMPlatformIP6Address *addr = &g_array_index (priv->addresses, NMPlatformIP6Address, i);
|
||||||
|
|
||||||
|
if ( ((!!IN6_IS_ADDR_LINKLOCAL (&addr->address)) == linklocal)
|
||||||
|
&& !(addr->flags & IFA_F_TENTATIVE))
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@@ -97,10 +97,10 @@ void nm_ip6_config_add_address (NMIP6Config *config, const NMPlatformIP6Address
|
|||||||
void nm_ip6_config_del_address (NMIP6Config *config, guint i);
|
void nm_ip6_config_del_address (NMIP6Config *config, guint i);
|
||||||
guint nm_ip6_config_get_num_addresses (const NMIP6Config *config);
|
guint nm_ip6_config_get_num_addresses (const NMIP6Config *config);
|
||||||
const NMPlatformIP6Address *nm_ip6_config_get_address (const NMIP6Config *config, guint i);
|
const NMPlatformIP6Address *nm_ip6_config_get_address (const NMIP6Config *config, guint i);
|
||||||
|
const NMPlatformIP6Address *nm_ip6_config_get_address_first_nontentative (const NMIP6Config *config, gboolean linklocal);
|
||||||
gboolean nm_ip6_config_address_exists (const NMIP6Config *config, const NMPlatformIP6Address *address);
|
gboolean nm_ip6_config_address_exists (const NMIP6Config *config, const NMPlatformIP6Address *address);
|
||||||
gboolean nm_ip6_config_addresses_sort (NMIP6Config *config, NMSettingIP6ConfigPrivacy use_temporary);
|
gboolean nm_ip6_config_addresses_sort (NMIP6Config *config, NMSettingIP6ConfigPrivacy use_temporary);
|
||||||
|
|
||||||
|
|
||||||
/* Routes */
|
/* Routes */
|
||||||
void nm_ip6_config_reset_routes (NMIP6Config *config);
|
void nm_ip6_config_reset_routes (NMIP6Config *config);
|
||||||
void nm_ip6_config_add_route (NMIP6Config *config, const NMPlatformIP6Route *route);
|
void nm_ip6_config_add_route (NMIP6Config *config, const NMPlatformIP6Route *route);
|
||||||
|
Reference in New Issue
Block a user