From: Remi Gacogne Date: Tue, 23 Jun 2020 12:48:54 +0000 (+0200) Subject: dnsdist: Add Lua bindings to get a server's latency X-Git-Tag: rec-4.4.0-beta1~55^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e45ea91a2be050bfd8ec69ef2de7219bb2b56fc2;p=thirdparty%2Fpdns.git dnsdist: Add Lua bindings to get a server's latency --- 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.