From d31fa785c5a9e5ba6f9d2d482e79fbf72856aa4b Mon Sep 17 00:00:00 2001 From: phonedph1 Date: Wed, 20 Nov 2024 16:08:22 -0700 Subject: [PATCH] Elapsed lua binding --- pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc | 8 ++++++++ pdns/dnsdistdist/docs/reference/dq.rst | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc index bf6c47361c..3527ce7ba2 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc @@ -168,6 +168,10 @@ void setupLuaBindingsDNSQuestion(LuaContext& luaCtx) return dnsQuestion.ids.queryRealTime.getStartTime(); }); + luaCtx.registerFunction("getElapsedUs", [](const DNSQuestion& dnsQuestion) { + return dnsQuestion.ids.queryRealTime.udiff(); + }); + luaCtx.registerFunction("sendTrap", [](const DNSQuestion& dnsQuestion, boost::optional reason) { #ifdef HAVE_NET_SNMP if (g_snmpAgent != nullptr && dnsdist::configuration::getCurrentRuntimeConfiguration().d_snmpTrapsEnabled) { @@ -495,6 +499,10 @@ void setupLuaBindingsDNSQuestion(LuaContext& luaCtx) return dnsResponse.ids.queryRealTime.getStartTime(); }); + luaCtx.registerFunction("getElapsedUs", [](const DNSResponse& dnsResponse) { + return dnsResponse.ids.queryRealTime.udiff(); + }); + luaCtx.registerFunction("sendTrap", [](const DNSResponse& dnsResponse, boost::optional reason) { #ifdef HAVE_NET_SNMP if (g_snmpAgent != nullptr && dnsdist::configuration::getCurrentRuntimeConfiguration().d_snmpTrapsEnabled) { diff --git a/pdns/dnsdistdist/docs/reference/dq.rst b/pdns/dnsdistdist/docs/reference/dq.rst index 69bd0a2bb9..c66f1257ad 100644 --- a/pdns/dnsdistdist/docs/reference/dq.rst +++ b/pdns/dnsdistdist/docs/reference/dq.rst @@ -131,6 +131,14 @@ This state can be modified from the various hooks. :returns: A table of EDNSOptionView objects, indexed on the ECS Option code + .. method:: DNSQuestion::getElapsedUs -> double + + .. versionadded:: 2.0.0 + + Return the amount of time that has elapsed since the query was received. + + :returns: A double indicating elapsed time in microseconds + .. method:: DNSQuestion:getHTTPHeaders() -> table .. versionadded:: 1.4.0 -- 2.47.2