From d86e1bf7048a216a6e5c49de991c8b61684e7ae4 Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Fri, 1 Apr 2016 12:34:03 +0200 Subject: [PATCH] synthesise ALIAS during outgoing AXFR --- pdns/tcpreceiver.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pdns/tcpreceiver.cc b/pdns/tcpreceiver.cc index c855b8dda..fc771a36e 100644 --- a/pdns/tcpreceiver.cc +++ b/pdns/tcpreceiver.cc @@ -737,6 +737,22 @@ int TCPNameserver::doAXFR(const DNSName &target, shared_ptr q, int ou while(sd.db->get(rr)) { if(rr.qname.isPartOf(target)) { + if (rr.qtype.getCode() == QType::ALIAS) { + FindNS fns; + vector ips=fns.lookup(DNSName(rr.content), (DNSBackend *) NULL); + for(const auto& ip: ips) { + if(ip.find(":") == string::npos) + rr.qtype = QType(QType::A); + else + rr.qtype = QType(QType::AAAA); + rr.content = ip; + rrs.push_back(rr); + } + } + else { + rrs.push_back(rr); + } + if (rectify) { if (rr.qtype.getCode()) { qnames.insert(rr.qname); @@ -747,7 +763,6 @@ int TCPNameserver::doAXFR(const DNSName &target, shared_ptr q, int ou continue; } } - rrs.push_back(rr); } else { if (rr.qtype.getCode()) L<