summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2012-08-22 10:17:15 +0200
committerJiří Klimeš <jklimes@redhat.com>2012-09-21 13:47:01 +0200
commiteb407143fdce881aeef1844b05b6bf9395adaddb (patch)
treecf530a70dd384201cc094a63d1e38965b84cb44c
parent4ee617ddf2a229a72223e3b6e040772d5624a743 (diff)
ifcfg-rh: read/write 'secondaries' property of 'connection' setting
as SECONDARY_UUIDS variable
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c16
-rw-r--r--src/settings/plugins/ifcfg-rh/writer.c22
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