]> granicus.if.org Git - pdns/commitdiff
Warn if SOA-EDIT value is bogus
authorPieter Lexis <pieter.lexis@powerdns.com>
Mon, 11 Jan 2016 11:31:57 +0000 (12:31 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Mon, 11 Jan 2016 11:47:17 +0000 (12:47 +0100)
pdns/dnsseckeeper.hh
pdns/serialtweaker.cc

index d455de206294b383a883ec1e29ed85b11905ce3a..4cdbd81b77fc471b2c3c7f9b94fca3ab9cb7dcce 100644 (file)
@@ -174,7 +174,7 @@ uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq);
 // for SOA-EDIT
 uint32_t calculateEditSOA(SOAData sd, const string& kind);
 bool editSOA(DNSSECKeeper& dk, const DNSName& qname, DNSPacket* dp);
-bool editSOARecord(DNSResourceRecord& rr, const string& kind);
+bool editSOARecord(DNSResourceRecord& rr, const string& kind, const DNSName& qname);
 // for SOA-EDIT-DNSUPDATE/API
 uint32_t calculateIncreaseSOA(SOAData sd, const string& increaseKind, const string& editKind);
 bool increaseSOARecord(DNSResourceRecord& rr, const string& increaseKind, const string& editKind);
index 2a7f4e135e47f505d67723c7d94c01fd74276e87..3dd474ef457ae38ed0cc73d9d150cd9a6752913a 100644 (file)
@@ -46,17 +46,18 @@ bool editSOA(DNSSECKeeper& dk, const DNSName& qname, DNSPacket* dp)
     if(rr.qtype.getCode() == QType::SOA && rr.qname == qname) {
       string kind;
       dk.getSoaEdit(qname, kind);
-      return editSOARecord(rr, kind);
+      return editSOARecord(rr, kind, qname);
     }
   }
   return false;
 }
 
-bool editSOARecord(DNSResourceRecord& rr, const string& kind) {
+bool editSOARecord(DNSResourceRecord& rr, const string& kind, const DNSName& qname) {
   if(kind.empty())
     return false;
 
   SOAData sd;
+  sd.qname = qname;
   fillSOAData(rr.content, sd);
   sd.serial = calculateEditSOA(sd, kind);
   rr.content = serializeSOAData(sd);
@@ -94,6 +95,8 @@ uint32_t calculateEditSOA(SOAData sd, const string& kind) {
     uint32_t inception = getStartOfWeek();
     if (sd.serial < inception)
       return inception;
+  } else if(!kind.empty()) {
+    L<<Logger::Warning<<"SOA-EDIT type '"<<kind<<"' for zone "<<sd.qname.toStringNoDot()<<" is unknown."<<endl;
   }
   return sd.serial;
 }