};
template<typename T, typename ActionT>
-static void addAction(GlobalStateHolder<vector<T> > *someRulActions, const luadnsrule_t& var, const std::shared_ptr<ActionT>& action, boost::optional<luaruleparams_t>& params) {
+static void addAction(GlobalStateHolder<vector<T> > *someRuleActions, const luadnsrule_t& var, const std::shared_ptr<ActionT>& action, boost::optional<luaruleparams_t>& params) {
setLuaSideEffect();
std::string name;
parseRuleParams(params, uuid, name, creationOrder);
auto rule = makeRule(var);
- someRulActions->modify([&rule, &action, &uuid, creationOrder, &name](vector<T>& rulactions){
- rulactions.push_back({std::move(rule), std::move(action), std::move(name), std::move(uuid), creationOrder});
+ someRuleActions->modify([&rule, &action, &uuid, creationOrder, &name](vector<T>& ruleactions){
+ ruleactions.push_back({std::move(rule), std::move(action), std::move(name), std::move(uuid), creationOrder});
});
}
throw std::runtime_error("addAction() can only be called with query-related actions, not response-related ones. Are you looking for addResponseAction()?");
}
- addAction(&g_rulactions, var, boost::get<std::shared_ptr<DNSAction> >(era), params);
+ addAction(&g_ruleactions, var, boost::get<std::shared_ptr<DNSAction> >(era), params);
});
luaCtx.writeFunction("addResponseAction", [](luadnsrule_t var, boost::variant<std::shared_ptr<DNSAction>, std::shared_ptr<DNSResponseAction> > era, boost::optional<luaruleparams_t> params) {
throw std::runtime_error("addResponseAction() can only be called with response-related actions, not query-related ones. Are you looking for addAction()?");
}
- addAction(&g_resprulactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
+ addAction(&g_respruleactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
});
luaCtx.writeFunction("addCacheHitResponseAction", [](luadnsrule_t var, boost::variant<std::shared_ptr<DNSAction>, std::shared_ptr<DNSResponseAction>> era, boost::optional<luaruleparams_t> params) {
throw std::runtime_error("addCacheHitResponseAction() can only be called with response-related actions, not query-related ones. Are you looking for addAction()?");
}
- addAction(&g_cachehitresprulactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
+ addAction(&g_cachehitrespruleactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
});
luaCtx.writeFunction("addSelfAnsweredResponseAction", [](luadnsrule_t var, boost::variant<std::shared_ptr<DNSAction>, std::shared_ptr<DNSResponseAction>> era, boost::optional<luaruleparams_t> params) {
throw std::runtime_error("addSelfAnsweredResponseAction() can only be called with response-related actions, not query-related ones. Are you looking for addAction()?");
}
- addAction(&g_selfansweredresprulactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
+ addAction(&g_selfansweredrespruleactions, var, boost::get<std::shared_ptr<DNSResponseAction> >(era), params);
});
luaCtx.registerFunction<void(DNSAction::*)()const>("printStats", [](const DNSAction& ta) {
luaCtx.writeFunction("getAction", [](unsigned int num) {
setLuaNoSideEffect();
boost::optional<std::shared_ptr<DNSAction>> ret;
- auto rulactions = g_rulactions.getCopy();
- if(num < rulactions.size())
- ret=rulactions[num].d_action;
+ auto ruleactions = g_ruleactions.getCopy();
+ if(num < ruleactions.size())
+ ret=ruleactions[num].d_action;
return ret;
});
}
template<typename T>
-static void showRules(GlobalStateHolder<vector<T> > *someRulActions, boost::optional<ruleparams_t> vars) {
+static void showRules(GlobalStateHolder<vector<T> > *someRuleActions, boost::optional<ruleparams_t> vars) {
setLuaNoSideEffect();
- auto rules = someRulActions->getLocal();
+ auto rules = someRuleActions->getLocal();
g_outputBuffer += rulesToString(*rules, vars);
}
template<typename T>
-static void rmRule(GlobalStateHolder<vector<T> > *someRulActions, boost::variant<unsigned int, std::string> id) {
+static void rmRule(GlobalStateHolder<vector<T> > *someRuleActions, boost::variant<unsigned int, std::string> id) {
setLuaSideEffect();
- auto rules = someRulActions->getCopy();
+ auto rules = someRuleActions->getCopy();
if (auto str = boost::get<std::string>(&id)) {
try {
const auto uuid = getUniqueID(*str);
}
rules.erase(rules.begin()+*pos);
}
- someRulActions->setState(std::move(rules));
+ someRuleActions->setState(std::move(rules));
}
template<typename T>
-static void moveRuleToTop(GlobalStateHolder<vector<T> > *someRulActions) {
+static void moveRuleToTop(GlobalStateHolder<vector<T> > *someRuleActions) {
setLuaSideEffect();
- auto rules = someRulActions->getCopy();
+ auto rules = someRuleActions->getCopy();
if(rules.empty())
return;
auto subject = *rules.rbegin();
rules.erase(std::prev(rules.end()));
rules.insert(rules.begin(), subject);
- someRulActions->setState(std::move(rules));
+ someRuleActions->setState(std::move(rules));
}
template<typename T>
-static void mvRule(GlobalStateHolder<vector<T> > *someRespRulActions, unsigned int from, unsigned int to) {
+static void mvRule(GlobalStateHolder<vector<T> > *someRespRuleActions, unsigned int from, unsigned int to) {
setLuaSideEffect();
- auto rules = someRespRulActions->getCopy();
+ auto rules = someRespRuleActions->getCopy();
if(from >= rules.size() || to > rules.size()) {
g_outputBuffer = "Error: attempt to move rules from/to invalid index\n";
return;
--to;
rules.insert(rules.begin()+to, subject);
}
- someRespRulActions->setState(std::move(rules));
+ someRespRuleActions->setState(std::move(rules));
}
template<typename T>
luaCtx.registerFunction<string(std::shared_ptr<DNSRule>::*)()const>("toString", [](const std::shared_ptr<DNSRule>& rule) { return rule->toString(); });
luaCtx.writeFunction("showResponseRules", [](boost::optional<ruleparams_t> vars) {
- showRules(&g_resprulactions, vars);
+ showRules(&g_respruleactions, vars);
});
luaCtx.writeFunction("rmResponseRule", [](boost::variant<unsigned int, std::string> id) {
- rmRule(&g_resprulactions, id);
+ rmRule(&g_respruleactions, id);
});
luaCtx.writeFunction("mvResponseRuleToTop", []() {
- moveRuleToTop(&g_resprulactions);
+ moveRuleToTop(&g_respruleactions);
});
luaCtx.writeFunction("mvResponseRule", [](unsigned int from, unsigned int to) {
- mvRule(&g_resprulactions, from, to);
+ mvRule(&g_respruleactions, from, to);
});
luaCtx.writeFunction("showCacheHitResponseRules", [](boost::optional<ruleparams_t> vars) {
- showRules(&g_cachehitresprulactions, vars);
+ showRules(&g_cachehitrespruleactions, vars);
});
luaCtx.writeFunction("rmCacheHitResponseRule", [](boost::variant<unsigned int, std::string> id) {
- rmRule(&g_cachehitresprulactions, id);
+ rmRule(&g_cachehitrespruleactions, id);
});
luaCtx.writeFunction("mvCacheHitResponseRuleToTop", []() {
- moveRuleToTop(&g_cachehitresprulactions);
+ moveRuleToTop(&g_cachehitrespruleactions);
});
luaCtx.writeFunction("mvCacheHitResponseRule", [](unsigned int from, unsigned int to) {
- mvRule(&g_cachehitresprulactions, from, to);
+ mvRule(&g_cachehitrespruleactions, from, to);
});
luaCtx.writeFunction("showSelfAnsweredResponseRules", [](boost::optional<ruleparams_t> vars) {
- showRules(&g_selfansweredresprulactions, vars);
+ showRules(&g_selfansweredrespruleactions, vars);
});
luaCtx.writeFunction("rmSelfAnsweredResponseRule", [](boost::variant<unsigned int, std::string> id) {
- rmRule(&g_selfansweredresprulactions, id);
+ rmRule(&g_selfansweredrespruleactions, id);
});
luaCtx.writeFunction("mvSelfAnsweredResponseRuleToTop", []() {
- moveRuleToTop(&g_selfansweredresprulactions);
+ moveRuleToTop(&g_selfansweredrespruleactions);
});
luaCtx.writeFunction("mvSelfAnsweredResponseRule", [](unsigned int from, unsigned int to) {
- mvRule(&g_selfansweredresprulactions, from, to);
+ mvRule(&g_selfansweredrespruleactions, from, to);
});
luaCtx.writeFunction("rmRule", [](boost::variant<unsigned int, std::string> id) {
- rmRule(&g_rulactions, id);
+ rmRule(&g_ruleactions, id);
});
luaCtx.writeFunction("mvRuleToTop", []() {
- moveRuleToTop(&g_rulactions);
+ moveRuleToTop(&g_ruleactions);
});
luaCtx.writeFunction("mvRule", [](unsigned int from, unsigned int to) {
- mvRule(&g_rulactions, from, to);
+ mvRule(&g_ruleactions, from, to);
});
luaCtx.writeFunction("clearRules", []() {
setLuaSideEffect();
- g_rulactions.modify([](decltype(g_rulactions)::value_type& rulactions) {
- rulactions.clear();
+ g_ruleactions.modify([](decltype(g_ruleactions)::value_type& ruleactions) {
+ ruleactions.clear();
});
});
luaCtx.writeFunction("setRules", [](const std::vector<std::pair<int, std::shared_ptr<DNSDistRuleAction>>>& newruleactions) {
setLuaSideEffect();
- g_rulactions.modify([newruleactions](decltype(g_rulactions)::value_type& gruleactions) {
+ g_ruleactions.modify([newruleactions](decltype(g_ruleactions)::value_type& gruleactions) {
gruleactions.clear();
for (const auto& pair : newruleactions) {
const auto& newruleaction = pair.second;
luaCtx.writeFunction("getTopRules", [](boost::optional<unsigned int> top) {
setLuaNoSideEffect();
- auto rules = g_rulactions.getLocal();
+ auto rules = g_ruleactions.getLocal();
return getTopRules(*rules, top.get_value_or(10));
});
luaCtx.writeFunction("topRules", [](boost::optional<unsigned int> top, boost::optional<ruleparams_t> vars) {
setLuaNoSideEffect();
- auto rules = g_rulactions.getLocal();
+ auto rules = g_ruleactions.getLocal();
return rulesToString(getTopRules(*rules, top.get_value_or(10)), vars);
});
luaCtx.writeFunction("getCacheHitResponseRules", [](boost::optional<unsigned int> top) {
setLuaNoSideEffect();
- auto rules = g_cachehitresprulactions.getLocal();
+ auto rules = g_cachehitrespruleactions.getLocal();
return getTopRules(*rules, top.get_value_or(10));
});
luaCtx.writeFunction("topCacheHitRules", [](boost::optional<unsigned int> top, boost::optional<ruleparams_t> vars) {
setLuaNoSideEffect();
- auto rules = g_cachehitresprulactions.getLocal();
+ auto rules = g_cachehitrespruleactions.getLocal();
return rulesToString(getTopRules(*rules, top.get_value_or(10)), vars);
});
luaCtx.writeFunction("getTopResponseRules", [](boost::optional<unsigned int> top) {
setLuaNoSideEffect();
- auto rules = g_resprulactions.getLocal();
+ auto rules = g_respruleactions.getLocal();
return getTopRules(*rules, top.get_value_or(10));
});
luaCtx.writeFunction("topResponseRules", [](boost::optional<unsigned int> top, boost::optional<ruleparams_t> vars) {
setLuaNoSideEffect();
- auto rules = g_resprulactions.getLocal();
+ auto rules = g_respruleactions.getLocal();
return rulesToString(getTopRules(*rules, top.get_value_or(10)), vars);
});
luaCtx.writeFunction("getTopSelfAnsweredResponseRules", [](boost::optional<unsigned int> top) {
setLuaNoSideEffect();
- auto rules = g_selfansweredresprulactions.getLocal();
+ auto rules = g_selfansweredrespruleactions.getLocal();
return getTopRules(*rules, top.get_value_or(10));
});
luaCtx.writeFunction("topSelfAnsweredResponseRules", [](boost::optional<unsigned int> top, boost::optional<ruleparams_t> vars) {
setLuaNoSideEffect();
- auto rules = g_selfansweredresprulactions.getLocal();
+ auto rules = g_selfansweredrespruleactions.getLocal();
return rulesToString(getTopRules(*rules, top.get_value_or(10)), vars);
});
});
luaCtx.writeFunction("showRules", [](boost::optional<ruleparams_t> vars) {
- showRules(&g_rulactions, vars);
+ showRules(&g_ruleactions, vars);
});
luaCtx.writeFunction("RDRule", []() {
memcpy(&response.d_cleartextDH, dr.getHeader(), sizeof(response.d_cleartextDH));
- if (!processResponse(response.d_buffer, state->d_threadData.localRespRulactions, dr, false)) {
+ if (!processResponse(response.d_buffer, state->d_threadData.localRespRuleActions, dr, false)) {
state->terminateClientConnection();
return;
}
output << "# HELP dnsdist_rule_hits " << "Number of hits of that rule" << "\n";
output << "# TYPE dnsdist_rule_hits " << "counter" << "\n";
- addRulesToPrometheusOutput(output, g_rulactions);
- addRulesToPrometheusOutput(output, g_resprulactions);
- addRulesToPrometheusOutput(output, g_cachehitresprulactions);
- addRulesToPrometheusOutput(output, g_selfansweredresprulactions);
+ addRulesToPrometheusOutput(output, g_ruleactions);
+ addRulesToPrometheusOutput(output, g_respruleactions);
+ addRulesToPrometheusOutput(output, g_cachehitrespruleactions);
+ addRulesToPrometheusOutput(output, g_selfansweredrespruleactions);
output << "# HELP dnsdist_dynblocks_nmg_top_offenders_hits_per_second " << "Number of hits per second blocked by Dynamic Blocks (netmasks) for the top offenders, averaged over the last 60s" << "\n";
output << "# TYPE dnsdist_dynblocks_nmg_top_offenders_hits_per_second " << "gauge" << "\n";
Json::array rules;
/* unfortunately DNSActions have getStats(),
and DNSResponseActions do not. */
- auto localRules = g_rulactions.getLocal();
+ auto localRules = g_ruleactions.getLocal();
num = 0;
for (const auto& a : *localRules) {
Json::object rule{
rules.push_back(rule);
}
- auto responseRules = someResponseRulesToJson(&g_resprulactions);
- auto cacheHitResponseRules = someResponseRulesToJson(&g_cachehitresprulactions);
- auto selfAnsweredResponseRules = someResponseRulesToJson(&g_selfansweredresprulactions);
+ auto responseRules = someResponseRulesToJson(&g_respruleactions);
+ auto cacheHitResponseRules = someResponseRulesToJson(&g_cachehitrespruleactions);
+ auto selfAnsweredResponseRules = someResponseRulesToJson(&g_selfansweredrespruleactions);
string acl;
not *that* bad actually, but now that we are thread safe, might want to scale
*/
-/* the Rulaction plan
+/* the RuleAction plan
Set of Rules, if one matches, it leads to an Action
Both rules and actions could conceivably be Lua based.
On the C++ side, both could be inherited from a class Rule and a class Action,
IDs are assigned by atomic increments of the socket offset.
*/
-GlobalStateHolder<vector<DNSDistRuleAction> > g_rulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_resprulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitresprulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredresprulactions;
+GlobalStateHolder<vector<DNSDistRuleAction> > g_ruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_respruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitrespruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredrespruleactions;
Rings g_rings;
QueryCount g_qcount;
}
#endif /* HAVE_DNSCRYPT */
-static bool applyRulesToResponse(LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr)
+static bool applyRulesToResponse(LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr)
{
DNSResponseAction::Action action=DNSResponseAction::Action::None;
std::string ruleresult;
- for(const auto& lr : *localRespRulactions) {
+ for(const auto& lr : *localRespRuleActions) {
if(lr.d_rule->matches(&dr)) {
lr.d_rule->d_matches++;
action=(*lr.d_action)(&dr, &ruleresult);
return true;
}
-bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted)
+bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted)
{
- if (!applyRulesToResponse(localRespRulactions, dr)) {
+ if (!applyRulesToResponse(localRespRuleActions, dr)) {
return false;
}
{
try {
setThreadName("dnsdist/respond");
- auto localRespRulactions = g_resprulactions.getLocal();
+ auto localRespRuleActions = g_respruleactions.getLocal();
const size_t initialBufferSize = getInitialUDPPacketBufferSize();
PacketBuffer response(initialBufferSize);
}
memcpy(&cleartextDH, dr.getHeader(), sizeof(cleartextDH));
- if (!processResponse(response, localRespRulactions, dr, ids->cs && ids->cs->muted)) {
+ if (!processResponse(response, localRespRuleActions, dr, ids->cs && ids->cs->muted)) {
continue;
}
DNSAction::Action action=DNSAction::Action::None;
string ruleresult;
bool drop = false;
- for(const auto& lr : *holders.rulactions) {
+ for(const auto& lr : *holders.ruleactions) {
if(lr.d_rule->matches(&dq)) {
lr.d_rule->d_matches++;
action=(*lr.d_action)(&dq, &ruleresult);
dr.qTag = dq.qTag;
dr.delayMsec = dq.delayMsec;
- if (!applyRulesToResponse(cacheHit ? holders.cacheHitRespRulactions : holders.selfAnsweredRespRulactions, dr)) {
+ if (!applyRulesToResponse(cacheHit ? holders.cacheHitRespRuleactions : holders.selfAnsweredRespRuleactions, dr)) {
return false;
}
extern GlobalStateHolder<ServerPolicy> g_policy;
extern GlobalStateHolder<servers_t> g_dstates;
extern GlobalStateHolder<pools_t> g_pools;
-extern GlobalStateHolder<vector<DNSDistRuleAction> > g_rulactions;
-extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_resprulactions;
-extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitresprulactions;
-extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredresprulactions;
+extern GlobalStateHolder<vector<DNSDistRuleAction> > g_ruleactions;
+extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_respruleactions;
+extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitrespruleactions;
+extern GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredrespruleactions;
extern GlobalStateHolder<NetmaskGroup> g_ACL;
extern ComboAddress g_serverControl; // not changed during runtime
struct LocalHolders
{
- LocalHolders(): acl(g_ACL.getLocal()), policy(g_policy.getLocal()), rulactions(g_rulactions.getLocal()), cacheHitRespRulactions(g_cachehitresprulactions.getLocal()), selfAnsweredRespRulactions(g_selfansweredresprulactions.getLocal()), servers(g_dstates.getLocal()), dynNMGBlock(g_dynblockNMG.getLocal()), dynSMTBlock(g_dynblockSMT.getLocal()), pools(g_pools.getLocal())
+ LocalHolders(): acl(g_ACL.getLocal()), policy(g_policy.getLocal()), ruleactions(g_ruleactions.getLocal()), cacheHitRespRuleactions(g_cachehitrespruleactions.getLocal()), selfAnsweredRespRuleactions(g_selfansweredrespruleactions.getLocal()), servers(g_dstates.getLocal()), dynNMGBlock(g_dynblockNMG.getLocal()), dynSMTBlock(g_dynblockSMT.getLocal()), pools(g_pools.getLocal())
{
}
LocalStateHolder<NetmaskGroup> acl;
LocalStateHolder<ServerPolicy> policy;
- LocalStateHolder<vector<DNSDistRuleAction> > rulactions;
- LocalStateHolder<vector<DNSDistResponseRuleAction> > cacheHitRespRulactions;
- LocalStateHolder<vector<DNSDistResponseRuleAction> > selfAnsweredRespRulactions;
+ LocalStateHolder<vector<DNSDistRuleAction> > ruleactions;
+ LocalStateHolder<vector<DNSDistResponseRuleAction> > cacheHitRespRuleactions;
+ LocalStateHolder<vector<DNSDistResponseRuleAction> > selfAnsweredRespRuleactions;
LocalStateHolder<servers_t> servers;
LocalStateHolder<NetmaskTree<DynBlock> > dynNMGBlock;
LocalStateHolder<SuffixMatchTree<DynBlock> > dynSMTBlock;
void resetLuaSideEffect(); // reset to indeterminate state
bool responseContentMatches(const PacketBuffer& response, const DNSName& qname, const uint16_t qtype, const uint16_t qclass, const ComboAddress& remote, unsigned int& qnameWireLength);
-bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted);
+bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted);
bool processRulesResult(const DNSAction::Action& action, DNSQuestion& dq, std::string& ruleresult, bool& drop);
bool checkQueryHeaders(const struct dnsheader* dh);
class TCPClientThreadData
{
public:
- TCPClientThreadData(): localRespRulactions(g_resprulactions.getLocal()), mplexer(std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent()))
+ TCPClientThreadData(): localRespRuleActions(g_respruleactions.getLocal()), mplexer(std::unique_ptr<FDMultiplexer>(FDMultiplexer::getMultiplexerSilent()))
{
}
LocalHolders holders;
- LocalStateHolder<vector<DNSDistResponseRuleAction> > localRespRulactions;
+ LocalStateHolder<vector<DNSDistResponseRuleAction> > localRespRuleActions;
std::unique_ptr<FDMultiplexer> mplexer{nullptr};
};
struct DNSDistStats g_stats;
GlobalStateHolder<NetmaskGroup> g_ACL;
-GlobalStateHolder<vector<DNSDistRuleAction> > g_rulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_resprulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitresprulactions;
-GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredresprulactions;
+GlobalStateHolder<vector<DNSDistRuleAction> > g_ruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_respruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_cachehitrespruleactions;
+GlobalStateHolder<vector<DNSDistResponseRuleAction> > g_selfansweredrespruleactions;
GlobalStateHolder<servers_t> g_dstates;
QueryCount g_qcount;
return true;
}
-static std::function<bool(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted)> s_processResponse;
+static std::function<bool(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted)> s_processResponse;
-bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted)
+bool processResponse(PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted)
{
if (s_processResponse) {
- return s_processResponse(response, localRespRulactions, dr, muted);
+ return s_processResponse(response, localRespRuleActions, dr, muted);
}
return false;
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
throw std::runtime_error("Unexpected error while processing the response");
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return false;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
s_processQuery = [](DNSQuestion& dq, ClientState& cs, LocalHolders& holders, std::shared_ptr<DownstreamState>& selectedBackend) -> ProcessQueryResult {
return ProcessQueryResult::SendAnswer;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
}
return ProcessQueryResult::Drop;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
}
return ProcessQueryResult::Drop;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = proxyEnabledBackend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend1;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};
selectedBackend = backend;
return ProcessQueryResult::PassToBackend;
};
- s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRulactions, DNSResponse& dr, bool muted) -> bool {
+ s_processResponse = [](PacketBuffer& response, LocalStateHolder<vector<DNSDistResponseRuleAction> >& localRespRuleActions, DNSResponse& dr, bool muted) -> bool {
return true;
};