summaryrefslogtreecommitdiff
path: root/libnm-core
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-10-31 10:38:01 +0100
committerThomas Haller <thaller@redhat.com>2018-10-31 11:34:31 +0100
commit01239e99d7ded2279a82c6fbb9cb068804eaaf22 (patch)
tree715b80dbacef9b2be013e5a8566de9397ae674ed /libnm-core
parent4db431191cd095ab0584212b59f1c2b9d9201fd2 (diff)
libnm: add nm_utils_uuid_is_null() helper
Diffstat (limited to 'libnm-core')
-rw-r--r--libnm-core/nm-core-internal.h2
-rw-r--r--libnm-core/nm-utils.c15
-rw-r--r--libnm-core/tests/test-general.c19
3 files changed, 36 insertions, 0 deletions
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index 80d00d90a..bd004d195 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -295,6 +295,8 @@ char *_nm_utils_uuid_unparse (const NMUuid *uuid,
char *out_str /*[37]*/);
NMUuid *_nm_utils_uuid_generate_random (NMUuid *out_uuid);
+gboolean nm_utils_uuid_is_null (const NMUuid *uuid);
+
#define NM_UTILS_UUID_TYPE_LEGACY 0
#define NM_UTILS_UUID_TYPE_VERSION3 3
#define NM_UTILS_UUID_TYPE_VERSION5 5
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index abdf80474..6504158a5 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -2821,6 +2821,21 @@ _nm_utils_uuid_generate_random (NMUuid *out_uuid)
return out_uuid;
}
+gboolean
+nm_utils_uuid_is_null (const NMUuid *uuid)
+{
+ int i;
+
+ if (!uuid)
+ return TRUE;
+
+ for (i = 0; i < G_N_ELEMENTS (uuid->uuid); i++) {
+ if (uuid->uuid[i])
+ return FALSE;
+ }
+ return TRUE;
+}
+
/**
* nm_utils_uuid_generate_buf_:
* @buf: input buffer, must contain at least 37 bytes
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c
index 0f0b1c527..67b80098a 100644
--- a/libnm-core/tests/test-general.c
+++ b/libnm-core/tests/test-general.c
@@ -5445,6 +5445,16 @@ test_nm_strquote (void)
#define UUID_NS_OID "6ba7b812-9dad-11d1-80b4-00c04fd430c8"
#define UUID_NS_X500 "6ba7b814-9dad-11d1-80b4-00c04fd430c8"
+static const NMUuid *
+_uuid (const char *str)
+{
+ static NMUuid u;
+
+ g_assert (str);
+ g_assert (_nm_utils_uuid_parse (str, &u));
+ return &u;
+}
+
static void
_test_uuid (int uuid_type, const char *expected_uuid, const char *str, gssize slen, gpointer type_args)
{
@@ -5677,6 +5687,15 @@ __test_uuid (const char *expected_uuid, const char *str, gssize slen, char *uuid
static void
test_nm_utils_uuid_generate_from_strings (void)
{
+ const NMUuid uuid0 = { 0 };
+
+ g_assert_cmpmem (&uuid0, sizeof (uuid0), _uuid ("00000000-0000-0000-0000-000000000000"), 16);
+
+ g_assert (nm_utils_uuid_is_null (NULL));
+ g_assert (nm_utils_uuid_is_null (&uuid0));
+ g_assert ( nm_utils_uuid_is_null (_uuid ("00000000-0000-0000-0000-000000000000")));
+ g_assert (!nm_utils_uuid_is_null (_uuid ("10000000-0000-0000-0000-000000000000")));
+
_test_uuid ("b07c334a-399b-32de-8d50-58e4e08f98e3", "", 0, NULL);
_test_uuid ("b8a426cb-bcb5-30a3-bd8f-6786fea72df9", "\0", 1, "");
_test_uuid ("12a4a982-7aae-39e1-951e-41aeb1250959", "a\0", 2, "a");