summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-10-15 15:27:25 -0400
committerDan Winship <danw@gnome.org>2014-10-22 08:29:09 -0400
commit86331d9ef49716a4bd2a7790289b5665eed84dd1 (patch)
tree59001bb16bc7c3d3c62a173f4c91cffa908095f3
parentd13bfe3cf8f2f8714f12949a2dfdc0bbd16a59e2 (diff)
downloadNetworkManager-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.c4
-rw-r--r--libnm-core/nm-errors.h32
-rw-r--r--libnm/libnm.ver2
-rw-r--r--libnm/tests/test-secret-agent.c17
-rw-r--r--src/Makefile.am2
-rw-r--r--src/settings/nm-agent-manager.c24
-rw-r--r--src/settings/nm-agent-manager.h11
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;
};