summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2016-01-30 22:28:23 +0100
committerThomas Haller <thaller@redhat.com>2016-02-02 11:43:57 +0100
commit9ff161b2a1b0d4a63f91d326050ae1b8906b7b1b (patch)
tree6b1300038a934d52a42075b6e2a9bdca059094f6 /src
parent5ff8decb8fd94b541cfd3bfd8d00eaecd7c28f51 (diff)
downloadNetworkManager-9ff161b2a1b0d4a63f91d326050ae1b8906b7b1b.tar.gz
device: move have_ip6_address() to nm_ip6_config_get_address_first_nontentative()
Diffstat (limited to 'src')
-rw-r--r--src/devices/nm-device.c30
-rw-r--r--src/nm-ip6-config.c23
-rw-r--r--src/nm-ip6-config.h2
3 files changed, 28 insertions, 27 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 720fbe2f28..2a5ae8ad00 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -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 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 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
linklocal6_cleanup (NMDevice *self)
{
@@ -5451,7 +5429,7 @@ linklocal6_complete (NMDevice *self)
const char *method;
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);
@@ -5568,7 +5546,7 @@ linklocal6_start (NMDevice *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;
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
* 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);
else
nm_device_activate_schedule_ip6_config_timeout (self);
@@ -8735,7 +8713,7 @@ update_ip6_config (NMDevice *self, gboolean initial)
if ( priv->linklocal6_timeout_id
&& 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
* invoked as g_idle_add, so no problems with reentrance doing it now.
*/
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 8a70ab663c..b6f534c36e 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -1362,6 +1362,29 @@ nm_ip6_config_address_exists (const NMIP6Config *config,
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
diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h
index 759e7790ea..5ca64ac372 100644
--- a/src/nm-ip6-config.h
+++ b/src/nm-ip6-config.h
@@ -97,10 +97,10 @@ void nm_ip6_config_add_address (NMIP6Config *config, const NMPlatformIP6Address
void nm_ip6_config_del_address (NMIP6Config *config, guint i);
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_first_nontentative (const NMIP6Config *config, gboolean linklocal);
gboolean nm_ip6_config_address_exists (const NMIP6Config *config, const NMPlatformIP6Address *address);
gboolean nm_ip6_config_addresses_sort (NMIP6Config *config, NMSettingIP6ConfigPrivacy use_temporary);
-
/* Routes */
void nm_ip6_config_reset_routes (NMIP6Config *config);
void nm_ip6_config_add_route (NMIP6Config *config, const NMPlatformIP6Route *route);