H323GatekeeperServer Class Reference

#include <gkserver.h>

Inheritance diagram for H323GatekeeperServer:

H323TransactionServer List of all members.

Public Member Functions

WORD GetDefaultUdpPort ()
PSafePtr< H323RegisteredEndPointFindDestinationEndPoint (const OpalGloballyUniqueID &id, H323GatekeeperCall::Direction direction)
void RemoveAlias (H323RegisteredEndPoint &ep, const PString &alias)
virtual BOOL OnSendDescriptorForEndpoint (H323RegisteredEndPoint &, H225_ArrayOf_AliasAddress &, H225_EndpointType &, H225_ArrayOf_AliasAddress &)
virtual BOOL AllowDuplicateAlias (const H225_ArrayOf_AliasAddress &)
virtual BOOL OnSendFeatureSet (unsigned, H225_FeatureSet &features) const
virtual void OnReceiveFeatureSet (unsigned, const H225_FeatureSet &features) const
Construction
 H323GatekeeperServer (H323EndPoint &endpoint)
 ~H323GatekeeperServer ()
Protocol Handler Operations
virtual H323TransactorCreateListener (H323Transport *transport)
EndPoint Operations
virtual H323GatekeeperRequest::Response OnDiscovery (H323GatekeeperGRQ &request)
virtual H323GatekeeperRequest::Response OnRegistration (H323GatekeeperRRQ &request)
virtual H323GatekeeperRequest::Response OnUnregistration (H323GatekeeperURQ &request)
virtual H323GatekeeperRequest::Response OnInfoResponse (H323GatekeeperIRR &request)
virtual void AddEndPoint (H323RegisteredEndPoint *ep)
virtual BOOL RemoveEndPoint (H323RegisteredEndPoint *ep)
virtual H323RegisteredEndPointCreateRegisteredEndPoint (H323GatekeeperRRQ &request)
virtual PString CreateEndPointIdentifier ()
virtual PSafePtr< H323RegisteredEndPointFindEndPointByIdentifier (const PString &identifier, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323RegisteredEndPointFindEndPointBySignalAddresses (const H225_ArrayOf_TransportAddress &addresses, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323RegisteredEndPointFindEndPointBySignalAddress (const H323TransportAddress &address, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323RegisteredEndPointFindEndPointByAliasAddress (const H225_AliasAddress &alias, PSafetyMode mode=PSafeReadWrite)
virtual PSafePtr< H323RegisteredEndPointFindEndPointByAliasString (const PString &alias, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323RegisteredEndPointFindEndPointByPartialAlias (const PString &alias, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323RegisteredEndPointFindEndPointByPrefixString (const PString &prefix, PSafetyMode mode=PSafeReference)
PSafePtr< H323RegisteredEndPointGetFirstEndPoint (PSafetyMode mode=PSafeReference)
Call Operations
virtual H323GatekeeperRequest::Response OnAdmission (H323GatekeeperARQ &request)
virtual H323GatekeeperRequest::Response OnDisengage (H323GatekeeperDRQ &request)
virtual H323GatekeeperRequest::Response OnBandwidth (H323GatekeeperBRQ &request)
virtual H323GatekeeperCallCreateCall (const OpalGloballyUniqueID &callIdentifier, H323GatekeeperCall::Direction direction)
virtual void AddCall (H323GatekeeperCall *)
virtual void RemoveCall (H323GatekeeperCall *call)
virtual PSafePtr< H323GatekeeperCallFindCall (const PString &description, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323GatekeeperCallFindCall (const OpalGloballyUniqueID &callIdentifier, BOOL answeringCall, PSafetyMode mode=PSafeReference)
virtual PSafePtr< H323GatekeeperCallFindCall (const OpalGloballyUniqueID &callIdentifier, H323GatekeeperCall::Direction direction, PSafetyMode mode=PSafeReference)
PSafePtr< H323GatekeeperCallGetFirstCall (PSafetyMode mode=PSafeReference)
Routing operations
virtual H323GatekeeperRequest::Response OnLocation (H323GatekeeperLRQ &request)
virtual BOOL TranslateAliasAddress (const H225_AliasAddress &alias, H225_ArrayOf_AliasAddress &aliases, H323TransportAddress &address, BOOL &isGkRouted, H323GatekeeperCall *call)
virtual BOOL TranslateAliasAddressToSignalAddress (const H225_AliasAddress &alias, H323TransportAddress &address)
Policy operations
virtual BOOL CheckSignalAddressPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H323TransportAddress &address)
virtual BOOL CheckAliasAddressPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const H225_AliasAddress &alias)
virtual BOOL CheckAliasStringPolicy (const H323RegisteredEndPoint &ep, const H225_AdmissionRequest &arq, const PString &alias)
virtual unsigned AllocateBandwidth (unsigned newBandwidth, unsigned oldBandwidth=0)
Security and authentication functions
virtual BOOL GetAdmissionRequestAuthentication (H323GatekeeperARQ &info, H235Authenticators &authenticators)
virtual BOOL GetUsersPassword (const PString &alias, PString &password, H323RegisteredEndPoint &registeredEndpoint) const
virtual BOOL GetUsersPassword (const PString &alias, PString &password) const
H.323 Annex G Peer Element support
H323PeerElementGetPeerElement () const
void SetPeerElement (H323PeerElement *newPeerElement)
void CreatePeerElement (const H323TransportAddress &h501Interface)
BOOL OpenPeerElement (const H323TransportAddress &remotePeer, BOOL append=FALSE, BOOL keepTrying=TRUE)
Access functions
const PString & GetGatekeeperIdentifier () const
void SetGatekeeperIdentifier (const PString &id, BOOL adjustListeners=TRUE)
unsigned GetAvailableBandwidth () const
void SetAvailableBandwidth (unsigned bps100)
unsigned GetUsedBandwidth () const
unsigned GetDefaultBandwidth () const
unsigned GetTimeToLive () const
void SetTimeToLive (unsigned seconds)
unsigned GetInfoResponseRate () const
void SetInfoResponseRate (unsigned seconds)
BOOL IsGatekeeperRouted () const
BOOL IsRequiredH235 () const
unsigned GetActiveRegistrations () const
unsigned GetPeakRegistrations () const
unsigned GetTotalRegistrations () const
unsigned GetRejectedRegistrations () const
unsigned GetActiveCalls () const
unsigned GetPeakCalls () const
unsigned GetTotalCalls () const
unsigned GetRejectedCalls () const

Protected Attributes

PString gatekeeperIdentifier
unsigned totalBandwidth
unsigned usedBandwidth
unsigned defaultBandwidth
unsigned maximumBandwidth
unsigned defaultTimeToLive
unsigned defaultInfoResponseRate
BOOL overwriteOnSameSignalAddress
BOOL canHaveDuplicateAlias
BOOL canHaveDuplicatePrefix
BOOL canOnlyCallRegisteredEP
BOOL canOnlyAnswerRegisteredEP
BOOL answerCallPreGrantedARQ
BOOL makeCallPreGrantedARQ
BOOL isGatekeeperRouted
BOOL aliasCanBeHostName
BOOL requireH235
BOOL disengageOnHearbeatFail
PStringToString passwords
PMutex mutex
time_t identifierBase
unsigned nextIdentifier
PThread * monitorThread
PSyncPoint monitorExit
ListenerList listeners
H323PeerElementpeerElement
PSafeDictionary< PString,
H323RegisteredEndPoint
byIdentifier
PSortedStringList byAddress
PSortedStringList byAlias
PSortedStringList byVoicePrefix
PSafeSortedList< H323GatekeeperCallactiveCalls
PINDEX peakRegistrations
PINDEX totalRegistrations
PINDEX rejectedRegistrations
PINDEX peakCalls
PINDEX totalCalls
PINDEX rejectedCalls

Friends

class H323GatekeeperRRQ
class H323GatekeeperARQ

Classes

class  StringMap

Detailed Description

This class implements a basic gatekeeper server functionality. An instance of this class contains all of the state information and operations for a gatekeeper. Multiple gatekeeper listeners may be using this class to link individual UDP (or other protocol) packets from various sources (interfaces etc) into a single instance.

There is typically only one instance of this class, though it is not limited to that. An application would also quite likely descend from this class and override call back functions to implement more complex policy.

Definition at line 1406 of file gkserver.h.


Constructor & Destructor Documentation

H323GatekeeperServer::H323GatekeeperServer ( H323EndPoint endpoint  ) 

Create a new gatekeeper.

Definition at line 3238 of file gkserver.cxx.

References aliasCanBeHostName, answerCallPreGrantedARQ, canHaveDuplicateAlias, canHaveDuplicatePrefix, canOnlyAnswerRegisteredEP, canOnlyCallRegisteredEP, defaultBandwidth, defaultInfoResponseRate, defaultTimeToLive, disengageOnHearbeatFail, identifierBase, isGatekeeperRouted, makeCallPreGrantedARQ, maximumBandwidth, monitorThread, nextIdentifier, overwriteOnSameSignalAddress, peakCalls, peakRegistrations, peerElement, rejectedCalls, rejectedRegistrations, requireH235, totalBandwidth, totalCalls, totalRegistrations, and usedBandwidth.

H323GatekeeperServer::~H323GatekeeperServer (  ) 

Destroy gatekeeper.

Definition at line 3280 of file gkserver.cxx.

References monitorExit, monitorThread, and peerElement.


Member Function Documentation

H323Transactor * H323GatekeeperServer::CreateListener ( H323Transport transport  )  [virtual]

Create a new H323GatkeeperListener. The user woiuld not usually use this function as it is used internally by the server when new listeners are added by H323TransportAddress.

However, a user may override this function to create objects that are user defined descendants of H323GatekeeperListener so the user can maintain extra information on a interface by interface basis.

Parameters:
transport  Transport for listener

Implements H323TransactionServer.

Definition at line 3292 of file gkserver.cxx.

References gatekeeperIdentifier, and H323TransactionServer::ownerEndPoint.

H323GatekeeperRequest::Response H323GatekeeperServer::OnDiscovery ( H323GatekeeperGRQ request  )  [virtual]

Handle a discovery GRQ PDU. The default behaviour deals with the authentication scheme nogotiation.

Definition at line 3298 of file gkserver.cxx.

References H323Transaction::Confirm, H323EndPoint::CreateAuthenticators(), H225_GatekeeperConfirm::e_algorithmOID, H225_GatekeeperConfirm::e_authenticationMode, H323GatekeeperGRQ::gcf, H323GatekeeperGRQ::grq, H225_GatekeeperConfirm::m_algorithmOID, H225_GatekeeperRequest::m_algorithmOIDs, H225_GatekeeperRequest::m_authenticationCapability, H225_GatekeeperConfirm::m_authenticationMode, H225_GatekeeperConfirm::m_rasAddress, and H323TransactionServer::ownerEndPoint.

Referenced by H323GatekeeperListener::OnDiscovery().

H323GatekeeperRequest::Response H323GatekeeperServer::OnRegistration ( H323GatekeeperRRQ request  )  [virtual]

Call back on receiving a RAS registration for this endpoint. The default behaviour checks if the registered endpoint already exists and if not creates a new endpoint. It then calls the OnRegistration() on that new endpoint instance.

If returns TRUE then a RCF is sent otherwise an RRJ is sent.

Definition at line 3325 of file gkserver.cxx.

References AddEndPoint(), AllowDuplicateAlias(), answerCallPreGrantedARQ, canHaveDuplicatePrefix, H323Transaction::Confirm, CreateRegisteredEndPoint(), defaultInfoResponseRate, H225_RegistrationRejectReason::e_duplicateAlias, H225_RegistrationRejectReason::e_fullRegistrationRequired, H225_EndpointType::e_gateway, H225_RegistrationRejectReason::e_invalidCallSignalAddress, H225_RegistrationConfirm_preGrantedARQ::e_irrFrequencyInCall, H225_RegistrationConfirm::e_preGrantedARQ, H225_GatewayInfo::e_protocol, H225_VoiceCaps::e_supportedPrefixes, H225_RegistrationRequest::e_terminalAlias, H225_SupportedProtocols::e_voice, H323GatekeeperRequest::endpoint, FindEndPointByAliasAddress(), FindEndPointBySignalAddress(), isGatekeeperRouted, H225_RegistrationConfirm_preGrantedARQ::m_answerCall, H225_RegistrationRequest::m_callSignalAddress, H225_EndpointType::m_gateway, H225_RegistrationConfirm_preGrantedARQ::m_irrFrequencyInCall, H225_RegistrationRequest::m_keepAlive, H225_RegistrationConfirm_preGrantedARQ::m_makeCall, H225_RegistrationConfirm::m_preGrantedARQ, H225_GatewayInfo::m_protocol, H225_RegistrationRequest::m_protocolIdentifier, H225_RegistrationReject::m_rejectReason, H225_VoiceCaps::m_supportedPrefixes, H225_RegistrationRequest::m_terminalAlias, H225_RegistrationRequest::m_terminalType, H225_RegistrationConfirm_preGrantedARQ::m_useGKCallSignalAddressToAnswer, H225_RegistrationConfirm_preGrantedARQ::m_useGKCallSignalAddressToMakeCall, H225_RegistrationConfirm::m_willRespondToIRR, makeCallPreGrantedARQ, overwriteOnSameSignalAddress, H323GatekeeperRRQ::rcf, H323Transaction::Reject, RemoveEndPoint(), H323GatekeeperRRQ::rrj, H323GatekeeperRRQ::rrq, and H323GatekeeperRRQ::SetRejectReason().

Referenced by H323GatekeeperListener::OnRegistration().

H323GatekeeperRequest::Response H323GatekeeperServer::OnUnregistration ( H323GatekeeperURQ request  )  [virtual]

Handle an unregistration URQ PDU. The default behaviour removes the aliases defined in the URQ and if all aliases for the registered endpoint are removed then the endpoint itself is removed.

Definition at line 3457 of file gkserver.cxx.

References H323PeerElement::AddDescriptor(), H323Transaction::Confirm, H225_UnregistrationRequest::e_endpointAlias, H225_UnregRejectReason::e_permissionDenied, H323GatekeeperRequest::endpoint, FindEndPointByAliasAddress(), H225_UnregistrationRequest::m_endpointAlias, peerElement, H323Transaction::Reject, RemoveEndPoint(), H323GatekeeperURQ::SetRejectReason(), and H323GatekeeperURQ::urq.

Referenced by H323GatekeeperListener::OnUnregistration().

H323GatekeeperRequest::Response H323GatekeeperServer::OnInfoResponse ( H323GatekeeperIRR request  )  [virtual]

Handle an info request response IRR PDU. The default behaviour calls the function of the same name in the endpoint instance.

Definition at line 3501 of file gkserver.cxx.

References H323GatekeeperRequest::endpoint.

Referenced by H323GatekeeperListener::OnInfoResponse().

void H323GatekeeperServer::AddEndPoint ( H323RegisteredEndPoint ep  )  [virtual]

Add a new registered endpoint to the server database. Once the endpoint has been added it is then owned by the server and will be deleted when it is removed.

The user woiuld not usually use this function as it is used internally by the server when new registration requests (RRQ) are received.

Note that a registered endpoint has no realationship in this software to a H323EndPoint class.

Definition at line 3509 of file gkserver.cxx.

References byAddress, byAlias, byIdentifier, byVoicePrefix, H323RegisteredEndPoint::GetAlias(), H323RegisteredEndPoint::GetAliasCount(), H323RegisteredEndPoint::GetIdentifier(), H323RegisteredEndPoint::GetPrefix(), H323RegisteredEndPoint::GetPrefixCount(), H323RegisteredEndPoint::GetSignalAddress(), H323RegisteredEndPoint::GetSignalAddressCount(), mutex, peakRegistrations, and totalRegistrations.

Referenced by OnRegistration().

BOOL H323GatekeeperServer::RemoveEndPoint ( H323RegisteredEndPoint ep  )  [virtual]

Remove a registered endpoint from the server database.

Definition at line 3540 of file gkserver.cxx.

References byAddress, byAlias, byIdentifier, byVoicePrefix, H323PeerElement::DeleteDescriptor(), H323RegisteredEndPoint::GetAlias(), H323RegisteredEndPoint::GetAliasCount(), H323RegisteredEndPoint::GetCall(), H323RegisteredEndPoint::GetCallCount(), H323RegisteredEndPoint::GetDescriptorID(), H323RegisteredEndPoint::GetIdentifier(), mutex, peerElement, H323RegisteredEndPoint::RemoveAlias(), and RemoveCall().

Referenced by OnRegistration(), OnUnregistration(), and H323RegisteredEndPoint::Unregister().

H323RegisteredEndPoint * H323GatekeeperServer::CreateRegisteredEndPoint ( H323GatekeeperRRQ request  )  [virtual]

Create a new registered endpoint object. The user woiuld not usually use this function as it is used internally by the server when new registration requests (RRQ) are received.

However, a user may override this function to create objects that are user defined descendants of H323RegisteredEndPoint so the user can maintain extra information on a endpoint by endpoint basis.

Definition at line 3618 of file gkserver.cxx.

References CreateEndPointIdentifier().

Referenced by OnRegistration().

PString H323GatekeeperServer::CreateEndPointIdentifier (  )  [virtual]

Create a new unique identifier for the registered endpoint. The returned identifier must be unique over the lifetime of this gatekeeper server.

The default behaviour simply returns the string representation of the member variable nextIdentifier. There could be a problem in this implementation after 4,294,967,296 have been registered.

Definition at line 3624 of file gkserver.cxx.

References identifierBase, mutex, and nextIdentifier.

Referenced by CreateRegisteredEndPoint().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointByIdentifier ( const PString &  identifier,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find a registered endpoint given its endpoint identifier.

Definition at line 3631 of file gkserver.cxx.

References byIdentifier.

Referenced by FindEndPointByAliasString(), FindEndPointByPartialAlias(), FindEndPointByPrefixString(), FindEndPointBySignalAddress(), FindEndPointBySignalAddresses(), H323GatekeeperRequest::GetRegisteredEndPoint(), H323GatekeeperListener::OnRegistration(), and H323GatekeeperListener::OnUnregistration().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointBySignalAddresses ( const H225_ArrayOf_TransportAddress addresses,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find a registered endpoint given a list of signal addresses.

Definition at line 3638 of file gkserver.cxx.

References byAddress, FindEndPointByIdentifier(), and mutex.

Referenced by H323GatekeeperListener::OnUnregistration().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointBySignalAddress ( const H323TransportAddress address,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find a registered endpoint given its signal address.

Definition at line 3653 of file gkserver.cxx.

References byAddress, FindEndPointByIdentifier(), and mutex.

Referenced by H323GatekeeperCall::OnAdmission(), OnRegistration(), and TranslateAliasAddress().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointByAliasAddress ( const H225_AliasAddress alias,
PSafetyMode  mode = PSafeReadWrite 
) [virtual]

Find a registered endpoint given its raw alias address.

Definition at line 3666 of file gkserver.cxx.

References FindEndPointByAliasString().

Referenced by CheckAliasAddressPolicy(), H323GatekeeperCall::OnAdmission(), OnLocation(), OnRegistration(), OnUnregistration(), and TranslateAliasAddressToSignalAddress().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointByAliasString ( const PString &  alias,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find a registered endpoint given its simple alias string.

Definition at line 3673 of file gkserver.cxx.

References byAlias, FindEndPointByIdentifier(), FindEndPointByPrefixString(), and mutex.

Referenced by CheckAliasStringPolicy(), FindDestinationEndPoint(), and FindEndPointByAliasAddress().

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointByPartialAlias ( const PString &  alias,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find the first registered endpoint given a partial alias string.

Definition at line 3688 of file gkserver.cxx.

References byAlias, FindEndPointByIdentifier(), H323GatekeeperServer::StringMap::identifier, and mutex.

PSafePtr< H323RegisteredEndPoint > H323GatekeeperServer::FindEndPointByPrefixString ( const PString &  prefix,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find the first registered endpoint given a number prefix string.

Definition at line 3708 of file gkserver.cxx.

References byVoicePrefix, FindEndPointByIdentifier(), and mutex.

Referenced by FindEndPointByAliasString().

PSafePtr<H323RegisteredEndPoint> H323GatekeeperServer::GetFirstEndPoint ( PSafetyMode  mode = PSafeReference  )  [inline]

Get first endpoint for enumeration.

Definition at line 1571 of file gkserver.h.

References byIdentifier.

H323GatekeeperRequest::Response H323GatekeeperServer::OnAdmission ( H323GatekeeperARQ request  )  [virtual]

Handle an admission ARQ PDU. The default behaviour verifies that the call is allowed by the policies the gatekeeper server requires, then attempts to look up the required signal address for the call. It also manages bandwidth allocations.

Definition at line 3747 of file gkserver.cxx.

References H323GatekeeperARQ::acf, activeCalls, AddCall(), H323GatekeeperCall::AnsweringCall, H323GatekeeperARQ::arj, H323GatekeeperARQ::arq, H323Transaction::CanSendRIP(), H323Transaction::Confirm, CreateCall(), H225_AdmissionReject::e_serviceControl, H225_AdmissionConfirm::e_serviceControl, H225_AdmissionRejectReason::e_undefinedReason, H323GatekeeperRequest::endpoint, FindCall(), H323Transaction::IsFastResponseRequired(), H225_AdmissionRequest::m_answerCall, H225_AdmissionRequest::m_callIdentifier, H225_CallIdentifier::m_guid, H225_AdmissionReject::m_serviceControl, H225_AdmissionConfirm::m_serviceControl, mutex, H323GatekeeperCall::OnAdmission(), H323GatekeeperCall::OriginatingCall, peakCalls, H323Transaction::Reject, H323GatekeeperARQ::SetRejectReason(), and totalCalls.

Referenced by H323GatekeeperListener::OnAdmission().

H323GatekeeperRequest::Response H323GatekeeperServer::OnDisengage ( H323GatekeeperDRQ request  )  [virtual]

Handle a disengage DRQ PDU. The default behaviour finds the call by its id provided in the DRQ and removes it from the gatekeeper server database.

Definition at line 3817 of file gkserver.cxx.

References H323Transaction::Confirm, H323GatekeeperDRQ::drq, H225_DisengageRejectReason::e_requestToDropOther, FindCall(), H225_DisengageRequest::m_answeredCall, H225_DisengageRequest::m_callIdentifier, H225_CallIdentifier::m_guid, H323Transaction::Reject, RemoveCall(), and H323GatekeeperDRQ::SetRejectReason().

Referenced by H323GatekeeperListener::OnDisengage().

H323GatekeeperRequest::Response H323GatekeeperServer::OnBandwidth ( H323GatekeeperBRQ request  )  [virtual]

Handle a bandwidth BRQ PDU. The default behaviour finds the call and does some checks then calls the H323GatekeeperCall function of the same name.

Definition at line 3839 of file gkserver.cxx.

References H323GatekeeperBRQ::brq, H225_BandRejectReason::e_invalidConferenceID, FindCall(), H225_BandwidthRequest::m_answeredCall, H225_BandwidthRequest::m_callIdentifier, H225_CallIdentifier::m_guid, H323Transaction::Reject, and H323GatekeeperBRQ::SetRejectReason().

Referenced by H323GatekeeperListener::OnBandwidth().

H323GatekeeperCall * H323GatekeeperServer::CreateCall ( const OpalGloballyUniqueID callIdentifier,
H323GatekeeperCall::Direction  direction 
) [virtual]

Create a new call object. The user woiuld not usually use this function as it is used internally by the server when new calls (ARQ) are made.

However, a user may override this function to create objects that are user defined descendants of H323GatekeeperCall so the user can maintain extra information on a call by call basis.

Definition at line 3918 of file gkserver.cxx.

Referenced by OnAdmission().

virtual void H323GatekeeperServer::AddCall ( H323GatekeeperCall  )  [inline, virtual]

Called whenever a new call is started

Definition at line 1623 of file gkserver.h.

Referenced by OnAdmission().

void H323GatekeeperServer::RemoveCall ( H323GatekeeperCall call  )  [virtual]

Called whenever call is ended. By default, removes the call from the call list

Definition at line 3905 of file gkserver.cxx.

References activeCalls, H323GatekeeperCall::GetEndPoint(), H323RegisteredEndPoint::RemoveCall(), and H323GatekeeperCall::SetBandwidthUsed().

Referenced by H323GatekeeperCall::Disengage(), OnDisengage(), H323GatekeeperARQ::OnHandlePDU(), and RemoveEndPoint().

PSafePtr< H323GatekeeperCall > H323GatekeeperServer::FindCall ( const PString &  description,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find the call given the identifier.

Definition at line 3925 of file gkserver.cxx.

References H323GatekeeperCall::AnsweringCall, H323GatekeeperCall::OriginatingCall, and H323GatekeeperCall::UnknownDirection.

Referenced by FindCall(), FindDestinationEndPoint(), OnAdmission(), OnBandwidth(), OnDisengage(), and H323GatekeeperARQ::OnHandlePDU().

PSafePtr< H323GatekeeperCall > H323GatekeeperServer::FindCall ( const OpalGloballyUniqueID callIdentifier,
BOOL  answeringCall,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find the call given the identifier.

Definition at line 3946 of file gkserver.cxx.

References H323GatekeeperCall::AnsweringCall, FindCall(), and H323GatekeeperCall::OriginatingCall.

PSafePtr< H323GatekeeperCall > H323GatekeeperServer::FindCall ( const OpalGloballyUniqueID callIdentifier,
H323GatekeeperCall::Direction  direction,
PSafetyMode  mode = PSafeReference 
) [virtual]

Find the call given the identifier.

Definition at line 3955 of file gkserver.cxx.

References activeCalls.

PSafePtr<H323GatekeeperCall> H323GatekeeperServer::GetFirstCall ( PSafetyMode  mode = PSafeReference  )  [inline]

Get first endpoint for enumeration.

Definition at line 1657 of file gkserver.h.

References activeCalls.

H323GatekeeperRequest::Response H323GatekeeperServer::OnLocation ( H323GatekeeperLRQ request  )  [virtual]

Handle a location LRQ PDU. The default behaviour just uses TranslateAliasAddressToSignalAddress to determine the endpoints location.

It is expected that a user would override this function to implement application specified look up algorithms.

Definition at line 3963 of file gkserver.cxx.

References H323Transaction::Confirm, H225_LocationConfirm::e_destinationInfo, H225_LocationRejectReason::e_requestDenied, FindEndPointByAliasAddress(), H323RegisteredEndPoint::GetRASAddress(), H323RegisteredEndPoint::GetSignalAddress(), IsGatekeeperRouted(), H323GatekeeperLRQ::lcf, H323GatekeeperLRQ::lrq, H225_LocationConfirm::m_callSignalAddress, H225_LocationConfirm::m_destinationInfo, H225_LocationRequest::m_destinationInfo, H225_LocationConfirm::m_rasAddress, H323Transaction::Reject, H323TransportAddress::SetPDU(), H323GatekeeperLRQ::SetRejectReason(), and TranslateAliasAddress().

Referenced by H323GatekeeperListener::OnLocation().

BOOL H323GatekeeperServer::TranslateAliasAddress ( const H225_AliasAddress alias,
H225_ArrayOf_AliasAddress aliases,
H323TransportAddress address,
BOOL &  isGkRouted,
H323GatekeeperCall call 
) [virtual]

Translate a given alias to an alias set and signal address. This is called by the OnAdmission() handler to fill in the ACF or OnLocation() to fill the LCF informing the calling endpoint where to actually connect to.

It is expected that a user would override this function to implement application specified look up algorithms.

The default behaviour calls TranslateAliasAddressToSignalAddress() which is provided only for backwards compatibility.

Definition at line 4003 of file gkserver.cxx.

References H323PeerElement::AccessRequest(), FindEndPointBySignalAddress(), peerElement, and TranslateAliasAddressToSignalAddress().

Referenced by OnLocation(), and H323GatekeeperCall::TranslateAliasAddress().

BOOL H323GatekeeperServer::CheckSignalAddressPolicy ( const H323RegisteredEndPoint ep,
const H225_AdmissionRequest arq,
const H323TransportAddress address 
) [virtual]

Check the signal address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified signal address.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour simply returns TRUE.

Definition at line 4076 of file gkserver.cxx.

Referenced by H323GatekeeperCall::OnAdmission().

BOOL H323GatekeeperServer::CheckAliasAddressPolicy ( const H323RegisteredEndPoint ep,
const H225_AdmissionRequest arq,
const H225_AliasAddress alias 
) [virtual]

Check the alias address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified alias address.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour checks the canOnlyAnswerRegisteredEP or canOnlyCallRegisteredEP meber variables depending on if it is an incoming call and if that is TRUE only allows the call to proceed if the alias is also registered with the gatekeeper.

Definition at line 4084 of file gkserver.cxx.

References canOnlyAnswerRegisteredEP, canOnlyCallRegisteredEP, FindEndPointByAliasAddress(), H225_AdmissionRequest::m_answerCall, and mutex.

Referenced by H323GatekeeperCall::OnAdmission().

BOOL H323GatekeeperServer::CheckAliasStringPolicy ( const H323RegisteredEndPoint ep,
const H225_AdmissionRequest arq,
const PString &  alias 
) [virtual]

Check the alias address against the security policy. This validates that the specified endpoint is allowed to make a connection to or from the specified simple alias string.

It is expected that a user would override this function to implement application specified security policy algorithms.

The default behaviour checks the canOnlyAnswerRegisteredEP or canOnlyCallRegisteredEP meber variables depending on if it is an incoming call and if that is TRUE only allows the call to proceed if the alias is also registered with the gatekeeper.

Definition at line 4100 of file gkserver.cxx.

References canOnlyAnswerRegisteredEP, canOnlyCallRegisteredEP, FindEndPointByAliasString(), H225_AdmissionRequest::m_answerCall, and mutex.

unsigned H323GatekeeperServer::AllocateBandwidth ( unsigned  newBandwidth,
unsigned  oldBandwidth = 0 
) [virtual]

Allocate or change the bandwidth being used. This function modifies the total bandwidth used by the all endpoints registered with this gatekeeper. It is called when ARQ or BRQ PDU's are received.

Definition at line 3878 of file gkserver.cxx.

References defaultBandwidth, maximumBandwidth, mutex, totalBandwidth, and usedBandwidth.

Referenced by H323GatekeeperCall::OnAdmission(), H323GatekeeperCall::OnBandwidth(), and H323GatekeeperCall::SetBandwidthUsed().

BOOL H323GatekeeperServer::GetAdmissionRequestAuthentication ( H323GatekeeperARQ info,
H235Authenticators &  authenticators 
) [virtual]

Get separate H.235 authentication for the connection. This allows an individual ARQ to override the authentical credentials used in H.235 based RAS for this particular connection.

A return value of FALSE indicates to use the default credentials of the endpoint, while TRUE indicates that new credentials are to be used.

The default behavour does nothing and returns FALSE.

Parameters:
info  ARQ being constructed
authenticators  New authenticators for ARQ

Definition at line 3855 of file gkserver.cxx.

Referenced by H323GatekeeperListener::OnAdmission().

BOOL H323GatekeeperServer::GetUsersPassword ( const PString &  alias,
PString &  password,
H323RegisteredEndPoint registeredEndpoint 
) const [virtual]

Get password for user if H.235 security active. Returns TRUE if user is found and password returned. Note the password may be empty in which case the user was found but explicitly ddoes not require security, possibly overriding the requireH235 flag.

Definition at line 3861 of file gkserver.cxx.

Referenced by H323RegisteredEndPoint::OnSecureRegistration().

H323PeerElement* H323GatekeeperServer::GetPeerElement (  )  const [inline]

Get the associated peer element for the gatekeeper.

Definition at line 1804 of file gkserver.h.

References peerElement.

Referenced by H323RegisteredEndPoint::OnRegistration().

void H323GatekeeperServer::SetPeerElement ( H323PeerElement newPeerElement  ) 

Set the associated peer element for the gatekeeper. The existing peer element is automatically deleted.

void H323GatekeeperServer::CreatePeerElement ( const H323TransportAddress h501Interface  ) 

Create an associated peer element for the gatekeeper. The existing peer element is checked to be listening on the same interface as specified and if it is not it is changed to the specified address.

BOOL H323GatekeeperServer::OpenPeerElement ( const H323TransportAddress remotePeer,
BOOL  append = FALSE,
BOOL  keepTrying = TRUE 
)

Create a new Peer Element and establish a service relationship. If append is FALSE, the existing peer element is automatically deleted and recreated. If append is TRUE then a new service relationship is added to the existing peer element.

const PString& H323GatekeeperServer::GetGatekeeperIdentifier (  )  const [inline]

Get the identifier name for this gatekeeper.

Definition at line 1840 of file gkserver.h.

References gatekeeperIdentifier.

void H323GatekeeperServer::SetGatekeeperIdentifier ( const PString &  id,
BOOL  adjustListeners = TRUE 
)

Set the identifier name for this gatekeeper. If adjustListeners is TRUE then all gatekeeper listeners that are attached to this gatekeeper server have their identifier names changed as well.

Definition at line 4116 of file gkserver.cxx.

References gatekeeperIdentifier, listeners, and mutex.

unsigned H323GatekeeperServer::GetAvailableBandwidth (  )  const [inline]

Get the total bandwidth available in 100's of bits per second.

Definition at line 1854 of file gkserver.h.

References totalBandwidth.

void H323GatekeeperServer::SetAvailableBandwidth ( unsigned  bps100  )  [inline]

Set the total bandwidth available in 100's of bits per second.

Definition at line 1858 of file gkserver.h.

References totalBandwidth.

unsigned H323GatekeeperServer::GetUsedBandwidth (  )  const [inline]

Get the total bandwidth used in 100's of bits per second.

Definition at line 1862 of file gkserver.h.

References usedBandwidth.

unsigned H323GatekeeperServer::GetDefaultBandwidth (  )  const [inline]

Get the default bandwidth for calls.

Definition at line 1866 of file gkserver.h.

References defaultBandwidth.

Referenced by H323GatekeeperCall::OnAdmission().

unsigned H323GatekeeperServer::GetTimeToLive (  )  const [inline]

Get the default time to live for new registered endpoints.

Definition at line 1870 of file gkserver.h.

References defaultTimeToLive.

Referenced by H323RegisteredEndPoint::OnRegistration().

void H323GatekeeperServer::SetTimeToLive ( unsigned  seconds  )  [inline]

Set the default time to live for new registered endpoints.

Definition at line 1874 of file gkserver.h.

References defaultTimeToLive.

unsigned H323GatekeeperServer::GetInfoResponseRate (  )  const [inline]

Get the default time for monitoring calls via IRR.

Definition at line 1878 of file gkserver.h.

References defaultInfoResponseRate.

Referenced by H323GatekeeperCall::H323GatekeeperCall().

void H323GatekeeperServer::SetInfoResponseRate ( unsigned  seconds  )  [inline]

Set the default time for monitoring calls via IRR.

Definition at line 1882 of file gkserver.h.

References defaultInfoResponseRate.

BOOL H323GatekeeperServer::IsGatekeeperRouted (  )  const [inline]

Get flag for is gatekeeper routed.

Definition at line 1886 of file gkserver.h.

References isGatekeeperRouted.

Referenced by H323GatekeeperCall::OnAdmission(), and OnLocation().

BOOL H323GatekeeperServer::IsRequiredH235 (  )  const [inline]

Get flag for if H.235 authentication is required.

Definition at line 1890 of file gkserver.h.

References requireH235.

Referenced by H323RegisteredEndPoint::OnSecureRegistration().

unsigned H323GatekeeperServer::GetActiveRegistrations (  )  const [inline]

Get the currently active registration count.

Definition at line 1894 of file gkserver.h.

References byIdentifier.

unsigned H323GatekeeperServer::GetPeakRegistrations (  )  const [inline]

Get the peak registration count.

Definition at line 1898 of file gkserver.h.

References peakRegistrations.

unsigned H323GatekeeperServer::GetTotalRegistrations (  )  const [inline]

Get the total registrations since start up.

Definition at line 1902 of file gkserver.h.

References totalRegistrations.

unsigned H323GatekeeperServer::GetRejectedRegistrations (  )  const [inline]

Get the total registrations rejected since start up.

Definition at line 1906 of file gkserver.h.

References rejectedRegistrations.

unsigned H323GatekeeperServer::GetActiveCalls (  )  const [inline]

Get the currently active call count.

Definition at line 1910 of file gkserver.h.

References activeCalls.

unsigned H323GatekeeperServer::GetPeakCalls (  )  const [inline]

Get the peak calls count.

Definition at line 1914 of file gkserver.h.

References peakCalls.

unsigned H323GatekeeperServer::GetTotalCalls (  )  const [inline]

Get the total calls since start up.

Definition at line 1918 of file gkserver.h.

References totalCalls.

unsigned H323GatekeeperServer::GetRejectedCalls (  )  const [inline]

Get the total calls rejected since start up.

Definition at line 1922 of file gkserver.h.

References rejectedCalls.


The documentation for this class was generated from the following files:
Generated on Thu Oct 25 13:45:28 2007 for h323plus by  doxygen 1.5.2