From: Peter van Dijk Date: Fri, 1 Apr 2016 10:34:03 +0000 (+0200) Subject: synthesise ALIAS during outgoing AXFR X-Git-Tag: rec-4.0.0-alpha3~1^2~8 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d86e1bf7048a216a6e5c49de991c8b61684e7ae4;p=pdns synthesise ALIAS during outgoing AXFR --- 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<