From 6689d0bf7184b22b01550e1db997e93d089cf99d Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 13:54:42 +0100 Subject: [PATCH 1/6] config: optionally let nm_config_get_plugins() return compile time default Instead of having the caller do the fallback to the compile time default plugins, let it be handled by nm_config_get_plugins(). The knowledge of fallback to a compile time default (and how to do that properly) should be inside NMConfig/NMConfigData alone. Also, as this function is only called once, let NMConfig not cache the string list but create it once as needed. --- src/nm-config-data.c | 21 +++++++++++++++++++++ src/nm-config-data.h | 1 + src/nm-config.c | 13 ------------- src/nm-config.h | 1 - src/settings/nm-settings.c | 11 +++-------- src/tests/config/test-config.c | 25 +++++++++---------------- 6 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/nm-config-data.c b/src/nm-config-data.c index ce13b27f3d..7c3bebfe93 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -217,6 +217,27 @@ 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) +{ + const NMConfigDataPrivate *priv; + char **list; + + g_return_val_if_fail (self, NULL); + + priv = NM_CONFIG_DATA_GET_PRIVATE (self); + + list = g_key_file_get_string_list (priv->keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", 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_PLUGINS_DEFAULT); + list = g_key_file_get_string_list (kf, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NULL, NULL); + } + return _nm_utils_strv_cleanup (list, TRUE, TRUE, TRUE); +} + const char * nm_config_data_get_connectivity_uri (const NMConfigData *self) { diff --git a/src/nm-config-data.h b/src/nm-config-data.h index 712b32555d..b5e3c67430 100644 --- a/src/nm-config-data.h +++ b/src/nm-config-data.h @@ -158,6 +158,7 @@ char *nm_config_data_get_value (const NMConfigData *config_data, const char *gro const char *nm_config_data_get_value_cached (const NMConfigData *config_data, const char *group, const char *key, NMConfigGetValueFlags flags); gint nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, const char *key, gint default_value); +char **nm_config_data_get_plugins (const NMConfigData *config_data, gboolean allow_default); const char *nm_config_data_get_connectivity_uri (const NMConfigData *config_data); const guint nm_config_data_get_connectivity_interval (const NMConfigData *config_data); const char *nm_config_data_get_connectivity_response (const NMConfigData *config_data); diff --git a/src/nm-config.c b/src/nm-config.c index f1ea02bacb..1095b901f3 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -91,7 +91,6 @@ typedef struct { char *no_auto_default_file; char *intern_config_file; - char **plugins; gboolean monitor_connection_files; gboolean auth_polkit; char *dhcp_client; @@ -260,14 +259,6 @@ nm_config_get_data_orig (NMConfig *config) return NM_CONFIG_GET_PRIVATE (config)->config_data_orig; } -const char ** -nm_config_get_plugins (NMConfig *config) -{ - g_return_val_if_fail (config != NULL, NULL); - - return (const char **) NM_CONFIG_GET_PRIVATE (config)->plugins; -} - gboolean nm_config_get_monitor_connection_files (NMConfig *config) { @@ -2331,9 +2322,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) else priv->no_auto_default_file = g_strdup (DEFAULT_NO_AUTO_DEFAULT_FILE); - priv->plugins = _nm_utils_strv_cleanup (g_key_file_get_string_list (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NULL, NULL), - TRUE, TRUE, TRUE); - priv->monitor_connection_files = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "monitor-connection-files", FALSE); priv->auth_polkit = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_AUTH_POLKIT_BOOL); @@ -2402,7 +2390,6 @@ finalize (GObject *gobject) g_free (priv->system_config_dir); g_free (priv->no_auto_default_file); g_free (priv->intern_config_file); - g_strfreev (priv->plugins); g_free (priv->dhcp_client); g_free (priv->log_level); g_free (priv->log_domains); diff --git a/src/nm-config.h b/src/nm-config.h index 326661e9f2..15c46ed547 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -114,7 +114,6 @@ NMConfigData *nm_config_get_data_orig (NMConfig *config); #define NM_CONFIG_GET_DATA (nm_config_get_data (nm_config_get ())) #define NM_CONFIG_GET_DATA_ORIG (nm_config_get_data_orig (nm_config_get ())) -const char **nm_config_get_plugins (NMConfig *config); gboolean nm_config_get_monitor_connection_files (NMConfig *config); gboolean nm_config_get_auth_polkit (NMConfig *config); const char *nm_config_get_dhcp_client (NMConfig *config); diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index dd82cf9703..6a920d5cf4 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -2284,19 +2284,14 @@ nm_settings_start (NMSettings *self, GError **error) GDBusProxy *proxy; GVariant *variant; GError *local_error = NULL; - const char **plugins; - gs_strfreev char **plugins_default = NULL; + gs_strfreev char **plugins = NULL; priv = NM_SETTINGS_GET_PRIVATE (self); /* Load the plugins; fail if a plugin is not found. */ - plugins = nm_config_get_plugins (priv->config); - if (!plugins) { - plugins_default = g_strsplit (NM_CONFIG_PLUGINS_DEFAULT, ",", -1); - plugins = (const char **) plugins_default; - } + plugins = nm_config_data_get_plugins (nm_config_get_data_orig (priv->config), TRUE); - if (!load_plugins (self, plugins, error)) { + if (!load_plugins (self, (const char **) plugins, error)) { g_object_unref (self); return FALSE; } diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c index ee935ea85a..b05e2f1995 100644 --- a/src/tests/config/test-config.c +++ b/src/tests/config/test-config.c @@ -114,8 +114,8 @@ setup_config (GError **error, const char *config_file, const char *intern_config static void test_config_simple (void) { - NMConfig *config; - const char **plugins; + gs_unref_object NMConfig *config = NULL; + gs_strfreev char **plugins = NULL; char *value; gs_unref_object NMDevice *dev50 = nm_test_device_new ("00:00:00:00:00:50"); gs_unref_object NMDevice *dev51 = nm_test_device_new ("00:00:00:00:00:51"); @@ -128,7 +128,7 @@ test_config_simple (void) g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO"); g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 100); - plugins = nm_config_get_plugins (config); + plugins = nm_config_data_get_plugins (nm_config_get_data_orig (config), FALSE); g_assert_cmpint (g_strv_length ((char **)plugins), ==, 3); g_assert_cmpstr (plugins[0], ==, "foo"); g_assert_cmpstr (plugins[1], ==, "bar"); @@ -190,9 +190,6 @@ test_config_simple (void) value = nm_config_data_get_connection_default (nm_config_get_data_orig (config), "dummy.test2", dev50); g_assert_cmpstr (value, ==, "no"); g_free (value); - - - g_object_unref (config); } static void @@ -218,8 +215,8 @@ test_config_parse_error (void) static void test_config_override (void) { - NMConfig *config; - const char **plugins; + gs_unref_object NMConfig *config = NULL; + gs_strfreev char **plugins = NULL; config = setup_config (NULL, SRCDIR "/NetworkManager.conf", "", NULL, "/no/such/dir", "", "--plugins", "alpha,beta,gamma,delta", @@ -231,14 +228,12 @@ test_config_override (void) g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO"); g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 12); - plugins = nm_config_get_plugins (config); + plugins = nm_config_data_get_plugins (nm_config_get_data_orig (config), FALSE); g_assert_cmpint (g_strv_length ((char **)plugins), ==, 4); g_assert_cmpstr (plugins[0], ==, "alpha"); g_assert_cmpstr (plugins[1], ==, "beta"); g_assert_cmpstr (plugins[2], ==, "gamma"); g_assert_cmpstr (plugins[3], ==, "delta"); - - g_object_unref (config); } static void @@ -374,8 +369,8 @@ test_config_no_auto_default (void) static void test_config_confdir (void) { - NMConfig *config; - const char **plugins; + gs_unref_object NMConfig *config = NULL; + gs_strfreev char **plugins = NULL; char *value; GSList *specs; @@ -388,7 +383,7 @@ test_config_confdir (void) g_assert_cmpstr (nm_config_data_get_connectivity_uri (nm_config_get_data_orig (config)), ==, "http://example.net"); g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 100); - plugins = nm_config_get_plugins (config); + plugins = nm_config_data_get_plugins (nm_config_get_data_orig (config), FALSE); g_assert_cmpint (g_strv_length ((char **)plugins), ==, 5); g_assert_cmpstr (plugins[0], ==, "foo"); g_assert_cmpstr (plugins[1], ==, "bar"); @@ -475,8 +470,6 @@ test_config_confdir (void) g_free (value); nm_config_data_log (nm_config_get_data_orig (config), ">>> TEST: ", " ", NULL); - - g_object_unref (config); } static void From 03f35e96de2a33fc1756d4404a42b51464d3f953 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 14:11:00 +0100 Subject: [PATCH 2/6] config: fix config merging default value for main.plugins Since commit fb2ca0ce3d we would no longer pre-set the main.plugins value in NMConfig's keyfile to recognize unset default settings. This breaks with [main] plugins+=foo which now results in main.plgin=foo while previously it would have extended the compile time default. https://bugzilla.redhat.com/show_bug.cgi?id=1397938 Fixes: fb2ca0ce3dadae8154d2ad8b611538323be137ac --- src/nm-config.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/nm-config.c b/src/nm-config.c index 1095b901f3..03aa6d4b64 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -755,6 +755,13 @@ read_config (GKeyFile *keyfile, gboolean is_base_config, const char *dirname, co if (is_string_list) { old_val = g_key_file_get_string_list (keyfile, group, base_key, NULL, NULL); new_val = g_key_file_get_string_list (kf, group, key, NULL, NULL); + if (!old_val && !g_key_file_has_key (keyfile, group, base_key, NULL)) { + /* we must fill the unspecified value with the compile-time default. */ + if (nm_streq (group, NM_CONFIG_KEYFILE_GROUP_MAIN) && nm_streq (base_key, "plugins")) { + g_key_file_set_value (keyfile, group, base_key, NM_CONFIG_PLUGINS_DEFAULT); + old_val = g_key_file_get_string_list (keyfile, group, base_key, NULL, NULL); + } + } } else { gs_free char *old_sval = nm_config_keyfile_get_value (keyfile, group, base_key, NM_CONFIG_GET_VALUE_TYPE_SPEC); gs_free char *new_sval = nm_config_keyfile_get_value (kf, group, key, NM_CONFIG_GET_VALUE_TYPE_SPEC); From afcfa7be2bfdc41be9c0c12fe28432dc3f605bee Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 14:17:30 +0100 Subject: [PATCH 3/6] config/trivial: unify name of compile time config defaults --- configure.ac | 24 ++++++++++++------------ man/NetworkManager.conf.xml | 8 ++++---- man/common.ent.in | 8 ++++---- src/dhcp/nm-dhcp-manager.c | 6 +++--- src/dns/nm-dns-manager.c | 4 ++-- src/nm-config-data.c | 12 ++++++------ src/nm-config.c | 10 +++++----- src/nm-config.h | 2 +- src/nm-logging.c | 2 +- 9 files changed, 38 insertions(+), 38 deletions(-) diff --git a/configure.ac b/configure.ac index 29aee7cacc..94b5152ef8 100644 --- a/configure.ac +++ b/configure.ac @@ -134,7 +134,7 @@ test "$enable_ifupdown" = "yes" && distro_plugins="$distro_plugins,ifu test "$enable_ifnet" = "yes" && distro_plugins="$distro_plugins,ifnet" distro_plugins="${distro_plugins#,}" -AC_DEFINE_UNQUOTED(NM_CONFIG_PLUGINS_DEFAULT, "$config_plugins_default", [Default configuration option for main.plugins setting]) +AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_PLUGINS, "$config_plugins_default", [Default configuration option for main.plugins setting]) if test "${enable_config_plugin_ibft}" = yes; then AC_DEFINE(WITH_SETTINGS_PLUGIN_IBFT, 1, [Whether compilation of ibft setting plugin is enabled]) else @@ -417,9 +417,9 @@ if test "$nm_config_logging_backend_default" = ""; then nm_config_logging_backend_default='syslog' fi fi -AC_DEFINE_UNQUOTED(NM_CONFIG_LOGGING_BACKEND_DEFAULT, "$nm_config_logging_backend_default", [Default configuration option for logging.backend]) -NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT="$nm_config_logging_backend_default" -AC_SUBST(NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT) +AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_LOGGING_BACKEND, "$nm_config_logging_backend_default", [Default configuration option for logging.backend]) +NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT="$nm_config_logging_backend_default" +AC_SUBST(NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT) # Session tracking support AC_ARG_WITH(systemd-logind, AS_HELP_STRING([--with-systemd-logind=yes|no], @@ -579,11 +579,11 @@ AC_ARG_ENABLE(polkit, AS_HELP_STRING([--enable-polkit=yes|no|disabled], [set def [enable_polkit=${enableval}], [enable_polkit=yes]) if (test "${enable_polkit}" != "no" -a "${enable_polkit}" != "disabled"); then enable_polkit=yes - AC_DEFINE(NM_CONFIG_DEFAULT_AUTH_POLKIT, "true", [The default value of the auth-polkit configuration option]) - AC_SUBST(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT, true) + AC_DEFINE(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT, "true", [The default value of the auth-polkit configuration option]) + AC_SUBST(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT, true) else - AC_DEFINE(NM_CONFIG_DEFAULT_AUTH_POLKIT, "false", [The default value of the auth-polkit configuration option]) - AC_SUBST(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT, false) + AC_DEFINE(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT, "false", [The default value of the auth-polkit configuration option]) + AC_SUBST(NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT, false) fi if (test "${enable_polkit}" != "disabled"); then AC_DEFINE(WITH_POLKIT, 1, [whether to compile polkit support]) @@ -815,8 +815,8 @@ fi test -z "$config_dhcp_default" -a "$with_dhclient" != "no" && config_dhcp_default='dhclient' test -z "$config_dhcp_default" -a "$with_dhcpcd" != "no" && config_dhcp_default='dhcpcd' test -z "$config_dhcp_default" && config_dhcp_default='internal' -AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_DHCP, "$config_dhcp_default", [Default configuration option for main.dhcp setting]) -AC_SUBST(NM_CONFIG_DEFAULT_DHCP, $config_dhcp_default) +AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_DHCP, "$config_dhcp_default", [Default configuration option for main.dhcp setting]) +AC_SUBST(NM_CONFIG_DEFAULT_MAIN_DHCP, $config_dhcp_default) # resolvconf and netconfig support AC_ARG_WITH(resolvconf, AS_HELP_STRING([--with-resolvconf=yes|no|path], [Enable resolvconf support])) @@ -856,8 +856,8 @@ fi if test "$with_netconfig" != "no"; then AC_DEFINE_UNQUOTED(NETCONFIG_PATH, "$with_netconfig", [Path to netconfig]) fi -AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_DNS_RC_MANAGER, "$config_dns_rc_manager_default", [Default value for main.rc-manager setting (--with-config-dns-rc-manager-default)]) -AC_SUBST(NM_CONFIG_DEFAULT_DNS_RC_MANAGER, $config_dns_rc_manager_default) +AC_DEFINE_UNQUOTED(NM_CONFIG_DEFAULT_MAIN_RC_MANAGER, "$config_dns_rc_manager_default", [Default value for main.rc-manager setting (--with-config-dns-rc-manager-default)]) +AC_SUBST(NM_CONFIG_DEFAULT_MAIN_RC_MANAGER, $config_dns_rc_manager_default) # iptables path AC_ARG_WITH(iptables, AS_HELP_STRING([--with-iptables=/path/to/iptables], [path to iptables])) diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml index f765ca9461..ae14b05e34 100644 --- a/man/NetworkManager.conf.xml +++ b/man/NetworkManager.conf.xml @@ -176,7 +176,7 @@ plugins-=remove-me Whether the system uses PolicyKit for authorization. If false, all requests will be allowed. If true, non-root requests are authorized using PolicyKit. - The default value is &NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT;. + The default value is &NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_TEXT;. @@ -189,7 +189,7 @@ plugins-=remove-me clients to be installed. The internal option uses a built-in DHCP client which is not currently as featureful as the external clients. - If this key is missing, it defaults to &NM_CONFIG_DEFAULT_DHCP;. + If this key is missing, it defaults to &NM_CONFIG_DEFAULT_MAIN_DHCP;. It the chosen plugin is not available, clients are looked for in this order: dhclient, dhcpcd, internal. @@ -319,7 +319,7 @@ no-auto-default=* Set the resolv.conf management mode. The default value depends on NetworkManager build options, and this version of NetworkManager was build with a default of - "&NM_CONFIG_DEFAULT_DNS_RC_MANAGER;". + "&NM_CONFIG_DEFAULT_MAIN_RC_MANAGER;". Regardless of this setting, NetworkManager will always write resolv.conf to its runtime state directory. symlink: NetworkManager will symlink @@ -558,7 +558,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth "debug" uses syslog and logs to standard error. If NetworkManager is started in debug mode (--debug) this option is ignored and "debug" is always used. - Otherwise, the default is "&NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT;". + Otherwise, the default is "&NM_CONFIG_DEFAULT_LOGGING_BACKEND_TEXT;". diff --git a/man/common.ent.in b/man/common.ent.in index bb9adad248..4c3310c44b 100644 --- a/man/common.ent.in +++ b/man/common.ent.in @@ -1,8 +1,8 @@ - - + + - - + + diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c index 6cb5c105b9..bce24a87f3 100644 --- a/src/dhcp/nm-dhcp-manager.c +++ b/src/dhcp/nm-dhcp-manager.c @@ -359,13 +359,13 @@ nm_dhcp_manager_init (NMDhcpManager *self) nm_log_warn (LOGD_DHCP, "dhcp-init: DHCP client '%s' not available", client); } if (!client_factory) { - client_factory = _client_factory_find_by_name (""NM_CONFIG_DEFAULT_DHCP); + client_factory = _client_factory_find_by_name (""NM_CONFIG_DEFAULT_MAIN_DHCP); if (!client_factory) - nm_log_err (LOGD_DHCP, "dhcp-init: default DHCP client '%s' is not installed", NM_CONFIG_DEFAULT_DHCP); + nm_log_err (LOGD_DHCP, "dhcp-init: default DHCP client '%s' is not installed", NM_CONFIG_DEFAULT_MAIN_DHCP); else { client_factory = _client_factory_available (client_factory); if (!client_factory) - nm_log_info (LOGD_DHCP, "dhcp-init: default DHCP client '%s' is not available", NM_CONFIG_DEFAULT_DHCP); + nm_log_info (LOGD_DHCP, "dhcp-init: default DHCP client '%s' is not available", NM_CONFIG_DEFAULT_MAIN_DHCP); } } if (!client_factory) { diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index 33f2074ead..30e448c325 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -1655,9 +1655,9 @@ again: if (rc_manager == NM_DNS_MANAGER_RESOLV_CONF_MAN_UNKNOWN) { if (man) { _LOGW ("init: unknown resolv.conf manager \"%s\", fallback to \"%s\"", - man, ""NM_CONFIG_DEFAULT_DNS_RC_MANAGER); + man, ""NM_CONFIG_DEFAULT_MAIN_RC_MANAGER); } - man = ""NM_CONFIG_DEFAULT_DNS_RC_MANAGER; + man = ""NM_CONFIG_DEFAULT_MAIN_RC_MANAGER; rc_manager = NM_DNS_MANAGER_RESOLV_CONF_MAN_SYMLINK; goto again; } diff --git a/src/nm-config-data.c b/src/nm-config-data.c index 7c3bebfe93..ece18b5c09 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -232,7 +232,7 @@ nm_config_data_get_plugins (const NMConfigData *self, gboolean 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_PLUGINS_DEFAULT); + 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); } return _nm_utils_strv_cleanup (list, TRUE, TRUE, TRUE); @@ -566,11 +566,11 @@ static struct { const char *key; const char *value; } default_values[] = { - { NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_PLUGINS_DEFAULT }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "rc-manager", NM_CONFIG_DEFAULT_DNS_RC_MANAGER }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_AUTH_POLKIT }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NM_CONFIG_DEFAULT_DHCP }, - { NM_CONFIG_KEYFILE_GROUP_LOGGING, "backend", NM_CONFIG_LOGGING_BACKEND_DEFAULT }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, "rc-manager", NM_CONFIG_DEFAULT_MAIN_RC_MANAGER }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NM_CONFIG_DEFAULT_MAIN_DHCP }, + { NM_CONFIG_KEYFILE_GROUP_LOGGING, "backend", NM_CONFIG_DEFAULT_LOGGING_BACKEND }, { NM_CONFIG_KEYFILE_GROUP_LOGGING, "audit", NM_CONFIG_DEFAULT_LOGGING_AUDIT }, }; diff --git a/src/nm-config.c b/src/nm-config.c index 03aa6d4b64..ebc934092f 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -270,7 +270,7 @@ nm_config_get_monitor_connection_files (NMConfig *config) gboolean nm_config_get_auth_polkit (NMConfig *config) { - g_return_val_if_fail (NM_IS_CONFIG (config), NM_CONFIG_DEFAULT_AUTH_POLKIT_BOOL); + g_return_val_if_fail (NM_IS_CONFIG (config), NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL); return NM_CONFIG_GET_PRIVATE (config)->auth_polkit; } @@ -497,7 +497,7 @@ nm_config_cmd_line_options_add_to_entries (NMConfigCmdLineOptions *cli, { "intern-config", 0, 0, G_OPTION_ARG_FILENAME, &cli->intern_config_file, N_("Internal config file location"), N_(DEFAULT_INTERN_CONFIG_FILE) }, { "state-file", 0, 0, G_OPTION_ARG_FILENAME, &cli->state_file, N_("State file location"), N_(DEFAULT_STATE_FILE) }, { "no-auto-default", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_FILENAME, &cli->no_auto_default_file, N_("State file for no-auto-default devices"), N_(DEFAULT_NO_AUTO_DEFAULT_FILE) }, - { "plugins", 0, 0, G_OPTION_ARG_STRING, &cli->plugins, N_("List of plugins separated by ','"), N_(NM_CONFIG_PLUGINS_DEFAULT) }, + { "plugins", 0, 0, G_OPTION_ARG_STRING, &cli->plugins, N_("List of plugins separated by ','"), N_(NM_CONFIG_DEFAULT_MAIN_PLUGINS) }, { "configure-and-quit", 0, 0, G_OPTION_ARG_NONE, &cli->configure_and_quit, N_("Quit after initial configuration"), NULL }, { "debug", 'd', 0, G_OPTION_ARG_NONE, &cli->is_debug, N_("Don't become a daemon, and log to stderr"), NULL }, @@ -758,7 +758,7 @@ read_config (GKeyFile *keyfile, gboolean is_base_config, const char *dirname, co if (!old_val && !g_key_file_has_key (keyfile, group, base_key, NULL)) { /* we must fill the unspecified value with the compile-time default. */ if (nm_streq (group, NM_CONFIG_KEYFILE_GROUP_MAIN) && nm_streq (base_key, "plugins")) { - g_key_file_set_value (keyfile, group, base_key, NM_CONFIG_PLUGINS_DEFAULT); + g_key_file_set_value (keyfile, group, base_key, NM_CONFIG_DEFAULT_MAIN_PLUGINS); old_val = g_key_file_get_string_list (keyfile, group, base_key, NULL, NULL); } } @@ -2331,7 +2331,7 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) priv->monitor_connection_files = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "monitor-connection-files", FALSE); - priv->auth_polkit = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_AUTH_POLKIT_BOOL); + priv->auth_polkit = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL); priv->dhcp_client = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NULL)); @@ -2372,7 +2372,7 @@ nm_config_init (NMConfig *config) { NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (config); - priv->auth_polkit = NM_CONFIG_DEFAULT_AUTH_POLKIT_BOOL; + priv->auth_polkit = NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL; } NMConfig * diff --git a/src/nm-config.h b/src/nm-config.h index 15c46ed547..fbeb7bd9fd 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -182,7 +182,7 @@ extern char *_nm_config_match_env; #define NM_CONFIG_DEVICE_STATE_DIR ""NMRUNDIR"/devices" -#define NM_CONFIG_DEFAULT_AUTH_POLKIT_BOOL (nm_streq (""NM_CONFIG_DEFAULT_AUTH_POLKIT, "true")) +#define NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL (nm_streq (""NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT, "true")) #define NM_CONFIG_DEFAULT_LOGGING_AUDIT_BOOL (nm_streq (""NM_CONFIG_DEFAULT_LOGGING_AUDIT, "true")) typedef enum { diff --git a/src/nm-logging.c b/src/nm-logging.c index f8ecf0c94b..50927f8caf 100644 --- a/src/nm-logging.c +++ b/src/nm-logging.c @@ -818,7 +818,7 @@ nm_logging_syslog_openlog (const char *logging_backend) g_return_if_reached (); if (!logging_backend) - logging_backend = ""NM_CONFIG_LOGGING_BACKEND_DEFAULT; + logging_backend = ""NM_CONFIG_DEFAULT_LOGGING_BACKEND; if (strcmp (logging_backend, "debug") == 0) { global.log_backend = LOG_BACKEND_SYSLOG; From ff4cb2a1fcc711e0f31e7ab8f16dbebbf3616e36 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 14:39:59 +0100 Subject: [PATCH 4/6] config: drop nm_config_get_auth_polkit() and access value directly --- src/main.c | 5 ++++- src/nm-config-data.c | 12 ++++++------ src/nm-config.c | 14 -------------- src/nm-config.h | 2 +- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/src/main.c b/src/main.c index cfac7fb621..4a25c1c9d2 100644 --- a/src/main.c +++ b/src/main.c @@ -362,7 +362,10 @@ main (int argc, char *argv[]) #endif ); - nm_auth_manager_setup (nm_config_get_auth_polkit (config)); + nm_auth_manager_setup (nm_config_data_get_value_boolean (nm_config_get_data_orig (config), + NM_CONFIG_KEYFILE_GROUP_MAIN, + NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT, + NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL)); nm_manager_setup (); diff --git a/src/nm-config-data.c b/src/nm-config-data.c index ece18b5c09..99f31c2237 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -566,12 +566,12 @@ static struct { const char *key; const char *value; } default_values[] = { - { NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "rc-manager", NM_CONFIG_DEFAULT_MAIN_RC_MANAGER }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT }, - { NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NM_CONFIG_DEFAULT_MAIN_DHCP }, - { NM_CONFIG_KEYFILE_GROUP_LOGGING, "backend", NM_CONFIG_DEFAULT_LOGGING_BACKEND }, - { NM_CONFIG_KEYFILE_GROUP_LOGGING, "audit", NM_CONFIG_DEFAULT_LOGGING_AUDIT }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS }, + { 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, "dhcp", NM_CONFIG_DEFAULT_MAIN_DHCP }, + { NM_CONFIG_KEYFILE_GROUP_LOGGING, "backend", NM_CONFIG_DEFAULT_LOGGING_BACKEND }, + { NM_CONFIG_KEYFILE_GROUP_LOGGING, "audit", NM_CONFIG_DEFAULT_LOGGING_AUDIT }, }; void diff --git a/src/nm-config.c b/src/nm-config.c index ebc934092f..4e63b2e9e0 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -92,7 +92,6 @@ typedef struct { char *intern_config_file; gboolean monitor_connection_files; - gboolean auth_polkit; char *dhcp_client; char *log_level; @@ -267,14 +266,6 @@ nm_config_get_monitor_connection_files (NMConfig *config) return NM_CONFIG_GET_PRIVATE (config)->monitor_connection_files; } -gboolean -nm_config_get_auth_polkit (NMConfig *config) -{ - g_return_val_if_fail (NM_IS_CONFIG (config), NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL); - - return NM_CONFIG_GET_PRIVATE (config)->auth_polkit; -} - const char * nm_config_get_dhcp_client (NMConfig *config) { @@ -2331,8 +2322,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) priv->monitor_connection_files = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "monitor-connection-files", FALSE); - priv->auth_polkit = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "auth-polkit", NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL); - priv->dhcp_client = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NULL)); priv->log_level = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_LOGGING, "level", NULL)); @@ -2370,9 +2359,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) static void nm_config_init (NMConfig *config) { - NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (config); - - priv->auth_polkit = NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT_BOOL; } NMConfig * diff --git a/src/nm-config.h b/src/nm-config.h index fbeb7bd9fd..a229a17ff7 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -59,6 +59,7 @@ #define NM_CONFIG_KEYFILE_GROUP_IFUPDOWN "ifupdown" #define NM_CONFIG_KEYFILE_GROUP_IFNET "ifnet" +#define NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT "auth-polkit" #define NM_CONFIG_KEYFILE_KEY_LOGGING_BACKEND "backend" #define NM_CONFIG_KEYFILE_KEY_CONFIG_ENABLE "enable" #define NM_CONFIG_KEYFILE_KEY_ATOMIC_SECTION_WAS ".was" @@ -115,7 +116,6 @@ NMConfigData *nm_config_get_data_orig (NMConfig *config); #define NM_CONFIG_GET_DATA_ORIG (nm_config_get_data_orig (nm_config_get ())) gboolean nm_config_get_monitor_connection_files (NMConfig *config); -gboolean nm_config_get_auth_polkit (NMConfig *config); const char *nm_config_get_dhcp_client (NMConfig *config); const char *nm_config_get_log_level (NMConfig *config); const char *nm_config_get_log_domains (NMConfig *config); From 61c6ccaad4cfd0c8dae8ea09707c4c4a9cc8c7e8 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 15:07:19 +0100 Subject: [PATCH 5/6] config: drop nm_config_get_dhcp_client() and access config directly Also, ifnet plugin would read the configuration value, which is just wrong because: - the configuration might not be set and ifnet would fail to fallback to the compile time default. - the configuration only is in effect if the plugin is also available. Otherwise, we fallback to the next plugin. Only the dhcp-manager knows which DHCP plugin is in use. --- src/NetworkManager.ver-orig | 3 +- src/dhcp/nm-dhcp-manager.c | 18 ++++++++- src/dhcp/nm-dhcp-manager.h | 2 + src/nm-config-data.c | 2 +- src/nm-config.c | 12 ------ src/nm-config.h | 2 +- src/nm-iface-helper.c | 38 ++++++++++--------- .../plugins/ifnet/nms-ifnet-net-utils.c | 18 +++++---- src/settings/plugins/ifnet/tests/test-ifnet.c | 10 ++--- src/tests/config/test-config.c | 17 +++++++-- 10 files changed, 73 insertions(+), 49 deletions(-) diff --git a/src/NetworkManager.ver-orig b/src/NetworkManager.ver-orig index e89ed95e0d..5b62f41b08 100644 --- a/src/NetworkManager.ver-orig +++ b/src/NetworkManager.ver-orig @@ -31,7 +31,6 @@ global: nm_config_get; nm_config_get_data; nm_config_get_data_orig; - nm_config_get_dhcp_client; nm_config_get_monitor_connection_files; nm_connection_add_setting; nm_connection_compare; @@ -127,6 +126,8 @@ global: nm_device_state_changed; nm_device_take_down; nm_device_uses_assumed_connection; + nm_dhcp_manager_get; + nm_dhcp_manager_get_config; nm_ethernet_address_is_valid; nm_exported_object_class_add_interface; nm_exported_object_export; diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c index bce24a87f3..c78a3841ed 100644 --- a/src/dhcp/nm-dhcp-manager.c +++ b/src/dhcp/nm-dhcp-manager.c @@ -322,6 +322,17 @@ nm_dhcp_manager_get_lease_ip_configs (NMDhcpManager *self, return NULL; } +const char * +nm_dhcp_manager_get_config (NMDhcpManager *self) +{ + const NMDhcpClientFactory *factory; + + g_return_val_if_fail (NM_IS_DHCP_MANAGER (self), NULL); + + factory = NM_DHCP_MANAGER_GET_PRIVATE (self)->client_factory; + return factory ? factory->name : NULL; +} + /*****************************************************************************/ NM_DEFINE_SINGLETON_GETTER (NMDhcpManager, nm_dhcp_manager_get, NM_TYPE_DHCP_MANAGER); @@ -331,6 +342,7 @@ nm_dhcp_manager_init (NMDhcpManager *self) { NMDhcpManagerPrivate *priv = NM_DHCP_MANAGER_GET_PRIVATE (self); NMConfig *config = nm_config_get (); + gs_free char *client_free = NULL; const char *client; int i; const NMDhcpClientFactory *client_factory = NULL; @@ -347,7 +359,11 @@ nm_dhcp_manager_init (NMDhcpManager *self) } /* Client-specific setup */ - client = nm_config_get_dhcp_client (config); + client_free = nm_config_data_get_value (nm_config_get_data_orig (config), + NM_CONFIG_KEYFILE_GROUP_MAIN, + NM_CONFIG_KEYFILE_KEY_MAIN_DHCP, + NM_CONFIG_GET_VALUE_STRIP | NM_CONFIG_GET_VALUE_NO_EMPTY); + client = client_free; if (nm_config_get_configure_and_quit (config)) { client_factory = &_nm_dhcp_client_factory_internal; if (client && !nm_streq (client, client_factory->name)) diff --git a/src/dhcp/nm-dhcp-manager.h b/src/dhcp/nm-dhcp-manager.h index a948b60970..66fdd145db 100644 --- a/src/dhcp/nm-dhcp-manager.h +++ b/src/dhcp/nm-dhcp-manager.h @@ -40,6 +40,8 @@ GType nm_dhcp_manager_get_type (void); NMDhcpManager *nm_dhcp_manager_get (void); +const char *nm_dhcp_manager_get_config (NMDhcpManager *self); + void nm_dhcp_manager_set_default_hostname (NMDhcpManager *manager, const char *hostname); diff --git a/src/nm-config-data.c b/src/nm-config-data.c index 99f31c2237..0d554e55ea 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -569,7 +569,7 @@ static struct { { NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins", NM_CONFIG_DEFAULT_MAIN_PLUGINS }, { 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, "dhcp", NM_CONFIG_DEFAULT_MAIN_DHCP }, + { NM_CONFIG_KEYFILE_GROUP_MAIN, NM_CONFIG_KEYFILE_KEY_MAIN_DHCP, NM_CONFIG_DEFAULT_MAIN_DHCP }, { NM_CONFIG_KEYFILE_GROUP_LOGGING, "backend", NM_CONFIG_DEFAULT_LOGGING_BACKEND }, { NM_CONFIG_KEYFILE_GROUP_LOGGING, "audit", NM_CONFIG_DEFAULT_LOGGING_AUDIT }, }; diff --git a/src/nm-config.c b/src/nm-config.c index 4e63b2e9e0..774cb1b748 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -92,7 +92,6 @@ typedef struct { char *intern_config_file; gboolean monitor_connection_files; - char *dhcp_client; char *log_level; char *log_domains; @@ -266,14 +265,6 @@ nm_config_get_monitor_connection_files (NMConfig *config) return NM_CONFIG_GET_PRIVATE (config)->monitor_connection_files; } -const char * -nm_config_get_dhcp_client (NMConfig *config) -{ - g_return_val_if_fail (config != NULL, NULL); - - return NM_CONFIG_GET_PRIVATE (config)->dhcp_client; -} - const char * nm_config_get_log_level (NMConfig *config) { @@ -2322,8 +2313,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) priv->monitor_connection_files = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "monitor-connection-files", FALSE); - priv->dhcp_client = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "dhcp", NULL)); - priv->log_level = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_LOGGING, "level", NULL)); priv->log_domains = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_LOGGING, "domains", NULL)); @@ -2383,7 +2372,6 @@ finalize (GObject *gobject) g_free (priv->system_config_dir); g_free (priv->no_auto_default_file); g_free (priv->intern_config_file); - g_free (priv->dhcp_client); g_free (priv->log_level); g_free (priv->log_domains); g_free (priv->debug); diff --git a/src/nm-config.h b/src/nm-config.h index a229a17ff7..ec15f3c3b5 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -60,6 +60,7 @@ #define NM_CONFIG_KEYFILE_GROUP_IFNET "ifnet" #define NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT "auth-polkit" +#define NM_CONFIG_KEYFILE_KEY_MAIN_DHCP "dhcp" #define NM_CONFIG_KEYFILE_KEY_LOGGING_BACKEND "backend" #define NM_CONFIG_KEYFILE_KEY_CONFIG_ENABLE "enable" #define NM_CONFIG_KEYFILE_KEY_ATOMIC_SECTION_WAS ".was" @@ -116,7 +117,6 @@ NMConfigData *nm_config_get_data_orig (NMConfig *config); #define NM_CONFIG_GET_DATA_ORIG (nm_config_get_data_orig (nm_config_get ())) gboolean nm_config_get_monitor_connection_files (NMConfig *config); -const char *nm_config_get_dhcp_client (NMConfig *config); const char *nm_config_get_log_level (NMConfig *config); const char *nm_config_get_log_domains (NMConfig *config); const char *nm_config_get_debug (NMConfig *config); diff --git a/src/nm-iface-helper.c b/src/nm-iface-helper.c index b9498d3172..aa14b085fe 100644 --- a/src/nm-iface-helper.c +++ b/src/nm-iface-helper.c @@ -557,52 +557,56 @@ const NMDhcpClientFactory *const _nm_dhcp_manager_factories[3] = { /*****************************************************************************/ /* Stub functions */ +#include "nm-config.h" +#include "devices/nm-device.h" +#include "nm-active-connection.h" +#include "nm-bus-manager.h" + void nm_main_config_reload (int signal) { _LOGI (LOGD_CORE, "reloading configuration not supported"); } -gconstpointer nm_config_get (void); -const char *nm_config_get_dhcp_client (gpointer unused); -gboolean nm_config_get_configure_and_quit (gpointer unused); -gconstpointer nm_bus_manager_get (void); -void nm_bus_manager_register_object (gpointer unused, gpointer object); -void nm_bus_manager_unregister_object (gpointer unused, gpointer object); -GType nm_device_get_type (void); -GType nm_active_connection_get_type (void); - -gconstpointer +NMConfig * nm_config_get (void) { return GUINT_TO_POINTER (1); } -const char * -nm_config_get_dhcp_client (gpointer unused) +NMConfigData * +nm_config_get_data_orig (NMConfig *config) { - return "internal"; + return GUINT_TO_POINTER (1); +} + +char * +nm_config_data_get_value (const NMConfigData *config_data, const char *group, const char *key, NMConfigGetValueFlags flags) +{ + return NULL; } gboolean -nm_config_get_configure_and_quit (gpointer unused) +nm_config_get_configure_and_quit (NMConfig *config) { return TRUE; } -gconstpointer +NMBusManager * nm_bus_manager_get (void) { return GUINT_TO_POINTER (1); } void -nm_bus_manager_register_object (gpointer unused, gpointer object) +nm_bus_manager_register_object (NMBusManager *bus_manager, + GDBusObjectSkeleton *object) { } void -nm_bus_manager_unregister_object (gpointer unused, gpointer object) +nm_bus_manager_unregister_object (NMBusManager *bus_manager, + GDBusObjectSkeleton *object) { } diff --git a/src/settings/plugins/ifnet/nms-ifnet-net-utils.c b/src/settings/plugins/ifnet/nms-ifnet-net-utils.c index db3c642ad1..6531a23813 100644 --- a/src/settings/plugins/ifnet/nms-ifnet-net-utils.c +++ b/src/settings/plugins/ifnet/nms-ifnet-net-utils.c @@ -32,6 +32,7 @@ #include "NetworkManagerUtils.h" #include "settings/nm-settings-plugin.h" #include "nm-config.h" +#include "dhcp/nm-dhcp-manager.h" #include "nms-ifnet-wpa-parser.h" #include "nms-ifnet-net-parser.h" @@ -729,24 +730,25 @@ get_dhcp_hostname_and_client_id (char **hostname, char **client_id) *hostname = NULL; *client_id = NULL; - dhcp_client = nm_config_get_dhcp_client (nm_config_get ()); + dhcp_client = nm_dhcp_manager_get_config (nm_dhcp_manager_get ()); if (dhcp_client) { if (!strcmp (dhcp_client, "dhclient")) { g_file_get_contents (dhclient_conf, &contents, NULL, - NULL); + NULL); use_dhclient = TRUE; - } else if (!strcmp (dhcp_client, "dhcpcd")) + } else if (!strcmp (dhcp_client, "dhcpcd")) { g_file_get_contents (dhcpcd_conf, &contents, NULL, - NULL); + NULL); + } } else { if (g_file_test (dhclient_conf, G_FILE_TEST_IS_REGULAR)) { g_file_get_contents (dhclient_conf, &contents, NULL, - NULL); + NULL); use_dhclient = TRUE; - } - else if (g_file_test (dhcpcd_conf, G_FILE_TEST_IS_REGULAR)) + } else if (g_file_test (dhcpcd_conf, G_FILE_TEST_IS_REGULAR)) { g_file_get_contents (dhcpcd_conf, &contents, NULL, - NULL); + NULL); + } } if (!contents) return; diff --git a/src/settings/plugins/ifnet/tests/test-ifnet.c b/src/settings/plugins/ifnet/tests/test-ifnet.c index 93727af72a..68f2b928e3 100644 --- a/src/settings/plugins/ifnet/tests/test-ifnet.c +++ b/src/settings/plugins/ifnet/tests/test-ifnet.c @@ -30,8 +30,8 @@ #include "nm-utils.h" -#include "nm-config.h" #include "platform/nm-linux-platform.h" +#include "dhcp/nm-dhcp-manager.h" #include "settings/plugins/ifnet/nms-ifnet-net-parser.h" #include "settings/plugins/ifnet/nms-ifnet-net-utils.h" @@ -40,17 +40,17 @@ #include "nm-test-utils-core.h" -/* Fake NMConfig handling; the values it returns don't matter, so this +/* Fake config handling; the values it returns don't matter, so this * is easier than forcing it to read our own config file, etc. */ -NMConfig * -nm_config_get (void) +NMDhcpManager * +nm_dhcp_manager_get (void) { return NULL; } const char * -nm_config_get_dhcp_client (NMConfig *config) +nm_dhcp_manager_get_config (NMDhcpManager *dhcp_manager) { return "dhclient"; } diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c index b05e2f1995..dd2a58a06a 100644 --- a/src/tests/config/test-config.c +++ b/src/tests/config/test-config.c @@ -46,6 +46,17 @@ _assert_config_value (const NMConfigData *config_data, const char *group, const } #define assert_config_value(config_data, group, key, expected_value) _assert_config_value (config_data, group, key, expected_value, __FILE__, __LINE__) +#define _config_get_dhcp_client_a(config) \ + ({ \ + gs_free char *_s = NULL; \ + \ + _s = nm_config_data_get_value (nm_config_get_data_orig (config), \ + NM_CONFIG_KEYFILE_GROUP_MAIN, \ + NM_CONFIG_KEYFILE_KEY_MAIN_DHCP, \ + NM_CONFIG_GET_VALUE_STRIP | NM_CONFIG_GET_VALUE_NO_EMPTY); \ + _s ? nm_sprintf_bufa (100, "%s", _s) : NULL; \ + }) + /*****************************************************************************/ static NMConfig * @@ -124,7 +135,7 @@ test_config_simple (void) config = setup_config (NULL, SRCDIR "/NetworkManager.conf", "", NULL, "/no/such/dir", "", NULL); g_assert_cmpstr (nm_config_data_get_config_main_file (nm_config_get_data_orig (config)), ==, SRCDIR "/NetworkManager.conf"); - g_assert_cmpstr (nm_config_get_dhcp_client (config), ==, "dhclient"); + g_assert_cmpstr (_config_get_dhcp_client_a (config), ==, "dhclient"); g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO"); g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 100); @@ -224,7 +235,7 @@ test_config_override (void) NULL); g_assert_cmpstr (nm_config_data_get_config_main_file (nm_config_get_data_orig (config)), ==, SRCDIR "/NetworkManager.conf"); - g_assert_cmpstr (nm_config_get_dhcp_client (config), ==, "dhclient"); + g_assert_cmpstr (_config_get_dhcp_client_a (config), ==, "dhclient"); g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO"); g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 12); @@ -377,7 +388,7 @@ test_config_confdir (void) config = setup_config (NULL, SRCDIR "/NetworkManager.conf", "", NULL, SRCDIR "/conf.d", "", NULL); g_assert_cmpstr (nm_config_data_get_config_main_file (nm_config_get_data_orig (config)), ==, SRCDIR "/NetworkManager.conf"); - g_assert_cmpstr (nm_config_get_dhcp_client (config), ==, "dhcpcd"); + g_assert_cmpstr (_config_get_dhcp_client_a (config), ==, "dhcpcd"); g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO"); g_assert_cmpstr (nm_config_get_log_domains (config), ==, "PLATFORM,DNS,WIFI"); g_assert_cmpstr (nm_config_data_get_connectivity_uri (nm_config_get_data_orig (config)), ==, "http://example.net"); From c7d2e1f3bc97f7061e3d0e8d20027513919adb26 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 25 Nov 2016 15:34:40 +0100 Subject: [PATCH 6/6] config: drop nm_config_get_debug() and access config directly --- src/main.c | 10 ++++++++-- src/nm-config.c | 15 +-------------- src/nm-config.h | 2 +- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/main.c b/src/main.c index 4a25c1c9d2..5d016a906d 100644 --- a/src/main.c +++ b/src/main.c @@ -85,7 +85,7 @@ _set_g_fatal_warnings (void) } static void -_init_nm_debug (const char *debug) +_init_nm_debug (NMConfig *config) { const guint D_RLIMIT_CORE = 1; const guint D_FATAL_WARNINGS = 2; @@ -95,6 +95,12 @@ _init_nm_debug (const char *debug) }; guint flags; const char *env = getenv ("NM_DEBUG"); + gs_free char *debug; + + debug = nm_config_data_get_value (nm_config_get_data_orig (config), + NM_CONFIG_KEYFILE_GROUP_MAIN, + NM_CONFIG_KEYFILE_KEY_MAIN_DEBUG, + NM_MANAGER_RELOAD_FLAGS_NONE); flags = nm_utils_parse_debug_string (env, keys, G_N_ELEMENTS (keys)); flags |= nm_utils_parse_debug_string (debug, keys, G_N_ELEMENTS (keys)); @@ -302,7 +308,7 @@ main (int argc, char *argv[]) exit (1); } - _init_nm_debug (nm_config_get_debug (config)); + _init_nm_debug (config); /* Initialize logging from config file *only* if not explicitly * specified by commandline. diff --git a/src/nm-config.c b/src/nm-config.c index 774cb1b748..2d61b92961 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -96,8 +96,6 @@ typedef struct { char *log_level; char *log_domains; - char *debug; - gboolean configure_and_quit; char **atomic_section_prefixes; @@ -281,14 +279,6 @@ nm_config_get_log_domains (NMConfig *config) return NM_CONFIG_GET_PRIVATE (config)->log_domains; } -const char * -nm_config_get_debug (NMConfig *config) -{ - g_return_val_if_fail (config != NULL, NULL); - - return NM_CONFIG_GET_PRIVATE (config)->debug; -} - gboolean nm_config_get_configure_and_quit (NMConfig *config) { @@ -625,7 +615,7 @@ static gboolean _setting_is_string_list (const char *group, const char *key) { return _IS (NM_CONFIG_KEYFILE_GROUP_MAIN, "plugins") - || _IS (NM_CONFIG_KEYFILE_GROUP_MAIN, "debug") + || _IS (NM_CONFIG_KEYFILE_GROUP_MAIN, NM_CONFIG_KEYFILE_KEY_MAIN_DEBUG) || _IS (NM_CONFIG_KEYFILE_GROUP_LOGGING, "domains") || g_str_has_prefix (group, NM_CONFIG_KEYFILE_GROUPPREFIX_TEST_APPEND_STRINGLIST); #undef _IS @@ -2316,8 +2306,6 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) priv->log_level = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_LOGGING, "level", NULL)); priv->log_domains = nm_strstrip (g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_LOGGING, "domains", NULL)); - priv->debug = g_key_file_get_string (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "debug", NULL); - priv->configure_and_quit = nm_config_keyfile_get_boolean (keyfile, NM_CONFIG_KEYFILE_GROUP_MAIN, "configure-and-quit", FALSE); no_auto_default = no_auto_default_from_file (priv->no_auto_default_file); @@ -2374,7 +2362,6 @@ finalize (GObject *gobject) g_free (priv->intern_config_file); g_free (priv->log_level); g_free (priv->log_domains); - g_free (priv->debug); g_strfreev (priv->atomic_section_prefixes); _nm_config_cmd_line_options_clear (&priv->cli); diff --git a/src/nm-config.h b/src/nm-config.h index ec15f3c3b5..9930df33e2 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -61,6 +61,7 @@ #define NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT "auth-polkit" #define NM_CONFIG_KEYFILE_KEY_MAIN_DHCP "dhcp" +#define NM_CONFIG_KEYFILE_KEY_MAIN_DEBUG "debug" #define NM_CONFIG_KEYFILE_KEY_LOGGING_BACKEND "backend" #define NM_CONFIG_KEYFILE_KEY_CONFIG_ENABLE "enable" #define NM_CONFIG_KEYFILE_KEY_ATOMIC_SECTION_WAS ".was" @@ -119,7 +120,6 @@ NMConfigData *nm_config_get_data_orig (NMConfig *config); gboolean nm_config_get_monitor_connection_files (NMConfig *config); const char *nm_config_get_log_level (NMConfig *config); const char *nm_config_get_log_domains (NMConfig *config); -const char *nm_config_get_debug (NMConfig *config); gboolean nm_config_get_configure_and_quit (NMConfig *config); gboolean nm_config_get_is_debug (NMConfig *config);