]> granicus.if.org Git - pdns/commitdiff
add toMasks and clear to NetmaskGroup class and use it
authorKees Monshouwer <mind04@monshouwer.org>
Sat, 28 Dec 2013 16:05:57 +0000 (17:05 +0100)
committermind04 <mind04@monshouwer.org>
Sat, 28 Dec 2013 21:58:34 +0000 (22:58 +0100)
pdns/dnsproxy.cc
pdns/dynlistener.cc
pdns/iputils.hh
pdns/tcpreceiver.cc
pdns/test-iputils_hh.cc

index da80598fc81943fc9f1f505ad3029d81b1878d99..b4818013e72061af19791198cf404f5572523dcb 100644 (file)
@@ -79,12 +79,7 @@ void DNSProxy::go()
 
 void DNSProxy::onlyFrom(const string &ips)
 {
-  vector<string>parts;
-  stringtok(parts,ips,", \t");
-  for(vector<string>::const_iterator i=parts.begin();
-      i!=parts.end();++i)
-    d_ng.addMask(*i);
-  
+  d_ng.toMasks(ips);
 }
 
 bool DNSProxy::recurseFor(DNSPacket* p)
index c2c43e281c54ec54263772e85f5253530f4ecde1..1432da2e04c653020619a3bbeaeee156cb2f491c 100644 (file)
@@ -151,16 +151,8 @@ void DynListener::listenOnTCP(const ComboAddress& local)
   d_nonlocal=true;
 
   if(!::arg()["tcp-control-range"].empty()) {
-    vector<string> ips;
-    stringtok(ips, ::arg()["tcp-control-range"], ", ");
-    L<<Logger::Warning<<"Only allowing TCP control from: ";
-    for(vector<string>::const_iterator i = ips.begin(); i!= ips.end(); ++i) {
-      d_tcprange.addMask(*i);
-      if(i!=ips.begin())
-        L<<Logger::Warning<<", ";
-      L<<Logger::Warning<<*i;
-    }
-    L<<Logger::Warning<<endl;
+    d_tcprange.toMasks(::arg()["tcp-control-range"]);
+    L<<Logger::Warning<<"Only allowing TCP control from: "<<d_tcprange.toString()<<endl;
   }
 }
 
index 44620b820aef3286887abc5eb47b0f16669bc5b8..3a9ef70376206382d937d25bac31d32cbb886ecc 100644 (file)
@@ -337,7 +337,12 @@ public:
   {
     d_masks.push_back(Netmask(ip));
   }
-  
+
+  void clear()
+  {
+    d_masks.clear();
+  }
+
   bool empty()
   {
     return d_masks.empty();
@@ -359,9 +364,18 @@ public:
     return str.str();
   }
 
+  void toMasks(const string &ips)
+  {
+    vector<string> parts;
+    stringtok(parts, ips, ", \t");
+
+    for (vector<string>::const_iterator iter = parts.begin(); iter != parts.end(); ++iter)
+      addMask(*iter);
+  }
+
 private:
   typedef vector<Netmask> container_t;
-  container_t d_masks;  
+  container_t d_masks;
 };
 
 
index 5797711faee7a448b4e74e05614fb85e2bffaeef..57ff4a27e9a1bf67dbcfbabb84c01b1111e74595 100644 (file)
@@ -854,11 +854,7 @@ TCPNameserver::TCPNameserver()
   if(locals.empty() && locals6.empty())
     throw PDNSException("No local address specified");
 
-  vector<string> parts;
-  stringtok( parts, ::arg()["allow-axfr-ips"], ", \t" ); // is this IP on the guestlist?
-  for( vector<string>::const_iterator i = parts.begin(); i != parts.end(); ++i ) {
-    d_ng.addMask( *i );
-  }
+  d_ng.toMasks(::arg()["allow-axfr-ips"] );
 
   signal(SIGPIPE,SIG_IGN);
 
index d3f735d2e8dbb02be406fdd4546e38de087494d0..4e81de0ccaebe993f32395c211f0532553b8fa14 100644 (file)
@@ -46,12 +46,14 @@ BOOST_AUTO_TEST_CASE(test_Netmask) {
 
 BOOST_AUTO_TEST_CASE(test_NetmaskGroup) {
   NetmaskGroup ng;
-  ng.addMask("127.0.0.0/8");
-  ng.addMask("10.0.0.0/24");
+  ng.addMask("10.0.1.0");
+  BOOST_CHECK(ng.match(ComboAddress("10.0.1.0")));
+  ng.toMasks("127.0.0.0/8, 10.0.0.0/24");
   BOOST_CHECK(ng.match(ComboAddress("127.0.0.1")));
   BOOST_CHECK(ng.match(ComboAddress("10.0.0.3")));
+  BOOST_CHECK(ng.match(ComboAddress("10.0.1.0")));
   BOOST_CHECK(!ng.match(ComboAddress("128.1.2.3")));
-  BOOST_CHECK(!ng.match(ComboAddress("10.0.1.0")));
+  BOOST_CHECK(!ng.match(ComboAddress("10.0.1.1")));
   BOOST_CHECK(!ng.match(ComboAddress("::1")));
   ng.addMask("::1");
   BOOST_CHECK(ng.match(ComboAddress("::1")));