From 5e1031cd114a3a5cf8d23632d4681888a228381f Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Mon, 1 Jun 2015 13:40:49 +0200 Subject: [PATCH] tinydns snap --- modules/tinydnsbackend/tinydnsbackend.cc | 13 ++++++------- modules/tinydnsbackend/tinydnsbackend.hh | 8 ++++---- pdns/dnsname.cc | 9 +++++++++ pdns/dnsname.hh | 1 + pdns/dnsparser.cc | 2 ++ 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/modules/tinydnsbackend/tinydnsbackend.cc b/modules/tinydnsbackend/tinydnsbackend.cc index b04dd5b223..642e1a2404 100644 --- a/modules/tinydnsbackend/tinydnsbackend.cc +++ b/modules/tinydnsbackend/tinydnsbackend.cc @@ -155,20 +155,20 @@ void TinyDNSBackend::getAllDomains(vector *domains, bool include_dis } } -bool TinyDNSBackend::list(const string &target, int domain_id, bool include_disabled) { +bool TinyDNSBackend::list(const DNSName &target, int domain_id, bool include_disabled) { d_isAxfr=true; - string key = simpleCompress(target); + string key = simpleCompress(target.toString()); // FIXME bug: no lowercase here? or do we promise lowercase from core now? d_cdbReader=new CDB(getArg("dbfile")); return d_cdbReader->searchSuffix(key); } -void TinyDNSBackend::lookup(const QType &qtype, const string &qdomain, DNSPacket *pkt_p, int zoneId) { +void TinyDNSBackend::lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p, int zoneId) { d_isAxfr = false; - string queryDomain = toLowerCanonic(qdomain); + string queryDomain = toLowerCanonic(qdomain.toString()); string key=simpleCompress(queryDomain); - DLOG(L< IT IS ALWAYS AUTH --- well not really because we are just a backend :-) // We could actually do NSEC3-NARROW DNSSEC according to Habbie, if we do, we need to change something ehre. diff --git a/modules/tinydnsbackend/tinydnsbackend.hh b/modules/tinydnsbackend/tinydnsbackend.hh index 4dde2c29ac..a77fea4e58 100644 --- a/modules/tinydnsbackend/tinydnsbackend.hh +++ b/modules/tinydnsbackend/tinydnsbackend.hh @@ -21,7 +21,7 @@ using namespace ::boost::multi_index; struct TinyDomainInfo { uint32_t id; uint32_t notified_serial; - string zone; + DNSName zone; bool operator<(const TinyDomainInfo& tdi) const { @@ -47,8 +47,8 @@ class TinyDNSBackend : public DNSBackend public: // Methods for simple operation TinyDNSBackend(const string &suffix); - void lookup(const QType &qtype, const string &qdomain, DNSPacket *pkt_p=0, int zoneId=-1); - bool list(const string &target, int domain_id, bool include_disabled=false); + void lookup(const QType &qtype, const DNSName &qdomain, DNSPacket *pkt_p=0, int zoneId=-1); + bool list(const DNSName &target, int domain_id, bool include_disabled=false); bool get(DNSResourceRecord &rr); void getAllDomains(vector *domains, bool include_disabled=false); @@ -64,7 +64,7 @@ private: typedef multi_index_container< TinyDomainInfo, indexed_by< - hashed_unique, member >, + hashed_unique, member >, hashed_unique, member > > > TDI_t; diff --git a/pdns/dnsname.cc b/pdns/dnsname.cc index 3a39b6c6e7..2c11810fc1 100644 --- a/pdns/dnsname.cc +++ b/pdns/dnsname.cc @@ -4,6 +4,9 @@ #include "dnswriter.hh" #include "logger.hh" +#include "misc.hh" + +#include /* raw storage in DNS label format, without trailing 0. So the root is of length 0. @@ -188,6 +191,12 @@ bool DNSName::operator==(const DNSName& rhs) const return true; } +size_t hash_value(DNSName const& d) +{ + boost::hash hasher; + return hasher(toLower(d.toString())); // FIXME HACK +} + string DNSName::escapeLabel(const std::string& label) { string ret; diff --git a/pdns/dnsname.hh b/pdns/dnsname.hh index b067a11b2e..f75bad9276 100644 --- a/pdns/dnsname.hh +++ b/pdns/dnsname.hh @@ -87,6 +87,7 @@ struct CanonDNSNameCompare: public std::binary_function return a.canonCompare(b); } }; +size_t hash_value(DNSName const& d); inline DNSName operator+(const DNSName& lhs, const DNSName& rhs) { diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index d533771597..a02cc45f81 100644 --- a/pdns/dnsparser.cc +++ b/pdns/dnsparser.cc @@ -483,6 +483,7 @@ void PacketReader::xfrHexBlob(string& blob, bool keepReading) xfrBlob(blob); } +//FIXME remove this method completely string simpleCompress(const string& elabel, const string& root) { string label=elabel; @@ -511,6 +512,7 @@ string simpleCompress(const string& elabel, const string& root) } +// FIXME this function needs to go void simpleExpandTo(const string& label, unsigned int frompos, string& ret) { unsigned int labellen=0; -- 2.47.2