h323ep.h

Go to the documentation of this file.
00001 /*
00002  * h323ep.h
00003  *
00004  * H.323 protocol handler
00005  *
00006  * Open H323 Library
00007  *
00008  * Copyright (c) 1998-2001 Equivalence Pty. Ltd.
00009  *
00010  * The contents of this file are subject to the Mozilla Public License
00011  * Version 1.0 (the "License"); you may not use this file except in
00012  * compliance with the License. You may obtain a copy of the License at
00013  * http://www.mozilla.org/MPL/
00014  *
00015  * Software distributed under the License is distributed on an "AS IS"
00016  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00017  * the License for the specific language governing rights and limitations
00018  * under the License.
00019  *
00020  * The Original Code is Open H323 Library.
00021  *
00022  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
00023  *
00024  * Portions of this code were written with the assisance of funding from
00025  * Vovida Networks, Inc. http://www.vovida.com.
00026  *
00027  * Contributor(s): ______________________________________.
00028  *
00029  * $Revision: 29144 $
00030  * $Author: ededu $
00031  * $Date: 2013-02-19 14:00:55 -0600 (Tue, 19 Feb 2013) $
00032  */
00033 
00034 #ifndef OPAL_H323_H323EP_H
00035 #define OPAL_H323_H323EP_H
00036 
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040 
00041 #include <opal/buildopts.h>
00042 
00043 #if OPAL_H323
00044 
00045 #include <opal/rtpep.h>
00046 #include <opal/manager.h>
00047 #include <opal/call.h>
00048 #include <opal/transports.h>
00049 #include <h323/h323con.h>
00050 #include <h323/h323caps.h>
00051 #include <h323/h235auth.h>
00052 #include <asn/h225.h>
00053 
00054 #if OPAL_H460
00055 #include <h460/h4601.h>
00056 #endif
00057 
00058 
00059 class H225_EndpointType;
00060 class H225_VendorIdentifier;
00061 class H225_H221NonStandard;
00062 class H225_ServiceControlDescriptor;
00063 class H225_FeatureSet;
00064 
00065 class H235SecurityInfo;
00066 
00067 class H323Gatekeeper;
00068 class H323SignalPDU;
00069 class H323ServiceControlSession;
00070 
00072 
00085 class H323EndPoint : public OpalRTPEndPoint
00086 {
00087   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00088 
00089   public:
00090     enum {
00091       DefaultTcpSignalPort = 1720
00092     };
00093 
00098     H323EndPoint(
00099       OpalManager & manager
00100     );
00101 
00104     ~H323EndPoint();
00106 
00113     virtual void ShutDown();
00114 
00144     virtual PSafePtr<OpalConnection> MakeConnection(
00145       OpalCall & call,                  
00146       const PString & party,            
00147       void * userData  = NULL,          
00148       unsigned int options = 0,         
00149       OpalConnection::StringOptions * stringOptions = NULL
00150     );
00152 
00157     virtual void SetEndpointTypeInfo(
00158       H225_EndpointType & info
00159     ) const;
00160 
00163     virtual void SetVendorIdentifierInfo(
00164       H225_VendorIdentifier & info
00165     ) const;
00166 
00169     virtual void SetH221NonStandardInfo(
00170       H225_H221NonStandard & info
00171     ) const;
00172 
00175     virtual bool SetGatewaySupportedProtocol(
00176       H225_ArrayOf_SupportedProtocols & protocols
00177     ) const;
00178 
00182     virtual bool OnSetGatewayPrefixes(
00183       PStringList & prefixes
00184     ) const;
00186 
00187 
00198     void AddCapability(
00199       H323Capability * capability   
00200     );
00201 
00222     PINDEX SetCapability(
00223       PINDEX descriptorNum, 
00224       PINDEX simultaneous,  
00225       H323Capability * cap  
00226     );
00227 
00232     PINDEX AddAllCapabilities(
00233       PINDEX descriptorNum, 
00234       PINDEX simultaneous,  
00235       const PString & name  
00236     );
00237 
00240     void AddAllUserInputCapabilities(
00241       PINDEX descriptorNum, 
00242       PINDEX simultaneous   
00243     );
00244 
00247     void RemoveCapabilities(
00248       const PStringArray & codecNames
00249     );
00250 
00253     void ReorderCapabilities(
00254       const PStringArray & preferenceOrder
00255     );
00256 
00259     H323Capability * FindCapability(
00260       const H245_Capability & cap  
00261     ) const;
00262 
00265     H323Capability * FindCapability(
00266       const H245_DataType & dataType  
00267     ) const;
00268 
00271     H323Capability * FindCapability(
00272       H323Capability::MainTypes mainType,   
00273       unsigned subType                      
00274     ) const;
00276 
00299     PBoolean UseGatekeeper(
00300       const PString & address = PString::Empty(),     
00301       const PString & identifier = PString::Empty(),  
00302       const PString & localAddress = PString::Empty() 
00303     );
00304 
00315     PBoolean SetGatekeeper(
00316       const PString & address,          
00317       H323Transport * transport = NULL  
00318     );
00319 
00334     PBoolean SetGatekeeperZone(
00335       const PString & address,          
00336       const PString & identifier,       
00337       H323Transport * transport = NULL  
00338     );
00339 
00349     PBoolean LocateGatekeeper(
00350       const PString & identifier,       
00351       H323Transport * transport = NULL  
00352     );
00353 
00362     PBoolean DiscoverGatekeeper(
00363       H323Transport * transport = NULL  
00364     );
00365 
00373     virtual H323Gatekeeper * CreateGatekeeper(
00374       H323Transport * transport  
00375     );
00376 
00379     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00380 
00383     PBoolean IsRegisteredWithGatekeeper() const;
00384 
00390     PBoolean RemoveGatekeeper(
00391       int reason = -1    
00392     );
00393 
00396     virtual void SetGatekeeperPassword(
00397       const PString & password,
00398       const PString & username = PString::Empty()
00399     );
00400 
00403     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00404 
00407     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00408 
00411     virtual H235Authenticators CreateAuthenticators();
00412 
00415     virtual void  OnGatekeeperConfirm();
00416 
00419     virtual void  OnGatekeeperReject();
00420 
00423     virtual void OnRegistrationConfirm();
00424 
00427     virtual void  OnRegistrationReject();
00429 
00434     virtual PBoolean NewIncomingConnection(
00435       OpalTransport * transport  
00436     );
00437 
00440     virtual H323Connection * CreateConnection(
00441       OpalCall & call,                         
00442       const PString & token,                   
00443       void * userData,                         
00444       OpalTransport & transport,               
00445       const PString & alias,                   
00446       const H323TransportAddress & address,    
00447       H323SignalPDU * setupPDU,                
00448       unsigned options = 0,
00449       OpalConnection::StringOptions * stringOptions = NULL 
00450     );
00451 
00467     virtual PBoolean SetupTransfer(
00468       const PString & token,        
00469       const PString & callIdentity, 
00470       const PString & remoteParty,  
00471       void * userData = NULL        
00472     );
00473 
00479     void TransferCall(
00480       const PString & token,        
00481       const PString & remoteParty,  
00482       const PString & callIdentity = PString::Empty()
00484     );
00485 
00492     void ConsultationTransfer(
00493       const PString & primaryCallToken,   
00494       const PString & secondaryCallToken  
00495     );
00496 
00500     PBoolean IntrudeCall(
00501       const PString & remoteParty,  
00502       unsigned capabilityLevel,     
00503       void * userData = NULL        
00504     );
00505 
00512     PBoolean ParsePartyName(
00513       const PString & party,          
00514       PString & alias,                
00515       H323TransportAddress & address, 
00516       OpalConnection::StringOptions * stringOptions = NULL 
00517     );
00518 
00529     PSafePtr<H323Connection> FindConnectionWithLock(
00530       const PString & token,     
00531       PSafetyMode mode = PSafeReadWrite
00532     );
00533 
00541     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00542                                    H323SignalPDU & setupPDU);
00543 
00555     virtual PBoolean OnSendCallProceeding(
00556       H323Connection & connection,
00557       H323SignalPDU & callProceedingPDU
00558     );
00559 
00571     virtual PBoolean OnSendConnect(
00572       H323Connection & connection,
00573       H323SignalPDU & connectPDU
00574     );
00575     
00587     virtual PBoolean OnIncomingCall(
00588       H323Connection & connection,    
00589       const H323SignalPDU & setupPDU,   
00590       H323SignalPDU & alertingPDU       
00591     );
00592 
00599     virtual PBoolean OnOutgoingCall(
00600       H323Connection & conn, 
00601       const H323SignalPDU & connectPDU
00602     );
00603 
00608     virtual PBoolean OnCallTransferInitiate(
00609       H323Connection & connection,    
00610       const PString & remoteParty     
00611     );
00612 
00617     virtual PBoolean OnCallTransferIdentify(
00618       H323Connection & connection    
00619     );
00620 
00625     virtual void OnSendARQ(
00626       H323Connection & conn,
00627       H225_AdmissionRequest & arq
00628     );
00629 
00636     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00637       H323Connection & connection,    
00638       const PString & callerName,       
00639       const H323SignalPDU & setupPDU,   
00640       H323SignalPDU & connectPDU,       
00641       H323SignalPDU & progressPDU        
00642     );
00643     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00644        OpalConnection & connection,
00645        const PString & caller
00646     );
00647 
00658     virtual PBoolean OnAlerting(
00659       H323Connection & connection,    
00660       const H323SignalPDU & alertingPDU,  
00661       const PString & user                
00662     );
00663 
00668     virtual PBoolean OnSendAlerting(
00669       H323Connection & connection,  
00670       H323SignalPDU & alerting,     
00671       const PString & calleeName,   
00672       PBoolean withMedia                
00673     );
00674 
00678     virtual PBoolean OnSentAlerting(
00679       H323Connection & connection
00680     );
00681 
00690     virtual PBoolean OnConnectionForwarded(
00691       H323Connection & connection,    
00692       const PString & forwardParty,   
00693       const H323SignalPDU & pdu       
00694     );
00695 
00704     virtual PBoolean ForwardConnection(
00705       H323Connection & connection,    
00706       const PString & forwardParty,   
00707       const H323SignalPDU & pdu       
00708     );
00709 
00716     virtual void OnConnectionEstablished(
00717       H323Connection & connection,    
00718       const PString & token           
00719     );
00720 
00723     virtual PBoolean IsConnectionEstablished(
00724       const PString & token   
00725     );
00727 
00728 
00735     virtual PBoolean OnStartLogicalChannel(
00736       H323Connection & connection,    
00737       H323Channel & channel           
00738     );
00739 
00744     virtual void OnClosedLogicalChannel(
00745       H323Connection & connection,    
00746       const H323Channel & channel     
00747     );
00748 
00756     virtual void OnRTPStatistics(
00757       const H323Connection & connection,  
00758       const RTP_Session & session         
00759     ) const;
00760 
00766     virtual void OnGatekeeperNATDetect(
00767       PIPSocket::Address publicAddr,         
00768       PString & gkIdentifier,                
00769       H323TransportAddress & gkRouteAddress  
00770     );
00772 
00782     virtual void OnHTTPServiceControl(
00783       unsigned operation,  
00784       unsigned sessionId,  
00785       const PString & url  
00786     );
00787 
00797     virtual void OnCallCreditServiceControl(
00798       const PString & amount,  
00799       PBoolean mode          
00800     );
00801 
00805     virtual void OnServiceControlSession(
00806       unsigned type,
00807       unsigned sessionid,
00808       const H323ServiceControlSession & session,
00809       H323Connection * connection
00810     );
00811 
00814     virtual H323ServiceControlSession * CreateServiceControlSession(
00815       const H225_ServiceControlDescriptor & contents
00816     );
00818 
00826     virtual PBoolean OnConferenceInvite(
00827       const H323SignalPDU & setupPDU
00828     );
00829 
00835     virtual PBoolean OnCallIndependentSupplementaryService(
00836       const H323SignalPDU & setupPDU
00837     );
00838 
00844     virtual PBoolean OnNegotiateConferenceCapabilities(
00845       const H323SignalPDU & setupPDU
00846     );
00848 
00853     virtual void SetDefaultLocalPartyName(
00854       const PString & name  
00855     );
00856 
00865     virtual void SetLocalUserName(
00866       const PString & name  
00867     );
00868 
00873     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00874 
00881     PBoolean AddAliasName(
00882       const PString & name  
00883     );
00884 
00888     PBoolean RemoveAliasName(
00889       const PString & name  
00890     );
00891 
00896     const PStringList & GetAliasNames() const { return localAliasNames; }
00897 
00900     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00901 
00905     PBoolean AddAliasNamePattern(
00906       const PString & pattern  
00907     );
00908 
00911     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00912 
00915     void SetDefaultILSServer(
00916       const PString & server
00917     ) { manager.SetDefaultILSServer(server); }
00918 
00921     PBoolean IsFastStartDisabled() const
00922       { return disableFastStart; }
00923 
00926     void DisableFastStart(
00927       PBoolean mode 
00928     ) { disableFastStart = mode; } 
00929 
00932     PBoolean IsH245TunnelingDisabled() const
00933       { return disableH245Tunneling; }
00934 
00937     void DisableH245Tunneling(
00938       PBoolean mode 
00939     ) { disableH245Tunneling = mode; } 
00940 
00943     PBoolean IsH245inSetupDisabled() const
00944       { return disableH245inSetup; }
00945 
00948     void DisableH245inSetup(
00949       PBoolean mode 
00950     ) { disableH245inSetup = mode; } 
00951 
00955     PBoolean IsH245Disabled() const
00956     { return m_bH245Disabled; }
00957 
00961     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00962     
00965     PBoolean CanDisplayAmountString() const
00966       { return canDisplayAmountString; }
00967 
00970     void SetCanDisplayAmountString(
00971       PBoolean mode 
00972     ) { canDisplayAmountString = mode; } 
00973 
00976     PBoolean CanEnforceDurationLimit() const
00977       { return canEnforceDurationLimit; }
00978 
00981     void SetCanEnforceDurationLimit(
00982       PBoolean mode 
00983     ) { canEnforceDurationLimit = mode; } 
00984 
00985 #if OPAL_H450
00986 
00988     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00989 
00992     void SetCallIntrusionProtectionLevel(
00993       unsigned level  
00994     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00995 #endif
00996 
00999     virtual void OnReceivedInitiateReturnError();
01000 
01003     PBoolean CanAutoCallForward() const { return autoCallForward; }
01004 
01007     const H323Capabilities & GetCapabilities() const;
01008 
01011     enum TerminalTypes {
01012       e_TerminalOnly = 50,
01013       e_TerminalAndMC = 70,
01014       e_GatewayOnly = 60,
01015       e_GatewayAndMC = 80,
01016       e_GatewayAndMCWithDataMP = 90,
01017       e_GatewayAndMCWithAudioMP = 100,
01018       e_GatewayAndMCWithAVMP = 110,
01019       e_GatekeeperOnly = 120,
01020       e_GatekeeperWithDataMP = 130,
01021       e_GatekeeperWithAudioMP = 140,
01022       e_GatekeeperWithAVMP = 150,
01023       e_MCUOnly = 160,
01024       e_MCUWithDataMP = 170,
01025       e_MCUWithAudioMP = 180,
01026       e_MCUWithAVMP = 190
01027     };
01028 
01031     void SetTerminalType(TerminalTypes type) { terminalType = type; }
01032 
01035     TerminalTypes GetTerminalType() const { return terminalType; }
01036 
01039     PBoolean IsTerminal() const;
01040 
01043     PBoolean IsGateway() const;
01044 
01047     PBoolean IsGatekeeper() const;
01048 
01051     PBoolean IsMCU() const;
01052 
01056     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01057 
01061     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01062 
01065     void SetAudioJitterDelay(
01066       unsigned minDelay,   
01067       unsigned maxDelay    
01068     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01069 
01072     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01073 
01076     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01077 
01078 #if OPAL_H239
01079 
01081     bool GetDefaultH239Control() const { return m_defaultH239Control; }
01082 
01085     void SetDefaultH239Control(
01086       bool on   
01087     ) { m_defaultH239Control = on; }
01088 #endif
01089 
01092     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01093 
01096     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01097         
01101     virtual void LoadBaseFeatureSet();
01102 
01107     virtual bool OnFeatureInstance(
01108       int instType,
01109       const PString & identifer
01110     );
01111 
01112 #if OPAL_H460
01113 
01115     bool FeatureSetDisabled() const { return disableH460; }
01116 
01119     void FeatureSetDisable() { disableH460 = true; }
01120 
01124     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01125 #endif
01126 
01129     virtual PBoolean IsLocalAddress(
01130       const PIPSocket::Address & remoteAddress
01131     ) const { return manager.IsLocalAddress(remoteAddress); }
01132 
01135     virtual void TranslateTCPAddress(
01136       PIPSocket::Address & localAddr,
01137       const PIPSocket::Address & remoteAddr
01138     );
01139 
01142     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01143 
01146     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01147 
01150     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01151 
01154     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01155 
01158     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01159 
01162     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01163 
01166     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01167 
01170     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01171 
01174     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01175 
01178     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01179 
01182     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01183 
01186     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01187 
01190     BYTE P_DEPRECATED GetRtpIpTypeofService() const { return manager.GetMediaTypeOfService(); }
01191 
01194     void P_DEPRECATED SetRtpIpTypeofService(unsigned tos) { manager.SetMediaTypeOfService(tos); }
01195 
01198     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01199 
01202     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01203 
01206     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01207 
01210     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01211 
01214     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01215 
01218     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01219 
01222     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01223 
01226     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01227 
01230     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01231 
01234     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01235 
01238     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01239 
01242     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01243 
01246     PBoolean SetNoMediaTimeout(
01247       const PTimeInterval & newInterval  
01248     ) { return manager.SetNoMediaTimeout(newInterval); }
01249 
01252     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01253 
01256     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01257 
01260     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01261 
01264     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01265 
01269     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01270 
01274     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01275 
01278     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01279 
01282     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01283 
01286     PBoolean GetSendGRQ() const
01287     { return sendGRQ; }
01288 
01291     void SetSendGRQ(PBoolean v) 
01292     { sendGRQ = v; }
01293 
01296     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01297 
01300     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01301 
01304     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01305 
01308     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01309 
01311     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01312     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01313     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01314     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01315     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01316     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01317 
01320     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01321 
01324 #if OPAL_H450
01325     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01326 #endif
01327 
01328     PString GetDefaultTransport() const;
01330 
01331   protected:
01332     bool InternalCreateGatekeeper(H323Transport * transport);
01333     H323Connection * InternalMakeCall(
01334       OpalCall & call,
01335       const PString & existingToken,           
01336       const PString & callIdentity,            
01337       unsigned capabilityLevel,                
01338       const PString & remoteParty,             
01339       void * userData,                         
01340       unsigned int options = 0,                
01341       OpalConnection::StringOptions * stringOptions = NULL 
01342     );
01343 
01344     // Configuration variables, commonly changed
01345     PStringList     localAliasNames;
01346     PStringList     localAliasPatterns;
01347     PBoolean        autoCallForward;
01348     PBoolean        disableFastStart;
01349     PBoolean        disableH245Tunneling;
01350     PBoolean        disableH245inSetup;
01351     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01352     PBoolean        canDisplayAmountString;
01353     PBoolean        canEnforceDurationLimit;
01354 #if OPAL_H450
01355     unsigned        callIntrusionProtectionLevel;
01356 #endif
01357 
01358     TerminalTypes   terminalType;
01359 
01360 #if OPAL_H239
01361     bool            m_defaultH239Control;
01362 #endif
01363 
01364     PBoolean        clearCallOnRoundTripFail;
01365 
01366     // Some more configuration variables, rarely changed.
01367     PTimeInterval signallingChannelCallTimeout;
01368     PTimeInterval controlChannelStartTimeout;
01369     PTimeInterval endSessionTimeout;
01370     PTimeInterval masterSlaveDeterminationTimeout;
01371     unsigned      masterSlaveDeterminationRetries;
01372     PTimeInterval capabilityExchangeTimeout;
01373     PTimeInterval logicalChannelTimeout;
01374     PTimeInterval requestModeTimeout;
01375     PTimeInterval roundTripDelayTimeout;
01376     PTimeInterval roundTripDelayRate;
01377     PTimeInterval gatekeeperRequestTimeout;
01378     unsigned      gatekeeperRequestRetries;
01379     PTimeInterval rasRequestTimeout;
01380     unsigned      rasRequestRetries;
01381     PTimeInterval registrationTimeToLive;
01382 
01383     PString       gkAccessTokenOID;
01384     PBoolean          sendGRQ;
01385 
01386     /* Protect against absence of a response to the ctIdentify reqest
01387        (Transferring Endpoint - Call Transfer with a secondary Call) */
01388     PTimeInterval callTransferT1;
01389     /* Protect against failure of completion of the call transfer operation
01390        involving a secondary Call (Transferred-to Endpoint) */
01391     PTimeInterval callTransferT2;
01392     /* Protect against failure of the Transferred Endpoint not responding
01393        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01394     PTimeInterval callTransferT3;
01395     /* May optionally operate - protects against absence of a response to the
01396        ctSetup request (Transferred Endpoint) */
01397     PTimeInterval callTransferT4;
01398 
01400     PTimeInterval callIntrusionT1;
01401     PTimeInterval callIntrusionT2;
01402     PTimeInterval callIntrusionT3;
01403     PTimeInterval callIntrusionT4;
01404     PTimeInterval callIntrusionT5;
01405     PTimeInterval callIntrusionT6;
01406 
01407     // Dynamic variables
01408     mutable H323Capabilities capabilities;
01409     H323Gatekeeper *     gatekeeper;
01410     PString              gatekeeperUsername;
01411     PString              gatekeeperPassword;
01412     H323CallIdentityDict secondaryConnectionsActive;
01413 
01414 #if OPAL_H450
01415     mutable PAtomicInteger nextH450CallIdentity;
01417 #endif
01418 
01419 #if OPAL_H460
01420     bool            disableH460;
01421     H460_FeatureSet features;
01422 #endif
01423 
01424   private:
01425     P_REMOVE_VIRTUAL_VOID(OnConnectionCleared(H323Connection &, const PString &));
01426 };
01427 
01428 #endif // OPAL_H323
01429 
01430 #endif // OPAL_H323_H323EP_H
01431 
01432 

Generated on 14 Aug 2013 for OPAL by  doxygen 1.4.7