summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-08-03 18:49:28 +0200
committerThomas Haller <thaller@redhat.com>2022-08-09 08:02:36 +0200
commit8f67a80537565b0d3103f1b1f18142ebcba72787 (patch)
tree56e3600a846c38f3b97cb69c604cea21de2189ea
parente0fc8a11d5310303e680f101604291a4139317dd (diff)
downloadNetworkManager-8f67a80537565b0d3103f1b1f18142ebcba72787.tar.gz
glib-aux: add nm_utils_ip6_is_ula() helper
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.c7
-rw-r--r--src/libnm-glib-aux/nm-shared-utils.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c
index 85ea3a1116..ddebcfa7a6 100644
--- a/src/libnm-glib-aux/nm-shared-utils.c
+++ b/src/libnm-glib-aux/nm-shared-utils.c
@@ -1021,6 +1021,13 @@ nm_utils_ip_is_site_local(int addr_family, const void *address)
}
}
+gboolean
+nm_utils_ip6_is_ula(const struct in6_addr *address)
+{
+ /* Unique local IPv6 address (ULA) fc00::/7 */
+ return (address->s6_addr32[0] & htonl(0xfe000000u)) == htonl(0xfc000000u);
+}
+
/*****************************************************************************/
static gboolean
diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h
index 3decea9b37..3d8eaced07 100644
--- a/src/libnm-glib-aux/nm-shared-utils.h
+++ b/src/libnm-glib-aux/nm-shared-utils.h
@@ -504,6 +504,7 @@ nm_utils_ip_address_same_prefix(int addr_family,
/*****************************************************************************/
gboolean nm_utils_ip_is_site_local(int addr_family, const void *address);
+gboolean nm_utils_ip6_is_ula(const struct in6_addr *address);
/*****************************************************************************/