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)
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;
}
}
{
d_masks.push_back(Netmask(ip));
}
-
+
+ void clear()
+ {
+ d_masks.clear();
+ }
+
bool empty()
{
return d_masks.empty();
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;
};
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);
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")));