From b38f39cfc624d6b793f2e93abbba8ffd903b879c Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 12 Jan 2011 18:12:23 -0600 Subject: [PATCH] core: build keyfile plugin into NetworkManager Since settings storage is now handled by NetworkManager, we must have the ability to read/write all connection types at all times. Since the 'keyfile' plugin is the only plugin that can handle all connection types, build it into NetworkManager. --- Makefile.am | 6 +++--- src/settings/Makefile.am | 4 +--- src/settings/nm-settings.c | 15 +++++++++++++-- system-settings/plugins/keyfile/Makefile.am | 15 +++++++++------ system-settings/plugins/keyfile/plugin.c | 4 ++-- system-settings/plugins/keyfile/plugin.h | 2 ++ 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/Makefile.am b/Makefile.am index 64be5c852..c3eb4e151 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,12 +1,12 @@ SUBDIRS = \ marshallers \ + include \ libnm-util \ libnm-glib \ - src \ - include \ introspection \ - callouts \ system-settings \ + src \ + callouts \ cli \ tools \ policy \ diff --git a/src/settings/Makefile.am b/src/settings/Makefile.am index 0fc8b1fb5..927169cc2 100644 --- a/src/settings/Makefile.am +++ b/src/settings/Makefile.am @@ -1,7 +1,6 @@ INCLUDES = -I${top_srcdir} \ -I${top_srcdir}/include \ -I${top_srcdir}/libnm-util \ - -I${top_srcdir}/libnm-glib \ -I${top_srcdir}/src/logging \ -I${top_srcdir}/src \ -I${top_builddir}/marshallers @@ -44,9 +43,9 @@ libsettings_la_CPPFLAGS = \ libsettings_la_LIBADD = \ $(top_builddir)/libnm-util/libnm-util.la \ - $(top_builddir)/libnm-glib/libnm-glib.la \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ + $(top_builddir)/system-settings/plugins/keyfile/libnm-settings-plugin-keyfile.la \ $(DBUS_LIBS) \ $(GLIB_LIBS) \ $(GMODULE_LIBS) \ @@ -54,7 +53,6 @@ libsettings_la_LIBADD = \ libsettings_la_LDFLAGS = -rdynamic - nm-settings-glue.h: $(top_srcdir)/introspection/nm-settings.xml $(AM_V_GEN) dbus-binding-tool --prefix=nm_settings --mode=glib-server --output=$@ $< diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 2f47b7a62..2f299c8d6 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -62,6 +62,7 @@ #include "nm-dbus-manager.h" #include "nm-manager-auth.h" #include "nm-session-monitor.h" +#include "system-settings/plugins/keyfile/plugin.h" #define CONFIG_KEY_NO_AUTO_DEFAULT "no-auto-default" @@ -520,6 +521,10 @@ load_plugins (NMSettings *self, const char *plugins, GError **error) GObject *obj; GObject * (*factory_func) (void); + /* keyfile plugin built in now */ + if (!strcmp (pname, "keyfile")) + continue; + /* ifcfg-fedora was renamed ifcfg-rh; handle old configs here */ if (!strcmp (pname, "ifcfg-fedora")) pname = "ifcfg-rh"; @@ -1328,11 +1333,12 @@ nm_settings_device_removed (NMSettings *self, NMDevice *device) NMSettings * nm_settings_new (const char *config_file, - const char *plugins, - GError **error) + const char *plugins, + GError **error) { NMSettings *self; NMSettingsPrivate *priv; + GObject *keyfile_plugin; self = g_object_new (NM_TYPE_SETTINGS, NULL); if (!self) @@ -1353,6 +1359,11 @@ nm_settings_new (const char *config_file, unmanaged_specs_changed (NULL, self); } + /* Add the keyfile plugin last */ + keyfile_plugin = nm_settings_keyfile_plugin_new (); + g_assert (keyfile_plugin); + add_plugin (self, NM_SYSTEM_CONFIG_INTERFACE (keyfile_plugin)); + dbus_g_connection_register_g_object (priv->bus, NM_DBUS_PATH_SETTINGS, G_OBJECT (self)); return self; } diff --git a/system-settings/plugins/keyfile/Makefile.am b/system-settings/plugins/keyfile/Makefile.am index ea2f18c23..3b2421422 100644 --- a/system-settings/plugins/keyfile/Makefile.am +++ b/system-settings/plugins/keyfile/Makefile.am @@ -3,12 +3,13 @@ SUBDIRS=. tests INCLUDES = \ -I$(top_srcdir)/src/settings \ -I$(top_srcdir)/include \ - -I$(top_srcdir)/libnm-util \ - -I$(top_srcdir)/libnm-glib + -I$(top_srcdir)/libnm-util -pkglib_LTLIBRARIES = libnm-settings-plugin-keyfile.la +noinst_LTLIBRARIES = \ + libkeyfile-io.la \ + libnm-settings-plugin-keyfile.la -noinst_LTLIBRARIES = libkeyfile-io.la +##### I/O library for testcases ##### libkeyfile_io_la_SOURCES = \ reader.c \ @@ -28,6 +29,8 @@ libkeyfile_io_la_CPPFLAGS = \ libkeyfile_io_la_LIBADD = $(GLIB_LIBS) +##################################### + libnm_settings_plugin_keyfile_la_SOURCES = \ nm-keyfile-connection.c \ nm-keyfile-connection.h \ @@ -41,16 +44,16 @@ libnm_settings_plugin_keyfile_la_CPPFLAGS = \ -DSYSCONFDIR=\"$(sysconfdir)\" \ -DG_DISABLE_DEPRECATED -libnm_settings_plugin_keyfile_la_LDFLAGS = -module -avoid-version libnm_settings_plugin_keyfile_la_LIBADD = \ $(top_builddir)/libnm-util/libnm-util.la \ - $(top_builddir)/libnm-glib/libnm-glib.la \ libkeyfile-io.la \ $(GLIB_LIBS) \ $(GMODULE_LIBS) \ $(DBUS_LIBS) \ $(GIO_LIBS) +libnm_settings_plugin_keyfile_la_LDFLAGS = -rdynamic + keyfiledir=$(sysconfdir)/NetworkManager/system-connections install-data-hook: diff --git a/system-settings/plugins/keyfile/plugin.c b/system-settings/plugins/keyfile/plugin.c index a1c654245..27ddb299f 100644 --- a/system-settings/plugins/keyfile/plugin.c +++ b/system-settings/plugins/keyfile/plugin.c @@ -662,8 +662,8 @@ system_config_interface_init (NMSystemConfigInterface *system_config_interface_c system_config_interface_class->get_unmanaged_specs = get_unmanaged_specs; } -G_MODULE_EXPORT GObject * -nm_system_config_factory (void) +GObject * +nm_settings_keyfile_plugin_new (void) { static SCPluginKeyfile *singleton = NULL; diff --git a/system-settings/plugins/keyfile/plugin.h b/system-settings/plugins/keyfile/plugin.h index 71496c074..af5147ef1 100644 --- a/system-settings/plugins/keyfile/plugin.h +++ b/system-settings/plugins/keyfile/plugin.h @@ -43,4 +43,6 @@ GType sc_plugin_keyfile_get_type (void); GQuark keyfile_plugin_error_quark (void); +GObject *nm_settings_keyfile_plugin_new (void); + #endif /* _PLUGIN_H_ */