From ac2eb0f226e7b49287638a0b7a8c2e9494bf4561 Mon Sep 17 00:00:00 2001 From: Vicky Shrestha Date: Fri, 15 Dec 2017 20:37:15 -0800 Subject: [PATCH] Add query packet size to kr_request This is useful when we do logging from the finish layer --- daemon/lua/kres-gen.lua | 1 + daemon/worker.c | 4 ++++ lib/resolve.h | 1 + 3 files changed, 6 insertions(+) diff --git a/daemon/lua/kres-gen.lua b/daemon/lua/kres-gen.lua index b76e5eb17..d1bb444dd 100644 --- a/daemon/lua/kres-gen.lua +++ b/daemon/lua/kres-gen.lua @@ -145,6 +145,7 @@ struct kr_request { const knot_pkt_t *packet; const knot_rrset_t *opt; _Bool tcp; + size_t size; } qsource; struct { unsigned int rtt; diff --git a/daemon/worker.c b/daemon/worker.c index 3b8f0959a..93fdb6903 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -285,6 +285,7 @@ static struct qr_task *qr_task_create(struct worker_ctx *worker, uv_handle_t *ha task->req.qsource.dst_addr = NULL; task->req.qsource.packet = NULL; task->req.qsource.opt = NULL; + task->req.qsource.size = 0; /* Remember query source addr */ if (addr) { size_t addr_len = sizeof(struct sockaddr_in); @@ -365,6 +366,9 @@ static int qr_task_start(struct qr_task *task, knot_pkt_t *query) answer_max = MAX(knot_edns_get_payload(query->opt_rr), KNOT_WIRE_MIN_PKTSIZE); } + /* Remember query packet size */ + task->req.qsource.size = query->size; + knot_pkt_t *answer = knot_pkt_new(NULL, answer_max, &task->req.pool); if (!answer) { return kr_error(ENOMEM); diff --git a/lib/resolve.h b/lib/resolve.h index ab7b53e19..41c6433ff 100644 --- a/lib/resolve.h +++ b/lib/resolve.h @@ -189,6 +189,7 @@ struct kr_request { const knot_pkt_t *packet; const knot_rrset_t *opt; bool tcp; /**< true if the request is on tcp; only meaningful if (dst_addr) */ + size_t size; /**< query packet size */ } qsource; struct { unsigned rtt; /**< Current upstream RTT */ -- 2.47.2