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: 21004 $
00030  * $Author: rjongbloed $
00031  * $Date: 2008-09-16 07:08:56 +0000 (Tue, 16 Sep 2008) $
00032  */
00033 
00034 #ifndef __OPAL_H323EP_H
00035 #define __OPAL_H323EP_H
00036 
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040 
00041 #include <opal/buildopts.h>
00042 
00043 #include <opal/rtpep.h>
00044 #include <opal/manager.h>
00045 #include <opal/call.h>
00046 #include <opal/transports.h>
00047 #include <h323/h323con.h>
00048 #include <h323/h323caps.h>
00049 #include <h323/h235auth.h>
00050 
00051 #if OPAL_H460
00052 #include <h460/h4601.h>
00053 #endif
00054 
00055 
00056 class H225_EndpointType;
00057 class H225_VendorIdentifier;
00058 class H225_H221NonStandard;
00059 class H225_ServiceControlDescriptor;
00060 class H225_FeatureSet;
00061 
00062 class H235SecurityInfo;
00063 
00064 class H323Gatekeeper;
00065 class H323SignalPDU;
00066 class H323ServiceControlSession;
00067 
00069 
00082 class H323EndPoint : public OpalRTPEndPoint
00083 {
00084   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00085 
00086   public:
00087     enum {
00088       DefaultTcpSignalPort = 1720
00089     };
00090 
00095     H323EndPoint(
00096       OpalManager & manager
00097     );
00098 
00101     ~H323EndPoint();
00103 
00110     virtual void ShutDown();
00111 
00141     virtual PBoolean MakeConnection(
00142       OpalCall & call,                  
00143       const PString & party,            
00144       void * userData  = NULL,          
00145       unsigned int options = NULL,      
00146       OpalConnection::StringOptions * stringOptions = NULL
00147     );
00149 
00154     virtual void SetEndpointTypeInfo(
00155       H225_EndpointType & info
00156     ) const;
00157 
00160     virtual void SetVendorIdentifierInfo(
00161       H225_VendorIdentifier & info
00162     ) const;
00163 
00166     virtual void SetH221NonStandardInfo(
00167       H225_H221NonStandard & info
00168     ) const;
00170 
00171 
00182     void AddCapability(
00183       H323Capability * capability   
00184     );
00185 
00206     PINDEX SetCapability(
00207       PINDEX descriptorNum, 
00208       PINDEX simultaneous,  
00209       H323Capability * cap  
00210     );
00211 
00216     PINDEX AddAllCapabilities(
00217       PINDEX descriptorNum, 
00218       PINDEX simultaneous,  
00219       const PString & name  
00220     );
00221 
00224     void AddAllUserInputCapabilities(
00225       PINDEX descriptorNum, 
00226       PINDEX simultaneous   
00227     );
00228 
00231     void RemoveCapabilities(
00232       const PStringArray & codecNames
00233     );
00234 
00237     void ReorderCapabilities(
00238       const PStringArray & preferenceOrder
00239     );
00240 
00243     H323Capability * FindCapability(
00244       const H245_Capability & cap  
00245     ) const;
00246 
00249     H323Capability * FindCapability(
00250       const H245_DataType & dataType  
00251     ) const;
00252 
00255     H323Capability * FindCapability(
00256       H323Capability::MainTypes mainType,   
00257       unsigned subType                      
00258     ) const;
00260 
00280     PBoolean UseGatekeeper(
00281       const PString & address = PString::Empty(),     
00282       const PString & identifier = PString::Empty(),  
00283       const PString & localAddress = PString::Empty() 
00284     );
00285 
00296     PBoolean SetGatekeeper(
00297       const PString & address,          
00298       H323Transport * transport = NULL  
00299     );
00300 
00315     PBoolean SetGatekeeperZone(
00316       const PString & address,          
00317       const PString & identifier,       
00318       H323Transport * transport = NULL  
00319     );
00320 
00330     PBoolean LocateGatekeeper(
00331       const PString & identifier,       
00332       H323Transport * transport = NULL  
00333     );
00334 
00343     PBoolean DiscoverGatekeeper(
00344       H323Transport * transport = NULL  
00345     );
00346 
00354     virtual H323Gatekeeper * CreateGatekeeper(
00355       H323Transport * transport  
00356     );
00357 
00360     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00361 
00364     PBoolean IsRegisteredWithGatekeeper() const;
00365 
00371     PBoolean RemoveGatekeeper(
00372       int reason = -1    
00373     );
00374 
00377     virtual void SetGatekeeperPassword(
00378       const PString & password,
00379       const PString & username = PString::Empty()
00380     );
00381 
00384     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00385 
00388     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00389 
00392     virtual H235Authenticators CreateAuthenticators();
00393 
00396     virtual void  OnGatekeeperConfirm();
00397 
00400     virtual void  OnGatekeeperReject();
00401 
00404     virtual void OnRegistrationConfirm();
00405 
00408     virtual void  OnRegistrationReject();
00410 
00415     virtual PBoolean NewIncomingConnection(
00416       OpalTransport * transport  
00417     );
00418 
00421     virtual H323Connection * CreateConnection(
00422       OpalCall & call,                         
00423       const PString & token,                   
00424       void * userData,                         
00425       OpalTransport & transport,               
00426       const PString & alias,                   
00427       const H323TransportAddress & address,    
00428       H323SignalPDU * setupPDU,                
00429       unsigned options = 0,
00430       OpalConnection::StringOptions * stringOptions = NULL 
00431     );
00432 
00448     virtual PBoolean SetupTransfer(
00449       const PString & token,        
00450       const PString & callIdentity, 
00451       const PString & remoteParty,  
00452       void * userData = NULL        
00453     );
00454 
00460     void TransferCall(
00461       const PString & token,        
00462       const PString & remoteParty,  
00463       const PString & callIdentity = PString::Empty()
00465     );
00466 
00473     void ConsultationTransfer(
00474       const PString & primaryCallToken,   
00475       const PString & secondaryCallToken  
00476     );
00477 
00481     void HoldCall(
00482       const PString & token,        
00483       PBoolean localHold   
00484     );
00485 
00489     PBoolean IntrudeCall(
00490       const PString & remoteParty,  
00491       unsigned capabilityLevel,     
00492       void * userData = NULL        
00493     );
00494 
00501     PBoolean ParsePartyName(
00502       const PString & party,          
00503       PString & alias,                
00504       H323TransportAddress & address  
00505     );
00506 
00517     PSafePtr<H323Connection> FindConnectionWithLock(
00518       const PString & token,     
00519       PSafetyMode mode = PSafeReadWrite
00520     );
00521 
00529     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00530                                    H323SignalPDU & setupPDU);
00531 
00543     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00544                                       H323SignalPDU & callProceedingPDU
00545                                      );
00546     
00558     virtual PBoolean OnSendConnect(H323Connection & connection,
00559                                H323SignalPDU & connectPDU
00560                               );
00561     
00573     virtual PBoolean OnIncomingCall(
00574       H323Connection & connection,    
00575       const H323SignalPDU & setupPDU,   
00576       H323SignalPDU & alertingPDU       
00577     );
00578 
00585     virtual PBoolean OnOutgoingCall(
00586         H323Connection & conn, 
00587         const H323SignalPDU & connectPDU
00588     );
00589 
00594     virtual PBoolean OnCallTransferInitiate(
00595       H323Connection & connection,    
00596       const PString & remoteParty     
00597     );
00598 
00603     virtual PBoolean OnCallTransferIdentify(
00604       H323Connection & connection    
00605     );
00606 
00611     virtual void OnSendARQ(
00612       H323Connection & conn,
00613       H225_AdmissionRequest & arq
00614     );
00615 
00622     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00623       H323Connection & connection,    
00624       const PString & callerName,       
00625       const H323SignalPDU & setupPDU,   
00626       H323SignalPDU & connectPDU,       
00627       H323SignalPDU & progressPDU        
00628     );
00629     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00630        OpalConnection & connection,
00631        const PString & caller
00632     );
00633 
00644     virtual PBoolean OnAlerting(
00645       H323Connection & connection,    
00646       const H323SignalPDU & alertingPDU,  
00647       const PString & user                
00648     );
00649 
00655     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00656                                 H323SignalPDU & alerting,     
00657                                 const PString & calleeName,   
00658                                 PBoolean withMedia                
00659                                );
00660         
00665     virtual PBoolean OnSentAlerting(H323Connection & connection);
00666     
00675     virtual PBoolean OnConnectionForwarded(
00676       H323Connection & connection,    
00677       const PString & forwardParty,   
00678       const H323SignalPDU & pdu       
00679     );
00680 
00689     virtual PBoolean ForwardConnection(
00690       H323Connection & connection,    
00691       const PString & forwardParty,   
00692       const H323SignalPDU & pdu       
00693     );
00694 
00701     virtual void OnConnectionEstablished(
00702       H323Connection & connection,    
00703       const PString & token           
00704     );
00705 
00708     virtual PBoolean IsConnectionEstablished(
00709       const PString & token   
00710     );
00711 
00718     virtual void OnConnectionCleared(
00719       H323Connection & connection,    
00720       const PString & token           
00721     );
00723 
00724 
00731     virtual PBoolean OnStartLogicalChannel(
00732       H323Connection & connection,    
00733       H323Channel & channel           
00734     );
00735 
00740     virtual void OnClosedLogicalChannel(
00741       H323Connection & connection,    
00742       const H323Channel & channel     
00743     );
00744 
00752     virtual void OnRTPStatistics(
00753       const H323Connection & connection,  
00754       const RTP_Session & session         
00755     ) const;
00756 
00762     virtual void OnGatekeeperNATDetect(
00763       PIPSocket::Address publicAddr,         
00764       PString & gkIdentifier,                
00765       H323TransportAddress & gkRouteAddress  
00766     );
00768 
00778     virtual void OnHTTPServiceControl(
00779       unsigned operation,  
00780       unsigned sessionId,  
00781       const PString & url  
00782     );
00783 
00793     virtual void OnCallCreditServiceControl(
00794       const PString & amount,  
00795       PBoolean mode          
00796     );
00797 
00801     virtual void OnServiceControlSession(
00802       unsigned type,
00803       unsigned sessionid,
00804       const H323ServiceControlSession & session,
00805       H323Connection * connection
00806     );
00807 
00810     virtual H323ServiceControlSession * CreateServiceControlSession(
00811       const H225_ServiceControlDescriptor & contents
00812     );
00814 
00822     virtual PBoolean OnConferenceInvite(
00823       const H323SignalPDU & setupPDU
00824     );
00825 
00831     virtual PBoolean OnCallIndependentSupplementaryService(
00832       const H323SignalPDU & setupPDU
00833     );
00834 
00840     virtual PBoolean OnNegotiateConferenceCapabilities(
00841       const H323SignalPDU & setupPDU
00842     );
00844 
00855     virtual void SetLocalUserName(
00856       const PString & name  
00857     );
00858 
00863     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00864 
00871     PBoolean AddAliasName(
00872       const PString & name  
00873     );
00874 
00878     PBoolean RemoveAliasName(
00879       const PString & name  
00880     );
00881 
00886     const PStringList & GetAliasNames() const { return localAliasNames; }
00887 
00890     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00891 
00895     PBoolean AddAliasNamePattern(
00896       const PString & pattern  
00897     );
00898 
00901     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00902 
00905     void SetDefaultILSServer(
00906       const PString & server
00907     ) { manager.SetDefaultILSServer(server); }
00908 
00911     PBoolean IsFastStartDisabled() const
00912       { return disableFastStart; }
00913 
00916     void DisableFastStart(
00917       PBoolean mode 
00918     ) { disableFastStart = mode; } 
00919 
00922     PBoolean IsH245TunnelingDisabled() const
00923       { return disableH245Tunneling; }
00924 
00927     void DisableH245Tunneling(
00928       PBoolean mode 
00929     ) { disableH245Tunneling = mode; } 
00930 
00933     PBoolean IsH245inSetupDisabled() const
00934       { return disableH245inSetup; }
00935 
00938     void DisableH245inSetup(
00939       PBoolean mode 
00940     ) { disableH245inSetup = mode; } 
00941 
00945     PBoolean IsH245Disabled() const
00946     { return m_bH245Disabled; }
00947 
00951     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00952     
00955     PBoolean CanDisplayAmountString() const
00956       { return canDisplayAmountString; }
00957 
00960     void SetCanDisplayAmountString(
00961       PBoolean mode 
00962     ) { canDisplayAmountString = mode; } 
00963 
00966     PBoolean CanEnforceDurationLimit() const
00967       { return canEnforceDurationLimit; }
00968 
00971     void SetCanEnforceDurationLimit(
00972       PBoolean mode 
00973     ) { canEnforceDurationLimit = mode; } 
00974 
00975 #if OPAL_H450
00976 
00978     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00979 
00982     void SetCallIntrusionProtectionLevel(
00983       unsigned level  
00984     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00985 #endif
00986 
00989     virtual void OnReceivedInitiateReturnError();
00990 
00991 #if OPAL_VIDEO
00992 
00994     PBoolean CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
00995 
00998     PBoolean CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
00999 #endif
01000 
01001 #if OPAL_T38_CAPABILITY
01002 
01004     PBoolean CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01005 
01008     PBoolean CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01009 #endif
01010 
01013     PBoolean CanAutoCallForward() const { return autoCallForward; }
01014 
01017     const H323Capabilities & GetCapabilities() const;
01018 
01021     enum TerminalTypes {
01022       e_TerminalOnly = 50,
01023       e_TerminalAndMC = 70,
01024       e_GatewayOnly = 60,
01025       e_GatewayAndMC = 80,
01026       e_GatewayAndMCWithDataMP = 90,
01027       e_GatewayAndMCWithAudioMP = 100,
01028       e_GatewayAndMCWithAVMP = 110,
01029       e_GatekeeperOnly = 120,
01030       e_GatekeeperWithDataMP = 130,
01031       e_GatekeeperWithAudioMP = 140,
01032       e_GatekeeperWithAVMP = 150,
01033       e_MCUOnly = 160,
01034       e_MCUWithDataMP = 170,
01035       e_MCUWithAudioMP = 180,
01036       e_MCUWithAVMP = 190
01037     };
01038 
01041     TerminalTypes GetTerminalType() const { return terminalType; }
01042 
01045     PBoolean IsTerminal() const;
01046 
01049     PBoolean IsGateway() const;
01050 
01053     PBoolean IsGatekeeper() const;
01054 
01057     PBoolean IsMCU() const;
01058 
01062     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01063 
01067     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01068 
01071     void SetAudioJitterDelay(
01072       unsigned minDelay,   
01073       unsigned maxDelay    
01074     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01075 
01078     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01079 
01082     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01083 
01086     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01087 
01090     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01091         
01095     virtual void LoadBaseFeatureSet();
01096 
01101     virtual bool OnFeatureInstance(
01102       int instType,
01103       const PString & identifer
01104     );
01105 
01106 #if OPAL_H460
01107 
01109     bool FeatureSetDisabled() const { return disableH460; }
01110 
01113     void FeatureSetDisable() { disableH460 = true; }
01114 
01118     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01119 #endif
01120 
01123     virtual PBoolean IsLocalAddress(
01124       const PIPSocket::Address & remoteAddress
01125     ) const { return manager.IsLocalAddress(remoteAddress); }
01126 
01129     virtual void TranslateTCPAddress(
01130       PIPSocket::Address & localAddr,
01131       const PIPSocket::Address & remoteAddr
01132     );
01133 
01136     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01137 
01140     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01141 
01144     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01145 
01148     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01149 
01152     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01153 
01156     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01157 
01160     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01161 
01164     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01165 
01168     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01169 
01172     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01173 
01176     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01177 
01180     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01181 
01184     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01185 
01188     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01189 
01192     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01193 
01196     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01197 
01200     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01201 
01204     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01205 
01208     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01209 
01212     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01213 
01216     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01217 
01220     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01221 
01224     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01225 
01228     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01229 
01232     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01233 
01236     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01237 
01240     PBoolean SetNoMediaTimeout(
01241       const PTimeInterval & newInterval  
01242     ) { return manager.SetNoMediaTimeout(newInterval); }
01243 
01246     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01247 
01250     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01251 
01254     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01255 
01258     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01259 
01263     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01264 
01268     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01269 
01272     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01273 
01276     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01277 
01280     PBoolean GetSendGRQ() const
01281     { return sendGRQ; }
01282 
01285     void SetSendGRQ(PBoolean v) 
01286     { sendGRQ = v; }
01287 
01290     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01291 
01294     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01295 
01298     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01299 
01302     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01303 
01305     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01306     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01307     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01308     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01309     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01310     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01311 
01314     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01315 
01318 #if OPAL_H450
01319     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01320 #endif
01321 
01322     PString GetDefaultTransport() const;
01324 
01325   protected:
01326     bool InternalCreateGatekeeper(H323Transport * transport);
01327     PBoolean InternalMakeCall(
01328       OpalCall & call,
01329       const PString & existingToken,           
01330       const PString & callIdentity,            
01331       unsigned capabilityLevel,                
01332       const PString & remoteParty,             
01333       void * userData,                         
01334       unsigned int options = 0,                
01335       OpalConnection::StringOptions * stringOptions = NULL 
01336     );
01337 
01338     // Configuration variables, commonly changed
01339     PStringList     localAliasNames;
01340     PStringList     localAliasPatterns;
01341     PBoolean        autoStartReceiveFax;
01342     PBoolean        autoStartTransmitFax;
01343     PBoolean        isH224Enabled;
01344     PBoolean        autoCallForward;
01345     PBoolean        disableFastStart;
01346     PBoolean        disableH245Tunneling;
01347     PBoolean        disableH245inSetup;
01348     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01349     PBoolean        canDisplayAmountString;
01350     PBoolean        canEnforceDurationLimit;
01351 #if OPAL_H450
01352     unsigned    callIntrusionProtectionLevel;
01353 #endif
01354 
01355     TerminalTypes terminalType;
01356 
01357     PBoolean          clearCallOnRoundTripFail;
01358 
01359     // Some more configuration variables, rarely changed.
01360     PTimeInterval signallingChannelCallTimeout;
01361     PTimeInterval controlChannelStartTimeout;
01362     PTimeInterval endSessionTimeout;
01363     PTimeInterval masterSlaveDeterminationTimeout;
01364     unsigned      masterSlaveDeterminationRetries;
01365     PTimeInterval capabilityExchangeTimeout;
01366     PTimeInterval logicalChannelTimeout;
01367     PTimeInterval requestModeTimeout;
01368     PTimeInterval roundTripDelayTimeout;
01369     PTimeInterval roundTripDelayRate;
01370     PTimeInterval gatekeeperRequestTimeout;
01371     unsigned      gatekeeperRequestRetries;
01372     PTimeInterval rasRequestTimeout;
01373     unsigned      rasRequestRetries;
01374     PTimeInterval registrationTimeToLive;
01375 
01376     PString       gkAccessTokenOID;
01377     PBoolean          sendGRQ;
01378 
01379     /* Protect against absence of a response to the ctIdentify reqest
01380        (Transferring Endpoint - Call Transfer with a secondary Call) */
01381     PTimeInterval callTransferT1;
01382     /* Protect against failure of completion of the call transfer operation
01383        involving a secondary Call (Transferred-to Endpoint) */
01384     PTimeInterval callTransferT2;
01385     /* Protect against failure of the Transferred Endpoint not responding
01386        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01387     PTimeInterval callTransferT3;
01388     /* May optionally operate - protects against absence of a response to the
01389        ctSetup request (Transferred Endpoint) */
01390     PTimeInterval callTransferT4;
01391 
01393     PTimeInterval callIntrusionT1;
01394     PTimeInterval callIntrusionT2;
01395     PTimeInterval callIntrusionT3;
01396     PTimeInterval callIntrusionT4;
01397     PTimeInterval callIntrusionT5;
01398     PTimeInterval callIntrusionT6;
01399 
01400     // Dynamic variables
01401     mutable H323Capabilities capabilities;
01402     H323Gatekeeper *     gatekeeper;
01403     PString              gatekeeperUsername;
01404     PString              gatekeeperPassword;
01405     H323CallIdentityDict secondaryConnectionsActive;
01406 
01407 #if OPAL_H450
01408     mutable PAtomicInteger nextH450CallIdentity;
01410 #endif
01411 
01412 #if OPAL_H460
01413     bool            disableH460;
01414     H460_FeatureSet features;
01415 #endif
01416 
01417 };
01418 
01419 #endif // __OPAL_H323EP_H
01420 
01421 

Generated on Mon Sep 22 12:24:44 2008 for OPAL by  doxygen 1.5.1