]> granicus.if.org Git - pdns/commitdiff
add possibility to disable edns-ping. For now, by default, edns-ping is disabled.
authorBert Hubert <bert.hubert@netherlabs.nl>
Tue, 7 Apr 2009 20:14:53 +0000 (20:14 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Tue, 7 Apr 2009 20:14:53 +0000 (20:14 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1350 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/pdns_recursor.cc
pdns/syncres.cc
pdns/syncres.hh

index 4cd7c25727180596768a4ca8a2f4a73bc2d5fb0d..949e275036875c2f6bc9f1ada1836423ae4ddfd5 100644 (file)
@@ -1801,7 +1801,7 @@ int serviceMain(int argc, char*argv[])
     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()) {
@@ -2039,6 +2039,7 @@ int main(int argc, char **argv)
     ::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")");
index b19dd93b7f73956237c1fa1557b96bbc35984a9c..51369b42e8d6a2348565357009cb08d61b27b18c 100644 (file)
@@ -59,6 +59,7 @@ bool SyncRes::s_log;
 #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)
@@ -234,10 +235,13 @@ int SyncRes::asyncresolveWrapper(const ComboAddress& ip, const string& domain, i
   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;
index 5aa4ca1a8813bd7f13a6ebe0131422315e881b73..9d3940706258860239c751b6c6333db54003356b 100644 (file)
@@ -340,6 +340,7 @@ public:
 
   typedef map<ComboAddress, EDNSStatus> ednsstatus_t;
   static ednsstatus_t s_ednsstatus;
+  static bool s_noEDNSPing;
 
   struct AuthDomain
   {