L<<Logger::Error<<"Assigning local query addresses: "<<e.what();
exit(99);
}
+
+ SyncRes::s_doAAAAAdditionalProcessing = ::arg().mustDo("aaaa-additional-processing");
+ SyncRes::s_doAdditionalProcessing = ::arg().mustDo("additional-processing") | SyncRes::s_doAAAAAdditionalProcessing;
SyncRes::s_noEDNSPing = ::arg().mustDo("disable-edns-ping");
SyncRes::s_noEDNS = ::arg().mustDo("disable-edns");
::arg().set("soa-minimum-ttl","Don't change")="0";
::arg().set("soa-serial-offset","Don't change")="0";
::arg().set("no-shuffle","Don't change")="off";
+ ::arg().set("additional-processing","turn on to do additional processing")="off";
::arg().set("aaaa-additional-processing","turn on to do AAAA additional processing (slow)")="off";
::arg().set("local-port","port to listen on")="53";
::arg().set("local-address","IP addresses to listen on, separated by spaces or commas. Also accepts ports.")="127.0.0.1";
::arg().set("forward-zones-recurse", "Zones for which we forward queries with recursion bit, comma separated domain=ip pairs")="";
::arg().set("forward-zones-file", "File with (+)domain=ip pairs for forwarding")="";
::arg().set("export-etc-hosts", "If we should serve up contents from /etc/hosts")="off";
+ // ::arg().set("export-etc-hosts-search-suffix", "Also serve up the contents of /etc/hosts with this suffix")="";
::arg().set("etc-hosts-file", "Path to 'hosts' file")="/etc/hosts";
::arg().set("serve-rfc1918", "If we should be authoritative for RFC 1918 private IP space")="";
::arg().set("auth-can-lower-ttl", "If we follow RFC 2181 to the letter, an authoritative server can lower the TTL of NS records")="off";
bool SyncRes::s_noEDNSPing;
bool SyncRes::s_noEDNS;
+bool SyncRes::s_doAdditionalProcessing;
+bool SyncRes::s_doAAAAAdditionalProcessing;
SyncRes::SyncRes(const struct timeval& now) : d_outqueries(0), d_tcpoutqueries(0), d_throttledqueries(0), d_timeouts(0), d_unreachables(0),
d_now(now),
set<GetBestNSAnswer> beenthere;
int res=doResolve(qname, qtype, ret, 0, beenthere);
- if(!res)
+ if(!res && s_doAdditionalProcessing)
addCruft(qname, ret);
return res;
}
LOG<<d_prefix<<qname<<": Starting additional processing"<<endl;
vector<DNSResourceRecord> addit;
- static optional<bool> l_doIPv6AP;
- if(!l_doIPv6AP)
- l_doIPv6AP=::arg().mustDo("aaaa-additional-processing");
for(vector<DNSResourceRecord>::const_iterator k=ret.begin();k!=ret.end();++k)
if( (k->d_place==DNSResourceRecord::ANSWER && (k->qtype==QType(QType::MX) || k->qtype==QType(QType::SRV))) ||
host=string(k->content.c_str() + fields[3].first, fields[3].second - fields[3].first);
else
continue;
- doResolve(host, *l_doIPv6AP ? QType(QType::ADDR) : QType(QType::A), addit, 1, beenthere);
+ doResolve(host, s_doAAAAAdditionalProcessing ? QType(QType::ADDR) : QType(QType::A), addit, 1, beenthere);
}
if(!addit.empty()) {