[PATCH 4/4] bridge: ifcfg-rh: Parse BRIDGE= line and assign to master
- From: Thomas Graf <tgraf redhat com>
- To: dcbw redhat com
- Cc: Thomas Graf <tgraf redhat com>, networkmanager-list gnome org
- Subject: [PATCH 4/4] bridge: ifcfg-rh: Parse BRIDGE= line and assign to master
- Date: Fri, 3 Feb 2012 13:27:43 +0100
Extends the ifcfg-rh reader plugin to parse BRIDGE= directives and
assign such interfaces to the respective briding master using the
NM_SETTING_CONNECTION_MASTER property.
If the connection is already assigned to a different master, the
connection is aborted.
Signed-off-by: Thomas Graf <tgraf redhat com>
---
src/settings/plugins/ifcfg-rh/reader.c | 31 +++++++++++++++++++++++--------
1 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index e649be3..d75fbbd 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -150,6 +150,25 @@ make_connection_setting (const char *file,
g_free (value);
}
+ value = svGetValue (ifcfg, "BRIDGE", FALSE);
+ if (value) {
+ const char *master;
+
+ /* Can't be a bridge slave if it's already enslaved to another master */
+ if ((master = nm_setting_connection_get_master (s_con))) {
+ PLUGIN_WARN (IFCFG_PLUGIN_NAME,
+ " warning: Already configured as slave of %s. "
+ "Ignoring BRIDGE=\"%s\"", master, value);
+ g_free (value);
+ goto error;
+ }
+
+ g_object_set (s_con, NM_SETTING_CONNECTION_MASTER, value, NULL);
+ g_object_set (s_con, NM_SETTING_CONNECTION_SLAVE_TYPE,
+ NM_SETTING_BRIDGE_SETTING_NAME, NULL);
+ g_free (value);
+ }
+
value = svGetValue (ifcfg, "USERS", FALSE);
if (value) {
char **items, **iter;
@@ -175,6 +194,10 @@ make_connection_setting (const char *file,
g_free (zone);
return NM_SETTING (s_con);
+
+error:
+ g_object_unref (s_con);
+ return NULL;
}
static gboolean
@@ -3974,14 +3997,6 @@ connection_from_file (const char *filename,
goto done;
}
- /* Ignore BRIDGE= and VLAN= connections for now too (rh #619863) */
- tmp = svGetValue (parsed, "BRIDGE", FALSE);
- if (tmp) {
- g_free (tmp);
- nm_controlled = FALSE;
- ignore_reason = IGNORE_REASON_BRIDGE;
- }
-
if (nm_controlled) {
tmp = svGetValue (parsed, "VLAN", FALSE);
if (tmp) {
--
1.7.7.6
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]