summaryrefslogtreecommitdiff
path: root/src/nm-config-data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-config-data.c')
-rw-r--r--src/nm-config-data.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/nm-config-data.c b/src/nm-config-data.c
index 21ad1a7346..119f5534a5 100644
--- a/src/nm-config-data.c
+++ b/src/nm-config-data.c
@@ -217,8 +217,10 @@ nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, c
return value;
}
-char **
-nm_config_data_get_plugins (const NMConfigData *self, gboolean allow_default)
+static char **
+get_string_list (const NMConfigData *self,
+ const char *group, const char *key, const char *dfl,
+ gboolean allow_default)
{
const NMConfigDataPrivate *priv;
char **list;
@@ -227,17 +229,24 @@ nm_config_data_get_plugins (const NMConfigData *self, gboolean allow_default)
priv = NM_CONFIG_DATA_GET_PRIVATE (self);
- list = g_key_file_get_string_list (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NULL, NULL);
+ list = g_key_file_get_string_list (priv->keyfile, group, key, NULL, NULL);
if (!list && allow_default) {
gs_unref_keyfile GKeyFile *kf = nm_config_create_keyfile ();
/* let keyfile split the default string according to it's own escaping rules. */
- g_key_file_set_value (kf, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS);
- list = g_key_file_get_string_list (kf, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NULL, NULL);
+ g_key_file_set_value (kf, group, key, dfl);
+ list = g_key_file_get_string_list (kf, group, key, NULL, NULL);
}
return _nm_utils_strv_cleanup (list, TRUE, TRUE, TRUE);
}
+char **
+nm_config_data_get_plugins (const NMConfigData *self, gboolean allow_default)
+{
+ return get_string_list (self, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins",
+ NM_CONFIG_DEFAULT_MAIN_PLUGINS, allow_default);
+}
+
const char *
nm_config_data_get_connectivity_uri (const NMConfigData *self)
{
@@ -283,12 +292,11 @@ nm_config_data_get_no_auto_default_for_device (const NMConfigData *self, NMDevic
|| nm_device_spec_match_list (device, priv->no_auto_default.specs_config);
}
-const char *
+char **
nm_config_data_get_dns_mode (const NMConfigData *self)
{
- g_return_val_if_fail (self, NULL);
-
- return NM_CONFIG_DATA_GET_PRIVATE (self)->dns_mode;
+ return get_string_list (self, NM_CONFIG_KEYFILE_GROUP_MAIN, "dns",
+ NM_CONFIG_DEFAULT_MAIN_DNS, TRUE);
}
const char *
@@ -574,6 +582,7 @@ static const struct {
const char *value;
} default_values[] = {
{ NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS },
+ { NM_CONFIG_KEYFILE_GROUP_MAIN, "dns", NM_CONFIG_DEFAULT_MAIN_DNS },
{ NM_CONFIG_KEYFILE_GROUP_MAIN, "rc-manager", NM_CONFIG_DEFAULT_MAIN_RC_MANAGER },
{ NM_CONFIG_KEYFILE_GROUP_MAIN, NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT, NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT },
{ NM_CONFIG_KEYFILE_GROUP_MAIN, NM_CONFIG_KEYFILE_KEY_MAIN_DHCP, NM_CONFIG_DEFAULT_MAIN_DHCP },
@@ -1363,6 +1372,8 @@ nm_config_data_diff (NMConfigData *old_data, NMConfigData *new_data)
{
NMConfigChangeFlags changes = NM_CONFIG_CHANGE_NONE;
NMConfigDataPrivate *priv_old, *priv_new;
+ gs_strfreev char **dns_mode_old = NULL;
+ gs_strfreev char **dns_mode_new = NULL;
g_return_val_if_fail (NM_IS_CONFIG_DATA (old_data), NM_CONFIG_CHANGE_NONE);
g_return_val_if_fail (NM_IS_CONFIG_DATA (new_data), NM_CONFIG_CHANGE_NONE);
@@ -1389,7 +1400,9 @@ nm_config_data_diff (NMConfigData *old_data, NMConfigData *new_data)
|| !_slist_str_equals (priv_old->no_auto_default.specs_config, priv_new->no_auto_default.specs_config))
changes |= NM_CONFIG_CHANGE_NO_AUTO_DEFAULT;
- if (g_strcmp0 (nm_config_data_get_dns_mode (old_data), nm_config_data_get_dns_mode (new_data)))
+ dns_mode_old = nm_config_data_get_dns_mode (old_data);
+ dns_mode_new = nm_config_data_get_dns_mode (new_data);
+ if (!_nm_utils_strv_equal (dns_mode_old, dns_mode_new))
changes |= NM_CONFIG_CHANGE_DNS_MODE;
if (g_strcmp0 (nm_config_data_get_rc_manager (old_data), nm_config_data_get_rc_manager (new_data)))