From c28a8676b53c8d31910b0d39e979343c94188514 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 16:58:55 +0200 Subject: build: only check for libnm-gtk when we're building GNOME support --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 972b7b3..0df603d 100644 --- a/configure.ac +++ b/configure.ac @@ -58,6 +58,8 @@ if test x"$with_gnome" != xno; then [PKG_CHECK_MODULES(GTK, gtk+-2.0 > $gtk2_req)]) PKG_CHECK_MODULES(LIBSECRET, libsecret-1) + + PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.9.0) fi PKG_CHECK_MODULES(NM, @@ -66,8 +68,6 @@ PKG_CHECK_MODULES(NM, libnm-glib >= 0.9.2 libnm-glib-vpn >= 0.9.2) -PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.9.0) - NM_COMPILER_WARNINGS AC_CONFIG_FILES([ -- cgit v1.2.3 From 1b379c1c77d7bafd1d2b1d63bea35a5bae205fca Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:05:50 +0200 Subject: build: bump version to 1.1.0 Adopt the same naming scheme as NetworkManager and other VPN plugins use: 1..0 = development snapshot of NetworkManager 1..0 major release 1.. = development snapshot of NetworkManager 1.. stable release 1.. = a stable release NetworkManager 1.2 (which is currently versioned as 1.1.0) is going to bring some new ABI while still supporting the old one. There's new VPN service and UI plugin APIs in libnm. There's one difficulty though -- the connection editor 1.2 will be linked against libnm and a new libnma library it will provide (as opposed to libnm-glib and libnm-gtk), thus will be incapable of loading of property plugins that are linked with the old libraries (due to glib type system limitations). However, we must not break support for other connection editors (GNOME control center, KDE, older versions of nm-connection-editor, etc.) therefore we need to build two versions of the property plugin. NetworkManager 1.2's libnm will provide a shim that makes it easy. For these reasons, the plugin will require building with NetworkManager >= 1.1.0 (it will still happily work with older connection editors or would even talk to older versions of NM if one would install one). Let's make that clear in the version number. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 0df603d..a783633 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ(2.52) -AC_INIT(NetworkManager-iodine, 0.0.5, agx@sigxcpu.org, NetworkManager-iodine) +AC_INIT(NetworkManager-iodine, 1.1.0, agx@sigxcpu.org, NetworkManager-iodine) AM_INIT_AUTOMAKE([subdir-objects no-dist-gzip dist-xz]) AM_MAINTAINER_MODE -- cgit v1.2.3 From 9a5937277d07a31a613003dff0d5446ae4fb8c89 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 16:55:36 +0200 Subject: build: split the plugin into two halves They're both the same now. We'll later port the new one to libnm. --- Makefile.am | 4 +++- nm-iodine-service.name.in | 3 +++ properties/Makefile.am | 33 +++++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9b35207..3269d3a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -17,7 +17,9 @@ nmvpnservicedir = $(sysconfdir)/NetworkManager/VPN nmvpnservice_DATA = nm-iodine-service.name nm-iodine-service.name: $(srcdir)/nm-iodine-service.name.in - sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' $< >$@ + sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \ + -e 's|[@]PLUGINDIR[@]|$(libdir)/NetworkManager|g' \ + $< >$@ DISTCHECK_CONFIGURE_FLAGS = --enable-more-warnings=yes diff --git a/nm-iodine-service.name.in b/nm-iodine-service.name.in index e17f938..4061b43 100644 --- a/nm-iodine-service.name.in +++ b/nm-iodine-service.name.in @@ -3,6 +3,9 @@ name=iodine service=org.freedesktop.NetworkManager.iodine program=@LIBEXECDIR@/nm-iodine-service +[libnm] +plugin=@PLUGINDIR@/libnm-vpn-plugin-iodine.so + [GNOME] auth-dialog=nm-iodine-auth-dialog properties=libnm-iodine-properties diff --git a/properties/Makefile.am b/properties/Makefile.am index ab4cd44..2787295 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -1,14 +1,17 @@ plugindir = $(libdir)/NetworkManager -plugin_LTLIBRARIES = libnm-iodine-properties.la +plugin_LTLIBRARIES = libnm-vpn-plugin-iodine.la libnm-iodine-properties.la -libnm_iodine_properties_la_SOURCES = \ - nm-iodine.c \ - nm-iodine.h +libnm_vpn_plugin_iodine_la_SOURCES = \ + nm-iodine.c \ + nm-iodine.h + +libnm_iodine_properties_la_SOURCES = \ + $(libnm_vpn_plugin_iodine_la_SOURCES) uidir = $(datadir)/gnome-vpn-properties/iodine ui_DATA = nm-iodine-dialog.ui -libnm_iodine_properties_la_CFLAGS = \ +common_CFLAGS = \ $(GTK_CFLAGS) \ $(NM_CFLAGS) \ -I$(top_srcdir)/src \ @@ -20,13 +23,27 @@ libnm_iodine_properties_la_CFLAGS = \ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ -DVERSION=\"$(VERSION)\" -libnm_iodine_properties_la_LIBADD = \ - $(GTK_LIBS) \ +libnm_vpn_plugin_iodine_la_CFLAGS = \ + $(common_CFLAGS) + +libnm_iodine_properties_la_CFLAGS = \ + -DNM_IODINE_OLD \ + $(common_CFLAGS) + +libnm_vpn_plugin_iodine_la_LIBADD = \ + $(GTK_LIBS) \ $(NM_LIBS) -libnm_iodine_properties_la_LDFLAGS = \ +libnm_iodine_properties_la_LIBADD = \ + $(GTK_LIBS) \ + $(NM_LIBS) + +libnm_vpn_plugin_iodine_la_LDFLAGS = \ -avoid-version +libnm_iodine_properties_la_LDFLAGS = \ + $(libnm_vpn_plugin_iodine_la_LDFLAGS) + CLEANFILES = *.bak *~ EXTRA_DIST = \ -- cgit v1.2.3 From c93b76e1555041da2381ab6b03f8cca3720af267 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:03:18 +0200 Subject: build: check for libnm & libnma --- auth-dialog/Makefile.am | 8 ++++---- configure.ac | 9 +++++++-- properties/Makefile.am | 6 +++--- src/Makefile.am | 4 ++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/auth-dialog/Makefile.am b/auth-dialog/Makefile.am index 08f9e20..b799c42 100644 --- a/auth-dialog/Makefile.am +++ b/auth-dialog/Makefile.am @@ -1,10 +1,10 @@ libexec_PROGRAMS = nm-iodine-auth-dialog nm_iodine_auth_dialog_CPPFLAGS = \ - $(NM_CFLAGS) \ $(GTK_CFLAGS) \ $(LIBSECRET_CFLAGS) \ - $(NMGTK_CFLAGS) \ + $(LIBNM_GLIB_CFLAGS) \ + $(LIBNM_GTK_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DBINDIR=\""$(bindir)"\" \ -DG_DISABLE_DEPRECATED \ @@ -19,8 +19,8 @@ nm_iodine_auth_dialog_SOURCES = \ nm_iodine_auth_dialog_LDADD = \ $(GTK_LIBS) \ - $(NM_LIBS) \ - $(NMGTK_LIBS) \ + $(LIBNM_GLIB_LIBS) \ + $(LIBNM_GTK_LIBS) \ $(LIBSECRET_LIBS) CLEANFILES = *~ diff --git a/configure.ac b/configure.ac index a783633..64ff179 100644 --- a/configure.ac +++ b/configure.ac @@ -59,15 +59,20 @@ if test x"$with_gnome" != xno; then PKG_CHECK_MODULES(LIBSECRET, libsecret-1) - PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.9.0) + PKG_CHECK_MODULES(LIBNM_GTK, libnm-gtk >= 0.9.9.0) + PKG_CHECK_MODULES(LIBNMA, libnma >= 1.1.0) fi -PKG_CHECK_MODULES(NM, +PKG_CHECK_MODULES(LIBNM_GLIB, NetworkManager >= 0.9.2 libnm-util >= 0.9.2 libnm-glib >= 0.9.2 libnm-glib-vpn >= 0.9.2) +PKG_CHECK_MODULES(LIBNM, libnm >= 1.1.0) +LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" +LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_2" + NM_COMPILER_WARNINGS AC_CONFIG_FILES([ diff --git a/properties/Makefile.am b/properties/Makefile.am index 2787295..0d8bbc8 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -13,7 +13,7 @@ ui_DATA = nm-iodine-dialog.ui common_CFLAGS = \ $(GTK_CFLAGS) \ - $(NM_CFLAGS) \ + $(LIBNM_GLIB_CFLAGS) \ -I$(top_srcdir)/src \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DUIDIR=\""$(uidir)"\" \ @@ -32,11 +32,11 @@ libnm_iodine_properties_la_CFLAGS = \ libnm_vpn_plugin_iodine_la_LIBADD = \ $(GTK_LIBS) \ - $(NM_LIBS) + $(LIBNM_GLIB_LIBS) libnm_iodine_properties_la_LIBADD = \ $(GTK_LIBS) \ - $(NM_LIBS) + $(LIBNM_GLIB_LIBS) libnm_vpn_plugin_iodine_la_LDFLAGS = \ -avoid-version diff --git a/src/Makefile.am b/src/Makefile.am index 8ca103a..904c8b4 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = \ - $(NM_CFLAGS) \ + $(LIBNM_GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED \ -DBINDIR=\"$(bindir)\" \ -DPREFIX=\""$(prefix)"\" \ @@ -19,6 +19,6 @@ nm_iodine_service_SOURCES = \ nm-iodine-service-defines.h nm_iodine_service_LDADD = \ - $(NM_LIBS) + $(LIBNM_GLIB_LIBS) CLEANFILES = *~ -- cgit v1.2.3 From 37d2f0fb85f171bf77d45f161a0bd5dd88356548 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:10:52 +0200 Subject: properties: port to libnm --- configure.ac | 8 ++--- properties/Makefile.am | 7 ++-- properties/nm-iodine.c | 96 +++++++++++++++++++++++++++++--------------------- 3 files changed, 65 insertions(+), 46 deletions(-) diff --git a/configure.ac b/configure.ac index 64ff179..f1639c3 100644 --- a/configure.ac +++ b/configure.ac @@ -64,10 +64,10 @@ if test x"$with_gnome" != xno; then fi PKG_CHECK_MODULES(LIBNM_GLIB, - NetworkManager >= 0.9.2 - libnm-util >= 0.9.2 - libnm-glib >= 0.9.2 - libnm-glib-vpn >= 0.9.2) + NetworkManager >= 1.1.0 + libnm-util >= 1.1.0 + libnm-glib >= 1.1.0 + libnm-glib-vpn >= 1.1.0) PKG_CHECK_MODULES(LIBNM, libnm >= 1.1.0) LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" diff --git a/properties/Makefile.am b/properties/Makefile.am index 0d8bbc8..8223089 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -13,7 +13,6 @@ ui_DATA = nm-iodine-dialog.ui common_CFLAGS = \ $(GTK_CFLAGS) \ - $(LIBNM_GLIB_CFLAGS) \ -I$(top_srcdir)/src \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DUIDIR=\""$(uidir)"\" \ @@ -24,15 +23,19 @@ common_CFLAGS = \ -DVERSION=\"$(VERSION)\" libnm_vpn_plugin_iodine_la_CFLAGS = \ + $(LIBNM_CFLAGS) \ + $(LIBNMA_CFLAGS) \ $(common_CFLAGS) libnm_iodine_properties_la_CFLAGS = \ -DNM_IODINE_OLD \ + $(LIBNM_GLIB_CFLAGS) \ $(common_CFLAGS) libnm_vpn_plugin_iodine_la_LIBADD = \ $(GTK_LIBS) \ - $(LIBNM_GLIB_LIBS) + $(LIBNMA_LIBS) \ + $(LIBNM_LIBS) libnm_iodine_properties_la_LIBADD = \ $(GTK_LIBS) \ diff --git a/properties/nm-iodine.c b/properties/nm-iodine.c index b3c9498..1ee3e8e 100644 --- a/properties/nm-iodine.c +++ b/properties/nm-iodine.c @@ -33,11 +33,21 @@ #include #include +#ifdef NM_IODINE_OLD +#define NM_VPN_LIBNM_COMPAT #include #include #include #include +#define nm_simple_connection_new nm_connection_new + +#else /* !NM_OPENVPN_OLD */ + +#include +#include +#endif + #include "nm-iodine-service-defines.h" #include "nm-iodine.h" @@ -51,18 +61,25 @@ /************** plugin class **************/ -static void iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class); +enum { + PROP_0, + PROP_NAME, + PROP_DESC, + PROP_SERVICE +}; + +static void iodine_plugin_ui_interface_init (NMVpnEditorPluginInterface *iface_class); G_DEFINE_TYPE_EXTENDED (IodinePluginUi, iodine_plugin_ui, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_INTERFACE, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN, iodine_plugin_ui_interface_init)) /************** UI widget class **************/ -static void iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class); +static void iodine_plugin_ui_widget_interface_init (NMVpnEditorInterface *iface_class); G_DEFINE_TYPE_EXTENDED (IodinePluginUiWidget, iodine_plugin_ui_widget,G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE, + G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR, iodine_plugin_ui_widget_interface_init)) #define IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetPrivate)) @@ -93,11 +110,11 @@ nm_iodine_import_export_error_quark (void) } static NMConnection * -import (NMVpnPluginUiInterface *iface, const char *path, GError **error) +import (NMVpnEditorPlugin *iface, const char *path, GError **error) { NMConnection *connection; NMSettingConnection *s_con; - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; NMSettingIP4Config *s_ip4; GKeyFile *keyfile; GKeyFileFlags flags; @@ -115,7 +132,7 @@ import (NMVpnPluginUiInterface *iface, const char *path, GError **error) return NULL; } - connection = nm_connection_new (); + connection = nm_simple_connection_new (); s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); nm_connection_add_setting (connection, NM_SETTING (s_con)); @@ -164,12 +181,12 @@ import (NMVpnPluginUiInterface *iface, const char *path, GError **error) } static gboolean -export (NMVpnPluginUiInterface *iface, +export (NMVpnEditorPlugin *iface, const char *path, NMConnection *connection, GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; const char *value; const char *topdomain = NULL; const char *nameserver = NULL; @@ -292,7 +309,7 @@ stuff_changed_cb (GtkWidget *widget, gpointer user_data) static void setup_password_widget (IodinePluginUiWidget *self, const char *entry_name, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *secret_name) { IodinePluginUiWidgetPrivate *priv = \ @@ -371,7 +388,7 @@ pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) static void init_one_pw_combo (IodinePluginUiWidget *self, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, const char *combo_name, const char *secret_key, const char *entry_name) @@ -430,7 +447,7 @@ init_plugin_ui (IodinePluginUiWidget *self, GError **error) { IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; GtkWidget *widget; const char *value; @@ -495,7 +512,7 @@ init_plugin_ui (IodinePluginUiWidget *self, } static GObject * -get_widget (NMVpnPluginUiWidgetInterface *iface) +get_widget (NMVpnEditor *iface) { IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); @@ -504,7 +521,7 @@ get_widget (NMVpnPluginUiWidgetInterface *iface) } static void -save_password_and_flags (NMSettingVPN *s_vpn, +save_password_and_flags (NMSettingVpn *s_vpn, GtkBuilder *builder, const char *entry_name, const char *combo_name, @@ -542,13 +559,13 @@ save_password_and_flags (NMSettingVPN *s_vpn, } static gboolean -update_connection (NMVpnPluginUiWidgetInterface *iface, +update_connection (NMVpnEditor *iface, NMConnection *connection, GError **error) { IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; GtkWidget *widget; char *str; @@ -589,18 +606,17 @@ update_connection (NMVpnPluginUiWidgetInterface *iface, return TRUE; } -static NMVpnPluginUiWidgetInterface * +static NMVpnEditor * nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) { - NMVpnPluginUiWidgetInterface *object; + NMVpnEditor *object; IodinePluginUiWidgetPrivate *priv; char *ui_file; if (error) g_return_val_if_fail (*error == NULL, NULL); - object = NM_VPN_PLUGIN_UI_WIDGET_INTERFACE \ - (g_object_new (IODINE_TYPE_PLUGIN_UI_WIDGET, NULL)); + object = g_object_new (IODINE_TYPE_PLUGIN_UI_WIDGET, NULL); if (!object) { g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, @@ -677,7 +693,7 @@ iodine_plugin_ui_widget_init (IodinePluginUiWidget *plugin) } static void -iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_class) +iodine_plugin_ui_widget_interface_init (NMVpnEditorInterface *iface_class) { /* interface implementation */ iface_class->get_widget = get_widget; @@ -685,14 +701,14 @@ iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *iface_clas } static guint32 -get_capabilities (NMVpnPluginUiInterface *iface) +get_capabilities (NMVpnEditorPlugin *iface) { - return (NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT | - NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT); + return (NM_VPN_EDITOR_PLUGIN_CAPABILITY_IMPORT | + NM_VPN_EDITOR_PLUGIN_CAPABILITY_EXPORT); } -static NMVpnPluginUiWidgetInterface * -ui_factory (NMVpnPluginUiInterface *iface, +static NMVpnEditor * +get_editor (NMVpnEditorPlugin *iface, NMConnection *connection, GError **error) { @@ -704,13 +720,13 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_NAME: + case PROP_NAME: g_value_set_string (value, IODINE_PLUGIN_NAME); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_DESC: + case PROP_DESC: g_value_set_string (value, IODINE_PLUGIN_DESC); break; - case NM_VPN_PLUGIN_UI_INTERFACE_PROP_SERVICE: + case PROP_SERVICE: g_value_set_string (value, IODINE_PLUGIN_SERVICE); break; default: @@ -727,16 +743,16 @@ iodine_plugin_ui_class_init (IodinePluginUiClass *req_class) object_class->get_property = get_property; g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_NAME, - NM_VPN_PLUGIN_UI_INTERFACE_NAME); + PROP_NAME, + NM_VPN_EDITOR_PLUGIN_NAME); g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_DESC, - NM_VPN_PLUGIN_UI_INTERFACE_DESC); + PROP_DESC, + NM_VPN_EDITOR_PLUGIN_DESCRIPTION); g_object_class_override_property (object_class, - NM_VPN_PLUGIN_UI_INTERFACE_PROP_SERVICE, - NM_VPN_PLUGIN_UI_INTERFACE_SERVICE); + PROP_SERVICE, + NM_VPN_EDITOR_PLUGIN_SERVICE); } static void @@ -745,20 +761,20 @@ iodine_plugin_ui_init (IodinePluginUi *plugin) } static void -iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class) +iodine_plugin_ui_interface_init (NMVpnEditorPluginInterface *iface_class) { /* interface implementation */ - iface_class->ui_factory = ui_factory; + iface_class->get_editor = get_editor; iface_class->get_capabilities = get_capabilities; iface_class->import_from_file = import; iface_class->export_to_file = export; } -G_MODULE_EXPORT NMVpnPluginUiInterface * -nm_vpn_plugin_ui_factory (GError **error) +G_MODULE_EXPORT NMVpnEditorPlugin * +nm_vpn_editor_plugin_factory (GError **error) { if (error) g_return_val_if_fail (*error == NULL, NULL); - return NM_VPN_PLUGIN_UI_INTERFACE (g_object_new (IODINE_TYPE_PLUGIN_UI, NULL)); + return g_object_new (IODINE_TYPE_PLUGIN_UI, NULL); } -- cgit v1.2.3 From 6265f3ee0c0bf084fe6d56c7cb4c274e73f11678 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:16:33 +0200 Subject: properties: use the NM error types & quarks --- properties/nm-iodine.c | 45 +++++++-------------------------------------- properties/nm-iodine.h | 14 -------------- 2 files changed, 7 insertions(+), 52 deletions(-) diff --git a/properties/nm-iodine.c b/properties/nm-iodine.c index 1ee3e8e..701b76f 100644 --- a/properties/nm-iodine.c +++ b/properties/nm-iodine.c @@ -41,11 +41,17 @@ #include #define nm_simple_connection_new nm_connection_new + +#define IODINE_PLUGIN_UI_ERROR NM_SETTING_VPN_ERROR +#define IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY NM_SETTING_VPN_ERROR_INVALID_PROPERTY -#else /* !NM_OPENVPN_OLD */ +#else /* !NM_IODINE_OLD */ #include #include + +#define IODINE_PLUGIN_UI_ERROR NM_CONNECTION_ERROR +#define IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY NM_CONNECTION_ERROR_INVALID_PROPERTY #endif #include "nm-iodine-service-defines.h" @@ -242,43 +248,6 @@ done: return success; } -GQuark -iodine_plugin_ui_error_quark (void) -{ - static GQuark error_quark = 0; - - if (G_UNLIKELY (error_quark == 0)) - error_quark = g_quark_from_static_string ("iodine-plugin-ui-error-quark"); - - return error_quark; -} - -/* This should really be standard. */ -#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } - -GType -iodine_plugin_ui_error_get_type (void) -{ - static GType etype = 0; - - if (etype == 0) { - static const GEnumValue values[] = { - /* Unknown error. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_UNKNOWN, - "UnknownError"), - /* The specified property was invalid. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, - "InvalidProperty"), - /* The specified property was missing and is required. */ - ENUM_ENTRY (IODINE_PLUGIN_UI_ERROR_MISSING_PROPERTY, - "MissingProperty"), - { 0, 0, 0 } - }; - etype = g_enum_register_static ("IodinePluginUiError", values); - } - return etype; -} - static gboolean check_validity (IodinePluginUiWidget *self, GError **error) { diff --git a/properties/nm-iodine.h b/properties/nm-iodine.h index ee38678..45c583f 100644 --- a/properties/nm-iodine.h +++ b/properties/nm-iodine.h @@ -24,20 +24,6 @@ #include -typedef enum -{ - IODINE_PLUGIN_UI_ERROR_UNKNOWN = 0, - IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, - IODINE_PLUGIN_UI_ERROR_MISSING_PROPERTY -} IodinePluginUiError; - - -GQuark iodine_plugin_ui_error_quark (void); -#define IODINE_PLUGIN_UI_ERROR iodine_plugin_ui_error_quark () - -#define IODINE_TYPE_PLUGIN_UI_ERROR (iodine_plugin_ui_error_get_type ()) -GType iodine_plugin_ui_error_get_type (void); - #define IODINE_TYPE_PLUGIN_UI (iodine_plugin_ui_get_type ()) #define IODINE_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_PLUGIN_UI, IodinePluginUi)) #define IODINE_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_PLUGIN_UI, IodinePluginUiClass)) -- cgit v1.2.3 From 244d29227bebe32e104578bbc59ba8b5027b5f86 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:17:57 +0200 Subject: properties: rename the classes to be more libnm-ish No functional change. --- properties/nm-iodine.c | 108 ++++++++++++++++++++++++------------------------- properties/nm-iodine.h | 44 ++++++++++---------- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/properties/nm-iodine.c b/properties/nm-iodine.c index 701b76f..a0a51de 100644 --- a/properties/nm-iodine.c +++ b/properties/nm-iodine.c @@ -42,16 +42,16 @@ #define nm_simple_connection_new nm_connection_new -#define IODINE_PLUGIN_UI_ERROR NM_SETTING_VPN_ERROR -#define IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY NM_SETTING_VPN_ERROR_INVALID_PROPERTY +#define IODINE_EDITOR_PLUGIN_ERROR NM_SETTING_VPN_ERROR +#define IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_SETTING_VPN_ERROR_INVALID_PROPERTY #else /* !NM_IODINE_OLD */ #include #include -#define IODINE_PLUGIN_UI_ERROR NM_CONNECTION_ERROR -#define IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY NM_CONNECTION_ERROR_INVALID_PROPERTY +#define IODINE_EDITOR_PLUGIN_ERROR NM_CONNECTION_ERROR +#define IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY NM_CONNECTION_ERROR_INVALID_PROPERTY #endif #include "nm-iodine-service-defines.h" @@ -74,28 +74,28 @@ enum { PROP_SERVICE }; -static void iodine_plugin_ui_interface_init (NMVpnEditorPluginInterface *iface_class); +static void iodine_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class); -G_DEFINE_TYPE_EXTENDED (IodinePluginUi, iodine_plugin_ui, G_TYPE_OBJECT, 0, +G_DEFINE_TYPE_EXTENDED (IodineEditorPlugin, iodine_editor_plugin, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN, - iodine_plugin_ui_interface_init)) + iodine_editor_plugin_interface_init)) /************** UI widget class **************/ -static void iodine_plugin_ui_widget_interface_init (NMVpnEditorInterface *iface_class); +static void iodine_editor_interface_init (NMVpnEditorInterface *iface_class); -G_DEFINE_TYPE_EXTENDED (IodinePluginUiWidget, iodine_plugin_ui_widget,G_TYPE_OBJECT, 0, +G_DEFINE_TYPE_EXTENDED (IodineEditor, iodine_editor,G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR, - iodine_plugin_ui_widget_interface_init)) + iodine_editor_interface_init)) -#define IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetPrivate)) +#define IODINE_EDITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), IODINE_TYPE_EDITOR, IodineEditorPrivate)) typedef struct { GtkBuilder *builder; GtkWidget *widget; GtkSizeGroup *group; gboolean window_added; -} IodinePluginUiWidgetPrivate; +} IodineEditorPrivate; typedef enum { NM_IODINE_IMPORT_EXPORT_ERROR_UNKNOWN = 0, @@ -249,10 +249,10 @@ done: } static gboolean -check_validity (IodinePluginUiWidget *self, GError **error) +check_validity (IodineEditor *self, GError **error) { - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *widget; const char *str; @@ -260,8 +260,8 @@ check_validity (IodinePluginUiWidget *self, GError **error) str = gtk_entry_get_text (GTK_ENTRY (widget)); if (!str || !strlen (str)) { g_set_error (error, - IODINE_PLUGIN_UI_ERROR, - IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY, + IODINE_EDITOR_PLUGIN_ERROR, + IODINE_EDITOR_PLUGIN_ERROR_INVALID_PROPERTY, NM_IODINE_KEY_TOPDOMAIN); return FALSE; } @@ -272,17 +272,17 @@ check_validity (IodinePluginUiWidget *self, GError **error) static void stuff_changed_cb (GtkWidget *widget, gpointer user_data) { - g_signal_emit_by_name (IODINE_PLUGIN_UI_WIDGET (user_data), "changed"); + g_signal_emit_by_name (IODINE_EDITOR (user_data), "changed"); } static void -setup_password_widget (IodinePluginUiWidget *self, +setup_password_widget (IodineEditor *self, const char *entry_name, NMSettingVpn *s_vpn, const char *secret_name) { - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (self); NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; GtkWidget *widget; @@ -315,9 +315,9 @@ setup_password_widget (IodinePluginUiWidget *self, } static void -show_toggled_cb (GtkCheckButton *button, IodinePluginUiWidget *self) +show_toggled_cb (GtkCheckButton *button, IodineEditor *self) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *widget; gboolean visible; @@ -331,8 +331,8 @@ show_toggled_cb (GtkCheckButton *button, IodinePluginUiWidget *self) static void pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (user_data); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditor *self = IODINE_EDITOR (user_data); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); GtkWidget *entry; entry = GTK_WIDGET (gtk_builder_get_object (priv->builder, "password_entry")); @@ -356,13 +356,13 @@ pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data) } static void -init_one_pw_combo (IodinePluginUiWidget *self, +init_one_pw_combo (IodineEditor *self, NMSettingVpn *s_vpn, const char *combo_name, const char *secret_key, const char *entry_name) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); int active = -1; GtkWidget *widget; GtkListStore *store; @@ -411,11 +411,11 @@ init_one_pw_combo (IodinePluginUiWidget *self, } static gboolean -init_plugin_ui (IodinePluginUiWidget *self, +init_editor_plugin (IodineEditor *self, NMConnection *connection, GError **error) { - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); NMSettingVpn *s_vpn; GtkWidget *widget; const char *value; @@ -483,8 +483,8 @@ init_plugin_ui (IodinePluginUiWidget *self, static GObject * get_widget (NMVpnEditor *iface) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditor *self = IODINE_EDITOR (iface); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); return G_OBJECT (priv->widget); } @@ -532,8 +532,8 @@ update_connection (NMVpnEditor *iface, NMConnection *connection, GError **error) { - IodinePluginUiWidget *self = IODINE_PLUGIN_UI_WIDGET (iface); - IodinePluginUiWidgetPrivate *priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (self); + IodineEditor *self = IODINE_EDITOR (iface); + IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self); NMSettingVpn *s_vpn; GtkWidget *widget; char *str; @@ -576,24 +576,24 @@ update_connection (NMVpnEditor *iface, } static NMVpnEditor * -nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) +nm_vpn_editor_interface_new (NMConnection *connection, GError **error) { NMVpnEditor *object; - IodinePluginUiWidgetPrivate *priv; + IodineEditorPrivate *priv; char *ui_file; if (error) g_return_val_if_fail (*error == NULL, NULL); - object = g_object_new (IODINE_TYPE_PLUGIN_UI_WIDGET, NULL); + object = g_object_new (IODINE_TYPE_EDITOR, NULL); if (!object) { - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not create iodine object"); return NULL; } - priv = IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (object); + priv = IODINE_EDITOR_GET_PRIVATE (object); ui_file = g_strdup_printf ("%s/%s", UIDIR, "nm-iodine-dialog.ui"); priv->builder = gtk_builder_new (); @@ -602,7 +602,7 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) g_warning ("Couldn't load builder file: %s", error && *error ? (*error)->message : "(unknown)"); g_clear_error (error); - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not load required resources at %s", ui_file); g_free (ui_file); g_object_unref (object); @@ -612,14 +612,14 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "iodine-vbox")); if (!priv->widget) { - g_set_error (error, IODINE_PLUGIN_UI_ERROR, 0, + g_set_error (error, IODINE_EDITOR_PLUGIN_ERROR, 0, "could not load UI widget"); g_object_unref (object); return NULL; } g_object_ref_sink (priv->widget); - if (!init_plugin_ui (IODINE_PLUGIN_UI_WIDGET (object), connection, error)) { + if (!init_editor_plugin (IODINE_EDITOR (object), connection, error)) { g_object_unref (object); return NULL; } @@ -630,9 +630,9 @@ nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error) static void dispose (GObject *object) { - IodinePluginUiWidget *plugin = IODINE_PLUGIN_UI_WIDGET (object); - IodinePluginUiWidgetPrivate *priv = \ - IODINE_PLUGIN_UI_WIDGET_GET_PRIVATE (plugin); + IodineEditor *plugin = IODINE_EDITOR (object); + IodineEditorPrivate *priv = \ + IODINE_EDITOR_GET_PRIVATE (plugin); if (priv->group) g_object_unref (priv->group); @@ -643,26 +643,26 @@ dispose (GObject *object) if (priv->builder) g_object_unref (priv->builder); - G_OBJECT_CLASS (iodine_plugin_ui_widget_parent_class)->dispose (object); + G_OBJECT_CLASS (iodine_editor_parent_class)->dispose (object); } static void -iodine_plugin_ui_widget_class_init (IodinePluginUiWidgetClass *req_class) +iodine_editor_class_init (IodineEditorClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (IodinePluginUiWidgetPrivate)); + g_type_class_add_private (req_class, sizeof (IodineEditorPrivate)); object_class->dispose = dispose; } static void -iodine_plugin_ui_widget_init (IodinePluginUiWidget *plugin) +iodine_editor_init (IodineEditor *plugin) { } static void -iodine_plugin_ui_widget_interface_init (NMVpnEditorInterface *iface_class) +iodine_editor_interface_init (NMVpnEditorInterface *iface_class) { /* interface implementation */ iface_class->get_widget = get_widget; @@ -681,7 +681,7 @@ get_editor (NMVpnEditorPlugin *iface, NMConnection *connection, GError **error) { - return nm_vpn_plugin_ui_widget_interface_new (connection, error); + return nm_vpn_editor_interface_new (connection, error); } static void @@ -705,7 +705,7 @@ get_property (GObject *object, guint prop_id, } static void -iodine_plugin_ui_class_init (IodinePluginUiClass *req_class) +iodine_editor_plugin_class_init (IodineEditorPluginClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); @@ -725,12 +725,12 @@ iodine_plugin_ui_class_init (IodinePluginUiClass *req_class) } static void -iodine_plugin_ui_init (IodinePluginUi *plugin) +iodine_editor_plugin_init (IodineEditorPlugin *plugin) { } static void -iodine_plugin_ui_interface_init (NMVpnEditorPluginInterface *iface_class) +iodine_editor_plugin_interface_init (NMVpnEditorPluginInterface *iface_class) { /* interface implementation */ iface_class->get_editor = get_editor; @@ -745,5 +745,5 @@ nm_vpn_editor_plugin_factory (GError **error) if (error) g_return_val_if_fail (*error == NULL, NULL); - return g_object_new (IODINE_TYPE_PLUGIN_UI, NULL); + return g_object_new (IODINE_TYPE_EDITOR_PLUGIN, NULL); } diff --git a/properties/nm-iodine.h b/properties/nm-iodine.h index 45c583f..4eeb892 100644 --- a/properties/nm-iodine.h +++ b/properties/nm-iodine.h @@ -24,46 +24,46 @@ #include -#define IODINE_TYPE_PLUGIN_UI (iodine_plugin_ui_get_type ()) -#define IODINE_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_PLUGIN_UI, IodinePluginUi)) -#define IODINE_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_PLUGIN_UI, IodinePluginUiClass)) -#define IODINE_IS_PLUGIN_UI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_PLUGIN_UI)) -#define IODINE_IS_PLUGIN_UI_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_PLUGIN_UI)) -#define IODINE_PLUGIN_UI_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_PLUGIN_UI, IodinePluginUiClass)) +#define IODINE_TYPE_EDITOR_PLUGIN (iodine_editor_plugin_get_type ()) +#define IODINE_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPlugin)) +#define IODINE_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPluginClass)) +#define IODINE_IS_EDITOR_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_EDITOR_PLUGIN)) +#define IODINE_IS_EDITOR_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_EDITOR_PLUGIN)) +#define IODINE_EDITOR_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_EDITOR_PLUGIN, IodineEditorPluginClass)) -typedef struct _IodinePluginUi IodinePluginUi; -typedef struct _IodinePluginUiClass IodinePluginUiClass; +typedef struct _IodineEditorPlugin IodineEditorPlugin; +typedef struct _IodineEditorPluginClass IodineEditorPluginClass; -struct _IodinePluginUi { +struct _IodineEditorPlugin { GObject parent; }; -struct _IodinePluginUiClass { +struct _IodineEditorPluginClass { GObjectClass parent; }; -GType iodine_plugin_ui_get_type (void); +GType iodine_editor_plugin_get_type (void); -#define IODINE_TYPE_PLUGIN_UI_WIDGET (iodine_plugin_ui_widget_get_type ()) -#define IODINE_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidget)) -#define IODINE_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetClass)) -#define IODINE_IS_PLUGIN_UI_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET)) -#define IODINE_IS_PLUGIN_UI_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_PLUGIN_UI_WIDGET)) -#define IODINE_PLUGIN_UI_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_PLUGIN_UI_WIDGET, IodinePluginUiWidgetClass)) +#define IODINE_TYPE_EDITOR (iodine_editor_get_type ()) +#define IODINE_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IODINE_TYPE_EDITOR, IodineEditor)) +#define IODINE_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IODINE_TYPE_EDITOR, IodineEditorClass)) +#define IODINE_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IODINE_TYPE_EDITOR)) +#define IODINE_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IODINE_TYPE_EDITOR)) +#define IODINE_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IODINE_TYPE_EDITOR, IodineEditorClass)) -typedef struct _IodinePluginUiWidget IodinePluginUiWidget; -typedef struct _IodinePluginUiWidgetClass IodinePluginUiWidgetClass; +typedef struct _IodineEditor IodineEditor; +typedef struct _IodineEditorClass IodineEditorClass; -struct _IodinePluginUiWidget { +struct _IodineEditor { GObject parent; }; -struct _IodinePluginUiWidgetClass { +struct _IodineEditorClass { GObjectClass parent; }; -GType iodine_plugin_ui_widget_get_type (void); +GType iodine_editor_get_type (void); #endif /* _NM_IODINE_H_ */ -- cgit v1.2.3 From a9fad49eceb1928fb7dd5ff63f4b4b384f35c81a Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 18:06:54 +0200 Subject: service: port to libnm --- auth-dialog/main.c | 2 +- src/Makefile.am | 4 +- src/nm-iodine-service.c | 195 +++++++++++++++++++++--------------------------- src/nm-iodine-service.h | 7 +- 4 files changed, 93 insertions(+), 115 deletions(-) diff --git a/auth-dialog/main.c b/auth-dialog/main.c index f482cf0..d0ddc3a 100644 --- a/auth-dialog/main.c +++ b/auth-dialog/main.c @@ -38,7 +38,7 @@ #include #include -#include "src/nm-iodine-service.h" +#include "../src/nm-iodine-service-defines.h" #define KEYRING_UUID_TAG "connection-uuid" #define KEYRING_SN_TAG "setting-name" diff --git a/src/Makefile.am b/src/Makefile.am index 904c8b4..d412962 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,5 +1,5 @@ AM_CPPFLAGS = \ - $(LIBNM_GLIB_CFLAGS) \ + $(LIBNM_CFLAGS) \ -DG_DISABLE_DEPRECATED \ -DBINDIR=\"$(bindir)\" \ -DPREFIX=\""$(prefix)"\" \ @@ -19,6 +19,6 @@ nm_iodine_service_SOURCES = \ nm-iodine-service-defines.h nm_iodine_service_LDADD = \ - $(LIBNM_GLIB_LIBS) + $(LIBNM_LIBS) CLEANFILES = *~ diff --git a/src/nm-iodine-service.c b/src/nm-iodine-service.c index cd71980..89023d4 100644 --- a/src/nm-iodine-service.c +++ b/src/nm-iodine-service.c @@ -40,20 +40,22 @@ #include #include #include +#include -#include +#include +#include #include "nm-iodine-service.h" #include "nm-utils.h" #define NM_IODINE_USER "nm-iodine" #define NM_IODINE_RUNDIR LOCALSTATEDIR "/run/" NM_IODINE_USER -G_DEFINE_TYPE (NMIodinePlugin, nm_iodine_plugin, NM_TYPE_VPN_PLUGIN) +G_DEFINE_TYPE (NMIodinePlugin, nm_iodine_plugin, NM_TYPE_VPN_SERVICE_PLUGIN) typedef struct { GPid pid; - NMVPNPluginFailure failure; - GHashTable *ip4config; + NMVpnPluginFailure failure; + GVariantBuilder ip4config; } NMIodinePluginPrivate; #define NM_IODINE_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IODINE_PLUGIN, NMIodinePluginPrivate)) @@ -166,7 +168,7 @@ validate_one_property (const char *key, const char *value, gpointer user_data) } static gboolean -nm_iodine_properties_validate (NMSettingVPN *s_vpn, GError **error) +nm_iodine_properties_validate (NMSettingVpn *s_vpn, GError **error) { ValidateInfo info = { &valid_properties[0], error, FALSE }; @@ -185,7 +187,7 @@ nm_iodine_properties_validate (NMSettingVPN *s_vpn, GError **error) static gboolean -nm_iodine_secrets_validate (NMSettingVPN *s_vpn, GError **error) +nm_iodine_secrets_validate (NMSettingVpn *s_vpn, GError **error) { ValidateInfo info = { &valid_secrets[0], error, FALSE }; @@ -202,11 +204,9 @@ nm_iodine_secrets_validate (NMSettingVPN *s_vpn, GError **error) return *error ? FALSE : TRUE; } -static GValue * -str_to_gvalue (const char *str, gboolean try_convert) +static GVariant * +str_to_gvariant (const char *str, gboolean try_convert) { - GValue *val; - /* Empty */ if (!str || strlen (str) < 1) return NULL; @@ -225,29 +225,11 @@ str_to_gvalue (const char *str, gboolean try_convert) return NULL; } - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_STRING); - g_value_set_string (val, str); - return val; -} - -static GValue * -uint_to_gvalue (guint32 num) -{ - GValue *val; - - if (num == 0) - return NULL; - - val = g_slice_new0 (GValue); - g_value_init (val, G_TYPE_UINT); - g_value_set_uint (val, num); - - return val; + return g_variant_new_string (str); } -static GValue * -addr_to_gvalue (const char *str) +static GVariant * +addr4_to_gvariant (const char *str) { struct in_addr temp_addr; @@ -258,26 +240,16 @@ addr_to_gvalue (const char *str) if (inet_pton (AF_INET, str, &temp_addr) <= 0) return NULL; - return uint_to_gvalue (temp_addr.s_addr); -} - -static void -value_destroy (gpointer data) -{ - GValue *val = (GValue *) data; - - g_value_unset (val); - g_slice_free (GValue, val); + return g_variant_new_uint32 (temp_addr.s_addr); } static gint -iodine_parse_stderr_line (NMVPNPlugin *plugin, - const char* line, - GHashTable *ip4config) +iodine_parse_stderr_line (NMVpnServicePlugin *plugin, + const char* line) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); gchar **split = NULL; - GValue *val; + GVariant *val; gint len; gint ret = 1; @@ -295,60 +267,60 @@ iodine_parse_stderr_line (NMVPNPlugin *plugin, if (g_str_has_prefix(line, "Server tunnel IP is ")) { g_message("PTP address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_PTP, - val); - val = addr_to_gvalue (split[len-1]); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_PTP, + val); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Sending DNS queries for ")) { g_message("External gw: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Sending raw traffic directly to ")) { /* If the DNS server is directly reachable we need to set it as external gateway overwriting the above valus */ g_message("Overwrite ext. gw. address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, + val); } else if (g_str_has_prefix(line, "Setting IP of dns")) { g_message("Address: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, + val); } else if (g_str_has_prefix(line, "Setting MTU of ")) { g_message("MTU: %s", split[len-1]); - val = addr_to_gvalue (split[len-1]); + val = addr4_to_gvariant (split[len-1]); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_MTU, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_MTU, + val); } else if (g_str_has_prefix(line, "Opened dns")) { g_message("Interface: %s", split[len-1]); - val = str_to_gvalue (split[len-1], FALSE); + val = str_to_gvariant (split[len-1], FALSE); if (val) - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, - val); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, + val); } else if (g_str_has_prefix(line, "Connection setup complete, " "transmitting data.")) { - val = uint_to_gvalue(27); - g_hash_table_insert (ip4config, - NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, - val); + val = g_variant_new_uint32 (27); + g_variant_builder_add (&priv->ip4config, "{sv}", + NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, + val); ret = 0; /* success */ } else g_message("%s", line); @@ -378,13 +350,11 @@ iodine_stderr_cb (GIOChannel *source, GIOCondition condition, gpointer plugin) if (l) line[l-1] = '\0'; - ret = iodine_parse_stderr_line(plugin, line, priv->ip4config); + ret = iodine_parse_stderr_line(plugin, line); if (!ret) { g_message("Parsing done, sending IP4 config"); - nm_vpn_plugin_set_ip4_config(plugin, priv->ip4config); - - g_hash_table_destroy (priv->ip4config); - priv->ip4config = NULL; + nm_vpn_service_plugin_set_ip4_config(plugin, + g_variant_builder_end (&priv->ip4config)); } g_free (line); return TRUE; @@ -416,12 +386,12 @@ iodine_watch_cb (GPid pid, gint status, gpointer user_data) priv->pid = 0; if (priv->failure >= 0) { - nm_vpn_plugin_failure (NM_VPN_PLUGIN (plugin), priv->failure); + nm_vpn_service_plugin_failure (NM_VPN_SERVICE_PLUGIN (plugin), priv->failure); } else if (error) { - nm_vpn_plugin_failure (NM_VPN_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); + nm_vpn_service_plugin_failure (NM_VPN_SERVICE_PLUGIN (plugin), NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED); + } else { + nm_vpn_service_plugin_disconnect (NM_VPN_SERVICE_PLUGIN (plugin), NULL); } - - nm_vpn_plugin_set_state (NM_VPN_PLUGIN (plugin), NM_VPN_SERVICE_STATE_STOPPED); } static gboolean @@ -432,7 +402,7 @@ has_user(const char* user) static void -send_password(gint fd, NMSettingVPN *s_vpn) +send_password(gint fd, NMSettingVpn *s_vpn) { const char *passwd; ssize_t ret; @@ -453,7 +423,7 @@ send_password(gint fd, NMSettingVPN *s_vpn) static gint nm_iodine_start_iodine_binary (NMIodinePlugin *plugin, - NMSettingVPN *s_vpn, + NMSettingVpn *s_vpn, GError **error) { GPid pid; @@ -548,11 +518,11 @@ nm_iodine_start_iodine_binary (NMIodinePlugin *plugin, } static gboolean -real_connect (NMVPNPlugin *plugin, - NMConnection *connection, - GError **error) +real_connect (NMVpnServicePlugin *plugin, + NMConnection *connection, + GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; gint ret = -1; s_vpn = nm_connection_get_setting_vpn (connection); @@ -572,21 +542,21 @@ real_connect (NMVPNPlugin *plugin, } static gboolean -real_need_secrets (NMVPNPlugin *plugin, - NMConnection *connection, - char **setting_name, - GError **error) +real_need_secrets (NMVpnServicePlugin *plugin, + NMConnection *connection, + const char **setting_name, + GError **error) { - NMSettingVPN *s_vpn; + NMSettingVpn *s_vpn; - g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), FALSE); + g_return_val_if_fail (NM_IS_VPN_SERVICE_PLUGIN (plugin), FALSE); g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); s_vpn = nm_connection_get_setting_vpn (connection); if (!s_vpn) { g_set_error (error, NM_VPN_PLUGIN_ERROR, - NM_VPN_PLUGIN_ERROR_CONNECTION_INVALID, + NM_VPN_PLUGIN_ERROR_INVALID_CONNECTION, "%s", "Could not process the request because the VPN " "connection settings were invalid."); @@ -613,7 +583,7 @@ ensure_killed (gpointer data) } static gboolean -real_disconnect (NMVPNPlugin *plugin, GError **err) +real_disconnect (NMVpnServicePlugin *plugin, GError **err) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); @@ -635,10 +605,7 @@ nm_iodine_plugin_init (NMIodinePlugin *plugin) { NMIodinePluginPrivate *priv = NM_IODINE_PLUGIN_GET_PRIVATE (plugin); - priv->ip4config = g_hash_table_new_full (g_str_hash, - g_str_equal, - NULL, - value_destroy); + g_variant_builder_init (&priv->ip4config, G_VARIANT_TYPE_VARDICT); priv->failure = -1; } @@ -646,7 +613,7 @@ static void nm_iodine_plugin_class_init (NMIodinePluginClass *iodine_class) { GObjectClass *object_class = G_OBJECT_CLASS (iodine_class); - NMVPNPluginClass *parent_class = NM_VPN_PLUGIN_CLASS (iodine_class); + NMVpnServicePluginClass *parent_class = NM_VPN_SERVICE_PLUGIN_CLASS (iodine_class); g_type_class_add_private (object_class, sizeof (NMIodinePluginPrivate)); @@ -659,10 +626,20 @@ nm_iodine_plugin_class_init (NMIodinePluginClass *iodine_class) NMIodinePlugin * nm_iodine_plugin_new (void) { - return (NMIodinePlugin *) g_object_new (NM_TYPE_IODINE_PLUGIN, - NM_VPN_PLUGIN_DBUS_SERVICE_NAME, - NM_DBUS_SERVICE_IODINE, - NULL); + NMIodinePlugin *plugin; + GError *error = NULL; + + plugin = (NMIodinePlugin *) g_initable_new (NM_TYPE_IODINE_PLUGIN, NULL, &error, + NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME, + NM_DBUS_SERVICE_IODINE, + NULL); + + if (!plugin) { + g_warning ("Failed to initialize a plugin instance: %s", error->message); + g_error_free (error); + } + + return plugin; } static void diff --git a/src/nm-iodine-service.h b/src/nm-iodine-service.h index 4a5604c..1102cc0 100644 --- a/src/nm-iodine-service.h +++ b/src/nm-iodine-service.h @@ -22,7 +22,8 @@ #define NM_IODINE_PLUGIN_H #include -#include +#include +#include #include "nm-iodine-service-defines.h" @@ -34,11 +35,11 @@ #define NM_IODINE_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IODINE_PLUGIN, NMIodinePluginClass)) typedef struct { - NMVPNPlugin parent; + NMVpnServicePlugin parent; } NMIodinePlugin; typedef struct { - NMVPNPluginClass parent; + NMVpnServicePluginClass parent; } NMIodinePluginClass; GType nm_iodine_plugin_get_type (void); -- cgit v1.2.3 From 01837f1c04d49dc856299e5f9961c0b5745b2b9b Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:44:58 +0200 Subject: auth-dialog: port to libnm --- auth-dialog/Makefile.am | 8 ++++---- auth-dialog/main.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/auth-dialog/Makefile.am b/auth-dialog/Makefile.am index b799c42..b9404c5 100644 --- a/auth-dialog/Makefile.am +++ b/auth-dialog/Makefile.am @@ -3,8 +3,8 @@ libexec_PROGRAMS = nm-iodine-auth-dialog nm_iodine_auth_dialog_CPPFLAGS = \ $(GTK_CFLAGS) \ $(LIBSECRET_CFLAGS) \ - $(LIBNM_GLIB_CFLAGS) \ - $(LIBNM_GTK_CFLAGS) \ + $(LIBNM_CFLAGS) \ + $(LIBNMA_CFLAGS) \ -DICONDIR=\""$(datadir)/pixmaps"\" \ -DBINDIR=\""$(bindir)"\" \ -DG_DISABLE_DEPRECATED \ @@ -19,8 +19,8 @@ nm_iodine_auth_dialog_SOURCES = \ nm_iodine_auth_dialog_LDADD = \ $(GTK_LIBS) \ - $(LIBNM_GLIB_LIBS) \ - $(LIBNM_GTK_LIBS) \ + $(LIBNM_LIBS) \ + $(LIBNMA_LIBS) \ $(LIBSECRET_LIBS) CLEANFILES = *~ diff --git a/auth-dialog/main.c b/auth-dialog/main.c index d0ddc3a..56d26dc 100644 --- a/auth-dialog/main.c +++ b/auth-dialog/main.c @@ -34,9 +34,9 @@ #define SECRET_API_SUBJECT_TO_CHANGE #include -#include -#include -#include +#include +#include +#include #include "../src/nm-iodine-service-defines.h" @@ -292,13 +292,13 @@ main (int argc, char *argv[]) g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); - if (!nm_vpn_plugin_utils_read_vpn_details (0, &data, &secrets)) { + if (!nm_vpn_service_plugin_read_vpn_details (0, &data, &secrets)) { fprintf (stderr, "Failed to read '%s' (%s) data and secrets from stdin.\n", vpn_name, vpn_uuid); return 1; } - nm_vpn_plugin_utils_get_secret_flags (secrets, NM_IODINE_KEY_PASSWORD, &pw_flags); + nm_vpn_service_plugin_get_secret_flags (secrets, NM_IODINE_KEY_PASSWORD, &pw_flags); if (!get_secrets (vpn_uuid, vpn_name, retry, allow_interaction, external_ui_mode, g_hash_table_lookup (secrets, NM_IODINE_KEY_PASSWORD), -- cgit v1.2.3 From a8d78602c537eb632d6f92b1f92b77123f8736ee Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 17:47:51 +0200 Subject: build: allow build without libnm-glib --- configure.ac | 21 +++++++++++++-------- properties/Makefile.am | 5 ++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index f1639c3..38faa55 100644 --- a/configure.ac +++ b/configure.ac @@ -45,6 +45,9 @@ AM_CONDITIONAL(WITH_GNOME, test x"$with_gnome" != xno) AC_ARG_WITH(authdlg, AS_HELP_STRING([--without-authdlg], [Build NetworkManager-iodine without authentication dialog])) AM_CONDITIONAL(WITH_AUTHDLG, test x"$with_authdlg" != xno) +AC_ARG_WITH(libnm-glib, AS_HELP_STRING([--without-libnm-glib], [Build NetworkManager-iodine without libnm-glib comatibility])) +AM_CONDITIONAL(WITH_LIBNM_GLIB, test x"$with_libnm_glib" != xno) + GETTEXT_PACKAGE=NetworkManager-iodine AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package]) @@ -57,17 +60,19 @@ if test x"$with_gnome" != xno; then PKG_CHECK_MODULES(GTK, gtk+-3.0 > $gtk3_req, , [PKG_CHECK_MODULES(GTK, gtk+-2.0 > $gtk2_req)]) + PKG_CHECK_MODULES(LIBNMA, libnma >= 1.1.0) PKG_CHECK_MODULES(LIBSECRET, libsecret-1) - PKG_CHECK_MODULES(LIBNM_GTK, libnm-gtk >= 0.9.9.0) - PKG_CHECK_MODULES(LIBNMA, libnma >= 1.1.0) -fi + if test x"$with_libnm_glib" != xno; then + PKG_CHECK_MODULES(LIBNM_GTK, libnm-gtk >= 0.9.9.0) + PKG_CHECK_MODULES(LIBNM_GLIB, + NetworkManager >= 1.1.0 + libnm-util >= 1.1.0 + libnm-glib >= 1.1.0 + libnm-glib-vpn >= 1.1.0) + fi -PKG_CHECK_MODULES(LIBNM_GLIB, - NetworkManager >= 1.1.0 - libnm-util >= 1.1.0 - libnm-glib >= 1.1.0 - libnm-glib-vpn >= 1.1.0) +fi PKG_CHECK_MODULES(LIBNM, libnm >= 1.1.0) LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" diff --git a/properties/Makefile.am b/properties/Makefile.am index 8223089..6edc5bc 100644 --- a/properties/Makefile.am +++ b/properties/Makefile.am @@ -1,5 +1,8 @@ plugindir = $(libdir)/NetworkManager -plugin_LTLIBRARIES = libnm-vpn-plugin-iodine.la libnm-iodine-properties.la +plugin_LTLIBRARIES = libnm-vpn-plugin-iodine.la +if WITH_LIBNM_GLIB +plugin_LTLIBRARIES += libnm-iodine-properties.la +endif libnm_vpn_plugin_iodine_la_SOURCES = \ nm-iodine.c \ -- cgit v1.2.3 From 04ba0f1c1efc825d49e1486dcd18df59e1df0805 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Mon, 24 Aug 2015 18:02:18 +0200 Subject: build: install the service file into /usr/lib too It's not really a configuration file and should not be installed into /etc. See file-hierarchy(7). We need the old location for the old property plugin though. --- Makefile.am | 7 ++++++- configure.ac | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 3269d3a..24174e0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -13,9 +13,14 @@ endif dbusservicedir = $(sysconfdir)/dbus-1/system.d dbusservice_DATA = nm-iodine-service.conf -nmvpnservicedir = $(sysconfdir)/NetworkManager/VPN +nmvpnservicedir = $(NM_VPN_SERVICE_DIR) nmvpnservice_DATA = nm-iodine-service.name +if WITH_LIBNM_GLIB +nmvpnoldservicedir = $(sysconfdir)/NetworkManager/VPN +nmvpnoldservice_DATA = nm-iodine-service.name +endif + nm-iodine-service.name: $(srcdir)/nm-iodine-service.name.in sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \ -e 's|[@]PLUGINDIR[@]|$(libdir)/NetworkManager|g' \ diff --git a/configure.ac b/configure.ac index 38faa55..8596102 100644 --- a/configure.ac +++ b/configure.ac @@ -78,6 +78,9 @@ PKG_CHECK_MODULES(LIBNM, libnm >= 1.1.0) LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2" LIBNM_CFLAGS="$LIBNM_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_2" +NM_VPN_SERVICE_DIR=`$PKG_CONFIG pkg-config --define-variable prefix='\${prefix}' --variable vpnservicedir libnm` +AC_SUBST(NM_VPN_SERVICE_DIR) + NM_COMPILER_WARNINGS AC_CONFIG_FILES([ -- cgit v1.2.3