PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PSTUNMessage Class Reference

#include <pstun.h>

Inheritance diagram for PSTUNMessage:
Collaboration diagram for PSTUNMessage:

Public Types

enum  MsgType {
  InvalidMessage, BindingRequest = 0x0001, BindingResponse = 0x0101, BindingError = 0x0111,
  SharedSecretRequest = 0x0002, SharedSecretResponse = 0x0102, SharedSecretError = 0x0112, Allocate = 0x0003,
  AllocateResponse = 0x0103, AllocateError = 0x0113, Refresh = 0x0004, Send = 0x0006,
  Data = 0x0007, CreatePermission = 0x0008, ChannelBind = 0x0009
}
 

Public Member Functions

 PSTUNMessage ()
 
 PSTUNMessage (MsgType newType, const BYTE *id=NULL)
 
 PSTUNMessage (const BYTE *data, PINDEX size, const PIPSocketAddressAndPort &srcAddr)
 
bool IsValid () const
 
bool IsValidFor (const PSTUNMessage &request) const
 
const BYTE * GetTransactionID () const
 
bool IsRFC5389 () const
 
const PSTUNMessageHeaderoperator-> () const
 
MsgType GetType () const
 
void SetType (MsgType newType, const BYTE *id=NULL)
 
void SetErrorType (int code, const BYTE *id, const char *reason=NULL)
 
PSTUNAttributeAddAttribute (const PSTUNAttribute &attribute)
 
PSTUNAttributeSetAttribute (const PSTUNAttribute &attribute)
 
PSTUNAttributeFindAttribute (PSTUNAttribute::Types type) const
 
template<class Type >
Type * FindAttributeAs (PSTUNAttribute::Types type) const
 
bool Read (PUDPSocket &socket)
 
bool Write (PUDPSocket &socket) const
 
bool Write (PUDPSocket &socket, const PIPSocketAddressAndPort &ap) const
 
bool Poll (PUDPSocket &socket, const PSTUNMessage &request, PINDEX pollRetries)
 
const PIPSocketAddressAndPort GetSourceAddressAndPort () const
 
void AddMessageIntegrity (const PBYTEArray &credentialsHash)
 
void AddMessageIntegrity (const BYTE *credentialsHashPtr, PINDEX credentialsHashLen, PSTUNMessageIntegrity *mi=NULL)
 
bool CheckMessageIntegrity (const PBYTEArray &credentialsHash) const
 
bool CheckMessageIntegrity (const BYTE *credentialsHashPtr, PINDEX credentialsHashLen) const
 
void AddFingerprint (PSTUNFingerprint *fp=NULL)
 
bool CheckFingerprint (bool required) const
 
- Public Member Functions inherited from PBYTEArray
template<typename T >
const T & GetAs (PINDEX offset=0)
 Function to cast block of memory in PBYTEArray to another structure. More...
 
 PBYTEArray (PINDEX initialSize=0)
 Construct a new dynamic array of unsigned chars. More...
 
 PBYTEArray (BYTE const *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of unsigned chars. More...
 
 PBYTEArray (PContainerReference &reference_)
 
virtual void PrintOn (ostream &strm) const
 Print the array. More...
 
virtual void ReadFrom (istream &strm)
 Read the array. More...
 
virtual PObjectClone () const
 Clone the object. More...
 
- Public Member Functions inherited from PBaseArray< BYTE >
 PBaseArray (PINDEX initialSize=0)
 Construct a new dynamic array of elements of the specified type. More...
 
 PBaseArray (BYTEconst *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of elements of the specified type. More...
 
PBoolean SetAt (PINDEX index, BYTEval)
 Set the specific element in the array. More...
 
BYTE GetAt (PINDEX index) const
 Get a value from the array. More...
 
void Attach (const BYTE *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
BYTE * GetPointer (PINDEX minSize=0)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
BYTE operator[] (PINDEX index) const
 Get a value from the array. More...
 
BYTE & operator[] (PINDEX index)
 Get a reference to value from the array. More...
 
 operator BYTEconst * () const
 Get a pointer to the internal array. More...
 
PBoolean Concatenate (const PBaseArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PAbstractArray
 PAbstractArray (PINDEX elementSizeInBytes, PINDEX initialSize=0)
 Create a new dynamic array of initalSize elements of elementSizeInBytes bytes each. More...
 
 PAbstractArray (PINDEX elementSizeInBytes, const void *buffer, PINDEX bufferSizeInElements, PBoolean dynamicAllocation)
 Create a new dynamic array of bufferSizeInElements elements of elementSizeInBytes bytes each. More...
 
virtual Comparison Compare (const PObject &obj) const
 Get the relative rank of the two arrays. More...
 
virtual PBoolean SetSize (PINDEX newSize)
 Set the size of the array in elements. More...
 
void Attach (const void *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
void * GetPointer (PINDEX minSize=1)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
PBoolean Concatenate (const PAbstractArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PContainer
 PContainer (PINDEX initialSize=0)
 Create a new unique container. More...
 
 PContainer (const PContainer &cont)
 Create a new refernce to container. More...
 
PContaineroperator= (const PContainer &cont)
 Assign one container reference to another. More...
 
virtual ~PContainer ()
 Destroy the container class. More...
 
virtual PINDEX GetSize () const
 Get the current size of the container. More...
 
__inline size_t size () const
 
PBoolean SetMinSize (PINDEX minSize)
 Set the minimum size of container. More...
 
virtual PBoolean IsEmpty () const
 Determine if the container is empty. More...
 
__inline bool empty () const
 
PBoolean IsUnique () const
 Determine if container is unique reference. More...
 
virtual PBoolean MakeUnique ()
 Make this instance to be the one and only reference to the container contents. 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 ()
 
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 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 PObjectPTraceObjectInstance () const
 
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...
 

Protected Member Functions

PSTUNAttributeGetFirstAttribute () const
 
void CalculateMessageIntegrity (const BYTE *credentialsHash, PINDEX credentialsHashLen, PSTUNMessageIntegrity *mi, BYTE *hmac) const
 
DWORD CalculateFingerprint (PSTUNFingerprint *fp) const
 

Protected Attributes

PIPSocketAddressAndPort m_sourceAddressAndPort
 

Additional Inherited Members

- Static Public Member Functions inherited from PObject
static const char * Class ()
 Get the name of the class as a C string. More...
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
- Friends inherited from PObject

Member Enumeration Documentation

Enumerator
InvalidMessage 
BindingRequest 
BindingResponse 
BindingError 
SharedSecretRequest 
SharedSecretResponse 
SharedSecretError 
Allocate 
AllocateResponse 
AllocateError 
Refresh 
Send 
Data 
CreatePermission 
ChannelBind 

Constructor & Destructor Documentation

PSTUNMessage::PSTUNMessage ( )
PSTUNMessage::PSTUNMessage ( MsgType  newType,
const BYTE *  id = NULL 
)
PSTUNMessage::PSTUNMessage ( const BYTE *  data,
PINDEX  size,
const PIPSocketAddressAndPort srcAddr 
)

Member Function Documentation

PSTUNAttribute* PSTUNMessage::AddAttribute ( const PSTUNAttribute attribute)
void PSTUNMessage::AddFingerprint ( PSTUNFingerprint fp = NULL)
void PSTUNMessage::AddMessageIntegrity ( const PBYTEArray credentialsHash)
inline
void PSTUNMessage::AddMessageIntegrity ( const BYTE *  credentialsHashPtr,
PINDEX  credentialsHashLen,
PSTUNMessageIntegrity mi = NULL 
)
DWORD PSTUNMessage::CalculateFingerprint ( PSTUNFingerprint fp) const
protected
void PSTUNMessage::CalculateMessageIntegrity ( const BYTE *  credentialsHash,
PINDEX  credentialsHashLen,
PSTUNMessageIntegrity mi,
BYTE *  hmac 
) const
protected
bool PSTUNMessage::CheckFingerprint ( bool  required) const
bool PSTUNMessage::CheckMessageIntegrity ( const PBYTEArray credentialsHash) const
inline
bool PSTUNMessage::CheckMessageIntegrity ( const BYTE *  credentialsHashPtr,
PINDEX  credentialsHashLen 
) const
PSTUNAttribute* PSTUNMessage::FindAttribute ( PSTUNAttribute::Types  type) const
template<class Type >
Type* PSTUNMessage::FindAttributeAs ( PSTUNAttribute::Types  type) const
inline
PSTUNAttribute* PSTUNMessage::GetFirstAttribute ( ) const
protected
const PIPSocketAddressAndPort PSTUNMessage::GetSourceAddressAndPort ( ) const
inline
const BYTE* PSTUNMessage::GetTransactionID ( ) const
MsgType PSTUNMessage::GetType ( ) const
bool PSTUNMessage::IsRFC5389 ( ) const
bool PSTUNMessage::IsValid ( ) const
bool PSTUNMessage::IsValidFor ( const PSTUNMessage request) const
const PSTUNMessageHeader* PSTUNMessage::operator-> ( ) const
inline
bool PSTUNMessage::Poll ( PUDPSocket socket,
const PSTUNMessage request,
PINDEX  pollRetries 
)
bool PSTUNMessage::Read ( PUDPSocket socket)
PSTUNAttribute* PSTUNMessage::SetAttribute ( const PSTUNAttribute attribute)
void PSTUNMessage::SetErrorType ( int  code,
const BYTE *  id,
const char *  reason = NULL 
)
void PSTUNMessage::SetType ( MsgType  newType,
const BYTE *  id = NULL 
)
bool PSTUNMessage::Write ( PUDPSocket socket) const
bool PSTUNMessage::Write ( PUDPSocket socket,
const PIPSocketAddressAndPort ap 
) const

Member Data Documentation

PIPSocketAddressAndPort PSTUNMessage::m_sourceAddressAndPort
protected

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