bool RecursorLua4::prerpz(DNSQuestion& dq, int& ret, RecEventTrace& et) const
{
+ if (!d_prerpz) {
+ return false;
+ }
et.add(RecEventTrace::LuaPreRPZ);
bool ok = genhook(d_prerpz, dq, ret);
et.add(RecEventTrace::LuaPreRPZ, ok, false);
bool RecursorLua4::preresolve(DNSQuestion& dq, int& ret, RecEventTrace& et) const
{
+ if (!d_preresolve) {
+ return false;
+ }
et.add(RecEventTrace::LuaPreResolve);
bool ok = genhook(d_preresolve, dq, ret);
et.add(RecEventTrace::LuaPreResolve, ok, false);
bool RecursorLua4::nxdomain(DNSQuestion& dq, int& ret, RecEventTrace& et) const
{
+ if (!d_nxdomain) {
+ return false;
+ }
et.add(RecEventTrace::LuaNXDomain);
bool ok = genhook(d_nxdomain, dq, ret);
et.add(RecEventTrace::LuaNXDomain, ok, false);
bool RecursorLua4::nodata(DNSQuestion& dq, int& ret, RecEventTrace& et) const
{
+ if (!d_nodata) {
+ return false;
+ }
et.add(RecEventTrace::LuaNoData);
bool ok = genhook(d_nodata, dq, ret);
et.add(RecEventTrace::LuaNoData, ok, false);
bool RecursorLua4::postresolve(DNSQuestion& dq, int& ret, RecEventTrace& et) const
{
+ if (!d_postresolve) {
+ return false;
+ }
et.add(RecEventTrace::LuaPostResolve);
bool ok = genhook(d_postresolve, dq, ret);
et.add(RecEventTrace::LuaPostResolve, ok, false);
bool RecursorLua4::preoutquery(const ComboAddress& ns, const ComboAddress& requestor, const DNSName& query, const QType& qtype, bool isTcp, vector<DNSRecord>& res, int& ret, RecEventTrace& et) const
{
+ if (!d_preoutquery) {
+ return false;
+ }
bool variableAnswer = false;
bool wantsRPZ = false;
bool logQuery = false;
return ok;
}
-bool RecursorLua4::ipfilter(const ComboAddress& remote, const ComboAddress& local, const struct dnsheader& dh) const
+bool RecursorLua4::ipfilter(const ComboAddress& remote, const ComboAddress& local, const struct dnsheader& dh, RecEventTrace& et) const
{
- if (d_ipfilter)
- return d_ipfilter(remote, local, dh);
- return false; // don't block
+ if (!d_ipfilter) {
+ return false; // Do not block
+ }
+ et.add(RecEventTrace::LuaIPFilter);
+ bool ok = d_ipfilter(remote, local, dh);
+ et.add(RecEventTrace::LuaIPFilter, ok, false);
+ return ok;
}
bool RecursorLua4::policyHitEventFilter(const ComboAddress& remote, const DNSName& qname, const QType& qtype, bool tcp, DNSFilterEngine::Policy& policy, std::unordered_set<std::string>& tags, std::unordered_map<std::string, bool>& discardedPolicies) const
bool postresolve(DNSQuestion& dq, int& ret, RecEventTrace&) const;
bool preoutquery(const ComboAddress& ns, const ComboAddress& requestor, const DNSName& query, const QType& qtype, bool isTcp, vector<DNSRecord>& res, int& ret, RecEventTrace& et) const;
- bool ipfilter(const ComboAddress& remote, const ComboAddress& local, const struct dnsheader&) const;
+ bool ipfilter(const ComboAddress& remote, const ComboAddress& local, const struct dnsheader&, RecEventTrace&) const;
bool policyHitEventFilter(const ComboAddress& remote, const DNSName& qname, const QType& qtype, bool tcp, DNSFilterEngine::Policy& policy, std::unordered_set<std::string>& tags, std::unordered_map<std::string, bool>& discardedPolicies) const;
}
if (t_pdl) {
- dc->d_eventTrace.add(RecEventTrace::LuaIPFilter);
- bool ipf = t_pdl->ipfilter(dc->d_source, dc->d_destination, *dh);
- dc->d_eventTrace.add(RecEventTrace::LuaIPFilter, ipf, false);
+ bool ipf = t_pdl->ipfilter(dc->d_source, dc->d_destination, *dh, dc->d_eventTrace);
if (ipf) {
if (!g_quiet) {
g_log<<Logger::Notice<<t_id<<" ["<<MT->getTid()<<"/"<<MT->numProcesses()<<"] DROPPED TCP question from "<<dc->d_source.toStringWithPort()<<(dc->d_source != dc->d_remote ? " (via "+dc->d_remote.toStringWithPort()+")" : "")<<" based on policy"<<endl;
}
if (t_pdl) {
- eventTrace.add(RecEventTrace::LuaIPFilter);
- bool ipf = t_pdl->ipfilter(source, destination, *dh);
- eventTrace.add(RecEventTrace::LuaIPFilter, ipf, false);
+ bool ipf = t_pdl->ipfilter(source, destination, *dh, eventTrace);
if (ipf) {
if (!g_quiet) {
g_log<<Logger::Notice<<t_id<<" ["<<MT->getTid()<<"/"<<MT->numProcesses()<<"] DROPPED question from "<<source.toStringWithPort()<<(source != fromaddr ? " (via "+fromaddr.toStringWithPort()+")" : "")<<" based on policy"<<endl;