From e45ea91a2be050bfd8ec69ef2de7219bb2b56fc2 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 23 Jun 2020 14:48:54 +0200 Subject: [PATCH] dnsdist: Add Lua bindings to get a server's latency --- pdns/dnsdist-lua-bindings.cc | 1 + pdns/dnsdistdist/dnsdist-lua-ffi-interface.h | 1 + pdns/dnsdistdist/dnsdist-lua-ffi.cc | 5 +++++ pdns/dnsdistdist/docs/reference/config.rst | 8 ++++++++ 4 files changed, 15 insertions(+) diff --git a/pdns/dnsdist-lua-bindings.cc b/pdns/dnsdist-lua-bindings.cc index bc66083f1b..ba4cf9eac4 100644 --- a/pdns/dnsdist-lua-bindings.cc +++ b/pdns/dnsdist-lua-bindings.cc @@ -102,6 +102,7 @@ void setupLuaBindings(bool client) s->pools.erase(pool); }); g_lua.registerFunction("getOutstanding", [](const DownstreamState& s) { return s.outstanding.load(); }); + g_lua.registerFunction("getLatency", [](const DownstreamState& s) { return s.latencyUsec; }); g_lua.registerFunction("isUp", &DownstreamState::isUp); g_lua.registerFunction("setDown", &DownstreamState::setDown); g_lua.registerFunction("setUp", &DownstreamState::setUp); diff --git a/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h b/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h index d56b73510a..efa1c40dd0 100644 --- a/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h +++ b/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h @@ -112,3 +112,4 @@ const char* dnsdist_ffi_server_get_name(const dnsdist_ffi_server_t* server) __at const char* dnsdist_ffi_server_get_name_with_addr(const dnsdist_ffi_server_t* server) __attribute__ ((visibility ("default"))); int dnsdist_ffi_server_get_weight(const dnsdist_ffi_server_t* server) __attribute__ ((visibility ("default"))); int dnsdist_ffi_server_get_order(const dnsdist_ffi_server_t* server) __attribute__ ((visibility ("default"))); +double dnsdist_ffi_server_get_latency(const dnsdist_ffi_server_t* server) __attribute__ ((visibility ("default"))); diff --git a/pdns/dnsdistdist/dnsdist-lua-ffi.cc b/pdns/dnsdistdist/dnsdist-lua-ffi.cc index f709feaa5d..a40a4ab196 100644 --- a/pdns/dnsdistdist/dnsdist-lua-ffi.cc +++ b/pdns/dnsdistdist/dnsdist-lua-ffi.cc @@ -468,6 +468,11 @@ int dnsdist_ffi_server_get_order(const dnsdist_ffi_server_t* server) return server->server->order; } +double dnsdist_ffi_server_get_latency(const dnsdist_ffi_server_t* server) +{ + return server->server->latencyUsec; +} + bool dnsdist_ffi_server_is_up(const dnsdist_ffi_server_t* server) { return server->server->isUp(); diff --git a/pdns/dnsdistdist/docs/reference/config.rst b/pdns/dnsdistdist/docs/reference/config.rst index 2a036de868..fdb00f3aa0 100644 --- a/pdns/dnsdistdist/docs/reference/config.rst +++ b/pdns/dnsdistdist/docs/reference/config.rst @@ -515,6 +515,14 @@ A server object returned by :func:`getServer` can be manipulated with these func :param str pool: The pool to add the server to + .. method:: Server:getLatency() -> double + + .. versionadded:: 1.6.0 + + Return the average latency of this server over the last 128 UDP queries, in microseconds. + + :returns: The number of outstanding queries + .. method:: Server:getName() -> string Get the name of this server. -- 2.47.2