]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
pdnsutil check-zone: accept LUA A/AAAA as SVCB address targets 14189/head
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 2 Apr 2024 07:39:11 +0000 (09:39 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 17 May 2024 09:55:08 +0000 (11:55 +0200)
(cherry picked from commit ee8d0b2f879e33028e53eab87b71becea4df1f42)

pdns/pdnsutil.cc

index 15d241682e78651bd8c9d70beafcb3526551981e..8f1342c0115d01d12e2ff9a95ca8644c8b806f40 100644 (file)
@@ -1,3 +1,4 @@
+#include "dnsrecords.hh"
 #include <boost/smart_ptr/make_shared_array.hpp>
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -250,7 +251,7 @@ static bool rectifyAllZones(DNSSECKeeper &dk, bool quiet = false)
   return result;
 }
 
-static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, const vector<DNSResourceRecord>* suppliedrecords=nullptr)
+static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, const vector<DNSResourceRecord>* suppliedrecords=nullptr) // NOLINTNEXTLINE(readability-function-cognitive-complexity)
 {
   uint64_t numerrors=0, numwarnings=0;
 
@@ -377,6 +378,14 @@ static int checkZone(DNSSECKeeper &dk, UeberBackend &B, const DNSName& zone, con
     if(rr.qtype.getCode() == QType::A || rr.qtype.getCode() == QType::AAAA) {
       addresses.insert(rr.qname);
     }
+    if(rr.qtype.getCode() == QType::LUA) {
+      shared_ptr<DNSRecordContent> drc(DNSRecordContent::make(rr.qtype.getCode(), QClass::IN, rr.content));
+      auto luarec = std::dynamic_pointer_cast<LUARecordContent>(drc);
+      QType qtype = luarec->d_type;
+      if(qtype == QType::A || qtype == QType::AAAA) {
+        addresses.insert(rr.qname);
+      }
+    }
     if(rr.qtype.getCode() == QType::A) {
       arecords.insert(rr.qname);
     }