* Added non-const sockaddr casts.
* Automatic whitespace cleanup. * This also fixes the build; I wanted to commit this earlier. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38237 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -80,6 +80,7 @@ public:
|
|||||||
uint16 Port() const;
|
uint16 Port() const;
|
||||||
size_t Length() const;
|
size_t Length() const;
|
||||||
const sockaddr& SockAddr() const;
|
const sockaddr& SockAddr() const;
|
||||||
|
sockaddr& SockAddr();
|
||||||
|
|
||||||
bool IsEmpty() const;
|
bool IsEmpty() const;
|
||||||
bool IsWildcard() const;
|
bool IsWildcard() const;
|
||||||
@@ -93,7 +94,7 @@ public:
|
|||||||
bool IsLinkLocal() const;
|
bool IsLinkLocal() const;
|
||||||
bool IsSiteLocal() const;
|
bool IsSiteLocal() const;
|
||||||
bool IsLocal() const;
|
bool IsLocal() const;
|
||||||
|
|
||||||
ssize_t PrefixLength() const;
|
ssize_t PrefixLength() const;
|
||||||
|
|
||||||
uint32 LinkLevelIndex() const;
|
uint32 LinkLevelIndex() const;
|
||||||
@@ -125,6 +126,8 @@ public:
|
|||||||
|
|
||||||
operator const sockaddr*() const;
|
operator const sockaddr*() const;
|
||||||
operator const sockaddr&() const;
|
operator const sockaddr&() const;
|
||||||
|
operator sockaddr*();
|
||||||
|
operator sockaddr&();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
sockaddr_storage fAddress;
|
sockaddr_storage fAddress;
|
||||||
|
|||||||
@@ -338,12 +338,12 @@ BNetworkAddress::SetToMask(int family, uint32 prefixLength)
|
|||||||
{
|
{
|
||||||
if (prefixLength > 32)
|
if (prefixLength > 32)
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
sockaddr_in& mask = (sockaddr_in&)fAddress;
|
sockaddr_in& mask = (sockaddr_in&)fAddress;
|
||||||
memset(&fAddress, 0, sizeof(sockaddr_storage));
|
memset(&fAddress, 0, sizeof(sockaddr_storage));
|
||||||
mask.sin_family = AF_INET;
|
mask.sin_family = AF_INET;
|
||||||
mask.sin_len = sizeof(sockaddr_in);
|
mask.sin_len = sizeof(sockaddr_in);
|
||||||
|
|
||||||
uint32 hostMask = 0;
|
uint32 hostMask = 0;
|
||||||
for (uint8 i = 32; i > 32 - prefixLength; i--)
|
for (uint8 i = 32; i > 32 - prefixLength; i--)
|
||||||
hostMask |= 1 << (i - 1);
|
hostMask |= 1 << (i - 1);
|
||||||
@@ -361,14 +361,14 @@ BNetworkAddress::SetToMask(int family, uint32 prefixLength)
|
|||||||
memset(&fAddress, 0, sizeof(sockaddr_storage));
|
memset(&fAddress, 0, sizeof(sockaddr_storage));
|
||||||
mask.sin6_family = AF_INET6;
|
mask.sin6_family = AF_INET6;
|
||||||
mask.sin6_len = sizeof(sockaddr_in6);
|
mask.sin6_len = sizeof(sockaddr_in6);
|
||||||
|
|
||||||
for (uint8 i = 0; i < sizeof(in6_addr); i++, prefixLength -= 8) {
|
for (uint8 i = 0; i < sizeof(in6_addr); i++, prefixLength -= 8) {
|
||||||
if (prefixLength < 8) {
|
if (prefixLength < 8) {
|
||||||
mask.sin6_addr.s6_addr[i]
|
mask.sin6_addr.s6_addr[i]
|
||||||
= (uint8)(0xff << (8 - prefixLength));
|
= (uint8)(0xff << (8 - prefixLength));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
mask.sin6_addr.s6_addr[i] = 0xff;
|
mask.sin6_addr.s6_addr[i] = 0xff;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -486,6 +486,13 @@ BNetworkAddress::SockAddr() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sockaddr&
|
||||||
|
BNetworkAddress::SockAddr()
|
||||||
|
{
|
||||||
|
return (sockaddr&)fAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BNetworkAddress::IsEmpty() const
|
BNetworkAddress::IsEmpty() const
|
||||||
{
|
{
|
||||||
@@ -536,7 +543,7 @@ BNetworkAddress::IsMulticast() const
|
|||||||
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MULTICAST(&((sockaddr_in6&)fAddress).sin6_addr);
|
return IN6_IS_ADDR_MULTICAST(&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -549,7 +556,7 @@ BNetworkAddress::IsMulticastGlobal() const
|
|||||||
switch (fAddress.ss_family) {
|
switch (fAddress.ss_family) {
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MC_GLOBAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
return IN6_IS_ADDR_MC_GLOBAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -563,7 +570,7 @@ BNetworkAddress::IsMulticastNodeLocal() const
|
|||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MC_NODELOCAL(
|
return IN6_IS_ADDR_MC_NODELOCAL(
|
||||||
&((sockaddr_in6&)fAddress).sin6_addr);
|
&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -577,7 +584,7 @@ BNetworkAddress::IsMulticastLinkLocal() const
|
|||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MC_LINKLOCAL(
|
return IN6_IS_ADDR_MC_LINKLOCAL(
|
||||||
&((sockaddr_in6&)fAddress).sin6_addr);
|
&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -591,7 +598,7 @@ BNetworkAddress::IsMulticastSiteLocal() const
|
|||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MC_SITELOCAL(
|
return IN6_IS_ADDR_MC_SITELOCAL(
|
||||||
&((sockaddr_in6&)fAddress).sin6_addr);
|
&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -605,7 +612,7 @@ BNetworkAddress::IsMulticastOrgLocal() const
|
|||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_MC_ORGLOCAL(
|
return IN6_IS_ADDR_MC_ORGLOCAL(
|
||||||
&((sockaddr_in6&)fAddress).sin6_addr);
|
&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -619,7 +626,7 @@ BNetworkAddress::IsLinkLocal() const
|
|||||||
switch (fAddress.ss_family) {
|
switch (fAddress.ss_family) {
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_LINKLOCAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
return IN6_IS_ADDR_LINKLOCAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -632,7 +639,7 @@ BNetworkAddress::IsSiteLocal() const
|
|||||||
switch (fAddress.ss_family) {
|
switch (fAddress.ss_family) {
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return IN6_IS_ADDR_SITELOCAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
return IN6_IS_ADDR_SITELOCAL(&((sockaddr_in6&)fAddress).sin6_addr);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -670,7 +677,7 @@ BNetworkAddress::PrefixLength() const
|
|||||||
case AF_INET:
|
case AF_INET:
|
||||||
{
|
{
|
||||||
sockaddr_in& mask = (sockaddr_in&)fAddress;
|
sockaddr_in& mask = (sockaddr_in&)fAddress;
|
||||||
|
|
||||||
ssize_t result = 0;
|
ssize_t result = 0;
|
||||||
uint32 hostMask = ntohl(mask.sin_addr.s_addr);
|
uint32 hostMask = ntohl(mask.sin_addr.s_addr);
|
||||||
for (uint8 i = 32; i > 0; i--) {
|
for (uint8 i = 32; i > 0; i--) {
|
||||||
@@ -694,7 +701,7 @@ BNetworkAddress::PrefixLength() const
|
|||||||
result++;
|
result++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 128;
|
return 128;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -923,7 +930,7 @@ BNetworkAddress::Equals(const BNetworkAddress& other, bool includePort) const
|
|||||||
return memcmp(&address.sin6_addr, &otherAddress.sin6_addr,
|
return memcmp(&address.sin6_addr, &otherAddress.sin6_addr,
|
||||||
sizeof(address.sin6_addr)) == 0;
|
sizeof(address.sin6_addr)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (fAddress.ss_len != other.fAddress.ss_len)
|
if (fAddress.ss_len != other.fAddress.ss_len)
|
||||||
return false;
|
return false;
|
||||||
@@ -1007,3 +1014,15 @@ BNetworkAddress::operator const sockaddr&() const
|
|||||||
{
|
{
|
||||||
return (const sockaddr&)fAddress;
|
return (const sockaddr&)fAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BNetworkAddress::operator sockaddr*()
|
||||||
|
{
|
||||||
|
return (sockaddr*)&fAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BNetworkAddress::operator sockaddr&()
|
||||||
|
{
|
||||||
|
return (sockaddr&)fAddress;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user