removed some useless spaces; not very important, I know :)
[senf.git] / Socket / Protocols / INet / INet4Address.cci
index ebf5615..74ac443 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -36,7 +36,7 @@ prefix_ senf::INet4Address::INet4Address()
     std::fill(begin(), end(), 0u);
 }
 
-prefix_ senf::INet4Address::INet4Address(NoInit_t)
+prefix_ senf::INet4Address::INet4Address(senf::NoInit_t)
 {}
 
 prefix_ senf::INet4Address senf::INet4Address::from_inaddr(inaddr_type v)
@@ -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);
 }
 
 ////////////////////////////////////////