diff options
author | Günther Deschner <gdeschner@redhat.com> | 2012-07-26 12:43:47 +0200 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2013-03-14 13:42:50 -0400 |
commit | 27d1143ba62ebc2f6264757381e495548e79ebb4 (patch) | |
tree | 4b6aa7cf39b7ffe6b660f517fd81704cb7556f3f | |
parent | 439cdc5dd9e67badb9c5ed9c3df8a5efed6f314a (diff) | |
download | gss-proxy-27d1143ba62ebc2f6264757381e495548e79ebb4.tar.gz gss-proxy-27d1143ba62ebc2f6264757381e495548e79ebb4.tar.xz gss-proxy-27d1143ba62ebc2f6264757381e495548e79ebb4.zip |
Add debug statement when gp_rpc_execute is called.
Add code to print the name of tehe GSSX function being executed.
Signed-off-by: Simo Sorce <simo@redhat.com>
-rw-r--r-- | proxy/rpcgen/gss_proxy.h | 3 | ||||
-rw-r--r-- | proxy/src/gp_rpc_process.c | 78 |
2 files changed, 64 insertions, 17 deletions
diff --git a/proxy/rpcgen/gss_proxy.h b/proxy/rpcgen/gss_proxy.h index 0bc8361..f13ea0b 100644 --- a/proxy/rpcgen/gss_proxy.h +++ b/proxy/rpcgen/gss_proxy.h @@ -524,6 +524,9 @@ typedef struct gssx_res_wrap_size_limit gssx_res_wrap_size_limit; #define GSSPROXY 400112 #define GSSPROXYVERS 1 +#define GSSX_PROC_MIN 1 +#define GSSX_PROC_MAX 15 + #if defined(__STDC__) || defined(__cplusplus) #define GSSX_INDICATE_MECHS 1 extern gssx_res_indicate_mechs * gssx_indicate_mechs_1(gssx_arg_indicate_mechs *, CLIENT *); diff --git a/proxy/src/gp_rpc_process.c b/proxy/src/gp_rpc_process.c index f19a293..460c546 100644 --- a/proxy/src/gp_rpc_process.c +++ b/proxy/src/gp_rpc_process.c @@ -28,86 +28,120 @@ typedef int (*gp_exec_fn)(gp_exec_std_args); struct gp_rpc_fn_set { + uint32_t proc; + const char *proc_name; xdrproc_t arg_fn; xdrproc_t res_fn; gp_exec_fn exec_fn; } gp_xdr_set[] = { - { /* NULLPROC */ + { + 0, + "NULLPROC", (xdrproc_t)xdr_void, (xdrproc_t)xdr_void, NULL }, - { /* GSSX_INDICATE_MECHS */ + { + GSSX_INDICATE_MECHS, + "GSSX_INDICATE_MECHS", (xdrproc_t)xdr_gssx_arg_indicate_mechs, (xdrproc_t)xdr_gssx_res_indicate_mechs, gp_indicate_mechs }, - { /* GSSX_GET_CALL_CONTEXT */ + { + GSSX_GET_CALL_CONTEXT, + "GSSX_GET_CALL_CONTEXT", (xdrproc_t)xdr_gssx_arg_get_call_context, (xdrproc_t)xdr_gssx_res_get_call_context, gp_get_call_context }, - { /* GSSX_IMPORT_AND_CANON_NAME */ + { + GSSX_IMPORT_AND_CANON_NAME, + "GSSX_IMPORT_AND_CANON_NAME", (xdrproc_t)xdr_gssx_arg_import_and_canon_name, (xdrproc_t)xdr_gssx_res_import_and_canon_name, gp_import_and_canon_name }, - { /* GSSX_EXPORT_CRED */ + { + GSSX_EXPORT_CRED, + "GSSX_EXPORT_CRED", (xdrproc_t)xdr_gssx_arg_export_cred, (xdrproc_t)xdr_gssx_res_export_cred, gp_export_cred }, - { /* GSSX_IMPORT_CRED */ + { + GSSX_IMPORT_CRED, + "GSSX_IMPORT_CRED", (xdrproc_t)xdr_gssx_arg_import_cred, (xdrproc_t)xdr_gssx_res_import_cred, gp_import_cred }, - { /* GSSX_ACQUIRE_CRED */ + { + GSSX_ACQUIRE_CRED, + "GSSX_ACQUIRE_CRED", (xdrproc_t)xdr_gssx_arg_acquire_cred, (xdrproc_t)xdr_gssx_res_acquire_cred, gp_acquire_cred }, - { /* GSSX_STORE_CRED */ + { + GSSX_STORE_CRED, + "GSSX_STORE_CRED", (xdrproc_t)xdr_gssx_arg_store_cred, (xdrproc_t)xdr_gssx_res_store_cred, gp_store_cred }, - { /* GSSX_INIT_SEC_CONTEXT */ + { + GSSX_INIT_SEC_CONTEXT, + "GSSX_INIT_SEC_CONTEXT", (xdrproc_t)xdr_gssx_arg_init_sec_context, (xdrproc_t)xdr_gssx_res_init_sec_context, gp_init_sec_context }, - { /* GSSX_ACCEPT_SEC_CONTEXT */ + { + GSSX_ACCEPT_SEC_CONTEXT, + "GSSX_ACCEPT_SEC_CONTEXT", (xdrproc_t)xdr_gssx_arg_accept_sec_context, (xdrproc_t)xdr_gssx_res_accept_sec_context, gp_accept_sec_context }, - { /* GSSX_RELEASE_HANDLE */ + { + GSSX_RELEASE_HANDLE, + "GSSX_RELEASE_HANDLE", (xdrproc_t)xdr_gssx_arg_release_handle, (xdrproc_t)xdr_gssx_res_release_handle, gp_release_handle }, - { /* GSSX_GET_MIC */ + { + GSSX_GET_MIC, + "GSSX_GET_MIC", (xdrproc_t)xdr_gssx_arg_get_mic, (xdrproc_t)xdr_gssx_res_get_mic, gp_get_mic }, - { /* GSSX_VERIFY */ + { + GSSX_VERIFY, + "GSSX_VERIFY", (xdrproc_t)xdr_gssx_arg_verify_mic, (xdrproc_t)xdr_gssx_res_verify_mic, gp_verify_mic }, - { /* GSSX_WRAP */ + { + GSSX_WRAP, + "GSSX_WRAP", (xdrproc_t)xdr_gssx_arg_wrap, (xdrproc_t)xdr_gssx_res_wrap, gp_wrap }, - { /* GSSX_UNWRAP */ + { + GSSX_UNWRAP, + "GSSX_UNWRAP", (xdrproc_t)xdr_gssx_arg_unwrap, (xdrproc_t)xdr_gssx_res_unwrap, gp_unwrap }, - { /* GSSX_WRAP_SIZE_LIMIT */ + { + GSSX_WRAP_SIZE_LIMIT, + "GSSX_WRAP_SIZE_LIMIT", (xdrproc_t)xdr_gssx_arg_wrap_size_limit, (xdrproc_t)xdr_gssx_res_wrap_size_limit, gp_wrap_size_limit @@ -157,7 +191,7 @@ static int gp_rpc_decode_call_header(XDR *xdr_call_ctx, ret = EINVAL; goto done; } - if (chdr->proc < 1 || chdr->proc > 15) { + if (chdr->proc < GSSX_PROC_MIN || chdr->proc > GSSX_PROC_MAX) { *acc = GP_RPC_PROC_UNAVAIL; ret = EINVAL; goto done; @@ -289,10 +323,20 @@ static int gp_rpc_encode_reply(XDR *xdr_reply_ctx, return 0; } +static const char *gp_rpc_procname(uint32_t proc) +{ + if (proc > GSSX_PROC_MAX) { + return NULL; + } + + return gp_xdr_set[proc].proc_name; +} + static int gp_rpc_execute(struct gssproxy_ctx *gpctx, struct gp_service *gpsvc, uint32_t proc, union gp_rpc_arg *arg, union gp_rpc_res *res) { + GPDEBUG("gp_rpc_execute: executing %d (%s)\n", proc, gp_rpc_procname(proc)); return gp_xdr_set[proc].exec_fn(gpctx, gpsvc, arg, res); } |