From: bert hubert Date: Fri, 2 Oct 2015 13:11:31 +0000 (+0200) Subject: add makeunique to mastermakt X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a957f3eec2b1396aa0447b489759afd1d7719b9a;p=thirdparty%2Fpdns.git add makeunique to mastermakt --- diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index d1752d3b3e..b2b67b4f55 100644 --- a/pdns/dnsparser.cc +++ b/pdns/dnsparser.cc @@ -164,6 +164,18 @@ DNSRecordContent* DNSRecordContent::mastermake(uint16_t qtype, uint16_t qclass, return i->second(content); } +std::unique_ptr DNSRecordContent::makeunique(uint16_t qtype, uint16_t qclass, + const string& content) +{ + zmakermap_t::const_iterator i=getZmakermap().find(make_pair(qclass, qtype)); + if(i==getZmakermap().end()) { + return std::unique_ptr(new UnknownRecordContent(content)); + } + + return std::unique_ptr(i->second(content)); +} + + DNSRecordContent* DNSRecordContent::mastermake(const DNSRecord &dr, PacketReader& pr, uint16_t oc) { // For opcode UPDATE and where the DNSRecord is an answer record, we don't care about content, because this is // not used within the prerequisite section of RFC2136, so - we can simply use unknownrecordcontent. diff --git a/pdns/dnsparser.hh b/pdns/dnsparser.hh index 2a3e26986b..4a12057932 100644 --- a/pdns/dnsparser.hh +++ b/pdns/dnsparser.hh @@ -162,6 +162,7 @@ public: static DNSRecordContent* mastermake(const DNSRecord &dr, PacketReader& pr); static DNSRecordContent* mastermake(const DNSRecord &dr, PacketReader& pr, uint16_t opcode); static DNSRecordContent* mastermake(uint16_t qtype, uint16_t qclass, const string& zone); + static std::unique_ptr makeunique(uint16_t qtype, uint16_t qclass, const string& content); virtual std::string getZoneRepresentation() const = 0; virtual ~DNSRecordContent() {}