}
}
-void Bind2Backend::lookup(const QType &qtype, const DNSName &qname, DNSPacket *pkt_p, int zoneId )
+void Bind2Backend::lookup(const QType &qtype, const DNSName &qname, int zoneId, DNSPacket *pkt_p )
{
d_handle.reset();
DNSName domain(qname);
time_t getCtime(const string &fname);
// DNSSEC
bool getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) override;
- void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1) override;
+ void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override;
bool list(const DNSName &target, int id, bool include_disabled=false) override;
bool get(DNSResourceRecord &) override;
void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override;
return false;
};
-void GeoIPBackend::lookup(const QType &qtype, const DNSName& qdomain, DNSPacket *pkt_p, int zoneId) {
+void GeoIPBackend::lookup(const QType &qtype, const DNSName& qdomain, int zoneId, DNSPacket *pkt_p) {
ReadLock rl(&s_state_lock);
const GeoIPDomain* dom;
GeoIPNetmask gl;
GeoIPBackend(const std::string& suffix="");
~GeoIPBackend();
- void lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1) override;
+ void lookup(const QType &qtype, const DNSName &qdomain, int zoneId, DNSPacket *pkt_p=nullptr) override;
bool list(const DNSName &target, int domain_id, bool include_disabled=false) override { return false; } // not supported
bool get(DNSResourceRecord &r) override;
void reload() override;
// Native backend
bool list( const DNSName& target, int domain_id, bool include_disabled=false ) override;
- void lookup( const QType& qtype, const DNSName& qdomain, DNSPacket* p = 0, int zoneid = -1 ) override;
+ void lookup( const QType& qtype, const DNSName& qdomain, int zoneid, DNSPacket* p = nullptr ) override;
bool get( DNSResourceRecord& rr ) override;
bool getDomainInfo( const DNSName& domain, DomainInfo& di, bool getSerial=true ) override;
-void LdapBackend::lookup( const QType &qtype, const DNSName &qname, DNSPacket *dnspkt, int zoneid )
+void LdapBackend::lookup( const QType &qtype, const DNSName &qname, int zoneid, DNSPacket *dnspkt )
{
try
{
{
g_log << Logger::Warning << d_myname << " Connection to LDAP lost, trying to reconnect" << endl;
if ( reconnect() )
- this->lookup( qtype, qname, dnspkt, zoneid );
+ this->lookup( qtype, qname, zoneid, dnspkt );
else
throw PDNSException( "Failed to reconnect to LDAP server" );
}
return true;
}
-void LMDBBackend::lookup(const QType &type, const DNSName &qdomain, DNSPacket *p, int zoneId)
+void LMDBBackend::lookup(const QType &type, const DNSName &qdomain, int zoneId, DNSPacket *p)
{
if(d_dolog) {
g_log << Logger::Warning << "Got lookup for "<<qdomain<<"|"<<type.getName()<<" in zone "<< zoneId<<endl;
bool LMDBBackend::getSOA(const DNSName &domain, SOAData &sd)
{
// cout <<"Native getSOA called"<<endl;
- lookup(QType(QType::SOA), domain, 0, -1);
+ lookup(QType(QType::SOA), domain, -1);
DNSZoneRecord dzr;
bool found=false;
while(get(dzr)) {
bool replaceRRSet(uint32_t domain_id, const DNSName& qname, const QType& qt, const vector<DNSResourceRecord>& rrset) override;
void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override;
- void lookup(const QType &type, const DNSName &qdomain, DNSPacket *p, int zoneId) override;
+ void lookup(const QType &type, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override;
bool get(DNSResourceRecord &rr) override;
bool get(DNSZoneRecord& dzr) override;
return true;
}
- void lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int domain_id) override {
+ void lookup(const QType &qtype, const DNSName &qname, int domain_id, DNSPacket *p=nullptr) override {
if (d_result.size() != 0)
throw PDNSException("lookup attempted while another was running");
LUABackend(const string &suffix="");
~LUABackend();
bool list(const DNSName &target, int domain_id, bool include_disabled=false) override;
- void lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int domain_id) override;
+ void lookup(const QType &qtype, const DNSName &qname, int domain_id, DNSPacket *p=nullptr) override;
bool get(DNSResourceRecord &rr) override;
//! fills the soadata struct with the SOA details. Returns false if there is no SOA.
bool getSOA(const DNSName &name, SOAData &soadata) override;
return ok;
}
-void LUABackend::lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int domain_id) {
+void LUABackend::lookup(const QType &qtype, const DNSName &qname, int domain_id, DNSPacket *p) {
if (logging)
g_log << Logger::Info << backend_name << "(lookup) BEGIN" << endl;
return true;
}
-void MyDNSBackend::lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int zoneId) {
+void MyDNSBackend::lookup(const QType &qtype, const DNSName &qname, int zoneId, DNSPacket *p) {
SSqlStatement::row_t rrow;
bool found = false;
MyDNSBackend(const string &suffix);
~MyDNSBackend();
- void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1) override;
+ void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override;
bool list(const DNSName &target, int domain_id, bool include_disabled=false) override;
bool get(DNSResourceRecord &r) override;
bool getSOA(const DNSName& name, SOAData& soadata) override;
-void OdbxBackend::lookup( const QType& qtype, const DNSName& qname, DNSPacket* dnspkt, int zoneid )
+void OdbxBackend::lookup( const QType& qtype, const DNSName& qname, int zoneid, DNSPacket* dnspkt )
{
try
{
OdbxBackend( const string& suffix="" );
~OdbxBackend();
- void lookup( const QType& qtype, const DNSName& qdomain, DNSPacket* p = 0, int zoneid = -1 ) override;
+ void lookup( const QType& qtype, const DNSName& qdomain, int zoneid, DNSPacket* p = nullptr ) override;
bool getSOA( const DNSName& domain, SOAData& sd ) override;
bool list( const DNSName& target, int domain_id, bool include_disabled=false ) override;
bool get( DNSResourceRecord& rr ) override;
d_abiVersion = 0;
}
-void PipeBackend::lookup(const QType& qtype,const DNSName& qname, DNSPacket *pkt_p, int zoneId)
+void PipeBackend::lookup(const QType& qtype,const DNSName& qname, int zoneId, DNSPacket *pkt_p)
{
try {
launch();
public:
PipeBackend(const string &suffix="");
~PipeBackend();
- void lookup(const QType&, const DNSName& qdomain, DNSPacket *p=0, int zoneId=-1) override;
+ void lookup(const QType&, const DNSName& qdomain, int zoneId, DNSPacket *p=nullptr) override;
bool list(const DNSName& target, int domain_id, bool include_disabled=false) override;
bool get(DNSResourceRecord &r) override;
string directBackendCmd(const string &query) override;
return false; // we don't support AXFR
}
- void lookup(const QType &type, const DNSName &qdomain, DNSPacket *p, int zoneId) override
+ void lookup(const QType &type, const DNSName &qdomain, int zoneId, DNSPacket *p) override
{
if(qdomain == d_ourdomain){
if(type.getCode() == QType::SOA || type.getCode() == QType::ANY) {
* The functions here are just remote json stubs that send and receive the method call
* data is mainly left alone, some defaults are assumed.
*/
-void RemoteBackend::lookup(const QType &qtype, const DNSName& qdomain, DNSPacket *pkt_p, int zoneId) {
+void RemoteBackend::lookup(const QType &qtype, const DNSName& qdomain, int zoneId, DNSPacket *pkt_p) {
if (d_index != -1)
throw PDNSException("Attempt to lookup while one running");
RemoteBackend(const std::string &suffix="");
~RemoteBackend();
- void lookup(const QType &qtype, const DNSName& qdomain, DNSPacket *pkt_p=0, int zoneId=-1) override;
+ void lookup(const QType &qtype, const DNSName& qdomain, int zoneId=-1, DNSPacket *pkt_p=nullptr) override;
bool get(DNSResourceRecord &rr) override;
bool list(const DNSName& target, int domain_id, bool include_disabled=false) override;
return d_cdbReader->searchSuffix(key);
}
-void TinyDNSBackend::lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p, int zoneId) {
+void TinyDNSBackend::lookup(const QType &qtype, const DNSName &qdomain, int zoneId, DNSPacket *pkt_p) {
d_isAxfr = false;
string queryDomain = toLowerCanonic(qdomain.toString());
public:
// Methods for simple operation
TinyDNSBackend(const string &suffix);
- void lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1) override;
+ void lookup(const QType &qtype, const DNSName &qdomain, int zoneId, DNSPacket *pkt_p=nullptr) override;
bool list(const DNSName &target, int domain_id, bool include_disabled=false) override;
bool get(DNSResourceRecord &rr) override;
void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override;
return true;
}
-void GSQLBackend::lookup(const QType &qtype,const DNSName &qname, DNSPacket *pkt_p, int domain_id)
+void GSQLBackend::lookup(const QType &qtype,const DNSName &qname, int domain_id, DNSPacket *pkt_p)
{
try {
reconnectIfNeeded();
d_SearchCommentsQuery_stmt.reset();
}
- void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1) override;
+ void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override;
bool list(const DNSName &target, int domain_id, bool include_disabled=false) override;
bool get(DNSResourceRecord &r) override;
void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override;
this->resolve_name(&addresses, name);
if(b) {
- b->lookup(QType(QType::ANY),name);
+ b->lookup(QType(QType::ANY),name,-1);
DNSZoneRecord rr;
while(b->get(rr))
if(rr.dr.d_type == QType::A || rr.dr.d_type==QType::AAAA)
DLOG(g_log<<"Could not get SOA for domain"<<endl);
return false;
}
- db.lookup(QType(QType::RRSIG), wildcardname.countLabels() ? wildcardname : qname, NULL, sd.domain_id);
+ db.lookup(QType(QType::RRSIG), wildcardname.countLabels() ? wildcardname : qname, sd.domain_id);
DNSZoneRecord rr;
while(db.get(rr)) {
auto rrsig = getRR<RRSIGRecordContent>(rr.dr);
*/
bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd)
{
- this->lookup(QType(QType::SOA),domain);
+ this->lookup(QType(QType::SOA),domain,-1);
DNSResourceRecord rr;
rr.auth = true;
{
public:
//! lookup() initiates a lookup. A lookup without results should not throw!
- virtual void lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1)=0;
+ virtual void lookup(const QType &qtype, const DNSName &qdomain, int zoneId=-1, DNSPacket *pkt_p=nullptr)=0;
virtual bool get(DNSResourceRecord &)=0; //!< retrieves one DNSResource record, returns false if no more were available
virtual bool get(DNSZoneRecord &r);
static UeberBackend ub;
static std::mutex mut;
std::lock_guard<std::mutex> lock(mut);
- ub.lookup(QType(qtype), name, nullptr, zoneid);
+ ub.lookup(QType(qtype), name, zoneid);
DNSZoneRecord dr;
vector<DNSZoneRecord> ret;
while(ub.get(dr)) {
try {
if (d_onlyNotify.size()) {
- B->lookup(QType(QType::NS), di.zone);
+ B->lookup(QType(QType::NS), di.zone, -1);
while(B->get(rr))
nsset.insert(getRR<NSRecordContent>(rr.dr)->getNS().toString());
}
if(::arg().mustDo("direct-dnskey")) {
- B.lookup(QType(QType::CDNSKEY), p->qdomain, p, sd.domain_id);
+ B.lookup(QType(QType::CDNSKEY), p->qdomain, sd.domain_id, p);
while(B.get(rr)) {
rr.dr.d_ttl=sd.default_ttl;
}
if(::arg().mustDo("direct-dnskey")) {
- B.lookup(QType(QType::DNSKEY), p->qdomain, p, sd.domain_id);
+ B.lookup(QType(QType::DNSKEY), p->qdomain, sd.domain_id, p);
while(B.get(rr)) {
rr.dr.d_ttl=sd.default_ttl;
}
if(::arg().mustDo("direct-dnskey")) {
- B.lookup(QType(QType::CDS), p->qdomain, p, sd.domain_id);
+ B.lookup(QType(QType::CDS), p->qdomain, sd.domain_id, p);
while(B.get(rr)) {
rr.dr.d_ttl=sd.default_ttl;
do {
if(subdomain == sd.qname) // stop at SOA
break;
- B.lookup(QType(QType::NS), subdomain, p, sd.domain_id);
+ B.lookup(QType(QType::NS), subdomain, sd.domain_id, p);
while(B.get(rr)) {
ret.push_back(rr); // this used to exclude auth NS records for some reason
}
do {
DLOG(g_log<<"Attempting DNAME lookup for "<<subdomain<<", sd.qname="<<sd.qname<<endl);
- B.lookup(QType(QType::DNAME), subdomain, p, sd.domain_id);
+ B.lookup(QType(QType::DNAME), subdomain, sd.domain_id, p);
while(B.get(rr)) {
ret.push_back(rr); // put in the original
rr.dr.d_type = QType::CNAME;
wildcard=subdomain;
while( subdomain.chopOff() && !haveSomething ) {
if (subdomain.empty()) {
- B.lookup(QType(QType::ANY), g_wildcarddnsname, p, sd.domain_id);
+ B.lookup(QType(QType::ANY), g_wildcarddnsname, sd.domain_id, p);
} else {
- B.lookup(QType(QType::ANY), g_wildcarddnsname+subdomain, p, sd.domain_id);
+ B.lookup(QType(QType::ANY), g_wildcarddnsname+subdomain, sd.domain_id, p);
}
while(B.get(rr)) {
#ifdef HAVE_LUA_RECORDS
if ( subdomain == sd.qname || haveSomething ) // stop at SOA or result
break;
- B.lookup(QType(QType::ANY), subdomain, p, sd.domain_id);
+ B.lookup(QType(QType::ANY), subdomain, sd.domain_id, p);
if (B.get(rr)) {
DLOG(g_log<<"No wildcard match, ancestor exists"<<endl);
while (B.get(rr)) ;
else
continue;
- B.lookup(QType(d_doIPv6AdditionalProcessing ? QType::ANY : QType::A), lookup, p, soadata.domain_id);
+ B.lookup(QType(d_doIPv6AdditionalProcessing ? QType::ANY : QType::A), lookup, soadata.domain_id, p);
while(B.get(rr)) {
if(rr.dr.d_type != QType::A && rr.dr.d_type!=QType::AAAA)
DNSZoneRecord rr;
- B.lookup(QType(QType::ANY), name, NULL, sd.domain_id);
+ B.lookup(QType(QType::ANY), name, sd.domain_id);
while(B.get(rr)) {
#ifdef HAVE_LUA_RECORDS
if(rr.dr.d_type == QType::LUA)
n3rc.set(QType::CDS);
}
- B.lookup(QType(QType::ANY), name, NULL, sd.domain_id);
+ B.lookup(QType(QType::ANY), name, sd.domain_id);
while(B.get(rr)) {
#ifdef HAVE_LUA_RECORDS
if(rr.dr.d_type == QType::LUA)
bool doBreak = false;
DNSZoneRecord rr;
while( closest.chopOff() && (closest != sd.qname)) { // stop at SOA
- B.lookup(QType(QType::ANY), closest, p, sd.domain_id);
+ B.lookup(QType(QType::ANY), closest, sd.domain_id, p);
while(B.get(rr))
if (rr.auth)
doBreak = true;
bool PacketHandler::addDSforNS(DNSPacket* p, DNSPacket* r, SOAData& sd, const DNSName& dsname)
{
//cerr<<"Trying to find a DS for '"<<dsname<<"', domain_id = "<<sd.domain_id<<endl;
- B.lookup(QType(QType::DS), dsname, p, sd.domain_id);
+ B.lookup(QType(QType::DS), dsname, sd.domain_id, p);
DNSZoneRecord rr;
bool gotOne=false;
while(B.get(rr)) {
#endif
// see what we get..
- B.lookup(QType(QType::ANY), target, p, sd.domain_id);
+ B.lookup(QType(QType::ANY), target, sd.domain_id, p);
rrset.clear();
haveAlias.trimToLabels(0);
aliasScopeMask = 0;
unsigned int hits=0, misses=0;
for(; n < 10000; ++n) {
DNSName domain(domains[dns_random(domains.size())]);
- B.lookup(QType(QType::NS), domain);
+ B.lookup(QType(QType::NS), domain, -1);
while(B.get(rr)) {
hits++;
}
- B.lookup(QType(QType::A), DNSName(std::to_string(random()))+domain);
+ B.lookup(QType(QType::A), DNSName(std::to_string(random()))+domain, -1);
while(B.get(rr)) {
}
misses++;
if(B.getSOAUncached(parent, sd_p)) {
bool ns=false;
DNSZoneRecord zr;
- B.lookup(QType(QType::ANY), zone, NULL, sd_p.domain_id);
+ B.lookup(QType(QType::ANY), zone, sd_p.domain_id);
while(B.get(zr))
ns |= (zr.dr.d_type == QType::NS);
if (!ns) {
di.backend->startTransaction(zone, -1);
if(addOrReplace) { // the 'add' case
- di.backend->lookup(rr.qtype, rr.qname, 0, di.id);
+ di.backend->lookup(rr.qtype, rr.qname, di.id);
while(di.backend->get(oldrr))
newrrs.push_back(oldrr);
}
}
- di.backend->lookup(QType(QType::ANY), rr.qname, 0, di.id);
+ di.backend->lookup(QType(QType::ANY), rr.qname, di.id);
bool found=false;
if(rr.qtype.getCode() == QType::CNAME) { // this will save us SO many questions
di.backend->replaceRRSet(di.id, name, rr.qtype, newrrs);
// need to be explicit to bypass the ueberbackend cache!
- di.backend->lookup(rr.qtype, name, 0, di.id);
+ di.backend->lookup(rr.qtype, name, di.id);
di.backend->commitTransaction();
cout<<"New rrset:"<<endl;
while(di.backend->get(rr)) {
vector<DNSKEYRecordContent> keys;
DNSZoneRecord zr;
- B.lookup(QType(QType::DNSKEY), zone);
+ B.lookup(QType(QType::DNSKEY), zone, -1 );
while(B.get(zr)) {
if (zr.dr.d_type != QType::DNSKEY) continue;
keys.push_back(*getRR<DNSKEYRecordContent>(zr.dr));
cout<<"Committing"<<endl;
db->commitTransaction();
cout<<"Querying TXT"<<endl;
- db->lookup(QType(QType::TXT), zone, NULL, di.id);
+ db->lookup(QType(QType::TXT), zone, di.id);
if(db->get(rrget))
{
DNSResourceRecord rrthrowaway;
bool foundRecord=false;
DNSResourceRecord rec;
- di->backend->lookup(QType(QType::ANY), rr->d_name, nullptr, di->id);
+ di->backend->lookup(QType(QType::ANY), rr->d_name, di->id);
while(di->backend->get(rec)) {
if (!rec.qtype.getCode())
continue;
bool foundRecord = false;
- di->backend->lookup(rrType, rr->d_name, nullptr, di->id);
+ di->backend->lookup(rrType, rr->d_name, di->id);
while (di->backend->get(rec)) {
rrset.push_back(rec);
foundRecord = true;
break;
bool foundShorter = false;
- di->backend->lookup(QType(QType::ANY), shorter, nullptr, di->id);
+ di->backend->lookup(QType(QType::ANY), shorter, di->id);
while (di->backend->get(rec)) {
if (rec.qname == rr->d_name && rec.qtype == QType::DS)
fixDS = true;
} // end of NSEC3PARAM delete block
- di->backend->lookup(rrType, rr->d_name, nullptr, di->id);
+ di->backend->lookup(rrType, rr->d_name, di->id);
while(di->backend->get(rec)) {
if (rr->d_class == QClass::ANY) { // 3.4.2.3
if (rec.qname == di->zone && (rec.qtype == QType::NS || rec.qtype == QType::SOA)) // Never delete all SOA and NS's
rrVector_t *vec = &preRRSet->second;
DNSResourceRecord rec;
- di.backend->lookup(QType(QType::ANY), rrSet.first, nullptr, di.id);
+ di.backend->lookup(QType(QType::ANY), rrSet.first, di.id);
uint16_t foundRR=0, matchRR=0;
while (di.backend->get(rec)) {
if (rec.qtype == rrSet.second) {
}
for (const auto &rr : cnamesToAdd) {
DNSResourceRecord rec;
- di.backend->lookup(QType(QType::ANY), rr->d_name, nullptr, di.id);
+ di.backend->lookup(QType(QType::ANY), rr->d_name, di.id);
while (di.backend->get(rec)) {
if (rec.qtype != QType::CNAME && rec.qtype != QType::ENT && rec.qtype != QType::RRSIG) {
// leave database handle in a consistent state
}
for (const auto &rr : nonCnamesToAdd) {
DNSResourceRecord rec;
- di.backend->lookup(QType(QType::CNAME), rr->d_name, nullptr, di.id);
+ di.backend->lookup(QType(QType::CNAME), rr->d_name, di.id);
while (di.backend->get(rec)) {
if (rec.qtype == QType::CNAME && rr->d_type != QType::RRSIG) {
// leave database handle in a consistent state
if (nsRRtoDelete.size()) {
vector<DNSResourceRecord> nsRRInZone;
DNSResourceRecord rec;
- di.backend->lookup(QType(QType::NS), di.zone, nullptr, di.id);
+ di.backend->lookup(QType(QType::NS), di.zone, di.id);
while (di.backend->get(rec)) {
nsRRInZone.push_back(rec);
}
vector<DNSRecord> rrset;
{
DNSZoneRecord zrr;
- B.lookup(QType(g.first.second), g.first.first+domain, 0, di.id);
+ B.lookup(QType(g.first.second), g.first.first+domain, di.id);
while(B.get(zrr)) {
zrr.dr.d_name.makeUsRelative(domain);
rrset.push_back(zrr.dr);
else if(hasSOA && theirserial == ourserial) {
uint32_t maxExpire=0, maxInception=0;
if(dk.isPresigned(di.zone)) {
- B->lookup(QType(QType::RRSIG), di.zone); // can't use DK before we are done with this lookup!
+ B->lookup(QType(QType::RRSIG), di.zone, -1); // can't use DK before we are done with this lookup!
DNSZoneRecord zr;
while(B->get(zr)) {
auto rrsig = getRR<RRSIGRecordContent>(zr.dr);
DNSResourceRecord rr;
set<DNSName> nsset;
- B->lookup(QType(QType::NS),q->qdomain);
+ B->lookup(QType(QType::NS),q->qdomain,sd.domain_id);
while(B->get(rr))
nsset.insert(DNSName(rr.content));
for(const auto & j: nsset) {
}
if(::arg().mustDo("direct-dnskey")) {
- sd.db->lookup(QType(QType::DNSKEY), target, NULL, sd.domain_id);
+ sd.db->lookup(QType(QType::DNSKEY), target, sd.domain_id);
while(sd.db->get(zrr)) {
zrr.dr.d_ttl = sd.default_ttl;
csp.submit(zrr);
}
// this handle is more magic than most
-void UeberBackend::lookup(const QType &qtype,const DNSName &qname, DNSPacket *pkt_p, int zoneId)
+void UeberBackend::lookup(const QType &qtype,const DNSName &qname, int zoneId, DNSPacket *pkt_p)
{
if(d_stale) {
g_log<<Logger::Error<<"Stale ueberbackend received question, signalling that we want to be recycled"<<endl;
// cout<<"UeberBackend::lookup("<<qname<<"|"<<DNSRecordContent::NumberToType(qtype.getCode())<<"): uncached"<<endl;
d_negcached=d_cached=false;
d_answers.clear();
- (d_handle.d_hinterBackend=backends[d_handle.i++])->lookup(qtype, qname,pkt_p,zoneId);
+ (d_handle.d_hinterBackend=backends[d_handle.i++])->lookup(qtype, qname,zoneId,pkt_p);
}
else if(cstat==0) {
// cout<<"UeberBackend::lookup("<<qname<<"|"<<DNSRecordContent::NumberToType(qtype.getCode())<<"): NEGcached"<<endl;
<<" out of answers, taking next"<<endl);
d_hinterBackend=parent->backends[i++];
- d_hinterBackend->lookup(qtype,qname,pkt_p,parent->d_domain_id);
+ d_hinterBackend->lookup(qtype,qname,parent->d_domain_id,pkt_p);
}
else
break;
static AtomicCounter instances;
};
- void lookup(const QType &, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1);
+ void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *pkt_p=nullptr);
/** Determines if we are authoritative for a zone, and at what level */
bool getAuth(const DNSName &target, const QType &qtype, SOAData* sd, bool cachedOk=true);
if (replace_records) {
bool ent_present = false;
- di.backend->lookup(QType(QType::ANY), qname);
+ di.backend->lookup(QType(QType::ANY), qname, -1);
DNSResourceRecord rr;
while (di.backend->get(rr)) {
if (rr.qtype.getCode() == QType::ENT) {