SyncRes::s_doIPv6=true;
L<<Logger::Error<<"Enabling IPv6 transport for outgoing queries"<<endl;
}
-
+ SyncRes::s_noEDNSPing = ::arg().mustDo("disable-edns-ping");
SyncRes::s_maxnegttl=::arg().asNum("max-negative-ttl");
SyncRes::s_serverID=::arg()["server-id"];
if(SyncRes::s_serverID.empty()) {
::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";
::arg().set("lua-dns-script", "Filename containing an optional 'lua' script that will be used to modify dns answers")="";
::arg().setSwitch( "ignore-rd-bit", "Assume each packet requires recursion, for compatability" )= "off";
+ ::arg().setSwitch( "disable-edns-ping", "Disable EDNSPing" )= "";
::arg().setCmd("help","Provide a helpful message");
::arg().setCmd("version","Print version string ("VERSION")");
#define LOG if(s_log) L<<Logger::Warning
SyncRes::throttle_t SyncRes::s_throttle;
+bool SyncRes::s_noEDNSPing;
/** everything begins here - this is the entry point just after receiving a packet */
int SyncRes::beginResolve(const string &qname, const QType &qtype, uint16_t qclass, vector<DNSResourceRecord>&ret)
SyncRes::EDNSStatus& ednsstatus=SyncRes::s_ednsstatus[ip];
if(ednsstatus.modeSetAt && ednsstatus.modeSetAt + 3600 < d_now.tv_sec) {
- s_ednsstatus[ip]=EDNSStatus();
+ ednsstatus=SyncRes::EDNSStatus();
// cerr<<"Resetting EDNS Status for "<<ip.toString()<<endl;
}
+ if(s_noEDNSPing && ednsstatus.mode == EDNSStatus::UNKNOWN)
+ ednsstatus.mode = EDNSStatus::EDNSNOPING;
+
SyncRes::EDNSStatus::EDNSMode& mode=ednsstatus.mode;
SyncRes::EDNSStatus::EDNSMode oldmode = mode;
int EDNSLevel=0;
typedef map<ComboAddress, EDNSStatus> ednsstatus_t;
static ednsstatus_t s_ednsstatus;
+ static bool s_noEDNSPing;
struct AuthDomain
{