return false;
}
-DNSFilterEngine::Policy DNSFilterEngine::getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const
+DNSFilterEngine::Policy DNSFilterEngine::getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const
{
// cout<<"Got question for nameserver name "<<qname<<endl;
std::vector<bool> zoneEnabled(d_zones.size());
size_t count = 0;
bool allEmpty = true;
for (const auto& z : d_zones) {
- if (z->getPriority() > currentPriority) {
- break;
- }
bool enabled = true;
const auto zoneName = z->getName();
- if (zoneName && discardedPolicies.find(*zoneName) != discardedPolicies.end()) {
+ if (z->getPriority() >= maxPriority) {
+ enabled = false;
+ }
+ else if (zoneName && discardedPolicies.find(*zoneName) != discardedPolicies.end()) {
enabled = false;
}
else {
count = 0;
for(const auto& z : d_zones) {
- if (z->getPriority() > currentPriority) {
- break;
- }
if (!zoneEnabled[count]) {
++count;
continue;
return pol;
}
-DNSFilterEngine::Policy DNSFilterEngine::getProcessingPolicy(const ComboAddress& address, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const
+DNSFilterEngine::Policy DNSFilterEngine::getProcessingPolicy(const ComboAddress& address, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const
{
Policy pol;
// cout<<"Got question for nameserver IP "<<address.toString()<<endl;
for(const auto& z : d_zones) {
- if (z->getPriority() > currentPriority) {
+ if (z->getPriority() >= maxPriority) {
break;
}
const auto zoneName = z->getName();
return pol;
}
-DNSFilterEngine::Policy DNSFilterEngine::getQueryPolicy(const DNSName& qname, const ComboAddress& ca, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const
+DNSFilterEngine::Policy DNSFilterEngine::getQueryPolicy(const DNSName& qname, const ComboAddress& ca, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const
{
// cout<<"Got question for "<<qname<<" from "<<ca.toString()<<endl;
std::vector<bool> zoneEnabled(d_zones.size());
size_t count = 0;
bool allEmpty = true;
for (const auto& z : d_zones) {
- if (z->getPriority() > currentPriority) {
- break;
- }
bool enabled = true;
- const auto zoneName = z->getName();
- if (zoneName && discardedPolicies.find(*zoneName) != discardedPolicies.end()) {
+ if (z->getPriority() >= maxPriority) {
enabled = false;
- }
- else {
- if (z->hasQNamePolicies() || z->hasClientPolicies()) {
- allEmpty = false;
+ } else {
+ const auto zoneName = z->getName();
+ if (zoneName && discardedPolicies.find(*zoneName) != discardedPolicies.end()) {
+ enabled = false;
}
else {
- enabled = false;
+ if (z->hasQNamePolicies() || z->hasClientPolicies()) {
+ allEmpty = false;
+ }
+ else {
+ enabled = false;
+ }
}
}
count = 0;
for (const auto& z : d_zones) {
- if (z->getPriority() > currentPriority) {
- break;
- }
if (!zoneEnabled[count]) {
++count;
continue;
}
void setPriority(Priority p) {
d_priority = p;
+ for (auto& pol : d_qpolName) {
+ pol.second.d_priority = p;
+ }
+ for (auto& pol: d_qpolAddr) {
+ pol->second.d_priority = p;
+ }
+ for (auto& pol: d_propolName) {
+ pol.second.d_priority = p;
+ }
+ for (auto& pol: d_propolNSAddr) {
+ pol->second.d_priority = p;
+ }
+ for (auto& pol: d_postpolAddr) {
+ pol->second.d_priority = p;
+ }
}
private:
static DNSName maskToRPZ(const Netmask& nm);
}
}
- Policy getQueryPolicy(const DNSName& qname, const ComboAddress& nm, const std::unordered_map<std::string,bool>& discardedPolicies, Priority Priority) const;
- Policy getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const;
- Policy getProcessingPolicy(const ComboAddress& address, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const;
- Policy getPostPolicy(const vector<DNSRecord>& records, const std::unordered_map<std::string,bool>& discardedPolicies, Priority currentPriority) const;
+ Policy getQueryPolicy(const DNSName& qname, const ComboAddress& nm, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const;
+ Policy getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const;
+ Policy getProcessingPolicy(const ComboAddress& address, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const;
+ Policy getPostPolicy(const vector<DNSRecord>& records, const std::unordered_map<std::string,bool>& discardedPolicies, Priority maxPriority) const;
size_t size() const {
return d_zones.size();