return i->second(content);
}
+std::unique_ptr<DNSRecordContent> 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<DNSRecordContent>(new UnknownRecordContent(content));
+ }
+
+ return std::unique_ptr<DNSRecordContent>(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.
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<DNSRecordContent> makeunique(uint16_t qtype, uint16_t qclass, const string& content);
virtual std::string getZoneRepresentation() const = 0;
virtual ~DNSRecordContent() {}