From 1e9c5f415fbd47cfd404d6b7e35e7829c2047bc5 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 24 Oct 2014 09:25:13 -0400 Subject: [PATCH 1/3] libnm-core: fix trivial bug in NMVpnPluginError quark --- libnm-core/nm-errors.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libnm-core/nm-errors.c b/libnm-core/nm-errors.c index 105425504c..2fead92e77 100644 --- a/libnm-core/nm-errors.c +++ b/libnm-core/nm-errors.c @@ -34,7 +34,7 @@ G_DEFINE_QUARK (nm-device-error-quark, nm_device_error) G_DEFINE_QUARK (nm-manager-error-quark, nm_manager_error) G_DEFINE_QUARK (nm-secret-agent-error-quark, nm_secret_agent_error) G_DEFINE_QUARK (nm-settings-error-quark, nm_settings_error) -G_DEFINE_QUARK (nm-vpn-plugin-quark, nm_vpn_plugin_error) +G_DEFINE_QUARK (nm-vpn-plugin-error-quark, nm_vpn_plugin_error) static void register_error_domain (GQuark domain, From f45260602012435168f8a4a34141162d729fb945 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 24 Oct 2014 09:25:37 -0400 Subject: [PATCH 2/3] libnm: rename NMVpnPlugin to NMVpnPluginOld Rename libnm's NMVpnPlugin to NMVpnPluginOld, in preparation for having a new-and-improved NMVpnPlugin in NM 1.2. Also remove it from NM-1.0.gir. Make nm-vpn-plugin-old.h be separately includable, since it's not included from NetworkManager.h, and we probably don't want it to be. Remove NMVpnPlugin, NMVpnPluginUiInterface, and nm-vpn-plugin-utils from the docs, since they're basically undocumented anyway. --- docs/libnm/libnm-docs.xml | 7 - libnm/Makefile.am | 14 +- libnm/libnm.ver | 18 +- .../{nm-vpn-plugin.c => nm-vpn-plugin-old.c} | 348 +++++++++--------- libnm/nm-vpn-plugin-old.h | 126 +++++++ libnm/nm-vpn-plugin-utils.c | 2 +- libnm/nm-vpn-plugin.h | 130 ------- 7 files changed, 322 insertions(+), 323 deletions(-) rename libnm/{nm-vpn-plugin.c => nm-vpn-plugin-old.c} (69%) create mode 100644 libnm/nm-vpn-plugin-old.h delete mode 100644 libnm/nm-vpn-plugin.h diff --git a/docs/libnm/libnm-docs.xml b/docs/libnm/libnm-docs.xml index 00eba8abb2..007cbe4108 100644 --- a/docs/libnm/libnm-docs.xml +++ b/docs/libnm/libnm-docs.xml @@ -138,13 +138,6 @@ - - VPN Plugin API Reference - - - - - Object Hierarchy diff --git a/libnm/Makefile.am b/libnm/Makefile.am index 458aee8860..21390ece99 100644 --- a/libnm/Makefile.am +++ b/libnm/Makefile.am @@ -24,7 +24,7 @@ lib_LTLIBRARIES = libnm.la libnmincludedir = $(includedir)/libnm -libnminclude_HEADERS = \ +libnminclude_hfiles = \ NetworkManager.h \ nm-access-point.h \ nm-active-connection.h \ @@ -53,11 +53,17 @@ libnminclude_HEADERS = \ nm-secret-agent.h \ nm-types.h \ nm-vpn-connection.h \ - nm-vpn-plugin.h \ nm-vpn-plugin-ui-interface.h \ nm-vpn-plugin-utils.h \ nm-wimax-nsp.h +libnminclude_nointrospect_hfiles = \ + nm-vpn-plugin-old.h + +libnminclude_HEADERS = \ + $(libnminclude_hfiles) \ + $(libnminclude_nointrospect_hfiles) + libnm_la_private_headers = \ nm-dbus-helpers.h \ nm-device-private.h \ @@ -98,7 +104,7 @@ libnm_la_csources = \ nm-remote-settings.c \ nm-secret-agent.c \ nm-vpn-connection.c \ - nm-vpn-plugin.c \ + nm-vpn-plugin-old.c \ nm-vpn-plugin-ui-interface.c \ nm-vpn-plugin-utils.c \ nm-wimax-nsp.c @@ -148,7 +154,7 @@ INTROSPECTION_COMPILER_ARGS = \ if HAVE_INTROSPECTION introspection_sources = \ $(libnm_core_headers) \ - $(libnminclude_HEADERS) \ + $(libnminclude_hfiles) \ $(libnm_core_sources) \ $(libnm_la_csources) diff --git a/libnm/libnm.ver b/libnm/libnm.ver index 54d6057327..c8fd09065d 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -856,18 +856,18 @@ global: nm_vpn_connection_get_vpn_state; nm_vpn_connection_state_get_type; nm_vpn_connection_state_reason_get_type; - nm_vpn_plugin_disconnect; nm_vpn_plugin_error_get_type; nm_vpn_plugin_error_quark; - nm_vpn_plugin_failure; nm_vpn_plugin_failure_get_type; - nm_vpn_plugin_get_connection; - nm_vpn_plugin_get_state; - nm_vpn_plugin_get_type; - nm_vpn_plugin_secrets_required; - nm_vpn_plugin_set_ip4_config; - nm_vpn_plugin_set_login_banner; - nm_vpn_plugin_set_state; + nm_vpn_plugin_old_disconnect; + nm_vpn_plugin_old_failure; + nm_vpn_plugin_old_get_connection; + nm_vpn_plugin_old_get_state; + nm_vpn_plugin_old_get_type; + nm_vpn_plugin_old_secrets_required; + nm_vpn_plugin_old_set_ip4_config; + nm_vpn_plugin_old_set_login_banner; + nm_vpn_plugin_old_set_state; nm_vpn_plugin_ui_capability_get_type; nm_vpn_plugin_ui_interface_export; nm_vpn_plugin_ui_interface_get_capabilities; diff --git a/libnm/nm-vpn-plugin.c b/libnm/nm-vpn-plugin-old.c similarity index 69% rename from libnm/nm-vpn-plugin.c rename to libnm/nm-vpn-plugin-old.c index f6e00dbb24..dc5f82ef57 100644 --- a/libnm/nm-vpn-plugin.c +++ b/libnm/nm-vpn-plugin-old.c @@ -19,13 +19,17 @@ * Copyright 2007 - 2008 Red Hat, Inc. */ +/* This interface is expected to be deprecated in NM 1.2, at which point there + * will be a new "NMVpnPlugin" class to replace it. + */ + #include #include #include #include "nm-glib-compat.h" -#include "nm-vpn-plugin.h" +#include "nm-vpn-plugin-old.h" #include "nm-enum-types.h" #include "nm-utils.h" #include "nm-connection.h" @@ -33,12 +37,12 @@ #include "nmdbus-vpn-plugin.h" -#define NM_VPN_PLUGIN_QUIT_TIMER 20 +#define NM_VPN_PLUGIN_OLD_QUIT_TIMER 20 -static void nm_vpn_plugin_initable_iface_init (GInitableIface *iface); +static void nm_vpn_plugin_old_initable_iface_init (GInitableIface *iface); -G_DEFINE_ABSTRACT_TYPE_WITH_CODE (NMVpnPlugin, nm_vpn_plugin, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, nm_vpn_plugin_initable_iface_init); +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (NMVpnPluginOld, nm_vpn_plugin_old, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, nm_vpn_plugin_old_initable_iface_init); ) typedef struct { @@ -46,7 +50,7 @@ typedef struct { /* DBUS-y stuff */ GDBusConnection *connection; - NMDBusVpnPlugin *dbus_vpn_plugin; + NMDBusVpnPlugin *dbus_vpn_plugin_old; char *dbus_service_name; /* Temporary stuff */ @@ -61,9 +65,9 @@ typedef struct { /* Config stuff copied from config to ip4config */ char *banner, *tundev, *gateway, *mtu; -} NMVpnPluginPrivate; +} NMVpnPluginOldPrivate; -#define NM_VPN_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_VPN_PLUGIN, NMVpnPluginPrivate)) +#define NM_VPN_PLUGIN_OLD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_VPN_PLUGIN_OLD, NMVpnPluginOldPrivate)) enum { STATE_CHANGED, @@ -92,10 +96,10 @@ static GSList *active_plugins = NULL; static void -nm_vpn_plugin_set_connection (NMVpnPlugin *plugin, - GDBusConnection *connection) +nm_vpn_plugin_old_set_connection (NMVpnPluginOld *plugin, + GDBusConnection *connection) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); g_clear_object (&priv->connection); @@ -103,18 +107,18 @@ nm_vpn_plugin_set_connection (NMVpnPlugin *plugin, } /** - * nm_vpn_plugin_get_connection: + * nm_vpn_plugin_old_get_connection: * * Returns: (transfer full): */ GDBusConnection * -nm_vpn_plugin_get_connection (NMVpnPlugin *plugin) +nm_vpn_plugin_old_get_connection (NMVpnPluginOld *plugin) { GDBusConnection *connection; - g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), NULL); + g_return_val_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin), NULL); - connection = NM_VPN_PLUGIN_GET_PRIVATE (plugin)->connection; + connection = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin)->connection; if (connection) g_object_ref (connection); @@ -123,22 +127,22 @@ nm_vpn_plugin_get_connection (NMVpnPlugin *plugin) } NMVpnServiceState -nm_vpn_plugin_get_state (NMVpnPlugin *plugin) +nm_vpn_plugin_old_get_state (NMVpnPluginOld *plugin) { - g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), NM_VPN_SERVICE_STATE_UNKNOWN); + g_return_val_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin), NM_VPN_SERVICE_STATE_UNKNOWN); - return NM_VPN_PLUGIN_GET_PRIVATE (plugin)->state; + return NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin)->state; } void -nm_vpn_plugin_set_state (NMVpnPlugin *plugin, - NMVpnServiceState state) +nm_vpn_plugin_old_set_state (NMVpnPluginOld *plugin, + NMVpnServiceState state) { - NMVpnPluginPrivate *priv; + NMVpnPluginOldPrivate *priv; - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); - priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); if (priv->state != state) { priv->state = state; g_signal_emit (plugin, signals[STATE_CHANGED], 0, state); @@ -146,33 +150,33 @@ nm_vpn_plugin_set_state (NMVpnPlugin *plugin, } void -nm_vpn_plugin_set_login_banner (NMVpnPlugin *plugin, - const char *banner) +nm_vpn_plugin_old_set_login_banner (NMVpnPluginOld *plugin, + const char *banner) { - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); g_return_if_fail (banner != NULL); g_signal_emit (plugin, signals[LOGIN_BANNER], 0, banner); } void -nm_vpn_plugin_failure (NMVpnPlugin *plugin, - NMVpnPluginFailure reason) +nm_vpn_plugin_old_failure (NMVpnPluginOld *plugin, + NMVpnPluginFailure reason) { - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); g_signal_emit (plugin, signals[FAILURE], 0, reason); } gboolean -nm_vpn_plugin_disconnect (NMVpnPlugin *plugin, GError **err) +nm_vpn_plugin_old_disconnect (NMVpnPluginOld *plugin, GError **err) { gboolean ret = FALSE; NMVpnServiceState state; - g_return_val_if_fail (NM_IS_VPN_PLUGIN (plugin), FALSE); + g_return_val_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin), FALSE); - state = nm_vpn_plugin_get_state (plugin); + state = nm_vpn_plugin_old_get_state (plugin); switch (state) { case NM_VPN_SERVICE_STATE_STOPPING: g_set_error (err, @@ -190,9 +194,9 @@ nm_vpn_plugin_disconnect (NMVpnPlugin *plugin, GError **err) break; case NM_VPN_SERVICE_STATE_STARTING: case NM_VPN_SERVICE_STATE_STARTED: - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPING); - ret = NM_VPN_PLUGIN_GET_CLASS (plugin)->disconnect (plugin, err); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPING); + ret = NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->disconnect (plugin, err); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); break; case NM_VPN_SERVICE_STATE_INIT: ret = TRUE; @@ -208,7 +212,7 @@ nm_vpn_plugin_disconnect (NMVpnPlugin *plugin, GError **err) } static void -nm_vpn_plugin_emit_quit (NMVpnPlugin *plugin) +nm_vpn_plugin_old_emit_quit (NMVpnPluginOld *plugin) { g_signal_emit (plugin, signals[QUIT], 0); } @@ -216,11 +220,11 @@ nm_vpn_plugin_emit_quit (NMVpnPlugin *plugin) static gboolean connect_timer_expired (gpointer data) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (data); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data); GError *err = NULL; g_message ("Connect timer expired, disconnecting."); - nm_vpn_plugin_disconnect (plugin, &err); + nm_vpn_plugin_old_disconnect (plugin, &err); if (err) { g_warning ("Disconnect failed: %s", err->message); g_error_free (err); @@ -232,9 +236,9 @@ connect_timer_expired (gpointer data) static gboolean quit_timer_expired (gpointer data) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (data); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data); - nm_vpn_plugin_emit_quit (plugin); + nm_vpn_plugin_old_emit_quit (plugin); return FALSE; } @@ -242,16 +246,16 @@ quit_timer_expired (gpointer data) static gboolean fail_stop (gpointer data) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (data); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (data); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STOPPED); return FALSE; } static void -schedule_fail_stop (NMVpnPlugin *plugin) +schedule_fail_stop (NMVpnPluginOld *plugin) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); if (priv->fail_stop_id) g_source_remove (priv->fail_stop_id); @@ -259,12 +263,12 @@ schedule_fail_stop (NMVpnPlugin *plugin) } void -nm_vpn_plugin_set_config (NMVpnPlugin *plugin, - GVariant *config) +nm_vpn_plugin_old_set_config (NMVpnPluginOld *plugin, + GVariant *config) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); g_return_if_fail (config != NULL); priv->got_config = TRUE; @@ -290,22 +294,22 @@ nm_vpn_plugin_set_config (NMVpnPlugin *plugin, } void -nm_vpn_plugin_set_ip4_config (NMVpnPlugin *plugin, - GVariant *ip4_config) +nm_vpn_plugin_old_set_ip4_config (NMVpnPluginOld *plugin, + GVariant *ip4_config) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); GVariant *combined_config; GVariantBuilder builder; GVariantIter iter; const char *key, *value; - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); g_return_if_fail (ip4_config != NULL); priv->got_ip4 = TRUE; /* Old plugins won't send the "config" signal and thus can't send - * NM_VPN_PLUGIN_CONFIG_HAS_IP4 either. But since they don't support IPv6, + * NM_VPN_PLUGIN_OLD_CONFIG_HAS_IP4 either. But since they don't support IPv6, * we can safely assume that, if we don't receive a "config" signal but do * receive an "ip4-config" signal, the old plugin supports IPv4. */ @@ -338,16 +342,16 @@ nm_vpn_plugin_set_ip4_config (NMVpnPlugin *plugin, if ( priv->has_ip4 == priv->got_ip4 && priv->has_ip6 == priv->got_ip6) - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED); } void -nm_vpn_plugin_set_ip6_config (NMVpnPlugin *plugin, - GVariant *ip6_config) +nm_vpn_plugin_old_set_ip6_config (NMVpnPluginOld *plugin, + GVariant *ip6_config) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); - g_return_if_fail (NM_IS_VPN_PLUGIN (plugin)); + g_return_if_fail (NM_IS_VPN_PLUGIN_OLD (plugin)); g_return_if_fail (ip6_config != NULL); priv->got_ip6 = TRUE; @@ -355,19 +359,19 @@ nm_vpn_plugin_set_ip6_config (NMVpnPlugin *plugin, if ( priv->has_ip4 == priv->got_ip4 && priv->has_ip6 == priv->got_ip6) - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED); } static void connect_timer_removed (gpointer data) { - NM_VPN_PLUGIN_GET_PRIVATE (data)->connect_timer = 0; + NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->connect_timer = 0; } static void -connect_timer_start (NMVpnPlugin *plugin) +connect_timer_start (NMVpnPluginOld *plugin) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); priv->connect_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, 60, @@ -377,13 +381,13 @@ connect_timer_start (NMVpnPlugin *plugin) } static void -_connect_generic (NMVpnPlugin *plugin, +_connect_generic (NMVpnPluginOld *plugin, GDBusMethodInvocation *context, GVariant *properties, GVariant *details) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); - NMVpnPluginClass *vpn_class = NM_VPN_PLUGIN_GET_CLASS (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); + NMVpnPluginOldClass *vpn_class = NM_VPN_PLUGIN_OLD_GET_CLASS (plugin); NMConnection *connection; gboolean success = FALSE; GError *error = NULL; @@ -417,7 +421,7 @@ _connect_generic (NMVpnPlugin *plugin, return; } - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTING); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_STARTING); if (details) { priv->interactive = TRUE; @@ -443,20 +447,20 @@ _connect_generic (NMVpnPlugin *plugin, } static void -impl_vpn_plugin_connect (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *connection, - gpointer user_data) +impl_vpn_plugin_old_connect (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *connection, + gpointer user_data) { _connect_generic (plugin, context, connection, NULL); } static void -impl_vpn_plugin_connect_interactive (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *connection, - GVariant *details, - gpointer user_data) +impl_vpn_plugin_old_connect_interactive (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *connection, + GVariant *details, + gpointer user_data) { _connect_generic (plugin, context, connection, details); } @@ -464,10 +468,10 @@ impl_vpn_plugin_connect_interactive (NMVpnPlugin *plugin, /***************************************************************/ static void -impl_vpn_plugin_need_secrets (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *properties, - gpointer user_data) +impl_vpn_plugin_old_need_secrets (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *properties, + gpointer user_data) { NMConnection *connection; char *setting_name; @@ -485,13 +489,13 @@ impl_vpn_plugin_need_secrets (NMVpnPlugin *plugin, return; } - if (!NM_VPN_PLUGIN_GET_CLASS (plugin)->need_secrets) { + if (!NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->need_secrets) { g_dbus_method_invocation_return_value (context, g_variant_new ("(s)", "")); return; } - needed = NM_VPN_PLUGIN_GET_CLASS (plugin)->need_secrets (plugin, connection, &setting_name, &error); + needed = NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->need_secrets (plugin, connection, &setting_name, &error); if (error) { g_dbus_method_invocation_take_error (context, error); return; @@ -510,12 +514,12 @@ impl_vpn_plugin_need_secrets (NMVpnPlugin *plugin, } static void -impl_vpn_plugin_new_secrets (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *properties, - gpointer user_data) +impl_vpn_plugin_old_new_secrets (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *properties, + gpointer user_data) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); NMConnection *connection; GError *error = NULL; gboolean success; @@ -540,7 +544,7 @@ impl_vpn_plugin_new_secrets (NMVpnPlugin *plugin, return; } - if (!NM_VPN_PLUGIN_GET_CLASS (plugin)->new_secrets) { + if (!NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->new_secrets) { g_dbus_method_invocation_return_error (context, NM_VPN_PLUGIN_ERROR, NM_VPN_PLUGIN_ERROR_INTERACTIVE_NOT_SUPPORTED, @@ -549,7 +553,7 @@ impl_vpn_plugin_new_secrets (NMVpnPlugin *plugin, return; } - success = NM_VPN_PLUGIN_GET_CLASS (plugin)->new_secrets (plugin, connection, &error); + success = NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->new_secrets (plugin, connection, &error); if (success) { g_dbus_method_invocation_return_value (context, NULL); @@ -568,8 +572,8 @@ impl_vpn_plugin_new_secrets (NMVpnPlugin *plugin, } /** - * nm_vpn_plugin_secrets_required: - * @plugin: the #NMVpnPlugin + * nm_vpn_plugin_old_secrets_required: + * @plugin: the #NMVpnPluginOld * @message: an information message about why secrets are required, if any * @hints: VPN specific secret names for required new secrets * @@ -580,14 +584,14 @@ impl_vpn_plugin_new_secrets (NMVpnPlugin *plugin, * information to complete the request. */ void -nm_vpn_plugin_secrets_required (NMVpnPlugin *plugin, - const char *message, - const char **hints) +nm_vpn_plugin_old_secrets_required (NMVpnPluginOld *plugin, + const char *message, + const char **hints) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); /* Plugin must be able to accept the new secrets if it calls this method */ - g_return_if_fail (NM_VPN_PLUGIN_GET_CLASS (plugin)->new_secrets); + g_return_if_fail (NM_VPN_PLUGIN_OLD_GET_CLASS (plugin)->new_secrets); /* Plugin cannot call this method if NetworkManager didn't originally call * ConnectInteractive(). @@ -606,55 +610,55 @@ nm_vpn_plugin_secrets_required (NMVpnPlugin *plugin, /***************************************************************/ static void -impl_vpn_plugin_disconnect (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - gpointer user_data) +impl_vpn_plugin_old_disconnect (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + gpointer user_data) { GError *error = NULL; - if (nm_vpn_plugin_disconnect (plugin, &error)) + if (nm_vpn_plugin_old_disconnect (plugin, &error)) g_dbus_method_invocation_return_value (context, NULL); else g_dbus_method_invocation_take_error (context, error); } static void -impl_vpn_plugin_set_config (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *config, - gpointer user_data) -{ - nm_vpn_plugin_set_config (plugin, config); - g_dbus_method_invocation_return_value (context, NULL); -} - -static void -impl_vpn_plugin_set_ip4_config (NMVpnPlugin *plugin, +impl_vpn_plugin_old_set_config (NMVpnPluginOld *plugin, GDBusMethodInvocation *context, GVariant *config, gpointer user_data) { - nm_vpn_plugin_set_ip4_config (plugin, config); + nm_vpn_plugin_old_set_config (plugin, config); g_dbus_method_invocation_return_value (context, NULL); } static void -impl_vpn_plugin_set_ip6_config (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - GVariant *config, - gpointer user_data) +impl_vpn_plugin_old_set_ip4_config (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *config, + gpointer user_data) { - nm_vpn_plugin_set_ip6_config (plugin, config); + nm_vpn_plugin_old_set_ip4_config (plugin, config); g_dbus_method_invocation_return_value (context, NULL); } static void -impl_vpn_plugin_set_failure (NMVpnPlugin *plugin, - GDBusMethodInvocation *context, - char *reason, - gpointer user_data) +impl_vpn_plugin_old_set_ip6_config (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + GVariant *config, + gpointer user_data) { - nm_vpn_plugin_failure (plugin, NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG); + nm_vpn_plugin_old_set_ip6_config (plugin, config); + g_dbus_method_invocation_return_value (context, NULL); +} + +static void +impl_vpn_plugin_old_set_failure (NMVpnPluginOld *plugin, + GDBusMethodInvocation *context, + char *reason, + gpointer user_data) +{ + nm_vpn_plugin_old_failure (plugin, NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG); g_dbus_method_invocation_return_value (context, NULL); } @@ -663,7 +667,7 @@ impl_vpn_plugin_set_failure (NMVpnPlugin *plugin, static void sigterm_handler (int signum) { - g_slist_foreach (active_plugins, (GFunc) nm_vpn_plugin_emit_quit, NULL); + g_slist_foreach (active_plugins, (GFunc) nm_vpn_plugin_old_emit_quit, NULL); } static void @@ -690,7 +694,7 @@ one_plugin_destroyed (gpointer data, } static void -nm_vpn_plugin_init (NMVpnPlugin *plugin) +nm_vpn_plugin_old_init (NMVpnPluginOld *plugin) { active_plugins = g_slist_append (active_plugins, plugin); g_object_weak_ref (G_OBJECT (plugin), @@ -701,8 +705,8 @@ nm_vpn_plugin_init (NMVpnPlugin *plugin) static gboolean init_sync (GInitable *initable, GCancellable *cancellable, GError **error) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (initable); - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (initable); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); GDBusConnection *connection = NULL; GDBusProxy *proxy; GVariant *ret; @@ -742,28 +746,28 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) } g_variant_unref (ret); - priv->dbus_vpn_plugin = nmdbus_vpn_plugin_skeleton_new (); - if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->dbus_vpn_plugin), + priv->dbus_vpn_plugin_old = nmdbus_vpn_plugin_skeleton_new (); + if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->dbus_vpn_plugin_old), connection, NM_VPN_DBUS_PLUGIN_PATH, error)) goto out; - _nm_dbus_bind_properties (plugin, priv->dbus_vpn_plugin); - _nm_dbus_bind_methods (plugin, priv->dbus_vpn_plugin, - "Connect", impl_vpn_plugin_connect, - "ConnectInteractive", impl_vpn_plugin_connect_interactive, - "NeedSecrets", impl_vpn_plugin_need_secrets, - "NewSecrets", impl_vpn_plugin_new_secrets, - "Disconnect", impl_vpn_plugin_disconnect, - "SetConfig", impl_vpn_plugin_set_config, - "SetIp4Config", impl_vpn_plugin_set_ip4_config, - "SetIp6Config", impl_vpn_plugin_set_ip6_config, - "SetFailure", impl_vpn_plugin_set_failure, + _nm_dbus_bind_properties (plugin, priv->dbus_vpn_plugin_old); + _nm_dbus_bind_methods (plugin, priv->dbus_vpn_plugin_old, + "Connect", impl_vpn_plugin_old_connect, + "ConnectInteractive", impl_vpn_plugin_old_connect_interactive, + "NeedSecrets", impl_vpn_plugin_old_need_secrets, + "NewSecrets", impl_vpn_plugin_old_new_secrets, + "Disconnect", impl_vpn_plugin_old_disconnect, + "SetConfig", impl_vpn_plugin_old_set_config, + "SetIp4Config", impl_vpn_plugin_old_set_ip4_config, + "SetIp6Config", impl_vpn_plugin_old_set_ip6_config, + "SetFailure", impl_vpn_plugin_old_set_failure, NULL); - nm_vpn_plugin_set_connection (plugin, connection); - nm_vpn_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_INIT); + nm_vpn_plugin_old_set_connection (plugin, connection); + nm_vpn_plugin_old_set_state (plugin, NM_VPN_SERVICE_STATE_INIT); success = TRUE; @@ -777,7 +781,7 @@ static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (object); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (object); switch (prop_id) { case PROP_DBUS_SERVICE_NAME: @@ -785,8 +789,8 @@ set_property (GObject *object, guint prop_id, priv->dbus_service_name = g_value_dup_string (value); break; case PROP_STATE: - nm_vpn_plugin_set_state (NM_VPN_PLUGIN (object), - (NMVpnServiceState) g_value_get_enum (value)); + nm_vpn_plugin_old_set_state (NM_VPN_PLUGIN_OLD (object), + (NMVpnServiceState) g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -798,14 +802,14 @@ static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (object); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (object); switch (prop_id) { case PROP_DBUS_SERVICE_NAME: g_value_set_string (value, priv->dbus_service_name); break; case PROP_STATE: - g_value_set_enum (value, nm_vpn_plugin_get_state (NM_VPN_PLUGIN (object))); + g_value_set_enum (value, nm_vpn_plugin_old_get_state (NM_VPN_PLUGIN_OLD (object))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -816,8 +820,8 @@ get_property (GObject *object, guint prop_id, static void dispose (GObject *object) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (object); - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (object); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); NMVpnServiceState state; GError *err = NULL; @@ -826,27 +830,27 @@ dispose (GObject *object) priv->fail_stop_id = 0; } - state = nm_vpn_plugin_get_state (plugin); + state = nm_vpn_plugin_old_get_state (plugin); if (state == NM_VPN_SERVICE_STATE_STARTED || state == NM_VPN_SERVICE_STATE_STARTING) - nm_vpn_plugin_disconnect (plugin, &err); + nm_vpn_plugin_old_disconnect (plugin, &err); if (err) { g_warning ("Error disconnecting VPN connection: %s", err->message); g_error_free (err); } - G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object); + G_OBJECT_CLASS (nm_vpn_plugin_old_parent_class)->dispose (object); } static void finalize (GObject *object) { - NMVpnPlugin *plugin = NM_VPN_PLUGIN (object); - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOld *plugin = NM_VPN_PLUGIN_OLD (object); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); - nm_vpn_plugin_set_connection (plugin, NULL); + nm_vpn_plugin_old_set_connection (plugin, NULL); g_free (priv->dbus_service_name); g_clear_pointer (&priv->banner, g_free); @@ -854,19 +858,19 @@ finalize (GObject *object) g_clear_pointer (&priv->gateway, g_free); g_clear_pointer (&priv->mtu, g_free); - G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->finalize (object); + G_OBJECT_CLASS (nm_vpn_plugin_old_parent_class)->finalize (object); } static void quit_timer_removed (gpointer data) { - NM_VPN_PLUGIN_GET_PRIVATE (data)->quit_timer = 0; + NM_VPN_PLUGIN_OLD_GET_PRIVATE (data)->quit_timer = 0; } static void -state_changed (NMVpnPlugin *plugin, NMVpnServiceState state) +state_changed (NMVpnPluginOld *plugin, NMVpnServiceState state) { - NMVpnPluginPrivate *priv = NM_VPN_PLUGIN_GET_PRIVATE (plugin); + NMVpnPluginOldPrivate *priv = NM_VPN_PLUGIN_OLD_GET_PRIVATE (plugin); switch (state) { case NM_VPN_SERVICE_STATE_STARTING: @@ -881,7 +885,7 @@ state_changed (NMVpnPlugin *plugin, NMVpnServiceState state) break; case NM_VPN_SERVICE_STATE_STOPPED: priv->quit_timer = g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, - NM_VPN_PLUGIN_QUIT_TIMER, + NM_VPN_PLUGIN_OLD_QUIT_TIMER, quit_timer_expired, plugin, quit_timer_removed); @@ -903,11 +907,11 @@ state_changed (NMVpnPlugin *plugin, NMVpnServiceState state) } static void -nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) +nm_vpn_plugin_old_class_init (NMVpnPluginOldClass *plugin_class) { GObjectClass *object_class = G_OBJECT_CLASS (plugin_class); - g_type_class_add_private (object_class, sizeof (NMVpnPluginPrivate)); + g_type_class_add_private (object_class, sizeof (NMVpnPluginOldPrivate)); /* virtual methods */ object_class->set_property = set_property; @@ -920,26 +924,26 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) /* properties */ /** - * NMVpnPlugin:service-name: + * NMVpnPluginOld:service-name: * * The D-Bus service name of this plugin. */ g_object_class_install_property (object_class, PROP_DBUS_SERVICE_NAME, - g_param_spec_string (NM_VPN_PLUGIN_DBUS_SERVICE_NAME, "", "", + g_param_spec_string (NM_VPN_PLUGIN_OLD_DBUS_SERVICE_NAME, "", "", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); /** - * NMVpnPlugin:state: + * NMVpnPluginOld:state: * * The state of the plugin. */ g_object_class_install_property (object_class, PROP_STATE, - g_param_spec_enum (NM_VPN_PLUGIN_STATE, "", "", + g_param_spec_enum (NM_VPN_PLUGIN_OLD_STATE, "", "", NM_TYPE_VPN_SERVICE_STATE, NM_VPN_SERVICE_STATE_INIT, G_PARAM_READWRITE | @@ -950,7 +954,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("state-changed", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, state_changed), + G_STRUCT_OFFSET (NMVpnPluginOldClass, state_changed), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -968,7 +972,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("config", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, config), + G_STRUCT_OFFSET (NMVpnPluginOldClass, config), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -978,7 +982,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("ip4-config", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, ip4_config), + G_STRUCT_OFFSET (NMVpnPluginOldClass, ip4_config), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -988,7 +992,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("ip6-config", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, ip6_config), + G_STRUCT_OFFSET (NMVpnPluginOldClass, ip6_config), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -998,7 +1002,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("login-banner", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, login_banner), + G_STRUCT_OFFSET (NMVpnPluginOldClass, login_banner), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -1008,7 +1012,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("failure", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, failure), + G_STRUCT_OFFSET (NMVpnPluginOldClass, failure), NULL, NULL, NULL, G_TYPE_NONE, 1, @@ -1018,7 +1022,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) g_signal_new ("quit", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMVpnPluginClass, quit), + G_STRUCT_OFFSET (NMVpnPluginOldClass, quit), NULL, NULL, NULL, G_TYPE_NONE, 0, @@ -1028,7 +1032,7 @@ nm_vpn_plugin_class_init (NMVpnPluginClass *plugin_class) } static void -nm_vpn_plugin_initable_iface_init (GInitableIface *iface) +nm_vpn_plugin_old_initable_iface_init (GInitableIface *iface) { iface->init = init_sync; } diff --git a/libnm/nm-vpn-plugin-old.h b/libnm/nm-vpn-plugin-old.h new file mode 100644 index 0000000000..c46d5c53a9 --- /dev/null +++ b/libnm/nm-vpn-plugin-old.h @@ -0,0 +1,126 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA. + * + * Copyright 2007 - 2008 Novell, Inc. + * Copyright 2007 - 2013 Red Hat, Inc. + */ + +#ifndef __NM_VPN_PLUGIN_OLD_H__ +#define __NM_VPN_PLUGIN_OLD_H__ + +#include +#include +#include + +G_BEGIN_DECLS + +#define NM_TYPE_VPN_PLUGIN_OLD (nm_vpn_plugin_old_get_type ()) +#define NM_VPN_PLUGIN_OLD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_VPN_PLUGIN_OLD, NMVpnPluginOld)) +#define NM_VPN_PLUGIN_OLD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_VPN_PLUGIN_OLD, NMVpnPluginOldClass)) +#define NM_IS_VPN_PLUGIN_OLD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_VPN_PLUGIN_OLD)) +#define NM_IS_VPN_PLUGIN_OLD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_VPN_PLUGIN_OLD)) +#define NM_VPN_PLUGIN_OLD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_VPN_PLUGIN_OLD, NMVpnPluginOldClass)) + +#define NM_VPN_PLUGIN_OLD_DBUS_SERVICE_NAME "service-name" +#define NM_VPN_PLUGIN_OLD_STATE "state" + +typedef struct { + GObject parent; +} NMVpnPluginOld; + +typedef struct { + GObjectClass parent; + + /* Signals */ + void (*state_changed) (NMVpnPluginOld *plugin, + NMVpnServiceState state); + + void (*ip4_config) (NMVpnPluginOld *plugin, + GVariant *ip4_config); + + void (*login_banner) (NMVpnPluginOld *plugin, + const char *banner); + + void (*failure) (NMVpnPluginOld *plugin, + NMVpnPluginFailure reason); + + void (*quit) (NMVpnPluginOld *plugin); + + void (*config) (NMVpnPluginOld *plugin, + GVariant *config); + + void (*ip6_config) (NMVpnPluginOld *plugin, + GVariant *config); + + /* virtual methods */ + gboolean (*connect) (NMVpnPluginOld *plugin, + NMConnection *connection, + GError **err); + + gboolean (*need_secrets) (NMVpnPluginOld *plugin, + NMConnection *connection, + char **setting_name, + GError **error); + + gboolean (*disconnect) (NMVpnPluginOld *plugin, + GError **err); + + gboolean (*new_secrets) (NMVpnPluginOld *plugin, + NMConnection *connection, + GError **error); + + gboolean (*connect_interactive) (NMVpnPluginOld *plugin, + NMConnection *connection, + GVariant *details, + GError **error); + + /*< private >*/ + gpointer padding[8]; +} NMVpnPluginOldClass; + +GType nm_vpn_plugin_old_get_type (void); + +GDBusConnection *nm_vpn_plugin_old_get_connection (NMVpnPluginOld *plugin); +NMVpnServiceState nm_vpn_plugin_old_get_state (NMVpnPluginOld *plugin); +void nm_vpn_plugin_old_set_state (NMVpnPluginOld *plugin, + NMVpnServiceState state); + +void nm_vpn_plugin_old_secrets_required (NMVpnPluginOld *plugin, + const char *message, + const char **hints); + +void nm_vpn_plugin_old_set_login_banner (NMVpnPluginOld *plugin, + const char *banner); + +void nm_vpn_plugin_old_failure (NMVpnPluginOld *plugin, + NMVpnPluginFailure reason); + +void nm_vpn_plugin_old_set_config (NMVpnPluginOld *plugin, + GVariant *config); + +void nm_vpn_plugin_old_set_ip4_config (NMVpnPluginOld *plugin, + GVariant *ip4_config); + +void nm_vpn_plugin_old_set_ip6_config (NMVpnPluginOld *plugin, + GVariant *ip6_config); + +gboolean nm_vpn_plugin_old_disconnect (NMVpnPluginOld *plugin, + GError **err); + +G_END_DECLS + +#endif /* __NM_VPN_PLUGIN_OLD_H__ */ diff --git a/libnm/nm-vpn-plugin-utils.c b/libnm/nm-vpn-plugin-utils.c index 6ff2f57cac..e82379c285 100644 --- a/libnm/nm-vpn-plugin-utils.c +++ b/libnm/nm-vpn-plugin-utils.c @@ -24,7 +24,7 @@ #include #include "nm-vpn-plugin-utils.h" -#include "nm-vpn-plugin.h" +#include "nm-vpn-plugin-old.h" #include "nm-core-internal.h" #define DATA_KEY_TAG "DATA_KEY=" diff --git a/libnm/nm-vpn-plugin.h b/libnm/nm-vpn-plugin.h deleted file mode 100644 index 02245d9a44..0000000000 --- a/libnm/nm-vpn-plugin.h +++ /dev/null @@ -1,130 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA. - * - * Copyright 2007 - 2008 Novell, Inc. - * Copyright 2007 - 2013 Red Hat, Inc. - */ - -#ifndef __NM_VPN_PLUGIN_H__ -#define __NM_VPN_PLUGIN_H__ - -#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined (NETWORKMANAGER_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include -#include - -G_BEGIN_DECLS - -#define NM_TYPE_VPN_PLUGIN (nm_vpn_plugin_get_type ()) -#define NM_VPN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_VPN_PLUGIN, NMVpnPlugin)) -#define NM_VPN_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_VPN_PLUGIN, NMVpnPluginClass)) -#define NM_IS_VPN_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_VPN_PLUGIN)) -#define NM_IS_VPN_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_VPN_PLUGIN)) -#define NM_VPN_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_VPN_PLUGIN, NMVpnPluginClass)) - -#define NM_VPN_PLUGIN_DBUS_SERVICE_NAME "service-name" -#define NM_VPN_PLUGIN_STATE "state" - -typedef struct { - GObject parent; -} NMVpnPlugin; - -typedef struct { - GObjectClass parent; - - /* Signals */ - void (*state_changed) (NMVpnPlugin *plugin, - NMVpnServiceState state); - - void (*ip4_config) (NMVpnPlugin *plugin, - GVariant *ip4_config); - - void (*login_banner) (NMVpnPlugin *plugin, - const char *banner); - - void (*failure) (NMVpnPlugin *plugin, - NMVpnPluginFailure reason); - - void (*quit) (NMVpnPlugin *plugin); - - void (*config) (NMVpnPlugin *plugin, - GVariant *config); - - void (*ip6_config) (NMVpnPlugin *plugin, - GVariant *config); - - /* virtual methods */ - gboolean (*connect) (NMVpnPlugin *plugin, - NMConnection *connection, - GError **err); - - gboolean (*need_secrets) (NMVpnPlugin *plugin, - NMConnection *connection, - char **setting_name, - GError **error); - - gboolean (*disconnect) (NMVpnPlugin *plugin, - GError **err); - - gboolean (*new_secrets) (NMVpnPlugin *plugin, - NMConnection *connection, - GError **error); - - gboolean (*connect_interactive) (NMVpnPlugin *plugin, - NMConnection *connection, - GVariant *details, - GError **error); - - /*< private >*/ - gpointer padding[8]; -} NMVpnPluginClass; - -GType nm_vpn_plugin_get_type (void); - -GDBusConnection *nm_vpn_plugin_get_connection (NMVpnPlugin *plugin); -NMVpnServiceState nm_vpn_plugin_get_state (NMVpnPlugin *plugin); -void nm_vpn_plugin_set_state (NMVpnPlugin *plugin, - NMVpnServiceState state); - -void nm_vpn_plugin_secrets_required (NMVpnPlugin *plugin, - const char *message, - const char **hints); - -void nm_vpn_plugin_set_login_banner (NMVpnPlugin *plugin, - const char *banner); - -void nm_vpn_plugin_failure (NMVpnPlugin *plugin, - NMVpnPluginFailure reason); - -void nm_vpn_plugin_set_config (NMVpnPlugin *plugin, - GVariant *config); - -void nm_vpn_plugin_set_ip4_config (NMVpnPlugin *plugin, - GVariant *ip4_config); - -void nm_vpn_plugin_set_ip6_config (NMVpnPlugin *plugin, - GVariant *ip6_config); - -gboolean nm_vpn_plugin_disconnect (NMVpnPlugin *plugin, - GError **err); - -G_END_DECLS - -#endif /* __NM_VPN_PLUGIN_H__ */ From 4d9cbaf9bf7952e8915da58057ba8db6fdea3476 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 24 Oct 2014 09:39:33 -0400 Subject: [PATCH 3/3] libnm: merge nm-vpn-plugin-utils into nm-vpn-plugin-old The new VPN plugin API will hopefully simplify some the the tasks that are currently handled by nm-vpn-plugin-utils functions, so make those functions explicitly be part of the "old" API. (If we still want them in the new API we can just move them back out, and have the "_old_" versions just be wrappers around the undeprecated ones.) --- libnm/Makefile.am | 2 - libnm/libnm.ver | 4 +- libnm/nm-vpn-plugin-old.c | 165 +++++++++++++++++++++++++++++++ libnm/nm-vpn-plugin-old.h | 10 ++ libnm/nm-vpn-plugin-utils.c | 188 ------------------------------------ libnm/nm-vpn-plugin-utils.h | 43 --------- 6 files changed, 177 insertions(+), 235 deletions(-) delete mode 100644 libnm/nm-vpn-plugin-utils.c delete mode 100644 libnm/nm-vpn-plugin-utils.h diff --git a/libnm/Makefile.am b/libnm/Makefile.am index 21390ece99..e14dc83a3f 100644 --- a/libnm/Makefile.am +++ b/libnm/Makefile.am @@ -54,7 +54,6 @@ libnminclude_hfiles = \ nm-types.h \ nm-vpn-connection.h \ nm-vpn-plugin-ui-interface.h \ - nm-vpn-plugin-utils.h \ nm-wimax-nsp.h libnminclude_nointrospect_hfiles = \ @@ -106,7 +105,6 @@ libnm_la_csources = \ nm-vpn-connection.c \ nm-vpn-plugin-old.c \ nm-vpn-plugin-ui-interface.c \ - nm-vpn-plugin-utils.c \ nm-wimax-nsp.c libnm_la_SOURCES = \ diff --git a/libnm/libnm.ver b/libnm/libnm.ver index c8fd09065d..64a3b507df 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -862,8 +862,10 @@ global: nm_vpn_plugin_old_disconnect; nm_vpn_plugin_old_failure; nm_vpn_plugin_old_get_connection; + nm_vpn_plugin_old_get_secret_flags; nm_vpn_plugin_old_get_state; nm_vpn_plugin_old_get_type; + nm_vpn_plugin_old_read_vpn_details; nm_vpn_plugin_old_secrets_required; nm_vpn_plugin_old_set_ip4_config; nm_vpn_plugin_old_set_login_banner; @@ -879,8 +881,6 @@ global: nm_vpn_plugin_ui_widget_interface_get_type; nm_vpn_plugin_ui_widget_interface_get_widget; nm_vpn_plugin_ui_widget_interface_update_connection; - nm_vpn_plugin_utils_get_secret_flags; - nm_vpn_plugin_utils_read_vpn_details; nm_vpn_service_state_get_type; nm_wep_key_type_get_type; nm_wimax_nsp_connection_valid; diff --git a/libnm/nm-vpn-plugin-old.c b/libnm/nm-vpn-plugin-old.c index dc5f82ef57..28e6b7a587 100644 --- a/libnm/nm-vpn-plugin-old.c +++ b/libnm/nm-vpn-plugin-old.c @@ -23,7 +23,9 @@ * will be a new "NMVpnPlugin" class to replace it. */ +#include #include +#include #include #include @@ -34,6 +36,7 @@ #include "nm-utils.h" #include "nm-connection.h" #include "nm-dbus-helpers.h" +#include "nm-core-internal.h" #include "nmdbus-vpn-plugin.h" @@ -609,6 +612,168 @@ nm_vpn_plugin_old_secrets_required (NMVpnPluginOld *plugin, /***************************************************************/ +#define DATA_KEY_TAG "DATA_KEY=" +#define DATA_VAL_TAG "DATA_VAL=" +#define SECRET_KEY_TAG "SECRET_KEY=" +#define SECRET_VAL_TAG "SECRET_VAL=" + +static void +free_secret (gpointer data) +{ + char *secret = data; + + memset (secret, 0, strlen (secret)); + g_free (secret); +} + +/** + * nm_vpn_plugin_old_read_vpn_details: + * @fd: file descriptor to read from, usually stdin (0) + * @out_data: (out) (transfer full): on successful return, a hash table + * (mapping char*:char*) containing the key/value pairs of VPN data items + * @out_secrets: (out) (transfer full): on successful return, a hash table + * (mapping char*:char*) containing the key/value pairsof VPN secrets + * + * Parses key/value pairs from a file descriptor (normally stdin) passed by + * an applet when the applet calls the authentication dialog of the VPN plugin. + * + * Returns: %TRUE if reading values was successful, %FALSE if not + **/ +gboolean +nm_vpn_plugin_old_read_vpn_details (int fd, + GHashTable **out_data, + GHashTable **out_secrets) +{ + GHashTable *data, *secrets; + gboolean success = FALSE; + char *key = NULL, *val = NULL; + GString *line; + gchar c; + + if (out_data) + g_return_val_if_fail (*out_data == NULL, FALSE); + if (out_secrets) + g_return_val_if_fail (*out_secrets == NULL, FALSE); + + data = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + secrets = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_secret); + + line = g_string_new (NULL); + + /* Read stdin for data and secret items until we get a DONE */ + while (1) { + ssize_t nr; + GHashTable *hash = NULL; + + errno = 0; + nr = read (fd, &c, 1); + if (nr == -1) { + if (errno == EAGAIN) { + g_usleep (100); + continue; + } + break; + } + + if (c != '\n') { + g_string_append_c (line, c); + continue; + } + + /* Check for the finish marker */ + if (strcmp (line->str, "DONE") == 0) + break; + + /* Otherwise it's a data/secret item */ + if (strncmp (line->str, DATA_KEY_TAG, strlen (DATA_KEY_TAG)) == 0) { + hash = data; + key = g_strdup (line->str + strlen (DATA_KEY_TAG)); + } else if (strncmp (line->str, DATA_VAL_TAG, strlen (DATA_VAL_TAG)) == 0) { + hash = data; + val = g_strdup (line->str + strlen (DATA_VAL_TAG)); + } else if (strncmp (line->str, SECRET_KEY_TAG, strlen (SECRET_KEY_TAG)) == 0) { + hash = secrets; + key = g_strdup (line->str + strlen (SECRET_KEY_TAG)); + } else if (strncmp (line->str, SECRET_VAL_TAG, strlen (SECRET_VAL_TAG)) == 0) { + hash = secrets; + val = g_strdup (line->str + strlen (SECRET_VAL_TAG)); + } + g_string_truncate (line, 0); + + if (key && val && hash) { + g_hash_table_insert (hash, key, val); + key = NULL; + val = NULL; + success = TRUE; /* Got at least one value */ + } + } + + if (success) { + if (out_data) + *out_data = data; + else + g_hash_table_destroy (data); + + if (out_secrets) + *out_secrets = secrets; + else + g_hash_table_destroy (secrets); + } else { + g_hash_table_destroy (data); + g_hash_table_destroy (secrets); + } + + g_string_free (line, TRUE); + return success; +} + +/** + * nm_vpn_plugin_old_get_secret_flags: + * @data: hash table containing VPN key/value pair data items + * @secret_name: VPN secret key name for which to retrieve flags for + * @out_flags: (out): on success, the flags associated with @secret_name + * + * Given a VPN secret key name, attempts to find the corresponding flags data + * item in @data. If found, converts the flags data item to + * #NMSettingSecretFlags and returns it. + * + * Returns: %TRUE if the flag data item was found and successfully converted + * to flags, %FALSE if not + **/ +gboolean +nm_vpn_plugin_old_get_secret_flags (GHashTable *data, + const char *secret_name, + NMSettingSecretFlags *out_flags) +{ + char *flag_name; + const char *val; + unsigned long tmp; + gboolean success = FALSE; + + g_return_val_if_fail (data != NULL, FALSE); + g_return_val_if_fail (secret_name != NULL, FALSE); + g_return_val_if_fail (out_flags != NULL, FALSE); + g_return_val_if_fail (*out_flags == NM_SETTING_SECRET_FLAG_NONE, FALSE); + + flag_name = g_strdup_printf ("%s-flags", secret_name); + + /* Try new flags value first */ + val = g_hash_table_lookup (data, flag_name); + if (val) { + errno = 0; + tmp = strtoul (val, NULL, 10); + if (errno == 0 && tmp <= NM_SETTING_SECRET_FLAGS_ALL) { + *out_flags = (NMSettingSecretFlags) tmp; + success = TRUE; + } + } + + g_free (flag_name); + return success; +} + +/***************************************************************/ + static void impl_vpn_plugin_old_disconnect (NMVpnPluginOld *plugin, GDBusMethodInvocation *context, diff --git a/libnm/nm-vpn-plugin-old.h b/libnm/nm-vpn-plugin-old.h index c46d5c53a9..7fcc1c1c0a 100644 --- a/libnm/nm-vpn-plugin-old.h +++ b/libnm/nm-vpn-plugin-old.h @@ -121,6 +121,16 @@ void nm_vpn_plugin_old_set_ip6_config (NMVpnPluginOld *plugin, gboolean nm_vpn_plugin_old_disconnect (NMVpnPluginOld *plugin, GError **err); +/* Utility functions */ + +gboolean nm_vpn_plugin_old_read_vpn_details (int fd, + GHashTable **out_data, + GHashTable **out_secrets); + +gboolean nm_vpn_plugin_old_get_secret_flags (GHashTable *data, + const char *secret_name, + NMSettingSecretFlags *out_flags); + G_END_DECLS #endif /* __NM_VPN_PLUGIN_OLD_H__ */ diff --git a/libnm/nm-vpn-plugin-utils.c b/libnm/nm-vpn-plugin-utils.c deleted file mode 100644 index e82379c285..0000000000 --- a/libnm/nm-vpn-plugin-utils.c +++ /dev/null @@ -1,188 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA. - * - * Copyright 2011 Red Hat, Inc. - */ - -#include -#include -#include -#include - -#include "nm-vpn-plugin-utils.h" -#include "nm-vpn-plugin-old.h" -#include "nm-core-internal.h" - -#define DATA_KEY_TAG "DATA_KEY=" -#define DATA_VAL_TAG "DATA_VAL=" -#define SECRET_KEY_TAG "SECRET_KEY=" -#define SECRET_VAL_TAG "SECRET_VAL=" - -static void -free_secret (gpointer data) -{ - char *secret = data; - - memset (secret, 0, strlen (secret)); - g_free (secret); -} - -/** - * nm_vpn_plugin_utils_read_vpn_details: - * @fd: file descriptor to read from, usually stdin (0) - * @out_data: (out) (transfer full): on successful return, a hash table - * (mapping char*:char*) containing the key/value pairs of VPN data items - * @out_secrets: (out) (transfer full): on successful return, a hash table - * (mapping char*:char*) containing the key/value pairsof VPN secrets - * - * Parses key/value pairs from a file descriptor (normally stdin) passed by - * an applet when the applet calls the authentication dialog of the VPN plugin. - * - * Returns: %TRUE if reading values was successful, %FALSE if not - **/ -gboolean -nm_vpn_plugin_utils_read_vpn_details (int fd, - GHashTable **out_data, - GHashTable **out_secrets) -{ - GHashTable *data, *secrets; - gboolean success = FALSE; - char *key = NULL, *val = NULL; - GString *line; - gchar c; - - if (out_data) - g_return_val_if_fail (*out_data == NULL, FALSE); - if (out_secrets) - g_return_val_if_fail (*out_secrets == NULL, FALSE); - - data = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - secrets = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_secret); - - line = g_string_new (NULL); - - /* Read stdin for data and secret items until we get a DONE */ - while (1) { - ssize_t nr; - GHashTable *hash = NULL; - - errno = 0; - nr = read (fd, &c, 1); - if (nr == -1) { - if (errno == EAGAIN) { - g_usleep (100); - continue; - } - break; - } - - if (c != '\n') { - g_string_append_c (line, c); - continue; - } - - /* Check for the finish marker */ - if (strcmp (line->str, "DONE") == 0) - break; - - /* Otherwise it's a data/secret item */ - if (strncmp (line->str, DATA_KEY_TAG, strlen (DATA_KEY_TAG)) == 0) { - hash = data; - key = g_strdup (line->str + strlen (DATA_KEY_TAG)); - } else if (strncmp (line->str, DATA_VAL_TAG, strlen (DATA_VAL_TAG)) == 0) { - hash = data; - val = g_strdup (line->str + strlen (DATA_VAL_TAG)); - } else if (strncmp (line->str, SECRET_KEY_TAG, strlen (SECRET_KEY_TAG)) == 0) { - hash = secrets; - key = g_strdup (line->str + strlen (SECRET_KEY_TAG)); - } else if (strncmp (line->str, SECRET_VAL_TAG, strlen (SECRET_VAL_TAG)) == 0) { - hash = secrets; - val = g_strdup (line->str + strlen (SECRET_VAL_TAG)); - } - g_string_truncate (line, 0); - - if (key && val && hash) { - g_hash_table_insert (hash, key, val); - key = NULL; - val = NULL; - success = TRUE; /* Got at least one value */ - } - } - - if (success) { - if (out_data) - *out_data = data; - else - g_hash_table_destroy (data); - - if (out_secrets) - *out_secrets = secrets; - else - g_hash_table_destroy (secrets); - } else { - g_hash_table_destroy (data); - g_hash_table_destroy (secrets); - } - - g_string_free (line, TRUE); - return success; -} - -/** - * nm_vpn_plugin_utils_get_secret_flags: - * @data: hash table containing VPN key/value pair data items - * @secret_name: VPN secret key name for which to retrieve flags for - * @out_flags: (out): on success, the flags associated with @secret_name - * - * Given a VPN secret key name, attempts to find the corresponding flags data - * item in @data. If found, converts the flags data item to - * #NMSettingSecretFlags and returns it. - * - * Returns: %TRUE if the flag data item was found and successfully converted - * to flags, %FALSE if not - **/ -gboolean -nm_vpn_plugin_utils_get_secret_flags (GHashTable *data, - const char *secret_name, - NMSettingSecretFlags *out_flags) -{ - char *flag_name; - const char *val; - unsigned long tmp; - gboolean success = FALSE; - - g_return_val_if_fail (data != NULL, FALSE); - g_return_val_if_fail (secret_name != NULL, FALSE); - g_return_val_if_fail (out_flags != NULL, FALSE); - g_return_val_if_fail (*out_flags == NM_SETTING_SECRET_FLAG_NONE, FALSE); - - flag_name = g_strdup_printf ("%s-flags", secret_name); - - /* Try new flags value first */ - val = g_hash_table_lookup (data, flag_name); - if (val) { - errno = 0; - tmp = strtoul (val, NULL, 10); - if (errno == 0 && tmp <= NM_SETTING_SECRET_FLAGS_ALL) { - *out_flags = (NMSettingSecretFlags) tmp; - success = TRUE; - } - } - - g_free (flag_name); - return success; -} diff --git a/libnm/nm-vpn-plugin-utils.h b/libnm/nm-vpn-plugin-utils.h deleted file mode 100644 index 5073d1ee0b..0000000000 --- a/libnm/nm-vpn-plugin-utils.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA. - * - * Copyright 2011 Red Hat, Inc. - */ - -#ifndef __NM_VPN_PLUGIN_UTILS_H__ -#define __NM_VPN_PLUGIN_UTILS_H__ - -#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined (NETWORKMANAGER_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include - -G_BEGIN_DECLS - -gboolean nm_vpn_plugin_utils_read_vpn_details (int fd, - GHashTable **out_data, - GHashTable **out_secrets); - -gboolean nm_vpn_plugin_utils_get_secret_flags (GHashTable *data, - const char *secret_name, - NMSettingSecretFlags *out_flags); - -G_END_DECLS - -#endif /* __NM_VPN_PLUGIN_UTILS_H__ */