|
reSIProcate/rutil
9694
|
Represents an IP-address and port (V4 or V6). More...
#include <GenericIPAddress.hxx>
Public Member Functions | |
| GenericIPAddress () | |
| GenericIPAddress (const sockaddr &addr) | |
| GenericIPAddress (const sockaddr_in &v4) | |
| size_t | length () const |
| bool | isVersion4 () const |
| bool | isVersion6 () const |
| bool | operator== (const GenericIPAddress &addr) const |
| bool | operator< (const GenericIPAddress &addr) const |
Public Attributes | |
| union { | |
| sockaddr address | |
| sockaddr_in v4Address | |
| char pad [28] | |
| }; | |
Represents an IP-address and port (V4 or V6).
Definition at line 22 of file GenericIPAddress.hxx.
| resip::GenericIPAddress::GenericIPAddress | ( | ) | [inline] |
Definition at line 25 of file GenericIPAddress.hxx.
{
}
| resip::GenericIPAddress::GenericIPAddress | ( | const sockaddr & | addr | ) | [inline] |
Definition at line 29 of file GenericIPAddress.hxx.
: address(addr) { }
| resip::GenericIPAddress::GenericIPAddress | ( | const sockaddr_in & | v4 | ) | [inline] |
Definition at line 33 of file GenericIPAddress.hxx.
: v4Address(v4) { }
| bool resip::GenericIPAddress::isVersion4 | ( | ) | const [inline] |
Definition at line 59 of file GenericIPAddress.hxx.
References address.
{
return address.sa_family == AF_INET;
}
| bool resip::GenericIPAddress::isVersion6 | ( | ) | const [inline] |
Definition at line 64 of file GenericIPAddress.hxx.
References address.
{
#ifdef IPPROTO_IPV6
if (address.sa_family == AF_INET6) return true;
#endif
return false;
}
| size_t resip::GenericIPAddress::length | ( | ) | const [inline] |
Definition at line 43 of file GenericIPAddress.hxx.
References address.
| bool resip::GenericIPAddress::operator< | ( | const GenericIPAddress & | addr | ) | const [inline] |
Definition at line 105 of file GenericIPAddress.hxx.
References address, and v4Address.
{
if (address.sa_family == AF_INET && addr.address.sa_family == AF_INET)
{
int c=memcmp(&v4Address.sin_addr,
&addr.v4Address.sin_addr,
sizeof(in_addr));
if (c < 0)
{
return true;
}
else if (c > 0)
{
return false;
}
else if (v4Address.sin_port < addr.v4Address.sin_port)
{
return true;
}
else
{
return false;
}
}
#ifdef IPPROTO_IPV6
else if (address.sa_family == AF_INET6 &&
addr.address.sa_family == AF_INET6)
{
int c = memcmp(&v6Address.sin6_addr,
&addr.v6Address.sin6_addr,
sizeof(in6_addr));
if (c < 0)
{
return true;
}
else if (c > 0)
{
return false;
}
else if (v6Address.sin6_port < addr.v6Address.sin6_port)
{
return true;
}
else
{
return false;
}
}
else if (address.sa_family == AF_INET6 &&
addr.address.sa_family == AF_INET)
{
return true;
}
else if (address.sa_family == AF_INET &&
addr.address.sa_family == AF_INET6)
{
return false;
}
#endif
else
{
//assert(0);
return false;
}
}
| bool resip::GenericIPAddress::operator== | ( | const GenericIPAddress & | addr | ) | const [inline] |
Definition at line 82 of file GenericIPAddress.hxx.
References address, and v4Address.
{
if (address.sa_family == addr.address.sa_family)
{
if (address.sa_family == AF_INET) // v4
{
return (v4Address.sin_port == addr.v4Address.sin_port &&
memcmp(&v4Address.sin_addr, &addr.v4Address.sin_addr, sizeof(in_addr)) == 0);
}
else // v6
{
#ifdef IPPROTO_IPV6
return (v6Address.sin6_port == addr.v6Address.sin6_port &&
memcmp(&v6Address.sin6_addr, &addr.v6Address.sin6_addr, sizeof(in6_addr)) == 0);
#else
assert(0);
return false;
#endif
}
}
return false;
}
| union { ... } |
| sockaddr resip::GenericIPAddress::address |
Definition at line 74 of file GenericIPAddress.hxx.
Referenced by isVersion4(), isVersion6(), length(), operator<(), and operator==().
| char resip::GenericIPAddress::pad[28] |
Definition at line 79 of file GenericIPAddress.hxx.
| sockaddr_in resip::GenericIPAddress::v4Address |
Definition at line 75 of file GenericIPAddress.hxx.
Referenced by operator<(), and operator==().
1.7.5.1