From: Bert Hubert Date: Tue, 21 Jun 2005 19:37:40 +0000 (+0000) Subject: improve logging a bit, add --query-local-address X-Git-Tag: pdns-2.9.18~34 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d1893118faf134102de5ee07e21be346330b575;p=pdns improve logging a bit, add --query-local-address git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@415 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index 500374f48..3afd86fa1 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -230,8 +230,10 @@ void makeClientSocket() memset((char *)&sin,0, sizeof(sin)); sin.sin_family = AF_INET; - sin.sin_addr.s_addr = INADDR_ANY; - + + if(!IpToU32(arg()["query-local-address"], &sin.sin_addr.s_addr)) + throw AhuException("Unable to resolve local address '"+ arg()["query-local-address"] +"'"); + int tries=10; while(--tries) { u_int16_t port=10000+Utility::random()%10000; @@ -245,6 +247,7 @@ void makeClientSocket() throw AhuException("Resolver binding to local socket: "+stringerror()); Utility::setNonBlocking(d_clientsock); + L<locals; @@ -429,6 +431,8 @@ int main(int argc, char **argv) arg().set("config-dir","Location of configuration directory (recursor.conf)")=SYSCONFDIR; arg().set("socket-dir","Where the controlsocket will live")=LOCALSTATEDIR; arg().set("delegation-only","Which domains we only accept delegations from")=""; + arg().set("query-local-address","Source IP address for sending queries")=""; + arg().setCmd("help","Provide a helpful message"); L.toConsole(Logger::Warning); arg().laxParse(argc,argv); // do a lax parse @@ -451,6 +455,17 @@ int main(int argc, char **argv) L.setName("pdns_recursor"); + L<