From: Remi Gacogne Date: Tue, 24 Dec 2024 10:57:28 +0000 (+0100) Subject: dnsdist: Properly handle built-in LB policies X-Git-Tag: dnsdist-2.0.0-alpha1~160^2~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc40ab24918bb2acaabbb1c9ad113389c2f248ef;p=thirdparty%2Fpdns.git dnsdist: Properly handle built-in LB policies --- diff --git a/pdns/dnsdistdist/dnsdist-lbpolicies.cc b/pdns/dnsdistdist/dnsdist-lbpolicies.cc index 298565cdd6..d5659dae5d 100644 --- a/pdns/dnsdistdist/dnsdist-lbpolicies.cc +++ b/pdns/dnsdistdist/dnsdist-lbpolicies.cc @@ -401,3 +401,18 @@ std::shared_ptr ServerPolicy::getSelectedBackend(const ServerPo return selectedBackend; } + +namespace dnsdist::lbpolicies +{ +const std::vector>& getBuiltInPolicies() +{ + static const std::vector> s_policies{ + std::make_shared("firstAvailable", firstAvailable, false), + std::make_shared("roundrobin", roundrobin, false), + std::make_shared("wrandom", wrandom, false), + std::make_shared("whashed", whashed, false), + std::make_shared("chashed", chashed, false), + std::make_shared("leastOutstanding", leastOutstanding, false)}; + return s_policies; +} +} diff --git a/pdns/dnsdistdist/dnsdist-lbpolicies.hh b/pdns/dnsdistdist/dnsdist-lbpolicies.hh index 3ddc4ec592..d975988742 100644 --- a/pdns/dnsdistdist/dnsdist-lbpolicies.hh +++ b/pdns/dnsdistdist/dnsdist-lbpolicies.hh @@ -106,3 +106,10 @@ std::shared_ptr whashedFromHash(const ServerPolicy::NumberedSer std::shared_ptr chashed(const ServerPolicy::NumberedServerVector& servers, const DNSQuestion* dq); std::shared_ptr chashedFromHash(const ServerPolicy::NumberedServerVector& servers, size_t hash); std::shared_ptr roundrobin(const ServerPolicy::NumberedServerVector& servers, const DNSQuestion* dq); + +#include + +namespace dnsdist::lbpolicies +{ +const std::vector>& getBuiltInPolicies(); +} diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings.cc b/pdns/dnsdistdist/dnsdist-lua-bindings.cc index f08746d9f5..8f966b1a12 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings.cc @@ -87,14 +87,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) luaCtx.registerFunction("toString", &ServerPolicy::toString); luaCtx.registerFunction("__tostring", &ServerPolicy::toString); - const std::array, 6> policies = { - std::make_shared("firstAvailable", firstAvailable, false), - std::make_shared("roundrobin", roundrobin, false), - std::make_shared("wrandom", wrandom, false), - std::make_shared("whashed", whashed, false), - std::make_shared("chashed", chashed, false), - std::make_shared("leastOutstanding", leastOutstanding, false)}; - for (const auto& policy : policies) { + for (const auto& policy : dnsdist::lbpolicies::getBuiltInPolicies()) { luaCtx.writeVariable(policy->d_name, policy); }