From b5892cfa57b3f9725d89f3af89ba5cf280e1846d Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Mon, 10 Aug 2020 11:37:28 +0200 Subject: [PATCH] Log trigger in protobuf message --- pdns/dnsmessage.proto | 1 + pdns/pdns_recursor.cc | 1 + pdns/rec-protobuf.cc | 10 ++++++++++ pdns/rec-protobuf.hh | 1 + 4 files changed, 13 insertions(+) diff --git a/pdns/dnsmessage.proto b/pdns/dnsmessage.proto index 6b33ab0930..4f9d2722fd 100644 --- a/pdns/dnsmessage.proto +++ b/pdns/dnsmessage.proto @@ -79,6 +79,7 @@ message PBDNSMessage { optional uint32 queryTimeSec = 5; // Time of the corresponding query reception (seconds since epoch) optional uint32 queryTimeUsec = 6; // Time of the corresponding query reception (additional micro-seconds) optional PolicyType appliedPolicyType = 7; // Type of the filtering policy (RPZ or Lua) applied + optional string appliedPolicyTrigger = 8; // The RPZ trigger } optional DNSResponse response = 13; diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index 0b9f144184..b30443d03d 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -1777,6 +1777,7 @@ static void startDoResolve(void *p) if (!appliedPolicy.getName().empty()) { pbMessage->setAppliedPolicy(appliedPolicy.getName()); pbMessage->setAppliedPolicyType(appliedPolicy.d_type); + pbMessage->setAppliedPolicyTrigger(appliedPolicy.d_trigger); } pbMessage->setPolicyTags(dc->d_policyTags); if (g_useKernelTimestamp && dc->d_kernelTimestamp.tv_sec) { diff --git a/pdns/rec-protobuf.cc b/pdns/rec-protobuf.cc index bd82ef9523..eac9f9bfe1 100644 --- a/pdns/rec-protobuf.cc +++ b/pdns/rec-protobuf.cc @@ -167,6 +167,16 @@ void RecProtoBufMessage::setAppliedPolicyType(const DNSFilterEngine::PolicyType& #endif /* HAVE_PROTOBUF */ } +void RecProtoBufMessage::setAppliedPolicyTrigger(const DNSName& trigger) +{ +#ifdef HAVE_PROTOBUF + PBDNSMessage_DNSResponse* response = d_message.mutable_response(); + if (response && !trigger.empty()) { + response->set_appliedpolicytrigger(trigger.toString()); + } +#endif /* HAVE_PROTOBUF */ +} + void RecProtoBufMessage::setPolicyTags(const std::unordered_set& policyTags) { #ifdef HAVE_PROTOBUF diff --git a/pdns/rec-protobuf.hh b/pdns/rec-protobuf.hh index a64faea61b..61cdd79255 100644 --- a/pdns/rec-protobuf.hh +++ b/pdns/rec-protobuf.hh @@ -52,6 +52,7 @@ public: #endif /* NOD_ENABLED */ void setAppliedPolicy(const std::string& policy); void setAppliedPolicyType(const DNSFilterEngine::PolicyType& policyType); + void setAppliedPolicyTrigger(const DNSName& trigger); void setPolicyTags(const std::unordered_set& policyTags); void addPolicyTag(const std::string& policyTag); void removePolicyTag(const std::string& policyTag); -- 2.47.2