PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PILSSession::MSIPAddress Class Reference

Special IP address class. More...

#include <pils.h>

Inheritance diagram for PILSSession::MSIPAddress:
Collaboration diagram for PILSSession::MSIPAddress:

Public Member Functions

 MSIPAddress (DWORD a=0)
 
 MSIPAddress (const PIPSocket::Address &a)
 
 MSIPAddress (const PString &dotNotation)
 
 MSIPAddress (PINDEX len, const BYTE *bytes)
 
MSIPAddressoperator= (DWORD a)
 
MSIPAddressoperator= (const PIPSocket::Address &a)
 
MSIPAddressoperator= (const PString &dotNotation)
 
- Public Member Functions inherited from PIPSocket::Address
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 IsSubNet (const Address &network, const Address &mask) const
 Check if this address is within the sub-net. More...
 
bool IsPrivate () const
 Check if the remote address is a private address. More...
 
P_DEPRECATED bool IsRFC1918 () const
 
 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...
 
Addressoperator= (const in_addr &addr)
 Copy an address from another IP v4 address. More...
 
Addressoperator= (const PString &dotNotation)
 Copy an address from a string. More...
 
Addressoperator= (DWORD dw)
 Copy an address from a four byte value in network order. More...
 
- Public Member Functions inherited from PObject
__inline unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
__inline void SetTraceContextIdentifier (unsigned id)
 
__inline void SetTraceContextIdentifier (const PObject &obj)
 
__inline void SetTraceContextIdentifier (const PObject *obj)
 
__inline void CopyTraceContextIdentifier (PObject &obj) const
 
__inline void CopyTraceContextIdentifier (PObject *obj) const
 
virtual ~PObject ()
 
__inline const char * GetClass () const
 
__inline bool IsClass (const char *name) const
 
__inline const PObjectPTraceObjectInstance () const
 
virtual PObjectClone () 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 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...
 

Friends

istream & operator>> (istream &s, MSIPAddress &a)
 
ostream & operator<< (ostream &s, MSIPAddress &a)
 

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...
 
- Static Public Member Functions inherited from PIPSocket::Address
static const AddressGetLoopback (unsigned version=4)
 
static const AddressGetAny (unsigned version=4)
 
static const Address GetBroadcast (unsigned version=4)
 
- Static Public Member Functions inherited from PObject
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject *from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject *from)
 
static __inline const char * Class ()
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
template<typename T >
static Comparison Compare2 (T v1, T v2)
 Compare two types, returning Comparison type. More...
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 
- Protected Attributes inherited from PIPSocket::Address
union {
   in_addr   m_four
 
m_v
 Runtime test of IP addresse type. More...
 
unsigned m_version
 
int m_scope6
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Detailed Description

Special IP address class.

Microsoft in their infinite wisdom save the IP address as an little endian integer in the LDAP fild, but this was generated from a 32 bit integer that was in network byte order (big endian) which causes immense confusion. Reading directly into a PIPSocket::Address does not work as it assumes that any integer forms would be in host order. So we need to override the standard read function so the marchalling into the RTPerson structure works. All very sad.

Constructor & Destructor Documentation

PILSSession::MSIPAddress::MSIPAddress ( DWORD  a = 0)
inline
PILSSession::MSIPAddress::MSIPAddress ( const PIPSocket::Address a)
inline
PILSSession::MSIPAddress::MSIPAddress ( const PString dotNotation)
inline
PILSSession::MSIPAddress::MSIPAddress ( PINDEX  len,
const BYTE *  bytes 
)
inline

Member Function Documentation

MSIPAddress& PILSSession::MSIPAddress::operator= ( DWORD  a)
inline
MSIPAddress& PILSSession::MSIPAddress::operator= ( const PIPSocket::Address a)
inline
MSIPAddress& PILSSession::MSIPAddress::operator= ( const PString dotNotation)
inline

Friends And Related Function Documentation

ostream& operator<< ( ostream &  s,
MSIPAddress a 
)
friend
istream& operator>> ( istream &  s,
MSIPAddress a 
)
friend

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