diff options
author | Thomas Haller <thaller@redhat.com> | 2018-04-09 17:03:58 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-04-13 09:09:46 +0200 |
commit | f0bddb44e03aed9d9ca8be0bf63d46dd7ebda15c (patch) | |
tree | e8236143f13924807f23931b611a01faa2566913 | |
parent | 798b2a7527bddadcec37b48183da313fbc961e45 (diff) | |
download | NetworkManager-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.h | 25 | ||||
-rw-r--r-- | src/nm-auth-utils.c | 13 | ||||
-rw-r--r-- | src/nm-auth-utils.h | 9 |
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, |