]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
pdnsutil check-zone: accept LUA A/AAAA as SVCB address targets 14011/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>
Thu, 4 Apr 2024 15:18:42 +0000 (17:18 +0200)
pdns/pdnsutil.cc

index 98cbf55a8fde161641822664a3e9c4db7bdc784d..6bc3d443c664d2910d43cecd73bd70bda81a81bf 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);
     }