X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=meta-starlingx%2Fmeta-stx-distro%2Frecipes-security%2Fgssproxy%2Ffiles%2Fserver-Add-detailed-request-logging.patch;fp=meta-starlingx%2Fmeta-stx-distro%2Frecipes-security%2Fgssproxy%2Ffiles%2Fserver-Add-detailed-request-logging.patch;h=778c755720d6354b351e06201a8f3bd4193d6003;hb=e0634c6eaf2fe2641a0fb90e84a5defb880b1335;hp=0000000000000000000000000000000000000000;hpb=210d0f78485e760dffcdd3f630f59cec797f3f11;p=pti%2Frtp.git diff --git a/meta-starlingx/meta-stx-distro/recipes-security/gssproxy/files/server-Add-detailed-request-logging.patch b/meta-starlingx/meta-stx-distro/recipes-security/gssproxy/files/server-Add-detailed-request-logging.patch new file mode 100644 index 0000000..778c755 --- /dev/null +++ b/meta-starlingx/meta-stx-distro/recipes-security/gssproxy/files/server-Add-detailed-request-logging.patch @@ -0,0 +1,123 @@ +From f413cc257c6c1e60090c72163152ae7fd2180c41 Mon Sep 17 00:00:00 2001 +From: Alexander Scheel +Date: Fri, 4 Aug 2017 16:09:20 -0400 +Subject: [PATCH] [server] Add detailed request logging + +Add request logging to track requests through gssproxy. Requests are +logged as they are read, processed, handled, and replies sent. These +are identified by buffer memory address and size. + +Signed-off-by: Alexander Scheel +Reviewed-by: Simo Sorce +[rharwood@redhat.com: commit message cleanups, rebase] +Reviewed-by: Robbie Harwood +Merges: #205 +(cherry picked from commit 4097dafad3f276c3cf7b1255fe0540e16d59ae03) +--- + proxy/src/gp_rpc_process.c | 6 ++++++ + proxy/src/gp_socket.c | 12 ++++++++++++ + proxy/src/gp_workers.c | 5 +++++ + 3 files changed, 23 insertions(+) + +diff --git a/proxy/src/gp_rpc_process.c b/proxy/src/gp_rpc_process.c +index 0ea17f0..eaffc55 100644 +--- a/proxy/src/gp_rpc_process.c ++++ b/proxy/src/gp_rpc_process.c +@@ -372,9 +372,12 @@ int gp_rpc_process_call(struct gp_call_ctx *gpcall, + xdrmem_create(&xdr_reply_ctx, reply_buffer, MAX_RPC_SIZE, XDR_ENCODE); + + /* decode request */ ++ GPDEBUGN(3, "[status] Processing request [%p (%zu)]\n", inbuf, inlen); + ret = gp_rpc_decode_call(&xdr_call_ctx, &xid, &proc, &arg, &acc, &rej); + if (!ret) { + /* execute request */ ++ GPDEBUGN(3, "[status] Executing request %d (%s) from [%p (%zu)]\n", ++ proc, gp_rpc_procname(proc), inbuf, inlen); + ret = gp_rpc_execute(gpcall, proc, &arg, &res); + if (ret) { + acc = GP_RPC_SYSTEM_ERR; +@@ -388,6 +391,9 @@ int gp_rpc_process_call(struct gp_call_ctx *gpcall, + /* return encoded buffer */ + ret = gp_rpc_return_buffer(&xdr_reply_ctx, + reply_buffer, outbuf, outlen); ++ GPDEBUGN(3, "[status] Returned buffer %d (%s) from [%p (%zu)]: " ++ "[%p (%zu)]\n", proc, gp_rpc_procname(proc), inbuf, inlen, ++ *outbuf, *outlen); + } + /* free resources */ + gp_rpc_free_xdrs(proc, &arg, &res); +diff --git a/proxy/src/gp_socket.c b/proxy/src/gp_socket.c +index 5064e51..8675a0e 100644 +--- a/proxy/src/gp_socket.c ++++ b/proxy/src/gp_socket.c +@@ -441,6 +441,8 @@ void gp_socket_send_data(verto_ctx *vctx, struct gp_conn *conn, + + wbuf = calloc(1, sizeof(struct gp_buffer)); + if (!wbuf) { ++ GPDEBUGN(3, "[status] OOM in gp_socket_send_data: %p (%zu)\n", ++ buffer, buflen); + /* too bad, must kill the client connection now */ + gp_conn_free(conn); + return; +@@ -467,6 +469,8 @@ static void gp_socket_write(verto_ctx *vctx, verto_ev *ev) + + vecs = 0; + ++ GPDEBUGN(3, "[status] Sending data: %p (%zu)\n", wbuf->data, wbuf->size); ++ + if (wbuf->pos == 0) { + /* first write, send the buffer size as packet header */ + size = wbuf->size | FRAGMENT_BIT; +@@ -489,6 +493,9 @@ static void gp_socket_write(verto_ctx *vctx, verto_ev *ev) + gp_socket_schedule_write(vctx, wbuf); + } else { + /* error on socket, close and release it */ ++ GPDEBUGN(3, "[status] Error %d in gp_socket_write on writing for " ++ "[%p (%zu:%zu)]\n", errno, wbuf->data, wbuf->pos, ++ wbuf->size); + gp_conn_free(wbuf->conn); + gp_buffer_free(wbuf); + } +@@ -498,6 +505,8 @@ static void gp_socket_write(verto_ctx *vctx, verto_ev *ev) + if (wn < (ssize_t) sizeof(size)) { + /* don't bother trying to handle sockets that can't + * buffer even 4 bytes */ ++ GPDEBUGN(3, "[status] Sending data [%p (%zu)]: failed with short " ++ "write of %d\n", wbuf->data, wbuf->size, wn); + gp_conn_free(wbuf->conn); + gp_buffer_free(wbuf); + return; +@@ -505,6 +514,9 @@ static void gp_socket_write(verto_ctx *vctx, verto_ev *ev) + wn -= sizeof(size); + } + ++ GPDEBUGN(3, "[status] Sending data [%p (%zu)]: successful write of %d\n", ++ wbuf->data, wbuf->size, wn); ++ + wbuf->pos += wn; + if (wbuf->size > wbuf->pos) { + /* short write, reschedule */ +diff --git a/proxy/src/gp_workers.c b/proxy/src/gp_workers.c +index d37e57c..2a33c21 100644 +--- a/proxy/src/gp_workers.c ++++ b/proxy/src/gp_workers.c +@@ -319,6 +319,7 @@ static void gp_handle_reply(verto_ctx *vctx, verto_ev *ev) + break; + + case GP_QUERY_OUT: ++ GPDEBUGN(3, "[status] Handling query reply: %p (%zu)\n", q->buffer, q->buflen); + gp_socket_send_data(vctx, q->conn, q->buffer, q->buflen); + gp_query_free(q, false); + break; +@@ -381,7 +382,11 @@ static void *gp_worker_main(void *pvt) + gp_debug_set_conn_id(gp_conn_get_cid(q->conn)); + + /* handle the client request */ ++ GPDEBUGN(3, "[status] Handling query input: %p (%zu)\n", q->buffer, ++ q->buflen); + gp_handle_query(t->pool, q); ++ GPDEBUGN(3 ,"[status] Handling query output: %p (%zu)\n", q->buffer, ++ q->buflen); + + /* now get lock on main queue, to play with the reply list */ + /* ======> POOL LOCK */