From: Pieter Lexis Date: Thu, 25 Sep 2025 15:39:31 +0000 (+0200) Subject: feat(dnsdist): add Lua method to dq to get TraceID X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d1c0f577762445bb2e1db977b52e40aef2748c77;p=thirdparty%2Fpdns.git feat(dnsdist): add Lua method to dq to get TraceID --- diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc index e3b37f271a..42501d8fc7 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc @@ -30,6 +30,7 @@ #include "dnsparser.hh" #include "protozero.hh" +#include static void addMetaKeyAndValuesToProtobufContent([[maybe_unused]] DNSQuestion& dnsQuestion, [[maybe_unused]] const std::string& key, [[maybe_unused]] const LuaArray>& values) { @@ -336,6 +337,20 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return true; }); + luaCtx.registerFunction (DNSQuestion::*)()>( + "getTraceID", + []([[maybe_unused]] const DNSQuestion& dnsQuestion) -> std::optional { +#ifdef DISABLE_PROTOBUF + return std::nullopt; +#else + if (dnsQuestion.ids.tracingEnabled) { + auto traceID = dnsQuestion.ids.d_OTTracer->getTraceID(); + return std::string(traceID.begin(), traceID.end()); + } + return std::nullopt; +#endif + }); + class AsynchronousObject { public: