diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2012-08-22 10:17:15 +0200 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2012-09-21 13:47:01 +0200 |
commit | eb407143fdce881aeef1844b05b6bf9395adaddb (patch) | |
tree | cf530a70dd384201cc094a63d1e38965b84cb44c | |
parent | 4ee617ddf2a229a72223e3b6e040772d5624a743 (diff) |
ifcfg-rh: read/write 'secondaries' property of 'connection' setting
as SECONDARY_UUIDS variable
-rw-r--r-- | src/settings/plugins/ifcfg-rh/reader.c | 16 | ||||
-rw-r--r-- | src/settings/plugins/ifcfg-rh/writer.c | 22 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index 6aa97f18..5e900b5f 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -168,6 +168,22 @@ make_connection_setting (const char *file, g_object_set (s_con, NM_SETTING_CONNECTION_ZONE, zone, NULL); g_free (zone); + value = svGetValue (ifcfg, "SECONDARY_UUIDS", FALSE); + if (value) { + char **items, **iter; + + items = g_strsplit_set (value, " \t", -1); + for (iter = items; iter && *iter; iter++) { + if (strlen (*iter)) { + if (!nm_setting_connection_add_secondary (s_con, *iter)) + PLUGIN_WARN (IFCFG_PLUGIN_NAME, + " warning: secondary connection UUID '%s' already added", *iter); + } + } + g_free (value); + g_strfreev (items); + } + return NM_SETTING (s_con); } diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c index 26a1585b..ce0e794e 100644 --- a/src/settings/plugins/ifcfg-rh/writer.c +++ b/src/settings/plugins/ifcfg-rh/writer.c @@ -1296,6 +1296,28 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg) if (nm_setting_connection_is_slave_type (s_con, NM_SETTING_BOND_SETTING_NAME)) svSetValue (ifcfg, "MASTER", master, FALSE); } + + /* secondary connection UUIDs */ + svSetValue (ifcfg, "SECONDARY_UUIDS", NULL, FALSE); + n = nm_setting_connection_get_num_secondaries (s_con); + if (n > 0) { + str = g_string_sized_new (n * 37); + + for (i = 0; i < n; i++) { + const char *uuid; + + /* Items separated by space for consistency with eg + * IPV6ADDR_SECONDARIES and DOMAIN. + */ + if (str->len) + g_string_append_c (str, ' '); + + if ((uuid = nm_setting_connection_get_secondary (s_con, i)) != NULL) + g_string_append (str, uuid); + } + svSetValue (ifcfg, "SECONDARY_UUIDS", str->str, FALSE); + g_string_free (str, TRUE); + } } static gboolean |