Signed-off-by: Jiri Pirko <[email protected]>
---
src/settings/plugins/ifcfg-rh/writer.c | 56 ++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/src/settings/plugins/ifcfg-rh/writer.c
b/src/settings/plugins/ifcfg-rh/writer.c
index eadcfd3..7591d24 100644
--- a/src/settings/plugins/ifcfg-rh/writer.c
+++ b/src/settings/plugins/ifcfg-rh/writer.c
@@ -37,6 +37,8 @@
#include <nm-setting-ip6-config.h>
#include <nm-setting-pppoe.h>
#include <nm-setting-vlan.h>
+#include <nm-setting-team.h>
+#include <nm-setting-team-port.h>
#include <nm-utils.h>
#include "common.h"
@@ -1294,6 +1296,34 @@ write_bonding_setting (NMConnection *connection,
shvarFile *ifcfg, GError **erro
return TRUE;
}
+static gboolean
+write_team_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
+{
+ NMSettingTeam *s_team;
+ const char *iface;
+ const char *config;
+
+ s_team = nm_connection_get_setting_team (connection);
+ if (!s_team) {
+ g_set_error (error, IFCFG_PLUGIN_ERROR, 0,
+ "Missing '%s' setting",
NM_SETTING_TEAM_SETTING_NAME);
+ return FALSE;
+ }
+
+ iface = nm_setting_team_get_interface_name (s_team);
+ if (!iface) {
+ g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "Missing interface
name");
+ return FALSE;
+ }
+
+ svSetValue (ifcfg, "DEVICE", iface, FALSE);
+ config = nm_setting_team_get_config (s_team);
+ svSetValue (ifcfg, "TEAM_CONFIG", config, FALSE);
+ svSetValue (ifcfg, "DEVICETYPE", TYPE_TEAM, FALSE);
+
+ return TRUE;
+}
+
static guint32
get_setting_default (NMSetting *setting, const char *prop)
{
@@ -1424,6 +1454,23 @@ write_bridge_port_setting (NMConnection *connection,
shvarFile *ifcfg, GError **
return TRUE;
}
+static gboolean
+write_team_port_setting (NMConnection *connection, shvarFile *ifcfg, GError
**error)
+{
+ NMSettingTeamPort *s_port;
+ const char *config;
+
+ s_port = nm_connection_get_setting_team_port (connection);
+ if (!s_port)
+ return TRUE;
+
+ config = nm_setting_team_port_get_config (s_port);
+ svSetValue (ifcfg, "TEAM_CONFIG", config, FALSE);
+ svSetValue (ifcfg, "DEVICETYPE", TYPE_TEAM_PORT, FALSE);
+
+ return TRUE;
+}
+
static void
write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
{
@@ -1468,6 +1515,8 @@ write_connection_setting (NMSettingConnection *s_con,
shvarFile *ifcfg)
svSetValue (ifcfg, "MASTER", master, FALSE);
else if (nm_setting_connection_is_slave_type (s_con,
NM_SETTING_BRIDGE_SETTING_NAME))
svSetValue (ifcfg, "BRIDGE", master, FALSE);
+ else if (nm_setting_connection_is_slave_type (s_con,
NM_SETTING_TEAM_SETTING_NAME))
+ svSetValue (ifcfg, "TEAM_MASTER", master, FALSE);
}
/* secondary connection UUIDs */
@@ -2199,6 +2248,9 @@ write_connection (NMConnection *connection,
} else if (!strcmp (type, NM_SETTING_BOND_SETTING_NAME)) {
if (!write_bonding_setting (connection, ifcfg, error))
goto out;
+ } else if (!strcmp (type, NM_SETTING_TEAM_SETTING_NAME)) {
+ if (!write_team_setting (connection, ifcfg, error))
+ goto out;
} else if (!strcmp (type, NM_SETTING_BRIDGE_SETTING_NAME)) {
if (!write_bridge_setting (connection, ifcfg, error))
goto out;
@@ -2216,6 +2268,9 @@ write_connection (NMConnection *connection,
if (!write_bridge_port_setting (connection, ifcfg, error))
goto out;
+ if (!write_team_port_setting (connection, ifcfg, error))
+ goto out;
+
if (!utils_ignore_ip_config (connection)) {
svSetValue (ifcfg, "DHCP_HOSTNAME", NULL, FALSE);
@@ -2258,6 +2313,7 @@ writer_can_write_connection (NMConnection *connection,
GError **error)
|| nm_connection_is_type (connection,
NM_SETTING_WIRELESS_SETTING_NAME)
|| nm_connection_is_type (connection,
NM_SETTING_INFINIBAND_SETTING_NAME)
|| nm_connection_is_type (connection, NM_SETTING_BOND_SETTING_NAME)
+ || nm_connection_is_type (connection, NM_SETTING_TEAM_SETTING_NAME)
|| nm_connection_is_type (connection,
NM_SETTING_BRIDGE_SETTING_NAME))
return TRUE;
--
1.8.1.4
_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list