]> granicus.if.org Git - pdns/commitdiff
Don't store edited soa serial for INCREMENT soa-edit kinds
authorStefan Bühler <stbuehler@web.de>
Fri, 17 May 2013 11:21:56 +0000 (13:21 +0200)
committerStefan Bühler <stbuehler@web.de>
Fri, 17 May 2013 11:21:56 +0000 (13:21 +0200)
 * simple increment for INCREMENT-WEEKS
 * increment to current day for INCEPTION-INCREMENT

pdns/dnsseckeeper.hh
pdns/pdnssec.cc
pdns/serialtweaker.cc

index 9dcc4f41811c125e7e26dee0eef023482f587032..f290d4c10218f17c3b5ec1b5d9900cd6f41241c2 100644 (file)
@@ -163,6 +163,7 @@ private:
 };
 
 class DNSPacket;
+uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq);
 bool editSOA(DNSSECKeeper& dk, const string& qname, DNSPacket* dp);
 uint32_t calculateEditSoa(SOAData sd, const string& kind);
 #endif
index 17f0167f17f9ece03379264577a4e91460f50a86..806d3884aca23b1acb83886a25f25b64fd6bed8d 100644 (file)
@@ -485,10 +485,25 @@ int increaseSerial(const string& zone, DNSSECKeeper &dk)
      cerr<<zone<<" not found!"<<endl;
   }
   
-  if (soaEditKind.empty())
+  if (soaEditKind.empty()) {
     sd.serial++;
-  else
+  }
+  else if(pdns_iequals(soaEditKind,"INCREMENT-WEEKS")) {
+    sd.serial++;
+  }
+  else if(pdns_iequals(soaEditKind,"INCEPTION-INCREMENT")) {
+    uint32_t today_serial = localtime_format_YYYYMMDDSS(time(NULL), 1);
+
+    if (sd.serial < today_serial) {
+      sd.serial = today_serial;
+    }
+    else {
+      sd.serial++;
+    }
+  }
+  else {
     sd.serial = calculateEditSoa(sd, soaEditKind) + 1;
+  }
   rrs[0].content = serializeSOAData(sd);
 
   if (! sd.db->replaceRRSet(sd.domain_id, zone, rr.qtype, rrs)) {
index 7a6c5b6e30c52fd46722e6fcf2c8123c77896d04..32ec01cc226ff929f7c38b6633fa68fb8f963f36 100644 (file)
@@ -21,7 +21,7 @@
 #include "namespaces.hh"
 #include <boost/foreach.hpp>
 
-static uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq)
+uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq)
 {
   struct tm tm;
   localtime_r(&t, &tm);