summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2014-02-14 10:05:42 +0100
committerJiří Klimeš <jklimes@redhat.com>2014-02-14 10:05:42 +0100
commit3e70fb20d4aabcdc3d874ae32f31a17eb5c76f60 (patch)
treebce0370c4b29523262c68560fc926906ec3b7273
parent3fb13c63c3f77170a5301f0613ad37df482f9f4c (diff)
downloadNetworkManager-3e70fb20d4aabcdc3d874ae32f31a17eb5c76f60.tar.gz
ifcfg-rh: allow missing (empty TEAM_CONFIG), which is valid configuration
When config is NULL libteam will use its own default configuration. Commit 76c3bd9898611ebbb6b33890257206b5776b79e7 changed that and refused to create 'team' setting making connection invalid. It didn't set an error as well, which resulted in ifcfg-rh: parsing /etc/sysconfig/network-scripts/ifcfg-team ... ifcfg-rh: error: (unknown) GLib-CRITICAL **: g_propagate_error: assertion `src != NULL' failed
-rw-r--r--src/settings/plugins/ifcfg-rh/plugin.c5
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c
index 6024202f92..0f8fcb8a00 100644
--- a/src/settings/plugins/ifcfg-rh/plugin.c
+++ b/src/settings/plugins/ifcfg-rh/plugin.c
@@ -136,7 +136,10 @@ _internal_new_connection (SCPluginIfcfg *self,
PLUGIN_PRINT (IFCFG_PLUGIN_NAME, " error: %s",
(local && local->message) ? local->message : "(unknown)");
}
- g_propagate_error (error, local);
+ if (local)
+ g_propagate_error (error, local);
+ else
+ g_set_error (error, IFCFG_PLUGIN_ERROR, 0, "(unknown)");
return NULL;
}
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 41055a2d2e..82d2af26c2 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -4193,6 +4193,7 @@ bond_connection_from_ifcfg (const char *file,
return connection;
}
+/* Check 'error' for errors. Missing config (NULL return value) is a valid case. */
static char *
read_team_config (shvarFile *ifcfg, const char *key, GError **error)
{
@@ -4225,6 +4226,7 @@ make_team_setting (shvarFile *ifcfg,
{
NMSettingTeam *s_team;
char *value;
+ GError *local_err = NULL;
s_team = NM_SETTING_TEAM (nm_setting_team_new ());
@@ -4237,9 +4239,11 @@ make_team_setting (shvarFile *ifcfg,
g_object_set (s_team, NM_SETTING_TEAM_INTERFACE_NAME, value, NULL);
g_free (value);
- value = read_team_config (ifcfg, "TEAM_CONFIG", error);
- if (!value)
+ value = read_team_config (ifcfg, "TEAM_CONFIG", &local_err);
+ if (local_err) {
+ g_propagate_error (error, local_err);
goto error;
+ }
g_object_set (s_team, NM_SETTING_TEAM_CONFIG, value, NULL);
g_free (value);