// 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);
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);
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;
}