*/
void PacketHandler::addNSECX(DNSPacket *p, DNSPacket *r, const string& target, const string& wildcard, const string& auth, int mode)
{
+ if(!p->d_dnssecOk && mode != 5)
+ return;
+
NSEC3PARAMRecordContent ns3rc;
// cerr<<"Doing NSEC3PARAM lookup for '"<<auth<<"', "<<p->qdomain<<"|"<<p->qtype.getName()<<": ";
bool narrow;
void PacketHandler::addNSEC(DNSPacket *p, DNSPacket *r, const string& target, const string& wildcard, const string& auth, int mode)
{
- if(!p->d_dnssecOk)
- return;
-
DLOG(L<<"Should add NSEC covering '"<<target<<"' from zone '"<<auth<<"', mode = "<<mode<<endl);
SOAData sd;
rr.scopeMask = sd.scopeMask;
r->addRecord(rr);
- if(p->d_dnssecOk && d_dk.isSecuredZone(sd.qname))
+ if(d_dk.isSecuredZone(sd.qname))
addNSECX(p, r, target, wildcard, sd.qname, 4);
r->setRcode(RCode::NXDomain);
rr.auth = 1;
r->addRecord(rr);
- if(p->d_dnssecOk && d_dk.isSecuredZone(sd.qname))
+ if(d_dk.isSecuredZone(sd.qname))
addNSECX(p, r, target, wildcard, sd.qname, mode);
S.ringAccount("noerror-queries",p->qdomain+"/"+p->qtype.getName());
}
r->setA(false);
- if(p->d_dnssecOk && d_dk.isSecuredZone(sd.qname) && !addDSforNS(p, r, sd, rrset.begin()->qname))
+ if(d_dk.isSecuredZone(sd.qname) && !addDSforNS(p, r, sd, rrset.begin()->qname))
addNSECX(p, r, rrset.begin()->qname, "", sd.qname, 1);
return true;
{
if(!p->d_dnssecOk)
return; // Don't send dnssec info to non validating resolvers.
-
+
if(!d_dk.isSecuredZone(sd.qname))
return;
- addNSECX(p, r, target, "", sd.qname, 5);
+ addNSECX(p, r, target, "", sd.qname, 5);
if(pdns_iequals(sd.qname, p->qdomain)) {
addDNSKEY(p, r, sd);
addNSEC3PARAM(p, r, sd);
r->addRecord(rr);
}
}
- if(p->d_dnssecOk && d_dk.isSecuredZone(sd.qname) && !nodata) {
+ if(d_dk.isSecuredZone(sd.qname) && !nodata) {
addNSECX(p, r, bestmatch, wildcard, sd.qname, 3);
}
return true;
}
if(p->qtype.getCode() == QType::SOA && pdns_iequals(sd.qname, p->qdomain)) {
- rr.qname=sd.qname;
+ rr.qname=sd.qname;
rr.qtype=QType::SOA;
rr.content=serializeSOAData(sd);
rr.ttl=sd.ttl;
}
// this TRUMPS a cname!
- if(p->qtype.getCode() == QType::NSEC && p->d_dnssecOk && d_dk.isSecuredZone(sd.qname) && !d_dk.getNSEC3PARAM(sd.qname, 0)) {
- addNSECX(p, r, target, "", sd.qname, 5);
+ if(p->qtype.getCode() == QType::NSEC && d_dk.isSecuredZone(sd.qname) && !d_dk.getNSEC3PARAM(sd.qname, 0)) {
+ addNSEC(p, r, target, "", sd.qname, 5);
goto sendit;
}
// this TRUMPS a cname!
if(p->qtype.getCode() == QType::RRSIG && d_dk.isSecuredZone(sd.qname)) {
synthesiseRRSIGs(p, r);
- goto sendit;
+ goto sendit;
}
DLOG(L<<"Checking for referrals first, unless this is a DS query"<<endl);