From: Remi Gacogne Date: Wed, 31 Aug 2016 15:55:51 +0000 (+0200) Subject: rec: Fix RPZ default policy not being applied over IXFR X-Git-Tag: dnsdist-1.1.0-beta2~153^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9db6ece12afdc5703220539a8d3bde4499a2dbff;p=pdns rec: Fix RPZ default policy not being applied over IXFR Reported by @42wim (thanks!). --- diff --git a/pdns/rec-lua-conf.cc b/pdns/rec-lua-conf.cc index f8001bf9f..14bd8a6de 100644 --- a/pdns/rec-lua-conf.cc +++ b/pdns/rec-lua-conf.cc @@ -188,7 +188,7 @@ void loadRecursorLuaConfig(const std::string& fname) auto sr=loadRPZFromServer(master, zone, lci.dfe, defpol, zoneIdx, tt, maxReceivedXFRMBytes * 1024 * 1024, localAddress); if(refresh) sr->d_st.refresh=refresh; - std::thread t(RPZIXFRTracker, master, zone, zoneIdx, tt, sr, maxReceivedXFRMBytes * 1024 * 1024, localAddress); + std::thread t(RPZIXFRTracker, master, zone, defpol, zoneIdx, tt, sr, maxReceivedXFRMBytes * 1024 * 1024, localAddress); t.detach(); } catch(std::exception& e) { diff --git a/pdns/reczones.cc b/pdns/reczones.cc index 63ccb27e3..12237aa33 100644 --- a/pdns/reczones.cc +++ b/pdns/reczones.cc @@ -311,7 +311,7 @@ string reloadAuthAndForwards() } -void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, size_t polZone, const TSIGTriplet& tt, shared_ptr oursr, size_t maxReceivedBytes, const ComboAddress& localAddress) +void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, boost::optional defpol, size_t polZone, const TSIGTriplet& tt, shared_ptr oursr, size_t maxReceivedBytes, const ComboAddress& localAddress) { int refresh = oursr->d_st.refresh; for(;;) { @@ -344,7 +344,7 @@ void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, size_t polZ const auto& add = delta.second; if(remove.empty()) { L<(), polZone); + RPZRecordToPolicy(rr, luaconfsCopy.dfe, false, defpol, polZone); } } @@ -373,7 +373,7 @@ void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, size_t polZ } else { L<(), polZone); + RPZRecordToPolicy(rr, luaconfsCopy.dfe, true, defpol, polZone); } } } diff --git a/pdns/rpzloader.hh b/pdns/rpzloader.hh index f0afb5585..eebbeb2d5 100644 --- a/pdns/rpzloader.hh +++ b/pdns/rpzloader.hh @@ -27,4 +27,4 @@ int loadRPZFromFile(const std::string& fname, DNSFilterEngine& target, boost::optional defpol, size_t place); std::shared_ptr loadRPZFromServer(const ComboAddress& master, const DNSName& zone, DNSFilterEngine& target, boost::optional defpol, size_t place, const TSIGTriplet& tt, size_t maxReceivedBytes, const ComboAddress& localAddress); void RPZRecordToPolicy(const DNSRecord& dr, DNSFilterEngine& target, bool addOrRemove, boost::optional defpol, size_t place); -void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, size_t polZone, const TSIGTriplet &tt, shared_ptr oursr, size_t maxReceivedBytes, const ComboAddress& localAddress); +void RPZIXFRTracker(const ComboAddress& master, const DNSName& zone, boost::optional defpol, size_t polZone, const TSIGTriplet &tt, shared_ptr oursr, size_t maxReceivedBytes, const ComboAddress& localAddress);