]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Additional adjustments to migration to protozero library 9654/head
authorNicko Dehaine <nicko@threatstop.com>
Fri, 5 Feb 2021 16:43:57 +0000 (16:43 +0000)
committerNicko Dehaine <nicko@threatstop.com>
Fri, 5 Feb 2021 16:43:57 +0000 (16:43 +0000)
pdns/protozero.hh
pdns/recursordist/rec-protozero.hh

index 04dd69eab98010761c1af3ec5c9d459511a10548..a5e3e0e0810530b702ea0306d1c3f5f75dad724b 100644 (file)
@@ -35,7 +35,7 @@ namespace pdns {
       enum class MessageType : int32_t { DNSQueryType = 1, DNSResponseType = 2, DNSOutgoingQueryType = 3, DNSIncomingResponseType = 4 };
       enum class Field : protozero::pbf_tag_type { type = 1, messageId = 2, serverIdentity = 3, socketFamily = 4, socketProtocol = 5, from = 6, to = 7, inBytes = 8, timeSec = 9, timeUsec = 10, id = 11, question = 12, response = 13, originalRequestorSubnet = 14, requestorId = 15, initialRequestId = 16, deviceId = 17, newlyObservedDomain = 18, deviceName = 19, fromPort = 20, toPort = 21 };
       enum class QuestionField : protozero::pbf_tag_type { qName = 1, qType = 2, qClass = 3};
-      enum class ResponseField : protozero::pbf_tag_type { rcode = 1, rrs = 2, appliedPolicy = 3, tags = 4, queryTimeSec = 5, queryTimeUsec = 6, appliedPolicyType = 7, appliedPolicyTrigger = 8, appliedPolicyHit = 9 };
+      enum class ResponseField : protozero::pbf_tag_type { rcode = 1, rrs = 2, appliedPolicy = 3, tags = 4, queryTimeSec = 5, queryTimeUsec = 6, appliedPolicyType = 7, appliedPolicyTrigger = 8, appliedPolicyHit = 9, appliedPolicyKind = 10 };
       enum class RRField : protozero::pbf_tag_type { name = 1, type = 2, class_ = 3, ttl = 4, rdata = 5, udr = 6 };
 
       Message(std::string& buffer): d_buffer(buffer), d_message{d_buffer}
@@ -235,33 +235,9 @@ namespace pdns {
         writer.add_uint64(static_cast<protozero::pbf_tag_type>(type), value);
       }
 
-      void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind& kind)
-      {
-        uint32_t k;
-
-        switch(kind) {
-       case DNSFilterEngine::PolicyKind::NoAction:
-          k = 1;
-          break;
-       case DNSFilterEngine::PolicyKind::Drop:
-          k = 2;
-          break;
-       case DNSFilterEngine::PolicyKind::NXDOMAIN:
-          k = 3;
-          break;
-       case DNSFilterEngine::PolicyKind::NODATA:
-          k = 4;
-          break;
-       case DNSFilterEngine::PolicyKind::Truncate:
-          k = 5;
-          break;
-       case DNSFilterEngine::PolicyKind::Custom:
-          k = 6;
-          break;
-        default:
-          throw std::runtime_error("Unsupported protobuf policy kind");
-        }
-        d_response.add_uint32(10, k);
+      static void add_bytes(protozero::pbf_writer& writer, Field type, const char* data, size_t len)
+      {
+        writer.add_bytes(static_cast<protozero::pbf_tag_type>(type), data, len);
       }
 
       static void add_string(protozero::pbf_writer& writer, Field type, const std::string& str)
index d63e2397ffba4320d282a75a7a4ffd6846bec1f4..efa77150f8f2b9f11ccca7e124ec53075b686458 100644 (file)
@@ -141,6 +141,35 @@ namespace ProtoZero
       d_response.add_string(static_cast<protozero::pbf_tag_type>(ResponseField::appliedPolicyHit), hit);
     }
 
+    void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind& kind)
+    {
+        uint32_t k;
+
+        switch(kind) {
+       case DNSFilterEngine::PolicyKind::NoAction:
+          k = 1;
+          break;
+       case DNSFilterEngine::PolicyKind::Drop:
+          k = 2;
+          break;
+       case DNSFilterEngine::PolicyKind::NXDOMAIN:
+          k = 3;
+          break;
+       case DNSFilterEngine::PolicyKind::NODATA:
+          k = 4;
+          break;
+       case DNSFilterEngine::PolicyKind::Truncate:
+          k = 5;
+          break;
+       case DNSFilterEngine::PolicyKind::Custom:
+          k = 6;
+          break;
+        default:
+          throw std::runtime_error("Unsupported protobuf policy kind");
+        }
+        d_response.add_uint32(static_cast<protozero::pbf_tag_type>(ResponseField::appliedPolicyKind), k);
+    }
+
 #ifdef NOD_ENABLED
     void clearUDR(std::string&);
 #endif