]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Merge pull request #9273 from rgacogne/ddist-server-latency-bindings
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 31 Jul 2020 12:57:00 +0000 (14:57 +0200)
committerGitHub <noreply@github.com>
Fri, 31 Jul 2020 12:57:00 +0000 (14:57 +0200)
dnsdist: Add Lua bindings to get a server's latency

pdns/dnsdist-lua-bindings.cc
pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
pdns/dnsdistdist/dnsdist-lua-ffi.cc
pdns/dnsdistdist/docs/reference/config.rst

index bc66083f1b226f41cb3b0bf86400f5d67a622143..ba4cf9eac4b2c959d7a40706fbd5a2902d63f797 100644 (file)
@@ -102,6 +102,7 @@ void setupLuaBindings(bool client)
       s->pools.erase(pool);
     });
   g_lua.registerFunction<uint64_t(DownstreamState::*)()>("getOutstanding", [](const DownstreamState& s) { return s.outstanding.load(); });
+  g_lua.registerFunction<double(DownstreamState::*)()>("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);
index d56b73510ad7a0864645417ef7a2adf44fa2e400..efa1c40dd0a1ef7e2f7561eef182b20b0b552798 100644 (file)
@@ -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")));
index f709feaa5d101adb248c10c6f89ca93d19503c25..a40a4ab196ad5dd1fd9b842b55c34cfa2c63ec08 100644 (file)
@@ -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();
index ee4629de6a1684f76df52dbaab8f170436e44464..abe82b9331101571107623eddbf591139ed1336d 100644 (file)
@@ -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.