summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-05-20 15:51:02 +0200
committerThomas Haller <thaller@redhat.com>2019-06-13 16:10:53 +0200
commitd7056d13d0f63187ae1081bbe356d23e8f2585f2 (patch)
treedacdcbcb24dfc81f2527bc1ac71ee41c043d9ed9
parent50be2f5244886954c3addb24eb5bd6d0e67ed236 (diff)
downloadNetworkManager-d7056d13d0f63187ae1081bbe356d23e8f2585f2.tar.gz
settings: drop nm_settings_plugin_initialize() and initialize on demand
As nm_settings_plugin_initialize() could not fail (it returned no value indicating failure), there is no reason to explicitly call this. Instead just initialize the plugin when needed. Also, we don't need the plugin to initialize early before nm_settings_plugin_get_connections().
-rw-r--r--src/settings/nm-settings-plugin.c9
-rw-r--r--src/settings/nm-settings-plugin.h5
-rw-r--r--src/settings/nm-settings.c3
-rw-r--r--src/settings/plugins/ifupdown/nms-ifupdown-plugin.c21
4 files changed, 18 insertions, 20 deletions
diff --git a/src/settings/nm-settings-plugin.c b/src/settings/nm-settings-plugin.c
index 1d5086f52b..81a168b24d 100644
--- a/src/settings/nm-settings-plugin.c
+++ b/src/settings/nm-settings-plugin.c
@@ -40,15 +40,6 @@ G_DEFINE_TYPE (NMSettingsPlugin, nm_settings_plugin, G_TYPE_OBJECT)
/*****************************************************************************/
-void
-nm_settings_plugin_initialize (NMSettingsPlugin *self)
-{
- g_return_if_fail (NM_IS_SETTINGS_PLUGIN (self));
-
- if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize)
- NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize (self);
-}
-
GSList *
nm_settings_plugin_get_connections (NMSettingsPlugin *self)
{
diff --git a/src/settings/nm-settings-plugin.h b/src/settings/nm-settings-plugin.h
index 46dea3d700..11b859978a 100644
--- a/src/settings/nm-settings-plugin.h
+++ b/src/settings/nm-settings-plugin.h
@@ -41,9 +41,6 @@ typedef struct {
typedef struct {
GObjectClass parent;
- /* Called when the plugin is loaded to initialize it */
- void (*initialize) (NMSettingsPlugin *plugin);
-
/* Returns a GSList of NMSettingsConnection objects that represent
* connections the plugin knows about. The returned list is freed by the
* system settings service.
@@ -104,8 +101,6 @@ typedef NMSettingsPlugin *(*NMSettingsPluginFactoryFunc) (void);
/* Plugin's factory function that returns a #NMSettingsPlugin */
NMSettingsPlugin *nm_settings_plugin_factory (void);
-void nm_settings_plugin_initialize (NMSettingsPlugin *config);
-
GSList *nm_settings_plugin_get_connections (NMSettingsPlugin *plugin);
gboolean nm_settings_plugin_load_connection (NMSettingsPlugin *plugin,
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c
index 817cbc1374..0e7dfcd337 100644
--- a/src/settings/nm-settings.c
+++ b/src/settings/nm-settings.c
@@ -612,8 +612,6 @@ add_plugin (NMSettings *self,
priv->plugins = g_slist_append (priv->plugins, g_object_ref (plugin));
- nm_settings_plugin_initialize (plugin);
-
_LOGI ("Loaded settings plugin: %s (%s%s%s)",
pname,
NM_PRINT_FMT_QUOTED (path, "\"", path, "\"", "internal"));
@@ -1923,6 +1921,7 @@ nm_settings_start (NMSettings *self, GError **error)
return FALSE;
load_connections (self);
+
check_startup_complete (self);
priv->hostname_manager = g_object_ref (nm_hostname_manager_get ());
diff --git a/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c b/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c
index 4710edfb17..8f9be772bb 100644
--- a/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c
+++ b/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c
@@ -55,7 +55,9 @@ typedef struct {
*/
GHashTable *eni_ifaces;
- bool ifupdown_managed;
+ bool ifupdown_managed:1;
+
+ bool initialized:1;
} SettingsPluginIfupdownPrivate;
struct _SettingsPluginIfupdown {
@@ -88,6 +90,10 @@ NM_DEFINE_SINGLETON_GETTER (SettingsPluginIfupdown, settings_plugin_ifupdown_get
/*****************************************************************************/
+static void initialize (SettingsPluginIfupdown *self);
+
+/*****************************************************************************/
+
/* Returns the plugins currently known list of connections. The returned
* list is freed by the system settings service.
*/
@@ -100,6 +106,9 @@ get_connections (NMSettingsPlugin *plugin)
GHashTableIter iter;
void *value;
+ if (G_UNLIKELY (!priv->initialized))
+ initialize (self);
+
if (!priv->ifupdown_managed) {
_LOGD ("get_connections: not connections due to managed=false");
return NULL;
@@ -129,6 +138,9 @@ get_unmanaged_specs (NMSettingsPlugin *plugin)
GHashTableIter iter;
const char *iface;
+ if (G_UNLIKELY (!priv->initialized))
+ initialize (self);
+
if (priv->ifupdown_managed)
return NULL;
@@ -144,9 +156,8 @@ get_unmanaged_specs (NMSettingsPlugin *plugin)
/*****************************************************************************/
static void
-initialize (NMSettingsPlugin *plugin)
+initialize (SettingsPluginIfupdown *self)
{
- SettingsPluginIfupdown *self = SETTINGS_PLUGIN_IFUPDOWN (plugin);
SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (self);
gs_unref_hashtable GHashTable *auto_ifaces = NULL;
nm_auto_ifparser if_parser *parser = NULL;
@@ -155,6 +166,9 @@ initialize (NMSettingsPlugin *plugin)
const char *block_name;
NMIfupdownConnection *conn;
+ nm_assert (!priv->initialized);
+ priv->initialized = TRUE;
+
parser = ifparser_parse (ENI_INTERFACES_FILE, 0);
c_list_for_each_entry (block, &parser->block_lst_head, block_lst) {
@@ -316,7 +330,6 @@ settings_plugin_ifupdown_class_init (SettingsPluginIfupdownClass *klass)
object_class->dispose = dispose;
- plugin_class->initialize = initialize;
plugin_class->get_connections = get_connections;
plugin_class->get_unmanaged_specs = get_unmanaged_specs;
}