diff options
author | Thomas Haller <thaller@redhat.com> | 2014-11-27 18:40:18 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-12-04 17:02:22 +0100 |
commit | 1e313e000dceda2bd7a753c407cc3078a37ce402 (patch) | |
tree | 0d7123dc3077d7e1c1f1f89f1558701e4699eac5 | |
parent | 21eb6b5d0de9656c9b6189d4d4733204b33742d8 (diff) |
libnm: add a type argument to nm_utils_uuid_generate_from_string()
There are different types (variants) of UUIDs defined.
Especially variants 3 and 5 are name based variants (rfc4122).
The way we create our UUIDs in nm_utils_uuid_generate_from_string()
however does not create them according to RFC and does not set
the flags to indicate the variant.
Modify the signature of nm_utils_uuid_generate_from_string() to accept
a "uuid_type" argument, so that we later can add other algorithms without
breaking API.
-rw-r--r-- | libnm-core/nm-utils.c | 8 | ||||
-rw-r--r-- | libnm-core/nm-utils.h | 4 | ||||
-rw-r--r-- | libnm-core/tests/test-general.c | 25 | ||||
-rw-r--r-- | src/settings/plugins/ibft/reader.c | 2 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/reader.c | 4 | ||||
-rw-r--r-- | src/settings/plugins/ifnet/connection_parser.c | 2 | ||||
-rw-r--r-- | src/settings/plugins/ifupdown/parser.c | 2 | ||||
-rw-r--r-- | src/settings/plugins/keyfile/reader.c | 2 |
8 files changed, 30 insertions, 19 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index e2f29512a1..a5acc24cd5 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -1955,6 +1955,8 @@ nm_utils_uuid_generate (void) * @slen: if negative, treat @s as zero terminated C string. * Otherwise, assume the length as given (and allow @s to be * non-null terminated or contain '\0'). + * @uuid_type: a type identifier which UUID format to generate. + * @type_args: additional arguments, depending on the uuid_type * * For a given @s, this function will always return the same UUID. * @@ -1962,7 +1964,7 @@ nm_utils_uuid_generate (void) * object's #NMSettingConnection:id: property **/ char * -nm_utils_uuid_generate_from_string (const char *s, gssize slen) +nm_utils_uuid_generate_from_string (const char *s, gssize slen, int uuid_type, gpointer type_args) { uuid_t uuid; char *buf = NULL; @@ -1970,6 +1972,10 @@ nm_utils_uuid_generate_from_string (const char *s, gssize slen) g_return_val_if_fail (s && *s, NULL); g_return_val_if_fail (slen < 0 || slen > 0, FALSE); + /* for now, only support legacy type */ + g_return_val_if_fail (uuid_type == NM_UTILS_UUID_TYPE_LEGACY, NULL); + g_return_val_if_fail (!type_args, NULL); + if (slen < 0) slen = strlen (s); diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h index 9fb366a81b..9aecaa94e1 100644 --- a/libnm-core/nm-utils.h +++ b/libnm-core/nm-utils.h @@ -120,8 +120,10 @@ GVariant *nm_utils_ip_routes_to_variant (GPtrArray *routes); GPtrArray *nm_utils_ip_routes_from_variant (GVariant *value, int family); +#define NM_UTILS_UUID_TYPE_LEGACY 0 + char *nm_utils_uuid_generate (void); -char *nm_utils_uuid_generate_from_string (const char *s, gssize slen); +char *nm_utils_uuid_generate_from_string (const char *s, gssize slen, int uuid_type, gpointer type_args); gboolean nm_utils_file_is_certificate (const char *filename); gboolean nm_utils_file_is_private_key (const char *filename, gboolean *out_encrypted); diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 2fd68b0600..c18b7a066e 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -3805,21 +3805,24 @@ test_hexstr2bin (void) /******************************************************************************/ static void -_test_uuid (const char *expected_uuid, const char *str) +_test_uuid (int uuid_type, const char *expected_uuid, const char *str, gssize slen, gpointer type_args) { gs_free char *uuid_test = NULL; g_assert (str); - uuid_test = nm_utils_uuid_generate_from_string (str, -1); + uuid_test = nm_utils_uuid_generate_from_string (str, slen, uuid_type, type_args); g_assert (uuid_test); g_assert (nm_utils_is_uuid (uuid_test)); if (strcmp (uuid_test, expected_uuid)) { - g_error ("UUID test failed: text=%s, uuid=%s, expected=%s", - str, uuid_test, expected_uuid); + g_error ("UUID test failed: type=%d; text=%s, len=%lld, uuid=%s, expected=%s", uuid_type, + str, (long long) slen, uuid_test, expected_uuid); } + + if (slen < 0) + _test_uuid (uuid_type, expected_uuid, str, strlen (str), type_args); } static void @@ -3827,17 +3830,17 @@ test_nm_utils_uuid_generate_from_string (void) { gs_free char *uuid_test = NULL; - _test_uuid ("0cc175b9-c0f1-b6a8-31c3-99e269772661", "a"); - _test_uuid ("098f6bcd-4621-d373-cade-4e832627b4f6", "test"); - _test_uuid ("59c0547b-7fe2-1c15-2cce-e328e8bf6742", "/etc/NetworkManager/system-connections/em1"); + _test_uuid (NM_UTILS_UUID_TYPE_LEGACY, "0cc175b9-c0f1-b6a8-31c3-99e269772661", "a", -1, NULL); + _test_uuid (NM_UTILS_UUID_TYPE_LEGACY, "098f6bcd-4621-d373-cade-4e832627b4f6", "test", -1, NULL); + _test_uuid (NM_UTILS_UUID_TYPE_LEGACY, "59c0547b-7fe2-1c15-2cce-e328e8bf6742", "/etc/NetworkManager/system-connections/em1", -1, NULL); - g_test_expect_message ("libnm", G_LOG_LEVEL_CRITICAL, "*char *nm_utils_uuid_generate_from_string(const char *): *s && *s*"); - uuid_test = nm_utils_uuid_generate_from_string ("", -1); + g_test_expect_message ("libnm", G_LOG_LEVEL_CRITICAL, "*char *nm_utils_uuid_generate_from_string(const char *, gssize, int, gpointer): *s && *s*"); + uuid_test = nm_utils_uuid_generate_from_string ("", 0, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_assert (uuid_test == NULL); g_test_assert_expected_messages (); - g_test_expect_message ("libnm", G_LOG_LEVEL_CRITICAL, "*char *nm_utils_uuid_generate_from_string(const char *): *s && *s*"); - uuid_test = nm_utils_uuid_generate_from_string (NULL, -1); + g_test_expect_message ("libnm", G_LOG_LEVEL_CRITICAL, "*char *nm_utils_uuid_generate_from_string(const char *, gssize, int, gpointer): *s && *s*"); + uuid_test = nm_utils_uuid_generate_from_string (NULL, 0, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_assert (uuid_test == NULL); g_test_assert_expected_messages (); } diff --git a/src/settings/plugins/ibft/reader.c b/src/settings/plugins/ibft/reader.c index 61c4e1cfe7..ebac9607ac 100644 --- a/src/settings/plugins/ibft/reader.c +++ b/src/settings/plugins/ibft/reader.c @@ -408,7 +408,7 @@ connection_setting_add (const GPtrArray *block, s_vlanid ? s_vlanid : "0", s_hwaddr, s_ip4addr ? s_ip4addr : "DHCP"); - uuid = nm_utils_uuid_generate_from_string (uuid_data, -1); + uuid = nm_utils_uuid_generate_from_string (uuid_data, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_free (uuid_data); s_con = nm_setting_connection_new (); diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index 52dee9d5e5..145a0a3915 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -148,7 +148,7 @@ make_connection_setting (const char *file, uuid = svGetValue (ifcfg, "UUID", FALSE); if (!uuid || !strlen (uuid)) { g_free (uuid); - uuid = nm_utils_uuid_generate_from_string (ifcfg->fileName, -1); + uuid = nm_utils_uuid_generate_from_string (ifcfg->fileName, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); } g_object_set (s_con, @@ -4588,7 +4588,7 @@ uuid_from_file (const char *filename) uuid = svGetValue (ifcfg, "UUID", FALSE); if (!uuid || !strlen (uuid)) { g_free (uuid); - uuid = nm_utils_uuid_generate_from_string (ifcfg->fileName, -1); + uuid = nm_utils_uuid_generate_from_string (ifcfg->fileName, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); } svCloseFile (ifcfg); diff --git a/src/settings/plugins/ifnet/connection_parser.c b/src/settings/plugins/ifnet/connection_parser.c index ba76579a12..41baf31507 100644 --- a/src/settings/plugins/ifnet/connection_parser.c +++ b/src/settings/plugins/ifnet/connection_parser.c @@ -1629,7 +1629,7 @@ ifnet_update_connection_from_config_block (const char *conn_name, id = connection_id_from_ifnet_name (conn_name); uuid = g_strdup (ifnet_get_data (conn_name, "uuid")); if (!uuid) - uuid = nm_utils_uuid_generate_from_string (id, -1); + uuid = nm_utils_uuid_generate_from_string (id, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_object_set (setting, NM_SETTING_CONNECTION_TYPE, type, diff --git a/src/settings/plugins/ifupdown/parser.c b/src/settings/plugins/ifupdown/parser.c index 9af11976c8..15081a4c59 100644 --- a/src/settings/plugins/ifupdown/parser.c +++ b/src/settings/plugins/ifupdown/parser.c @@ -686,7 +686,7 @@ ifupdown_update_connection_from_if_block (NMConnection *connection, idstr = g_strconcat ("Ifupdown (", block->name, ")", NULL); uuid_base = idstr; - uuid = nm_utils_uuid_generate_from_string (uuid_base, -1); + uuid = nm_utils_uuid_generate_from_string (uuid_base, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_object_set (s_con, NM_SETTING_CONNECTION_TYPE, type, NM_SETTING_CONNECTION_INTERFACE_NAME, block->name, diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c index 94982cef39..9dc0a7b4aa 100644 --- a/src/settings/plugins/keyfile/reader.c +++ b/src/settings/plugins/keyfile/reader.c @@ -1316,7 +1316,7 @@ nm_keyfile_plugin_connection_from_file (const char *filename, GError **error) if (!nm_setting_connection_get_uuid (s_con)) { char *hashed_uuid; - hashed_uuid = nm_utils_uuid_generate_from_string (filename, -1); + hashed_uuid = nm_utils_uuid_generate_from_string (filename, -1, NM_UTILS_UUID_TYPE_LEGACY, NULL); g_object_set (s_con, NM_SETTING_CONNECTION_UUID, hashed_uuid, NULL); g_free (hashed_uuid); } |