X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINet4Address.cci;h=a840eafaa458e7b7545f7a3db1c48ab6e4e3585f;hb=81ffa1c459b96dd44472bcef37e1e373934ee138;hp=ebf56159ea9124d9fe95f085208d064ee17fdb87;hpb=c75c285e1d33a5394c7f7d3cb437bd01da7d888e;p=senf.git diff --git a/Socket/Protocols/INet/INet4Address.cci b/Socket/Protocols/INet/INet4Address.cci index ebf5615..a840eaf 100644 --- a/Socket/Protocols/INet/INet4Address.cci +++ b/Socket/Protocols/INet/INet4Address.cci @@ -122,8 +122,17 @@ prefix_ bool senf::INet4Network::match(INet4Address addr) prefix_ bool senf::INet4Network::match(INet4Network net) const { - return net.prefix_len() >= prefix_len() && - (net.address().address() & mask()) == address_.address(); + return net.prefix_len() >= prefix_len() && match(net.address()); +} + +prefix_ senf::INet4Address senf::INet4Network::host(boost::uint32_t number) +{ + return INet4Address(address_.address() | (number & ~mask())); +} + +prefix_ senf::INet4Network senf::INet4Network::subnet(boost::uint32_t net, unsigned prefix_len) +{ + return INet4Network(host(net << (32-prefix_len)),prefix_len); } ////////////////////////////////////////