]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
add getPoolNames() function
authorChristof Chen <christof@chen.de>
Fri, 7 Oct 2022 18:32:37 +0000 (20:32 +0200)
committerChristof Chen <christof@chen.de>
Fri, 7 Oct 2022 18:32:37 +0000 (20:32 +0200)
pdns/dnsdist-console.cc
pdns/dnsdist-lua.cc

index bf802fc85668c78b9b34f4e43116c372ce6f1613..ed2ab692e7b81fb732615df231ea9fe48eea39bc 100644 (file)
@@ -526,6 +526,7 @@ const std::vector<ConsoleKeyword> g_consoleKeywords{
   { "getOutgoingTLSSessionCacheSize", true, "", "returns the number of TLS sessions (for outgoing connections) currently cached" },
   { "getPool", true, "name", "return the pool named `name`, or \"\" for the default pool" },
   { "getPoolServers", true, "pool", "return servers part of this pool" },
+  { "getPoolNames", true, "", "returns a table with all the pool names" },
   { "getQueryCounters", true, "[max=10]", "show current buffer of query counters, limited by 'max' if provided" },
   { "getResponseRing", true, "", "return the current content of the response ring" },
   { "getRespRing", true, "", "return the qname/rcode content of the response ring" },
index 7f5ddeece61fc3cc99495f38814b5b008ada93d1..8f8b7caa59925a598506b1570a9a5dbcccd54486 100644 (file)
@@ -1735,6 +1735,19 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck)
     }
   });
 
+  luaCtx.writeFunction("getPoolNames", []() {
+    setLuaNoSideEffect();
+    LuaArray<std::string> ret;
+        int count = 1;
+    const auto localPools = g_pools.getCopy();
+    for (const auto& entry : localPools) {
+      const string& name = entry.first;
+      ret.push_back(make_pair(count++, name));
+
+    }
+    return ret;
+  });
+
   luaCtx.writeFunction("getPool", [client](const string& poolName) {
     if (client) {
       return std::make_shared<ServerPool>();