PTLib Version 2.12.9

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Friends | List of all members
PIPSocket::Address Class Reference

A class describing an IP address. More...

`#include <ipsock.h>`

Inheritance diagram for PIPSocket::Address:
[legend]
Collaboration diagram for PIPSocket::Address:
[legend]

## Public Member Functions
Comparison | Compare (const PObject &obj) const
| Compare two adresses for absolute (in)equality. More...
bool | operator== (const Address &addr) const
bool | operator!= (const Address &addr) const
bool | operator== (in_addr &addr) const
bool | operator!= (in_addr &addr) const
bool | operator== (DWORD dw) const
bool | operator!= (DWORD dw) const
bool | operator== (int i) const
bool | operator!= (int i) const
bool | operator*= (const Address &addr) const
| Compare two addresses for equivalence. More...
PString | AsString (bool bracketIPv6=false, bool excludeScope=false) const
| Format an address as a string. More...
PBoolean | FromString (const PString &str)
| Convert string to IP address. Returns true if was a valid address. More...
| operator PString () const
| Format an address as a string. More...
| operator in_addr () const
| Return IPv4 address in network order. More...
| operator DWORD () const
| Return IPv4 address in network order. More...
BYTE | Byte1 () const
| Return first byte of IPv4 address. More...
BYTE | Byte2 () const
| Return second byte of IPv4 address. More...
BYTE | Byte3 () const
| Return third byte of IPv4 address. More...
BYTE | Byte4 () const
| Return fourth byte of IPv4 address. More...
BYTE | operator[] (PINDEX idx) const
| Return specified byte of IPv4 or IPv6 address. More...
PINDEX | GetSize () const
| Get the address length (will be either 4 or 16). More...
const char * | GetPointer () const
| Get the pointer to IP address data. More...
unsigned | GetVersion () const
| Get the version of the IP address being used. More...
bool | IsValid () const
| Check for illegal address. More...
bool | IsAny () const
| Check address 0.0.0.0 or ::. More...
bool | IsLoopback () const
| Check address 127.0.0.1 or ::1. More...
bool | IsBroadcast () const
| Check for Broadcast address 255.255.255.255. More...
bool | IsMulticast () const
| Check if address is multicast group. More...
bool | IsRFC1918 () const
| Check if the remote address is a private address. More...
Address constructors
| Address ()
| Create an IPv4 address with the default address: 127.0.0.1 (loopback). More...
| Address (const PString &dotNotation)
| Create an IP address from string notation, eg dot notation x.x.x.x. More...
| Address (PINDEX len, const BYTE *bytes, int scope=0)
| Create an IPv4 or IPv6 address from 4 or 16 byte values. More...
| Address (BYTE b1, BYTE b2, BYTE b3, BYTE b4)
| Create an IP address from four byte values. More...
| Address (DWORD dw)
| Create an IPv4 address from a four byte value in network byte order. More...
| Address (const in_addr &addr)
| Create an IPv4 address from an in_addr structure. More...
| Address (const int ai_family, const int ai_addrlen, struct sockaddr *ai_addr)
| Create an IP (v4 or v6) address from a sockaddr (sockaddr_in, sockaddr_in6 or sockaddr_in6_old) structure. More...
Address & | operator= (const in_addr &addr)
| Copy an address from another IP v4 address. More...
Address & | operator= (const PString &dotNotation)
| Copy an address from a string. More...
Address & | operator= (DWORD dw)
| Copy an address from a four byte value in network order. More...
Public Member Functions inherited from PObject
unsigned | GetTraceContextIdentifier () const
| Get PTRACE context identifier. More...
void | SetTraceContextIdentifier (unsigned id)
void | GetTraceContextIdentifier (PObject &obj)
void | GetTraceContextIdentifier (PObject *obj)
void | SetTraceContextIdentifier (const PObject &obj)
void | SetTraceContextIdentifier (const PObject *obj)
virtual | ~PObject ()
virtual PObject * | Clone () const
| Create a copy of the class on the heap. More...
template<class CLS >
CLS * | CloneAs () const
| As for Clone() but converts to specified type. More...
virtual PINDEX | HashFunction () const
| This function yields a hash value required by the `PDictionary` class. More...
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const
| Determine the byte wise comparison of two objects. More...
bool | operator== (const PObject &obj) const
| Compare the two objects. More...
bool | operator!= (const PObject &obj) const
| Compare the two objects. More...
bool | operator< (const PObject &obj) const
| Compare the two objects. More...
bool | operator> (const PObject &obj) const
| Compare the two objects. More...
bool | operator<= (const PObject &obj) const
| Compare the two objects. More...
bool | operator>= (const PObject &obj) const
| Compare the two objects. More...
virtual const char * | GetClass (unsigned ancestor=0) const
| Get the current dynamic type of the object instance. More...
PBoolean | IsClass (const char *cls) const
virtual PBoolean | InternalIsDescendant (const char *clsName) const
| Determine if the dynamic type of the current instance is a descendent of the specified class. More...
__inline const PObject * | PTraceObjectInstance () const
virtual void | PrintOn (ostream &strm) const
| Output the contents of the object to the stream. More...
virtual void | ReadFrom (istream &strm)
| Input the contents of the object from the stream. More...

## Static Public Member Functions
static const Address & | GetLoopback (unsigned version=4)
static const Address & | GetAny (unsigned version=4)
static const Address | GetBroadcast (unsigned version=4)
Static Public Member Functions inherited from PObject
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...
static const char * | Class ()
| Get the name of the class as a C string. More...
static __inline const PObject * | PTraceObjectInstance (const char *)
static __inline const PObject * | PTraceObjectInstance (const PObject *obj)

## Protected Attributes
union {
in_addr m_four
} | m_v
unsigned | m_version
int | m_scope6
Protected Attributes inherited from PObject
unsigned | m_traceContextIdentifier

## Friends
ostream & | operator<< (ostream &s, const Address &a)
| Output IPv6 & IPv4 address as a string to the specified string. More...
istream & | operator>> (istream &s, Address &a)
| Input IPv4 (not IPv6 yet!) address as a string from the specified string. More...

## Additional Inherited Members
Public Types inherited from PObject
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
| Result of the comparison operation performed by the `Compare()` function. More...
Protected Member Functions inherited from PObject
| PObject ()
| Constructor for PObject, made protected so cannot ever create one on its own. More...

## Detailed Description

A class describing an IP address.

## Constructor & Destructor Documentation

PIPSocket::Address::Address | ( |  | ) |

Create an IPv4 address with the default address: 127.0.0.1 (loopback).

PIPSocket::Address::Address | ( | const PString & | dotNotation | ) |
| explicit

Create an IP address from string notation, eg dot notation x.x.x.x.

for IPv4, or colon notation x:x:x::xxx for IPv6.

PIPSocket::Address::Address | ( | PINDEX | len,
|  | const BYTE * | bytes,
|  | int | scope = `0`
| ) |  |

Create an IPv4 or IPv6 address from 4 or 16 byte values.

PIPSocket::Address::Address | ( | BYTE | b1,
|  | BYTE | b2,
|  | BYTE | b3,
|  | BYTE | b4
| ) |  |

Create an IP address from four byte values.

PIPSocket::Address::Address | ( | DWORD | dw | ) |

Create an IPv4 address from a four byte value in network byte order.

PIPSocket::Address::Address | ( | const in_addr & | addr | ) |

Create an IPv4 address from an in_addr structure.

PIPSocket::Address::Address | ( | const int | ai_family,
|  | const int | ai_addrlen,
|  | struct sockaddr * | ai_addr
| ) |  |

Create an IP (v4 or v6) address from a sockaddr (sockaddr_in, sockaddr_in6 or sockaddr_in6_old) structure.

## Member Function Documentation

PString PIPSocket::Address::AsString | ( | bool | bracketIPv6 = `false`,
|  | bool | excludeScope = `false`
| ) |  | const

Format an address as a string.

Parameters

  bracketIPv6 | An IPv6 address is enclosed in []'s
  excludeScope | An IPv6 address includes xxx for scope ID

BYTE PIPSocket::Address::Byte1 | ( |  | ) | const

Return first byte of IPv4 address.

BYTE PIPSocket::Address::Byte2 | ( |  | ) | const

Return second byte of IPv4 address.

BYTE PIPSocket::Address::Byte3 | ( |  | ) | const

Return third byte of IPv4 address.

BYTE PIPSocket::Address::Byte4 | ( |  | ) | const

Return fourth byte of IPv4 address.

Comparison PIPSocket::Address::Compare | ( | const PObject & | obj | ) | const
| virtual

Compare two adresses for absolute (in)equality.

Reimplemented from PObject.

Referenced by operator!=(), and operator==().

PBoolean PIPSocket::Address::FromString | ( | const PString & | str | ) |

Convert string to IP address. Returns true if was a valid address.

static const Address& PIPSocket::Address::GetAny | ( | unsigned | version = `4` | ) |
| static

static const Address PIPSocket::Address::GetBroadcast | ( | unsigned | version = `4` | ) |
| static

static const Address& PIPSocket::Address::GetLoopback | ( | unsigned | version = `4` | ) |
| static

const char* PIPSocket::Address::GetPointer | ( |  | ) | const
| inline

Get the pointer to IP address data.

References m_v.

PINDEX PIPSocket::Address::GetSize | ( |  | ) | const

Get the address length (will be either 4 or 16).

unsigned PIPSocket::Address::GetVersion | ( |  | ) | const
| inline

Get the version of the IP address being used.

References m_version.

bool PIPSocket::Address::IsAny | ( |  | ) | const

Check address 0.0.0.0 or ::.

bool PIPSocket::Address::IsBroadcast | ( |  | ) | const

Check for Broadcast address 255.255.255.255.

bool PIPSocket::Address::IsLoopback | ( |  | ) | const

Check address 127.0.0.1 or ::1.

bool PIPSocket::Address::IsMulticast | ( |  | ) | const

Check if address is multicast group.

bool PIPSocket::Address::IsRFC1918 | ( |  | ) | const

Check if the remote address is a private address.

For IPV4 this is specified RFC 1918 as the following ranges:

- 10.0.0.0 - 10.255.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255

For IPV6 this is specified as any address having "1111 1110 1" for the first nine bits.

bool PIPSocket::Address::IsValid | ( |  | ) | const
| inline

Check for illegal address.

References m_version.

Referenced by PIPSocket::AddressAndPort::IsValid().

PIPSocket::Address::operator DWORD | ( |  | ) | const

Return IPv4 address in network order.

PIPSocket::Address::operator in_addr | ( |  | ) | const

Return IPv4 address in network order.

PIPSocket::Address::operator PString | ( |  | ) | const

Format an address as a string.

bool PIPSocket::Address::operator!= | ( | const Address & | addr | ) | const
| inline

References Compare(), and PObject::EqualTo.

bool PIPSocket::Address::operator!= | ( | in_addr & | addr | ) | const
| inline

References operator==().

bool PIPSocket::Address::operator!= | ( | DWORD | dw | ) | const
| inline

References operator==().

bool PIPSocket::Address::operator!= | ( | int | i | ) | const
| inline

References operator==().

bool PIPSocket::Address::operator*= | ( | const Address & | addr | ) | const
| inline

Compare two addresses for equivalence.

This will return true if the two addresses are equivalent even if they are IPV6 and IPV4.

References operator==().

Address& PIPSocket::Address::operator= | ( | const in_addr & | addr | ) |

Copy an address from another IP v4 address.

Address& PIPSocket::Address::operator= | ( | const PString & | dotNotation | ) |

Copy an address from a string.

Address& PIPSocket::Address::operator= | ( | DWORD | dw | ) |

Copy an address from a four byte value in network order.

bool PIPSocket::Address::operator== | ( | const Address & | addr | ) | const
| inline

References Compare(), and PObject::EqualTo.

Referenced by operator!=(), and operator*=().

bool PIPSocket::Address::operator== | ( | in_addr & | addr | ) | const

bool PIPSocket::Address::operator== | ( | DWORD | dw | ) | const

bool PIPSocket::Address::operator== | ( | int | i | ) | const
| inline

References operator==().

Referenced by operator==().

BYTE PIPSocket::Address::operator[] | ( | PINDEX | idx | ) | const

Return specified byte of IPv4 or IPv6 address.

## Friends And Related Function Documentation

ostream& operator<< | ( | ostream & | s,
|  | const Address & | a
| ) |  |
| friend

Output IPv6 & IPv4 address as a string to the specified string.

If the stream flag hex is set, then an IPv6 address is surrounded by square brackets []. If the stream flag fixed is set, the an IPv6 address will have the scope ID (xxx) suppressed.

istream& operator>> | ( | istream & | s,
|  | Address & | a
| ) |  |
| friend

Input IPv4 (not IPv6 yet!) address as a string from the specified string.

## Member Data Documentation

in_addr PIPSocket::Address::m_four

int PIPSocket::Address::m_scope6
| protected

union { ... } PIPSocket::Address::m_v

Referenced by GetPointer().

unsigned PIPSocket::Address::m_version
| protected

Referenced by GetVersion(), and IsValid().

The documentation for this class was generated from the following file:

- ipsock.h