latest changes from main repository

This commit is contained in:
Guenter Obiltschnig
2007-04-25 14:32:55 +00:00
parent 3e46ab332b
commit ba1384e12d
23 changed files with 344 additions and 134 deletions

View File

@@ -1,7 +1,7 @@
//
// IPAddress.cpp
//
// $Id: //poco/Main/Net/src/IPAddress.cpp#13 $
// $Id: //poco/Main/Net/src/IPAddress.cpp#15 $
//
// Library: Net
// Package: NetCore
@@ -81,6 +81,7 @@ public:
virtual bool isSiteLocalMC() const = 0;
virtual bool isOrgLocalMC() const = 0;
virtual bool isGlobalMC() const = 0;
virtual void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet) = 0;
protected:
IPAddressImpl()
@@ -237,6 +238,14 @@ public:
return 0;
#endif
}
void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet)
{
poco_assert (pMask->af() == AF_INET && pSet->af() == AF_INET);
_addr.s_addr &= static_cast<const IPv4AddressImpl*>(pMask)->_addr.s_addr;
_addr.s_addr |= static_cast<const IPv4AddressImpl*>(pSet)->_addr.s_addr & ~static_cast<const IPv4AddressImpl*>(pMask)->_addr.s_addr;
}
private:
struct in_addr _addr;
@@ -435,6 +444,11 @@ public:
return 0;
#endif
}
void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet)
{
throw Poco::NotImplementedException("mask() is only supported for IPv4 addresses");
}
private:
struct in6_addr _addr;
@@ -744,4 +758,17 @@ bool IPAddress::tryParse(const std::string& addr, IPAddress& result)
}
void IPAddress::mask(const IPAddress& mask)
{
IPAddress null;
_pImpl->mask(mask._pImpl, null._pImpl);
}
void IPAddress::mask(const IPAddress& mask, const IPAddress& set)
{
_pImpl->mask(mask._pImpl, set._pImpl);
}
} } // namespace Poco::Net