summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2016-03-13 13:07:47 +0100
committerGuido Günther <agx@sigxcpu.org>2016-03-13 13:07:47 +0100
commitd9619973de807f74da4fd595b7719385a6dcfc93 (patch)
tree7a48306d3ccf65be63e29a6c449e6321901876db
parent4064e8bd795c70efe4a303cd36451a99ea67f8c4 (diff)
parent04ba0f1c1efc825d49e1486dcd18df59e1df0805 (diff)
Merge branch 'nm-1.1'v1.1.0
-rw-r--r--Makefile.am11
-rw-r--r--auth-dialog/Makefile.am8
-rw-r--r--auth-dialog/main.c12
-rw-r--r--configure.ac27
-rw-r--r--nm-iodine-service.name.in3
-rw-r--r--properties/Makefile.am43
-rw-r--r--properties/nm-iodine.c227
-rw-r--r--properties/nm-iodine.h58
-rw-r--r--src/Makefile.am4
-rw-r--r--src/nm-iodine-service.c195
-rw-r--r--src/nm-iodine-service.h7
11 files changed, 295 insertions, 300 deletions
diff --git a/Makefile.am b/Makefile.am
index 9b35207..24174e0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,11 +13,18 @@ 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' $< >$@
+ sed -e 's|[@]LIBEXECDIR[@]|$(libexecdir)|g' \
+ -e 's|[@]PLUGINDIR[@]|$(libdir)/NetworkManager|g' \
+ $< >$@
DISTCHECK_CONFIGURE_FLAGS = --enable-more-warnings=yes
diff --git a/auth-dialog/Makefile.am b/auth-dialog/Makefile.am
index 08f9e20..b9404c5 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_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) \
- $(NM_LIBS) \
- $(NMGTK_LIBS) \
+ $(LIBNM_LIBS) \
+ $(LIBNMA_LIBS) \
$(LIBSECRET_LIBS)
CLEANFILES = *~
diff --git a/auth-dialog/main.c b/auth-dialog/main.c
index f482cf0..56d26dc 100644
--- a/auth-dialog/main.c
+++ b/auth-dialog/main.c
@@ -34,11 +34,11 @@
#define SECRET_API_SUBJECT_TO_CHANGE
#include <libsecret/secret.h>
-#include <nm-setting-vpn.h>
-#include <nm-vpn-plugin-utils.h>
-#include <nm-vpn-password-dialog.h>
+#include <NetworkManager.h>
+#include <nm-vpn-service-plugin.h>
+#include <nma-vpn-password-dialog.h>
-#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"
@@ -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),
diff --git a/configure.ac b/configure.ac
index 972b7b3..8596102 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
@@ -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,16 +60,26 @@ 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)
+
+ 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
+
fi
-PKG_CHECK_MODULES(NM,
- 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"
-PKG_CHECK_MODULES(NMGTK, libnm-gtk >= 0.9.9.0)
+NM_VPN_SERVICE_DIR=`$PKG_CONFIG pkg-config --define-variable prefix='\${prefix}' --variable vpnservicedir libnm`
+AC_SUBST(NM_VPN_SERVICE_DIR)
NM_COMPILER_WARNINGS
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..6edc5bc 100644
--- a/properties/Makefile.am
+++ b/properties/Makefile.am
@@ -1,16 +1,21 @@
plugindir = $(libdir)/NetworkManager
-plugin_LTLIBRARIES = libnm-iodine-properties.la
+plugin_LTLIBRARIES = libnm-vpn-plugin-iodine.la
+if WITH_LIBNM_GLIB
+plugin_LTLIBRARIES += libnm-iodine-properties.la
+endif
-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 \
-DICONDIR=\""$(datadir)/pixmaps"\" \
-DUIDIR=\""$(uidir)"\" \
@@ -20,13 +25,31 @@ libnm_iodine_properties_la_CFLAGS = \
-DGNOMELOCALEDIR=\"$(datadir)/locale\" \
-DVERSION=\"$(VERSION)\"
-libnm_iodine_properties_la_LIBADD = \
- $(GTK_LIBS) \
- $(NM_LIBS)
+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) \
+ $(LIBNMA_LIBS) \
+ $(LIBNM_LIBS)
-libnm_iodine_properties_la_LDFLAGS = \
+libnm_iodine_properties_la_LIBADD = \
+ $(GTK_LIBS) \
+ $(LIBNM_GLIB_LIBS)
+
+libnm_vpn_plugin_iodine_la_LDFLAGS = \
-avoid-version
+libnm_iodine_properties_la_LDFLAGS = \
+ $(libnm_vpn_plugin_iodine_la_LDFLAGS)
+
CLEANFILES = *.bak *~
EXTRA_DIST = \
diff --git a/properties/nm-iodine.c b/properties/nm-iodine.c
index b3c9498..a0a51de 100644
--- a/properties/nm-iodine.c
+++ b/properties/nm-iodine.c
@@ -33,11 +33,27 @@
#include <string.h>
#include <gtk/gtk.h>
+#ifdef NM_IODINE_OLD
+#define NM_VPN_LIBNM_COMPAT
#include <nm-vpn-plugin-ui-interface.h>
#include <nm-setting-vpn.h>
#include <nm-setting-connection.h>
#include <nm-setting-ip4-config.h>
+#define nm_simple_connection_new nm_connection_new
+
+#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 <NetworkManager.h>
+#include <nma-ui-utils.h>
+
+#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"
#include "nm-iodine.h"
@@ -51,28 +67,35 @@
/************** plugin class **************/
-static void iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class);
+enum {
+ PROP_0,
+ PROP_NAME,
+ PROP_DESC,
+ PROP_SERVICE
+};
+
+static void iodine_editor_plugin_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,
- iodine_plugin_ui_interface_init))
+G_DEFINE_TYPE_EXTENDED (IodineEditorPlugin, iodine_editor_plugin, G_TYPE_OBJECT, 0,
+ G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR_PLUGIN,
+ iodine_editor_plugin_interface_init))
/************** UI widget class **************/
-static void iodine_plugin_ui_widget_interface_init (NMVpnPluginUiWidgetInterface *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_IMPLEMENT_INTERFACE (NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE,
- iodine_plugin_ui_widget_interface_init))
+G_DEFINE_TYPE_EXTENDED (IodineEditor, iodine_editor,G_TYPE_OBJECT, 0,
+ G_IMPLEMENT_INTERFACE (NM_TYPE_VPN_EDITOR,
+ 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,
@@ -93,11 +116,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 +138,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 +187,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;
@@ -225,48 +248,11 @@ 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)
+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;
@@ -274,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;
}
@@ -286,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,
+ 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;
@@ -329,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;
@@ -345,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"));
@@ -370,13 +356,13 @@ pw_type_combo_changed_cb (GtkWidget *combo, gpointer user_data)
}
static void
-init_one_pw_combo (IodinePluginUiWidget *self,
- NMSettingVPN *s_vpn,
+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;
@@ -425,12 +411,12 @@ 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);
- NMSettingVPN *s_vpn;
+ IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self);
+ NMSettingVpn *s_vpn;
GtkWidget *widget;
const char *value;
@@ -495,16 +481,16 @@ 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);
+ IodineEditor *self = IODINE_EDITOR (iface);
+ IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self);
return G_OBJECT (priv->widget);
}
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 +528,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;
+ IodineEditor *self = IODINE_EDITOR (iface);
+ IodineEditorPrivate *priv = IODINE_EDITOR_GET_PRIVATE (self);
+ NMSettingVpn *s_vpn;
GtkWidget *widget;
char *str;
@@ -589,26 +575,25 @@ update_connection (NMVpnPluginUiWidgetInterface *iface,
return TRUE;
}
-static NMVpnPluginUiWidgetInterface *
-nm_vpn_plugin_ui_widget_interface_new (NMConnection *connection, GError **error)
+static NMVpnEditor *
+nm_vpn_editor_interface_new (NMConnection *connection, GError **error)
{
- NMVpnPluginUiWidgetInterface *object;
- IodinePluginUiWidgetPrivate *priv;
+ NMVpnEditor *object;
+ IodineEditorPrivate *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_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 ();
@@ -617,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);
@@ -627,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;
}
@@ -645,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);
@@ -658,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 (NMVpnPluginUiWidgetInterface *iface_class)
+iodine_editor_interface_init (NMVpnEditorInterface *iface_class)
{
/* interface implementation */
iface_class->get_widget = get_widget;
@@ -685,18 +670,18 @@ 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)
{
- return nm_vpn_plugin_ui_widget_interface_new (connection, error);
+ return nm_vpn_editor_interface_new (connection, error);
}
static void
@@ -704,13 +689,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:
@@ -720,45 +705,45 @@ 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);
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
-iodine_plugin_ui_init (IodinePluginUi *plugin)
+iodine_editor_plugin_init (IodineEditorPlugin *plugin)
{
}
static void
-iodine_plugin_ui_interface_init (NMVpnPluginUiInterface *iface_class)
+iodine_editor_plugin_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_EDITOR_PLUGIN, NULL);
}
diff --git a/properties/nm-iodine.h b/properties/nm-iodine.h
index ee38678..4eeb892 100644
--- a/properties/nm-iodine.h
+++ b/properties/nm-iodine.h
@@ -24,60 +24,46 @@
#include <glib-object.h>
-typedef enum
-{
- IODINE_PLUGIN_UI_ERROR_UNKNOWN = 0,
- IODINE_PLUGIN_UI_ERROR_INVALID_PROPERTY,
- IODINE_PLUGIN_UI_ERROR_MISSING_PROPERTY
-} IodinePluginUiError;
+#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 _IodineEditorPlugin IodineEditorPlugin;
+typedef struct _IodineEditorPluginClass IodineEditorPluginClass;
-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))
-#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))
-
-typedef struct _IodinePluginUi IodinePluginUi;
-typedef struct _IodinePluginUiClass IodinePluginUiClass;
-
-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_ */
diff --git a/src/Makefile.am b/src/Makefile.am
index 8ca103a..d412962 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,5 @@
AM_CPPFLAGS = \
- $(NM_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 = \
- $(NM_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 <pwd.h>
#include <grp.h>
#include <glib/gi18n.h>
+#include <arpa/inet.h>
-#include <nm-setting-vpn.h>
+#include <NetworkManager.h>
+#include <nm-vpn-service-plugin.h>
#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 <glib.h>
-#include <nm-vpn-plugin.h>
+#include <NetworkManager.h>
+#include <nm-vpn-service-plugin.h>
#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);