};
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
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)) {
#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);