From dc1fb060f7eabbf206c38cfe82b76c39dfb071be Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Wed, 24 Jun 2015 01:45:10 +0200 Subject: [PATCH] bind tests pass --- modules/bindbackend/bindbackend2.cc | 29 +++++++++++++++++------------ modules/bindbackend/bindbackend2.hh | 10 +++++----- modules/bindbackend/binddnssec.cc | 4 ++-- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 6e8afeedd..871021915 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -493,7 +493,7 @@ void Bind2Backend::insertRecord(BB2DomainInfo& bb2, const DNSName &qname, const if(!records->empty() && bdr.qname==boost::prior(records->end())->qname) bdr.qname=boost::prior(records->end())->qname; - bdr.qname=bdr.qname.labelReverse(); + bdr.qname=bdr.qname; bdr.qtype=qtype.getCode(); bdr.content=content; bdr.nsec3hash = hashed; @@ -666,7 +666,7 @@ void Bind2Backend::fixupAuth(shared_ptr records) if(bdr.qtype == QType::DS) // as are delegation signer records continue; - sqname = bdr.qname.labelReverse(); + sqname = bdr.qname; do { if(sqname.empty() || sqname.isRoot()) // this is auth of course! @@ -690,10 +690,10 @@ void Bind2Backend::doEmptyNonTerminals(BB2DomainInfo& bbd, bool nsec3zone, NSEC3 uint32_t maxent = ::arg().asNum("max-ent-entries"); for(const auto& bdr : *records) - qnames.insert(bdr.qname.labelReverse()); + qnames.insert(bdr.qname); for(const auto& bdr : *records) { - shorter=bdr.qname.labelReverse(); + shorter=bdr.qname; if (!bdr.auth && bdr.qtype == QType::NS) auth=(!nsec3zone || !ns3pr.d_flags); @@ -886,19 +886,24 @@ void Bind2Backend::queueReloadAndStore(unsigned int id) bool Bind2Backend::findBeforeAndAfterUnhashed(BB2DomainInfo& bbd, const DNSName& qname, DNSName& unhashed, string& before, string& after) { shared_ptr records = bbd.d_records.get(); + +// BOOST_FOREACH(const Bind2DNSRecord& bdr, *records) { +// cerr<<"Hash: "<upper_bound(qname); if (before.empty()){ //cout<<"starting before for: '"<upper_bound(qname); - while(iter == records->end() || (qname < iter->qname) || (!(iter->auth) && (!(iter->qtype == QType::NS))) || (!(iter->qtype))) + while(iter == records->end() || (qname.canonCompare(iter->qname)) || (!(iter->auth) && (!(iter->qtype == QType::NS))) || (!(iter->qtype))) iter--; - before=iter->qname.toString(" ",false); + before=iter->qname.labelReverse().toString(" ",false); } else { - before=qname.toString(" ",false); + before=qname.labelReverse().toString(" ",false); } //cerr<<"Now after"<qname.toString(" ",false); + after = (iter)->qname.labelReverse().toString(" ",false); } cerr<<"Before: '"<nsec3hash; - unhashed = iter->qname.labelReverse() + auth; + unhashed = iter->qname + auth; // cerr<<"before: "<<(iter->nsec3hash)<<"/"<<(iter->qname)< range; - range = d_handle.d_records->equal_range(d_handle.qname.labelReverse()); + range = d_handle.d_records->equal_range(d_handle.qname); //cout<<"End equal range"<qname.empty() ? domain : (d_qname_iter->qname.labelReverse()+domain); + r.qname=d_qname_iter->qname.empty() ? domain : (d_qname_iter->qname+domain); r.domain_id=id; r.content=(d_qname_iter)->content; r.qtype=(d_qname_iter)->qtype; diff --git a/modules/bindbackend/bindbackend2.hh b/modules/bindbackend/bindbackend2.hh index 98765b1e7..b60d76125 100644 --- a/modules/bindbackend/bindbackend2.hh +++ b/modules/bindbackend/bindbackend2.hh @@ -60,9 +60,9 @@ struct Bind2DNSRecord mutable bool auth; bool operator<(const Bind2DNSRecord& rhs) const { - if(qname < rhs.qname) + if(qname.canonCompare(rhs.qname)) return true; - if(rhs.qname < qname) + if(rhs.qname.canonCompare(qname)) return false; if(qtype==QType::SOA && rhs.qtype!=QType::SOA) return true; @@ -75,11 +75,11 @@ struct Bind2DNSCompare : std::less using std::less::operator(); // use operator< bool operator() (const DNSName& a, const Bind2DNSRecord& b) const - {return a < b.qname;} + {return a.canonCompare(b.qname);} bool operator() (const Bind2DNSRecord& a, const DNSName& b) const - {return a.qname < b;} + {return a.qname.canonCompare(b);} bool operator() (const Bind2DNSRecord& a, const Bind2DNSRecord& b) const - {return a.qname < b.qname;} + {return a.qname.canonCompare(b.qname);} }; struct HashedTag{}; diff --git a/modules/bindbackend/binddnssec.cc b/modules/bindbackend/binddnssec.cc index 6cd60476d..892eab4a0 100644 --- a/modules/bindbackend/binddnssec.cc +++ b/modules/bindbackend/binddnssec.cc @@ -68,10 +68,10 @@ bool Bind2Backend::deactivateDomainKey(const DNSName& name, unsigned int id) bool Bind2Backend::getTSIGKey(const DNSName& name, DNSName* algorithm, string* content) { return false; } -bool Bind2Backend::setTSIGKey(const DNSName& name, const string& algorithm, const string& content) +bool Bind2Backend::setTSIGKey(const DNSName& name, const DNSName& algorithm, const string& content) { return false; } -bool Bind2Backend::deleteTSIGKey(const string& name) +bool Bind2Backend::deleteTSIGKey(const DNSName& name) { return false; } bool Bind2Backend::getTSIGKeys(std::vector< struct TSIGKey > &keys) -- 2.49.0