From: Bert Hubert Date: Thu, 26 Jul 2012 20:43:53 +0000 (+0000) Subject: add listen-port to nproxy, plus fix that we tried to bind to IPv6 on an IPv4 socket... X-Git-Tag: auth-3.2-rc1~198 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b4e820773f0fb6d52ecd35384ef6cfe74b7e1abc;p=thirdparty%2Fpdns.git add listen-port to nproxy, plus fix that we tried to bind to IPv6 on an IPv4 socket. Intended to close ticket 534. git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2684 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/nproxy.cc b/pdns/nproxy.cc index 74420a89c0..4d92871e04 100644 --- a/pdns/nproxy.cc +++ b/pdns/nproxy.cc @@ -198,6 +198,7 @@ try ("setgid", po::value(), "setgid to this numerical user id") ("origin-address", po::value()->default_value("::"), "Source address for notifications to PowerDNS") ("listen-address", po::value >(), "IP addresses to listen on") + ("listen-port", po::value()->default_value(53), "Source port to listen on") ("daemon,d", po::value()->default_value(true), "operate in the background") ("verbose,v", "be verbose"); @@ -228,7 +229,7 @@ try syslogFmt(boost::format("Starting up")); for(vector::const_iterator address = addresses.begin(); address != addresses.end(); ++address) { - ComboAddress local(*address, 53); + ComboAddress local(*address, g_vm["listen-port"].as()); int sock = socket(local.sin4.sin_family, SOCK_DGRAM, 0); if(sock < 0) throw runtime_error("Creating socket for incoming packets: "+stringerror()); @@ -241,12 +242,12 @@ try } // create socket that talks to inner PowerDNS - - g_pdnssocket=socket(AF_INET, SOCK_DGRAM, 0); + ComboAddress originAddress(g_vm["origin-address"].as(), 0); + g_pdnssocket=socket(originAddress.sin4.sin_family, SOCK_DGRAM, 0); if(g_pdnssocket < 0) throw runtime_error("Creating socket for packets to PowerDNS: "+stringerror()); - ComboAddress originAddress(g_vm["origin-address"].as(), 0); + if(::bind(g_pdnssocket,(sockaddr*) &originAddress, originAddress.getSocklen()) < 0) throw runtime_error("Binding local address of inward socket to '"+ originAddress.toStringWithPort()+"': "+stringerror());