summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-07-11 18:54:18 +0200
committerThomas Haller <thaller@redhat.com>2015-02-03 13:01:53 +0100
commit50fce5a860479016470117ded4fb7ea947c27c1c (patch)
treeca411059ca7da5143d193161758772553646c4bf
parent076478505dd1c278898d64d389184d7fb2b6c158 (diff)
downloadNetworkManager-50fce5a860479016470117ded4fb7ea947c27c1c.tar.gz
config: use NMConfigData in NMConfig
-rw-r--r--src/nm-config.c72
-rw-r--r--src/nm-config.h6
-rw-r--r--src/nm-connectivity.c8
-rw-r--r--src/tests/config/test-config.c8
4 files changed, 50 insertions, 44 deletions
diff --git a/src/nm-config.c b/src/nm-config.c
index dd5b2a6d10..742a72e38c 100644
--- a/src/nm-config.c
+++ b/src/nm-config.c
@@ -55,6 +55,9 @@ struct NMConfigCmdLineOptions {
typedef struct {
NMConfigCmdLineOptions cli;
+ NMConfigData *config_data;
+ NMConfigData *config_data_orig;
+
char *nm_conf_path;
char *config_dir;
char *config_description;
@@ -72,10 +75,6 @@ typedef struct {
char *debug;
- char *connectivity_uri;
- guint connectivity_interval;
- char *connectivity_response;
-
char **no_auto_default;
char **ignore_carrier;
@@ -123,6 +122,25 @@ _get_bool_value (GKeyFile *keyfile,
/************************************************************************/
+NMConfigData *
+nm_config_get_data (NMConfig *config)
+{
+ g_return_val_if_fail (config != NULL, NULL);
+
+ return NM_CONFIG_GET_PRIVATE (config)->config_data;
+}
+
+/* The NMConfigData instance is reloadable and will be swapped on reload.
+ * nm_config_get_data_orig() returns the original configuration, when the NMConfig
+ * instance was created. */
+NMConfigData *
+nm_config_get_data_orig (NMConfig *config)
+{
+ g_return_val_if_fail (config != NULL, NULL);
+
+ return NM_CONFIG_GET_PRIVATE (config)->config_data_orig;
+}
+
const char *
nm_config_get_path (NMConfig *config)
{
@@ -203,30 +221,6 @@ nm_config_get_debug (NMConfig *config)
return NM_CONFIG_GET_PRIVATE (config)->debug;
}
-const char *
-nm_config_get_connectivity_uri (NMConfig *config)
-{
- g_return_val_if_fail (config != NULL, NULL);
-
- return NM_CONFIG_GET_PRIVATE (config)->connectivity_uri;
-}
-
-guint
-nm_config_get_connectivity_interval (NMConfig *config)
-{
- g_return_val_if_fail (config != NULL, 0);
-
- return NM_CONFIG_GET_PRIVATE (config)->connectivity_interval;
-}
-
-const char *
-nm_config_get_connectivity_response (NMConfig *config)
-{
- g_return_val_if_fail (config != NULL, NULL);
-
- return NM_CONFIG_GET_PRIVATE (config)->connectivity_response;
-}
-
gboolean
nm_config_get_configure_and_quit (NMConfig *config)
{
@@ -599,6 +593,8 @@ nm_config_new (const NMConfigCmdLineOptions *cli, GError **error)
int i;
GString *config_description;
NMConfig *self;
+ char *connectivity_uri, *connectivity_response;
+ guint connectivity_interval;
self = NM_CONFIG (g_object_new (NM_TYPE_CONFIG, NULL));
priv = NM_CONFIG_GET_PRIVATE (self);
@@ -683,20 +679,29 @@ nm_config_new (const NMConfigCmdLineOptions *cli, GError **error)
if (priv->cli.connectivity_uri && priv->cli.connectivity_uri[0])
g_key_file_set_value (priv->keyfile, "connectivity", "uri", priv->cli.connectivity_uri);
- priv->connectivity_uri = g_key_file_get_value (priv->keyfile, "connectivity", "uri", NULL);
+ connectivity_uri = g_key_file_get_value (priv->keyfile, "connectivity", "uri", NULL);
if (priv->cli.connectivity_interval >= 0)
g_key_file_set_integer (priv->keyfile, "connectivity", "interval", priv->cli.connectivity_interval);
- priv->connectivity_interval = g_key_file_get_integer (priv->keyfile, "connectivity", "interval", NULL);
+ connectivity_interval = g_key_file_get_integer (priv->keyfile, "connectivity", "interval", NULL);
if (priv->cli.connectivity_response && priv->cli.connectivity_response[0])
g_key_file_set_value (priv->keyfile, "connectivity", "response", priv->cli.connectivity_response);
- priv->connectivity_response = g_key_file_get_value (priv->keyfile, "connectivity", "response", NULL);
+ connectivity_response = g_key_file_get_value (priv->keyfile, "connectivity", "response", NULL);
priv->ignore_carrier = g_key_file_get_string_list (priv->keyfile, "main", "ignore-carrier", NULL, NULL);
priv->configure_and_quit = _get_bool_value (priv->keyfile, "main", "configure-and-quit", FALSE);
+ priv->config_data = g_object_new (NM_TYPE_CONFIG_DATA,
+ NM_CONFIG_DATA_CONNECTIVITY_URI, connectivity_uri,
+ NM_CONFIG_DATA_CONNECTIVITY_INTERVAL, connectivity_interval,
+ NM_CONFIG_DATA_CONNECTIVITY_RESPONSE, connectivity_response,
+ NULL);
+ priv->config_data_orig = g_object_ref (priv->config_data);
+ g_free (connectivity_uri);
+ g_free (connectivity_response);
+
return self;
}
@@ -727,13 +732,14 @@ finalize (GObject *gobject)
g_free (priv->log_level);
g_free (priv->log_domains);
g_free (priv->debug);
- g_free (priv->connectivity_uri);
- g_free (priv->connectivity_response);
g_strfreev (priv->no_auto_default);
g_strfreev (priv->ignore_carrier);
_nm_config_cmd_line_options_clear (&priv->cli);
+ g_clear_object (&priv->config_data);
+ g_clear_object (&priv->config_data_orig);
+
G_OBJECT_CLASS (nm_config_parent_class)->finalize (gobject);
}
diff --git a/src/nm-config.h b/src/nm-config.h
index e62edd7a59..3b0ee6cfae 100644
--- a/src/nm-config.h
+++ b/src/nm-config.h
@@ -26,6 +26,7 @@
#include <glib-object.h>
#include "nm-types.h"
+#include "nm-config-data.h"
G_BEGIN_DECLS
@@ -50,6 +51,8 @@ GType nm_config_get_type (void);
NMConfig *nm_config_get (void);
+NMConfigData *nm_config_get_data (NMConfig *config);
+NMConfigData *nm_config_get_data_orig (NMConfig *config);
const char *nm_config_get_path (NMConfig *config);
const char *nm_config_get_description (NMConfig *config);
const char **nm_config_get_plugins (NMConfig *config);
@@ -60,9 +63,6 @@ const char *nm_config_get_dns_mode (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);
-const char *nm_config_get_connectivity_uri (NMConfig *config);
-guint nm_config_get_connectivity_interval (NMConfig *config);
-const char *nm_config_get_connectivity_response (NMConfig *config);
gboolean nm_config_get_configure_and_quit (NMConfig *config);
gboolean nm_config_get_ethernet_can_auto_default (NMConfig *config, NMDevice *device);
diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c
index 21d4433d32..a96f47abf8 100644
--- a/src/nm-connectivity.c
+++ b/src/nm-connectivity.c
@@ -344,15 +344,15 @@ nm_connectivity_check_finish (NMConnectivity *self,
NMConnectivity *
nm_connectivity_new (void)
{
- NMConfig *config = nm_config_get ();
+ NMConfigData *config_data = nm_config_get_data (nm_config_get ());
/* NMConnectivity is (almost) independent from NMConfig and works
* fine without it. As convenience, the default constructor nm_connectivity_new()
* uses the parameters from NMConfig to create an instance. */
return g_object_new (NM_TYPE_CONNECTIVITY,
- NM_CONNECTIVITY_URI, nm_config_get_connectivity_uri (config),
- NM_CONNECTIVITY_INTERVAL, nm_config_get_connectivity_interval (config),
- NM_CONNECTIVITY_RESPONSE, nm_config_get_connectivity_response (config),
+ NM_CONNECTIVITY_URI, nm_config_data_get_connectivity_uri (config_data),
+ NM_CONNECTIVITY_INTERVAL, nm_config_data_get_connectivity_interval (config_data),
+ NM_CONNECTIVITY_RESPONSE, nm_config_data_get_connectivity_response (config_data),
NULL);
}
diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c
index e47be92af4..bd934373b1 100644
--- a/src/tests/config/test-config.c
+++ b/src/tests/config/test-config.c
@@ -96,7 +96,7 @@ test_config_simple (void)
g_assert_cmpstr (nm_config_get_path (config), ==, SRCDIR "/NetworkManager.conf");
g_assert_cmpstr (nm_config_get_dhcp_client (config), ==, "dhclient");
g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO");
- g_assert_cmpint (nm_config_get_connectivity_interval (config), ==, 100);
+ g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 100);
plugins = nm_config_get_plugins (config);
g_assert_cmpint (g_strv_length ((char **)plugins), ==, 3);
@@ -155,7 +155,7 @@ test_config_override (void)
g_assert_cmpstr (nm_config_get_path (config), ==, SRCDIR "/NetworkManager.conf");
g_assert_cmpstr (nm_config_get_dhcp_client (config), ==, "dhclient");
g_assert_cmpstr (nm_config_get_log_level (config), ==, "INFO");
- g_assert_cmpint (nm_config_get_connectivity_interval (config), ==, 12);
+ g_assert_cmpint (nm_config_data_get_connectivity_interval (nm_config_get_data_orig (config)), ==, 12);
plugins = nm_config_get_plugins (config);
g_assert_cmpint (g_strv_length ((char **)plugins), ==, 4);
@@ -237,8 +237,8 @@ test_config_confdir (void)
g_assert_cmpstr (nm_config_get_dhcp_client (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_get_connectivity_uri (config), ==, "http://example.net");
- g_assert_cmpint (nm_config_get_connectivity_interval (config), ==, 100);
+ 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);
g_assert_cmpint (g_strv_length ((char **)plugins), ==, 5);