summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2013-11-02 10:20:03 -0500
committerDan Williams <dcbw@redhat.com>2013-11-08 16:46:44 -0600
commit20483d65ae532a46d70bf1d9bdc774058e01e3f5 (patch)
treeffce93f4f219f3da9d004a208f480d309a85c20d
parentafcc4f2a25a6db442341983fca44734033072eaf (diff)
downloadNetworkManager-20483d65ae532a46d70bf1d9bdc774058e01e3f5.tar.gz
core: add nm_ip4_config_address_exists() and nm_ip6_config_address_exists()
-rw-r--r--src/nm-ip4-config.c16
-rw-r--r--src/nm-ip4-config.h1
-rw-r--r--src/nm-ip6-config.c17
-rw-r--r--src/nm-ip6-config.h1
4 files changed, 35 insertions, 0 deletions
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 8ee5199c7a..2ea7012abd 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -981,6 +981,22 @@ nm_ip4_config_get_address (const NMIP4Config *config, guint i)
return &g_array_index (priv->addresses, NMPlatformIP4Address, i);
}
+gboolean
+nm_ip4_config_address_exists (const NMIP4Config *config,
+ const NMPlatformIP4Address *needle)
+{
+ NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
+ guint i;
+
+ for (i = 0; i < priv->addresses->len; i++) {
+ const NMPlatformIP4Address *haystack = &g_array_index (priv->addresses, NMPlatformIP4Address, i);
+
+ if (needle->address == haystack->address && needle->plen == haystack->plen)
+ return TRUE;
+ }
+ return FALSE;
+}
+
/******************************************************************/
void
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index e105098294..3b2b250c93 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -83,6 +83,7 @@ void nm_ip4_config_add_address (NMIP4Config *config, const NMPlatformIP4Address
void nm_ip4_config_del_address (NMIP4Config *config, guint i);
guint nm_ip4_config_get_num_addresses (const NMIP4Config *config);
const NMPlatformIP4Address *nm_ip4_config_get_address (const NMIP4Config *config, guint i);
+gboolean nm_ip4_config_address_exists (const NMIP4Config *config, const NMPlatformIP4Address *address);
/* Routes */
void nm_ip4_config_reset_routes (NMIP4Config *config);
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 4986cae313..84956c922b 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -880,6 +880,23 @@ nm_ip6_config_get_address (const NMIP6Config *config, guint i)
return &g_array_index (priv->addresses, NMPlatformIP6Address, i);
}
+gboolean
+nm_ip6_config_address_exists (const NMIP6Config *config,
+ const NMPlatformIP6Address *needle)
+{
+ NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
+ guint i;
+
+ for (i = 0; i < priv->addresses->len; i++) {
+ const NMPlatformIP6Address *haystack = &g_array_index (priv->addresses, NMPlatformIP6Address, i);
+
+ if ( IN6_ARE_ADDR_EQUAL (&needle->address, &haystack->address)
+ && needle->plen == haystack->plen)
+ return TRUE;
+ }
+ return FALSE;
+}
+
/******************************************************************/
void
diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h
index 992a7cdd3e..538490a78c 100644
--- a/src/nm-ip6-config.h
+++ b/src/nm-ip6-config.h
@@ -82,6 +82,7 @@ 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);
+gboolean nm_ip6_config_address_exists (const NMIP6Config *config, const NMPlatformIP6Address *address);
/* Routes */
void nm_ip6_config_reset_routes (NMIP6Config *config);