DNSFilterEngine::Policy DNSFilterEngine::getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,bool>& discardedPolicies) const
{
// cout<<"Got question for nameserver name "<<qname<<endl;
- Policy pol{PolicyKind::NoAction, nullptr, nullptr, 0};
+ Policy pol;
for(const auto& z : d_zones) {
if(z.name && discardedPolicies.find(*z.name) != discardedPolicies.end()) {
continue;
return fnd->second;;
}
}
- return Policy{PolicyKind::NoAction, nullptr, nullptr, 0};
+ return Policy();
}
DNSFilterEngine::Policy DNSFilterEngine::getQueryPolicy(const DNSName& qname, const ComboAddress& ca, const std::unordered_map<std::string,bool>& discardedPolicies) const
{
// cout<<"Got question for "<<qname<<" from "<<ca.toString()<<endl;
- Policy pol{PolicyKind::NoAction, nullptr, nullptr, 0};
+ Policy pol;
for(const auto& z : d_zones) {
if(z.name && discardedPolicies.find(*z.name) != discardedPolicies.end()) {
continue;
return fnd->second;
}
}
- return Policy{PolicyKind::NoAction, nullptr, nullptr, 0};
+ return Policy();
}
void DNSFilterEngine::assureZones(size_t zone)
enum class PolicyKind { NoAction, Drop, NXDOMAIN, NODATA, Truncate, Custom};
struct Policy
{
+ Policy(): d_kind(PolicyKind::NoAction), d_custom(nullptr), d_name(nullptr), d_ttl(0)
+ {
+ }
bool operator==(const Policy& rhs) const
{
return d_kind == rhs.d_kind; // XXX check d_custom too!
vector<uint8_t> packet;
auto luaconfsLocal = g_luaconfs.getLocal();
- DNSFilterEngine::Policy appliedPolicy;
// Used to tell syncres later on if we should apply NSDNAME and NSIP RPZ triggers for this query
bool wantsRPZ(true);
RecProtoBufMessage pbMessage(RecProtoBufMessage::Response);
bool shouldNotValidate = false;
int res;
- DNSFilterEngine::Policy dfepol;
+ DNSFilterEngine::Policy appliedPolicy;
DNSRecord spoofed;
if(dc->d_mdp.d_qtype==QType::ANY && !dc->d_tcp && g_anyToTcp) {
pw.getHeader()->tc = 1;
// Check if the query has a policy attached to it
if (wantsRPZ) {
- dfepol = luaconfsLocal->dfe.getQueryPolicy(dc->d_mdp.d_qname, dc->d_remote, sr.d_discardedPolicies);
+ appliedPolicy = luaconfsLocal->dfe.getQueryPolicy(dc->d_mdp.d_qname, dc->d_remote, sr.d_discardedPolicies);
}
- appliedPolicy = dfepol;
// if there is a RecursorLua active, and it 'took' the query in preResolve, we don't launch beginResolve
if(!t_pdl->get() || !(*t_pdl)->preresolve(dc->d_remote, dc->d_local, dc->d_mdp.d_qname, QType(dc->d_mdp.d_qtype), dc->d_tcp, ret, dc->d_ednsOpts.empty() ? 0 : &dc->d_ednsOpts, dc->d_tag, &appliedPolicy, &dc->d_policyTags, res, &variableAnswer, &wantsRPZ)) {
}
if (wantsRPZ) {
- dfepol = luaconfsLocal->dfe.getPostPolicy(ret, sr.d_discardedPolicies);
- appliedPolicy = dfepol;
+ appliedPolicy = luaconfsLocal->dfe.getPostPolicy(ret, sr.d_discardedPolicies);
}
if(t_pdl->get()) {
static const DNSName rpzClientIP("rpz-client-ip"), rpzIP("rpz-ip"),
rpzNSDname("rpz-nsdname"), rpzNSIP("rpz-nsip.");
- DNSFilterEngine::Policy pol{DNSFilterEngine::PolicyKind::NoAction, nullptr, nullptr, 0};
+ DNSFilterEngine::Policy pol;
if(dr.d_class != QClass::IN) {
return;
static unsigned int s_maxqperq;
static unsigned int s_maxtotusec;
std::unordered_map<std::string,bool> d_discardedPolicies;
- DNSFilterEngine::Policy d_appliedPolicy{DNSFilterEngine::PolicyKind::NoAction, nullptr, nullptr, 0};
+ DNSFilterEngine::Policy d_appliedPolicy;
unsigned int d_outqueries;
unsigned int d_tcpoutqueries;
unsigned int d_throttledqueries;