diff options
author | Dan Winship <danw@gnome.org> | 2014-10-15 15:27:25 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-10-22 08:29:09 -0400 |
commit | 86331d9ef49716a4bd2a7790289b5665eed84dd1 (patch) | |
tree | 59001bb16bc7c3d3c62a173f4c91cffa908095f3 | |
parent | d13bfe3cf8f2f8714f12949a2dfdc0bbd16a59e2 (diff) | |
download | NetworkManager-86331d9ef49716a4bd2a7790289b5665eed84dd1.tar.gz |
libnm-core, settings: move NMAgentManagerError to nm-errors
Move the definition of NMAgentManagerError to nm-errors, register it
with D-Bus, and verify in the tests that it maps correctly.
-rw-r--r-- | libnm-core/nm-errors.c | 4 | ||||
-rw-r--r-- | libnm-core/nm-errors.h | 32 | ||||
-rw-r--r-- | libnm/libnm.ver | 2 | ||||
-rw-r--r-- | libnm/tests/test-secret-agent.c | 17 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/settings/nm-agent-manager.c | 24 | ||||
-rw-r--r-- | src/settings/nm-agent-manager.h | 11 |
7 files changed, 47 insertions, 45 deletions
diff --git a/libnm-core/nm-errors.c b/libnm-core/nm-errors.c index b51cf4f9ea..0e45f50ce8 100644 --- a/libnm-core/nm-errors.c +++ b/libnm-core/nm-errors.c @@ -26,6 +26,7 @@ #include "nm-dbus-interface.h" #include "nm-core-internal.h" +G_DEFINE_QUARK (nm-agent-manager-error-quark, nm_agent_manager_error) G_DEFINE_QUARK (nm-connection-error-quark, nm_connection_error) G_DEFINE_QUARK (nm-crypto-error-quark, nm_crypto_error) G_DEFINE_QUARK (nm-device-error-quark, nm_device_error) @@ -57,6 +58,9 @@ register_error_domain (GQuark domain, void _nm_dbus_errors_init (void) { + register_error_domain (NM_AGENT_MANAGER_ERROR, + NM_DBUS_INTERFACE_AGENT_MANAGER, + NM_TYPE_AGENT_MANAGER_ERROR); register_error_domain (NM_CONNECTION_ERROR, NM_DBUS_INTERFACE_SETTINGS_CONNECTION, NM_TYPE_CONNECTION_ERROR); diff --git a/libnm-core/nm-errors.h b/libnm-core/nm-errors.h index 26afd4386d..62434dfb75 100644 --- a/libnm-core/nm-errors.h +++ b/libnm-core/nm-errors.h @@ -21,6 +21,38 @@ #define __NM_ERRORS_H__ /** + * NMAgentManagerError: + * @NM_AGENT_MANAGER_ERROR_FAILED: unknown or unspecified error + * @NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED: The caller does not have permission + * to register a secret agent, or is trying to register the same secret agent + * twice. + * @NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER: The identifier is not a valid + * secret agent identifier. + * @NM_AGENT_MANAGER_ERROR_NOT_REGISTERED: The caller tried to unregister an agent + * that was not registered. + * @NM_AGENT_MANAGER_ERROR_NO_SECRETS: No secret agent returned secrets for this + * request + * @NM_AGENT_MANAGER_ERROR_USER_CANCELED: The user canceled the secrets request. + * + * Errors returned from the secret-agent manager. + * + * These errors may be returned from operations that could cause secrets to be + * requested (such as nm_client_activate_connection()), and correspond to D-Bus + * errors in the "org.freedesktop.NetworkManager.AgentManager" namespace. + */ +typedef enum { + NM_AGENT_MANAGER_ERROR_FAILED = 0, /*< nick=Failed >*/ + NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/ + NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER, /*< nick=InvalidIdentifier >*/ + NM_AGENT_MANAGER_ERROR_NOT_REGISTERED, /*< nick=NotRegistered >*/ + NM_AGENT_MANAGER_ERROR_NO_SECRETS, /*< nick=NoSecrets >*/ + NM_AGENT_MANAGER_ERROR_USER_CANCELED, /*< nick=UserCanceled >*/ +} NMAgentManagerError; + +GQuark nm_agent_manager_error_quark (void); +#define NM_AGENT_MANAGER_ERROR (nm_agent_manager_error_quark ()) + +/** * NMConnectionError: * @NM_CONNECTION_ERROR_FAILED: unknown or unclassified error * @NM_CONNECTION_ERROR_SETTING_NOT_FOUND: the #NMConnection object diff --git a/libnm/libnm.ver b/libnm/libnm.ver index 487225c95e..9e50b15380 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -32,6 +32,8 @@ global: nm_active_connection_get_uuid; nm_active_connection_get_vpn; nm_active_connection_state_get_type; + nm_agent_manager_error_get_type; + nm_agent_manager_error_quark; nm_bluetooth_capabilities_get_type; nm_client_activate_connection_async; nm_client_activate_connection_finish; diff --git a/libnm/tests/test-secret-agent.c b/libnm/tests/test-secret-agent.c index a1ce5d5324..899df536a4 100644 --- a/libnm/tests/test-secret-agent.c +++ b/libnm/tests/test-secret-agent.c @@ -354,10 +354,7 @@ connection_activated_none_cb (GObject *c, GError *error = NULL; ac = nm_client_activate_connection_finish (sadata->client, result, &error); - - g_assert (error != NULL); - g_dbus_error_strip_remote_error (error); - g_assert_cmpstr (error->message, ==, "No secret agent available"); + g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_NO_SECRETS); g_main_loop_quit (sadata->loop); } @@ -403,11 +400,7 @@ connection_activated_no_secrets_cb (GObject *c, GError *error = NULL; ac = nm_client_activate_connection_finish (sadata->client, result, &error); - - g_assert (error != NULL); - g_dbus_error_strip_remote_error (error); - g_assert_cmpstr (error->message, ==, "No secrets provided"); - + g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_NO_SECRETS); g_main_loop_quit (sadata->loop); } @@ -442,11 +435,7 @@ connection_activated_cancel_cb (GObject *c, GError *error = NULL; ac = nm_client_activate_connection_finish (sadata->client, result, &error); - - g_assert (error != NULL); - g_dbus_error_strip_remote_error (error); - g_assert_cmpstr (error->message, ==, "User canceled"); - + g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_USER_CANCELED); g_main_loop_quit (sadata->loop); } diff --git a/src/Makefile.am b/src/Makefile.am index 8ea71c313e..d568c00a46 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -276,7 +276,7 @@ endif GLIB_GENERATED = nm-enum-types.h nm-enum-types.c -GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM +GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM --fhead '\#include <nm-core-enum-types.h>\n' GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM nm_enum_types_sources = $(nm_sources) diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 1076ae2143..3028e42871 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -94,20 +94,6 @@ static void impl_agent_manager_unregister (NMAgentManager *self, #include "nm-agent-manager-glue.h" -/********************************************************************/ - -#define NM_AGENT_MANAGER_ERROR (nm_agent_manager_error_quark ()) - -static GQuark -nm_agent_manager_error_quark (void) -{ - static GQuark ret = 0; - - if (G_UNLIKELY (ret == 0)) - ret = g_quark_from_static_string ("nm-agent-manager-error"); - return ret; -} - /*************************************************************/ static gboolean @@ -293,7 +279,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self, subject = nm_auth_subject_new_unix_process_from_context (context); if (!subject) { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, - NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN, + NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, "Unable to determine request sender and UID."); goto done; } @@ -305,7 +291,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self, NULL, &local)) { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, - NM_AGENT_MANAGER_ERROR_SESSION_NOT_FOUND, + NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, local && local->message ? local->message : "Session not found"); goto done; } @@ -326,7 +312,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self, agent = nm_secret_agent_new (context, subject, identifier, capabilities); if (!agent) { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, - NM_AGENT_MANAGER_ERROR_INTERNAL_ERROR, + NM_AGENT_MANAGER_ERROR_FAILED, "Failed to initialize the agent"); goto done; } @@ -344,7 +330,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self, priv->chains = g_slist_append (priv->chains, chain); } else { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, - NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN, + NM_AGENT_MANAGER_ERROR_FAILED, "Unable to start agent authentication."); } @@ -378,7 +364,7 @@ impl_agent_manager_unregister (NMAgentManager *self, NULL, NULL)) { error = g_error_new_literal (NM_AGENT_MANAGER_ERROR, - NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN, + NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, "Unable to determine request sender."); goto done; } diff --git a/src/settings/nm-agent-manager.h b/src/settings/nm-agent-manager.h index 1aac2d2ae0..ac29df2291 100644 --- a/src/settings/nm-agent-manager.h +++ b/src/settings/nm-agent-manager.h @@ -34,17 +34,6 @@ #define NM_IS_AGENT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AGENT_MANAGER)) #define NM_AGENT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AGENT_MANAGER, NMAgentManagerClass)) -typedef enum { - NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN = 0, /*< nick=SenderUnknown >*/ - NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/ - NM_AGENT_MANAGER_ERROR_SESSION_NOT_FOUND, /*< nick=SessionNotFound >*/ - NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER, /*< nick=InvalidIdentifier >*/ - NM_AGENT_MANAGER_ERROR_NOT_REGISTERED, /*< nick=NotRegistered >*/ - NM_AGENT_MANAGER_ERROR_INTERNAL_ERROR, /*< nick=InternalError >*/ - NM_AGENT_MANAGER_ERROR_NO_SECRETS, /*< nick=NoSecrets >*/ - NM_AGENT_MANAGER_ERROR_USER_CANCELED /*< nick=UserCanceled >*/ -} NMAgentManagerError; - struct _NMAgentManager { GObject parent; }; |