diff options
author | Thomas Haller <thaller@redhat.com> | 2019-05-20 15:51:02 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-06-13 16:10:53 +0200 |
commit | d7056d13d0f63187ae1081bbe356d23e8f2585f2 (patch) | |
tree | dacdcbcb24dfc81f2527bc1ac71ee41c043d9ed9 | |
parent | 50be2f5244886954c3addb24eb5bd6d0e67ed236 (diff) | |
download | NetworkManager-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.c | 9 | ||||
-rw-r--r-- | src/settings/nm-settings-plugin.h | 5 | ||||
-rw-r--r-- | src/settings/nm-settings.c | 3 | ||||
-rw-r--r-- | src/settings/plugins/ifupdown/nms-ifupdown-plugin.c | 21 |
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; } |