about summary refs log tree commit diff
path: root/libnm-core/nm-keyfile-writer.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-keyfile-writer.c')
-rw-r--r--libnm-core/nm-keyfile-writer.c146
1 files changed, 145 insertions, 1 deletions
diff --git a/libnm-core/nm-keyfile-writer.c b/libnm-core/nm-keyfile-writer.c
index 30d519c4..0333b644 100644
--- a/libnm-core/nm-keyfile-writer.c
+++ b/libnm-core/nm-keyfile-writer.c
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2008 Novell, Inc.
- * Copyright (C) 2008 - 2015 Red Hat, Inc.
+ * Copyright (C) 2008 - 2017 Red Hat, Inc.
  */
 
 #include "nm-default.h"
@@ -254,6 +254,72 @@ route_writer (KeyfileWriterInfo *info,
 }
 
 static void
+qdisc_writer (KeyfileWriterInfo *info,
+              NMSetting *setting,
+              const char *key,
+              const GValue *value)
+{
+	gsize i;
+	GPtrArray *array;
+
+	array = (GPtrArray *) g_value_get_boxed (value);
+	if (!array || !array->len)
+		return;
+
+	for (i = 0; i < array->len; i++) {
+		NMTCQdisc *qdisc = array->pdata[i];
+		GString *key_name = g_string_sized_new (16);
+		GString *value_str = g_string_sized_new (60);
+
+		g_string_append (key_name, "qdisc.");
+		_nm_utils_string_append_tc_parent (key_name, NULL,
+		                                   nm_tc_qdisc_get_parent (qdisc));
+		_nm_utils_string_append_tc_qdisc_rest (value_str, qdisc);
+
+		nm_keyfile_plugin_kf_set_string (info->keyfile,
+		                                 NM_SETTING_TC_CONFIG_SETTING_NAME,
+		                                 key_name->str,
+		                                 value_str->str);
+
+		g_string_free (key_name, TRUE);
+		g_string_free (value_str, TRUE);
+	}
+}
+
+static void
+tfilter_writer (KeyfileWriterInfo *info,
+              NMSetting *setting,
+              const char *key,
+              const GValue *value)
+{
+	gsize i;
+	GPtrArray *array;
+
+	array = (GPtrArray *) g_value_get_boxed (value);
+	if (!array || !array->len)
+		return;
+
+	for (i = 0; i < array->len; i++) {
+		NMTCTfilter *tfilter = array->pdata[i];
+		GString *key_name = g_string_sized_new (16);
+		GString *value_str = g_string_sized_new (60);
+
+		g_string_append (key_name, "tfilter.");
+		_nm_utils_string_append_tc_parent (key_name, NULL,
+		                                   nm_tc_tfilter_get_parent (tfilter));
+		_nm_utils_string_append_tc_tfilter_rest (value_str, tfilter, NULL);
+
+		nm_keyfile_plugin_kf_set_string (info->keyfile,
+		                                 NM_SETTING_TC_CONFIG_SETTING_NAME,
+		                                 key_name->str,
+		                                 value_str->str);
+
+		g_string_free (key_name, TRUE);
+		g_string_free (value_str, TRUE);
+	}
+}
+
+static void
 write_hash_of_string (GKeyFile *file,
                       NMSetting *setting,
                       const char *key,
@@ -501,6 +567,15 @@ cert_writer (KeyfileWriterInfo *info,
 	cert_writer_default (info->connection, info->keyfile, &type_data);
 }
 
+static void
+null_writer (KeyfileWriterInfo *info,
+             NMSetting *setting,
+             const char *key,
+             const GValue *value)
+{
+	/* skip */
+}
+
 /*****************************************************************************/
 
 typedef struct {
@@ -576,6 +651,75 @@ static KeyWriter key_writers[] = {
 	{ NM_SETTING_802_1X_SETTING_NAME,
 	  NM_SETTING_802_1X_PHASE2_PRIVATE_KEY,
 	  cert_writer },
+	{ NM_SETTING_TC_CONFIG_SETTING_NAME,
+	  NM_SETTING_TC_CONFIG_QDISCS,
+	  qdisc_writer },
+	{ NM_SETTING_TC_CONFIG_SETTING_NAME,
+	  NM_SETTING_TC_CONFIG_TFILTERS,
+	  tfilter_writer },
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_NOTIFY_PEERS_COUNT,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_MCAST_REJOIN_COUNT,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_HWADDR_POLICY,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_TX_HASH,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_TX_BALANCER,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_ACTIVE,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_FAST_RATE,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_SYS_PRIO,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_MIN_PORTS,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY,
+	  null_writer},
+	{ NM_SETTING_TEAM_SETTING_NAME,
+	  NM_SETTING_TEAM_LINK_WATCHERS,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_QUEUE_ID,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_PRIO,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_STICKY,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_LACP_PRIO,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_LACP_KEY,
+	  null_writer},
+	{ NM_SETTING_TEAM_PORT_SETTING_NAME,
+	  NM_SETTING_TEAM_PORT_LINK_WATCHERS,
+	  null_writer},
 	{ NULL, NULL, NULL }
 };