summaryrefslogtreecommitdiff
path: root/libnm-core/nm-keyfile-reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-keyfile-reader.c')
-rw-r--r--libnm-core/nm-keyfile-reader.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/libnm-core/nm-keyfile-reader.c b/libnm-core/nm-keyfile-reader.c
index daa9c2adbf..7cfa05bdfd 100644
--- a/libnm-core/nm-keyfile-reader.c
+++ b/libnm-core/nm-keyfile-reader.c
@@ -1249,6 +1249,15 @@ static KeyParser key_parsers[] = {
};
static void
+set_default_for_missing_key (NMSetting *setting, const char *property)
+{
+ /* Set a value different from the default value of the property's spec */
+
+ if (NM_IS_SETTING_VLAN (setting) && !strcmp (property, NM_SETTING_VLAN_FLAGS))
+ g_object_set (setting, property, 0, NULL);
+}
+
+static void
read_one_setting_value (NMSetting *setting,
const char *key,
const GValue *value,
@@ -1312,6 +1321,9 @@ read_one_setting_value (NMSetting *setting,
err->message))
goto out_error;
}
+
+ /* Allow default values different than in property spec */
+ set_default_for_missing_key (setting, key);
return;
}
@@ -1647,6 +1659,18 @@ nm_keyfile_read (GKeyFile *keyfile,
}
}
+ /* Make sure that if [vlan] group was missing we set vlan.flags to 0
+ * for backwards compatibility */
+ if (nm_connection_is_type (connection, NM_SETTING_VLAN_SETTING_NAME)) {
+ if (!nm_connection_get_setting_vlan (connection)) {
+ NMSettingVlan *s_vlan;
+
+ s_vlan = NM_SETTING_VLAN (nm_setting_vlan_new ());
+ g_object_set (s_vlan, NM_SETTING_VLAN_FLAGS, 0, NULL);
+ nm_connection_add_setting (connection, NM_SETTING (s_vlan));
+ }
+ }
+
return connection;
out_error:
g_propagate_error (error, info.error);