summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-04-09 17:03:58 +0200
committerThomas Haller <thaller@redhat.com>2018-04-13 09:09:46 +0200
commitf0bddb44e03aed9d9ca8be0bf63d46dd7ebda15c (patch)
treee8236143f13924807f23931b611a01faa2566913
parent798b2a7527bddadcec37b48183da313fbc961e45 (diff)
downloadNetworkManager-f0bddb44e03aed9d9ca8be0bf63d46dd7ebda15c.tar.gz
auth-manager: add helper function nm_auth_call_result_eval()
This makes NMAuthCallResult not only usable from within a NMAuthChain. It makes sense to just call nm-auth-manager directly, but then we need a way to convert the more detailed result into an NMAuthCallResult value.
-rw-r--r--src/nm-auth-manager.h25
-rw-r--r--src/nm-auth-utils.c13
-rw-r--r--src/nm-auth-utils.h9
3 files changed, 30 insertions, 17 deletions
diff --git a/src/nm-auth-manager.h b/src/nm-auth-manager.h
index b84debcd6b..fe7ee787dc 100644
--- a/src/nm-auth-manager.h
+++ b/src/nm-auth-manager.h
@@ -23,6 +23,31 @@
#include "nm-auth-subject.h"
+/*****************************************************************************/
+
+typedef enum {
+ NM_AUTH_CALL_RESULT_UNKNOWN,
+ NM_AUTH_CALL_RESULT_YES,
+ NM_AUTH_CALL_RESULT_AUTH,
+ NM_AUTH_CALL_RESULT_NO,
+} NMAuthCallResult;
+
+static inline NMAuthCallResult
+nm_auth_call_result_eval (gboolean is_authorized,
+ gboolean is_challenge,
+ GError *error)
+{
+ if (error)
+ return NM_AUTH_CALL_RESULT_UNKNOWN;
+ if (is_authorized)
+ return NM_AUTH_CALL_RESULT_YES;
+ if (is_challenge)
+ return NM_AUTH_CALL_RESULT_AUTH;
+ return NM_AUTH_CALL_RESULT_NO;
+}
+
+/*****************************************************************************/
+
#define NM_TYPE_AUTH_MANAGER (nm_auth_manager_get_type ())
#define NM_AUTH_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_AUTH_MANAGER, NMAuthManager))
#define NM_AUTH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_AUTH_MANAGER, NMAuthManagerClass))
diff --git a/src/nm-auth-utils.c b/src/nm-auth-utils.c
index 83206352cd..c04dd987a0 100644
--- a/src/nm-auth-utils.c
+++ b/src/nm-auth-utils.c
@@ -247,7 +247,7 @@ pk_call_cb (NMAuthManager *auth_manager,
gpointer user_data)
{
AuthCall *call;
- NMAuthCallResult call_result = NM_AUTH_CALL_RESULT_UNKNOWN;
+ NMAuthCallResult call_result;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
return;
@@ -262,17 +262,10 @@ pk_call_cb (NMAuthManager *auth_manager,
/* Don't ruin the chain. Just leave the result unknown. */
nm_log_warn (LOGD_CORE, "error requesting auth for %s: %s",
call->permission, error->message);
- } else {
- if (is_authorized) {
- /* Caller has the permission */
- call_result = NM_AUTH_CALL_RESULT_YES;
- } else if (is_challenge) {
- /* Caller could authenticate to get the permission */
- call_result = NM_AUTH_CALL_RESULT_AUTH;
- } else
- call_result = NM_AUTH_CALL_RESULT_NO;
}
+ call_result = nm_auth_call_result_eval (is_authorized, is_challenge, error);
+
nm_auth_chain_set_data (call->chain, call->permission, GUINT_TO_POINTER (call_result), NULL);
auth_call_complete (call);
diff --git a/src/nm-auth-utils.h b/src/nm-auth-utils.h
index 808da86a51..a641c49dfe 100644
--- a/src/nm-auth-utils.h
+++ b/src/nm-auth-utils.h
@@ -23,14 +23,9 @@
#include "nm-connection.h"
-typedef struct NMAuthChain NMAuthChain;
+#include "nm-auth-manager.h"
-typedef enum {
- NM_AUTH_CALL_RESULT_UNKNOWN,
- NM_AUTH_CALL_RESULT_YES,
- NM_AUTH_CALL_RESULT_AUTH,
- NM_AUTH_CALL_RESULT_NO,
-} NMAuthCallResult;
+typedef struct NMAuthChain NMAuthChain;
typedef void (*NMAuthChainResultFunc) (NMAuthChain *chain,
GError *error,