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: 20864 $
00030  * $Author: rjongbloed $
00031  * $Date: 2008-09-05 10:22:55 +0000 (Fri, 05 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 
00042 #include <opal/rtpep.h>
00043 #include <opal/manager.h>
00044 #include <opal/call.h>
00045 #include <opal/transports.h>
00046 #include <h323/h323con.h>
00047 #include <h323/h323caps.h>
00048 #include <h323/h235auth.h>
00049 
00050 #ifdef OPAL_H460
00051 #include <h460/h4601.h>
00052 #endif
00053 
00054 
00055 class H225_EndpointType;
00056 class H225_VendorIdentifier;
00057 class H225_H221NonStandard;
00058 class H225_ServiceControlDescriptor;
00059 class H225_FeatureSet;
00060 
00061 class H235SecurityInfo;
00062 
00063 class H323Gatekeeper;
00064 class H323SignalPDU;
00065 class H323ServiceControlSession;
00066 
00068 
00081 class H323EndPoint : public OpalRTPEndPoint
00082 {
00083   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00084 
00085   public:
00086     enum {
00087       DefaultTcpSignalPort = 1720
00088     };
00089 
00094     H323EndPoint(
00095       OpalManager & manager
00096     );
00097 
00100     ~H323EndPoint();
00102 
00109     virtual void ShutDown();
00110 
00140     virtual PBoolean MakeConnection(
00141       OpalCall & call,                  
00142       const PString & party,            
00143       void * userData  = NULL,          
00144       unsigned int options = NULL,      
00145       OpalConnection::StringOptions * stringOptions = NULL
00146     );
00148 
00153     virtual void SetEndpointTypeInfo(
00154       H225_EndpointType & info
00155     ) const;
00156 
00159     virtual void SetVendorIdentifierInfo(
00160       H225_VendorIdentifier & info
00161     ) const;
00162 
00165     virtual void SetH221NonStandardInfo(
00166       H225_H221NonStandard & info
00167     ) const;
00169 
00170 
00181     void AddCapability(
00182       H323Capability * capability   
00183     );
00184 
00205     PINDEX SetCapability(
00206       PINDEX descriptorNum, 
00207       PINDEX simultaneous,  
00208       H323Capability * cap  
00209     );
00210 
00215     PINDEX AddAllCapabilities(
00216       PINDEX descriptorNum, 
00217       PINDEX simultaneous,  
00218       const PString & name  
00219     );
00220 
00223     void AddAllUserInputCapabilities(
00224       PINDEX descriptorNum, 
00225       PINDEX simultaneous   
00226     );
00227 
00230     void RemoveCapabilities(
00231       const PStringArray & codecNames
00232     );
00233 
00236     void ReorderCapabilities(
00237       const PStringArray & preferenceOrder
00238     );
00239 
00242     H323Capability * FindCapability(
00243       const H245_Capability & cap  
00244     ) const;
00245 
00248     H323Capability * FindCapability(
00249       const H245_DataType & dataType  
00250     ) const;
00251 
00254     H323Capability * FindCapability(
00255       H323Capability::MainTypes mainType,   
00256       unsigned subType                      
00257     ) const;
00259 
00279     PBoolean UseGatekeeper(
00280       const PString & address = PString::Empty(),     
00281       const PString & identifier = PString::Empty(),  
00282       const PString & localAddress = PString::Empty() 
00283     );
00284 
00295     PBoolean SetGatekeeper(
00296       const PString & address,          
00297       H323Transport * transport = NULL  
00298     );
00299 
00314     PBoolean SetGatekeeperZone(
00315       const PString & address,          
00316       const PString & identifier,       
00317       H323Transport * transport = NULL  
00318     );
00319 
00329     PBoolean LocateGatekeeper(
00330       const PString & identifier,       
00331       H323Transport * transport = NULL  
00332     );
00333 
00342     PBoolean DiscoverGatekeeper(
00343       H323Transport * transport = NULL  
00344     );
00345 
00353     virtual H323Gatekeeper * CreateGatekeeper(
00354       H323Transport * transport  
00355     );
00356 
00359     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00360 
00363     PBoolean IsRegisteredWithGatekeeper() const;
00364 
00370     PBoolean RemoveGatekeeper(
00371       int reason = -1    
00372     );
00373 
00376     virtual void SetGatekeeperPassword(
00377       const PString & password,
00378       const PString & username = PString::Empty()
00379     );
00380 
00383     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00384 
00387     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00388 
00391     virtual H235Authenticators CreateAuthenticators();
00392 
00395     virtual void  OnGatekeeperConfirm();
00396 
00399     virtual void  OnGatekeeperReject();
00400 
00403     virtual void OnRegistrationConfirm();
00404 
00407     virtual void  OnRegistrationReject();
00409 
00414     virtual PBoolean NewIncomingConnection(
00415       OpalTransport * transport  
00416     );
00417 
00420     virtual H323Connection * CreateConnection(
00421       OpalCall & call,                         
00422       const PString & token,                   
00423       void * userData,                         
00424       OpalTransport & transport,               
00425       const PString & alias,                   
00426       const H323TransportAddress & address,    
00427       H323SignalPDU * setupPDU,                
00428       unsigned options = 0,
00429       OpalConnection::StringOptions * stringOptions = NULL 
00430     );
00431 
00447     virtual PBoolean SetupTransfer(
00448       const PString & token,        
00449       const PString & callIdentity, 
00450       const PString & remoteParty,  
00451       void * userData = NULL        
00452     );
00453 
00459     void TransferCall(
00460       const PString & token,        
00461       const PString & remoteParty,  
00462       const PString & callIdentity = PString::Empty()
00464     );
00465 
00472     void ConsultationTransfer(
00473       const PString & primaryCallToken,   
00474       const PString & secondaryCallToken  
00475     );
00476 
00480     void HoldCall(
00481       const PString & token,        
00482       PBoolean localHold   
00483     );
00484 
00488     PBoolean IntrudeCall(
00489       const PString & remoteParty,  
00490       unsigned capabilityLevel,     
00491       void * userData = NULL        
00492     );
00493 
00500     PBoolean ParsePartyName(
00501       const PString & party,          
00502       PString & alias,                
00503       H323TransportAddress & address  
00504     );
00505 
00516     PSafePtr<H323Connection> FindConnectionWithLock(
00517       const PString & token,     
00518       PSafetyMode mode = PSafeReadWrite
00519     );
00520 
00528     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00529                                    H323SignalPDU & setupPDU);
00530 
00542     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00543                                       H323SignalPDU & callProceedingPDU
00544                                      );
00545     
00557     virtual PBoolean OnSendConnect(H323Connection & connection,
00558                                H323SignalPDU & connectPDU
00559                               );
00560     
00572     virtual PBoolean OnIncomingCall(
00573       H323Connection & connection,    
00574       const H323SignalPDU & setupPDU,   
00575       H323SignalPDU & alertingPDU       
00576     );
00577 
00584     virtual PBoolean OnOutgoingCall(
00585         H323Connection & conn, 
00586         const H323SignalPDU & connectPDU
00587     );
00588 
00593     virtual PBoolean OnCallTransferInitiate(
00594       H323Connection & connection,    
00595       const PString & remoteParty     
00596     );
00597 
00602     virtual PBoolean OnCallTransferIdentify(
00603       H323Connection & connection    
00604     );
00605 
00610     virtual void OnSendARQ(
00611       H323Connection & conn,
00612       H225_AdmissionRequest & arq
00613     );
00614 
00621     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00622       H323Connection & connection,    
00623       const PString & callerName,       
00624       const H323SignalPDU & setupPDU,   
00625       H323SignalPDU & connectPDU,       
00626       H323SignalPDU & progressPDU        
00627     );
00628     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00629        OpalConnection & connection,
00630        const PString & caller
00631     );
00632 
00643     virtual PBoolean OnAlerting(
00644       H323Connection & connection,    
00645       const H323SignalPDU & alertingPDU,  
00646       const PString & user                
00647     );
00648 
00654     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00655                                 H323SignalPDU & alerting,     
00656                                 const PString & calleeName,   
00657                                 PBoolean withMedia                
00658                                );
00659         
00664     virtual PBoolean OnSentAlerting(H323Connection & connection);
00665     
00674     virtual PBoolean OnConnectionForwarded(
00675       H323Connection & connection,    
00676       const PString & forwardParty,   
00677       const H323SignalPDU & pdu       
00678     );
00679 
00688     virtual PBoolean ForwardConnection(
00689       H323Connection & connection,    
00690       const PString & forwardParty,   
00691       const H323SignalPDU & pdu       
00692     );
00693 
00700     virtual void OnConnectionEstablished(
00701       H323Connection & connection,    
00702       const PString & token           
00703     );
00704 
00707     virtual PBoolean IsConnectionEstablished(
00708       const PString & token   
00709     );
00710 
00717     virtual void OnConnectionCleared(
00718       H323Connection & connection,    
00719       const PString & token           
00720     );
00722 
00723 
00730     virtual PBoolean OnStartLogicalChannel(
00731       H323Connection & connection,    
00732       H323Channel & channel           
00733     );
00734 
00739     virtual void OnClosedLogicalChannel(
00740       H323Connection & connection,    
00741       const H323Channel & channel     
00742     );
00743 
00751     virtual void OnRTPStatistics(
00752       const H323Connection & connection,  
00753       const RTP_Session & session         
00754     ) const;
00755 
00761     virtual void OnGatekeeperNATDetect(
00762       PIPSocket::Address publicAddr,         
00763       PString & gkIdentifier,                
00764       H323TransportAddress & gkRouteAddress  
00765     );
00767 
00777     virtual void OnHTTPServiceControl(
00778       unsigned operation,  
00779       unsigned sessionId,  
00780       const PString & url  
00781     );
00782 
00792     virtual void OnCallCreditServiceControl(
00793       const PString & amount,  
00794       PBoolean mode          
00795     );
00796 
00800     virtual void OnServiceControlSession(
00801       unsigned type,
00802       unsigned sessionid,
00803       const H323ServiceControlSession & session,
00804       H323Connection * connection
00805     );
00806 
00809     virtual H323ServiceControlSession * CreateServiceControlSession(
00810       const H225_ServiceControlDescriptor & contents
00811     );
00813 
00821     virtual PBoolean OnConferenceInvite(
00822       const H323SignalPDU & setupPDU
00823     );
00824 
00830     virtual PBoolean OnCallIndependentSupplementaryService(
00831       const H323SignalPDU & setupPDU
00832     );
00833 
00839     virtual PBoolean OnNegotiateConferenceCapabilities(
00840       const H323SignalPDU & setupPDU
00841     );
00843 
00854     virtual void SetLocalUserName(
00855       const PString & name  
00856     );
00857 
00862     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00863 
00870     PBoolean AddAliasName(
00871       const PString & name  
00872     );
00873 
00877     PBoolean RemoveAliasName(
00878       const PString & name  
00879     );
00880 
00885     const PStringList & GetAliasNames() const { return localAliasNames; }
00886 
00889     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00890 
00894     PBoolean AddAliasNamePattern(
00895       const PString & pattern  
00896     );
00897 
00900     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00901 
00904     void SetDefaultILSServer(
00905       const PString & server
00906     ) { manager.SetDefaultILSServer(server); }
00907 
00910     PBoolean IsFastStartDisabled() const
00911       { return disableFastStart; }
00912 
00915     void DisableFastStart(
00916       PBoolean mode 
00917     ) { disableFastStart = mode; } 
00918 
00921     PBoolean IsH245TunnelingDisabled() const
00922       { return disableH245Tunneling; }
00923 
00926     void DisableH245Tunneling(
00927       PBoolean mode 
00928     ) { disableH245Tunneling = mode; } 
00929 
00932     PBoolean IsH245inSetupDisabled() const
00933       { return disableH245inSetup; }
00934 
00937     void DisableH245inSetup(
00938       PBoolean mode 
00939     ) { disableH245inSetup = mode; } 
00940 
00944     PBoolean IsH245Disabled() const
00945     { return m_bH245Disabled; }
00946 
00950     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00951     
00954     PBoolean CanDisplayAmountString() const
00955       { return canDisplayAmountString; }
00956 
00959     void SetCanDisplayAmountString(
00960       PBoolean mode 
00961     ) { canDisplayAmountString = mode; } 
00962 
00965     PBoolean CanEnforceDurationLimit() const
00966       { return canEnforceDurationLimit; }
00967 
00970     void SetCanEnforceDurationLimit(
00971       PBoolean mode 
00972     ) { canEnforceDurationLimit = mode; } 
00973 
00974 #if OPAL_H450
00975 
00977     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00978 
00981     void SetCallIntrusionProtectionLevel(
00982       unsigned level  
00983     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00984 #endif
00985 
00988     virtual void OnReceivedInitiateReturnError();
00989 
00990 #if OPAL_VIDEO
00991 
00993     PBoolean CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
00994 
00997     PBoolean CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
00998 #endif
00999 
01000 #if OPAL_T38_CAPABILITY
01001 
01003     PBoolean CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01004 
01007     PBoolean CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01008 #endif
01009 
01012     PBoolean CanAutoCallForward() const { return autoCallForward; }
01013 
01016     const H323Capabilities & GetCapabilities() const;
01017 
01020     enum TerminalTypes {
01021       e_TerminalOnly = 50,
01022       e_TerminalAndMC = 70,
01023       e_GatewayOnly = 60,
01024       e_GatewayAndMC = 80,
01025       e_GatewayAndMCWithDataMP = 90,
01026       e_GatewayAndMCWithAudioMP = 100,
01027       e_GatewayAndMCWithAVMP = 110,
01028       e_GatekeeperOnly = 120,
01029       e_GatekeeperWithDataMP = 130,
01030       e_GatekeeperWithAudioMP = 140,
01031       e_GatekeeperWithAVMP = 150,
01032       e_MCUOnly = 160,
01033       e_MCUWithDataMP = 170,
01034       e_MCUWithAudioMP = 180,
01035       e_MCUWithAVMP = 190
01036     };
01037 
01040     TerminalTypes GetTerminalType() const { return terminalType; }
01041 
01044     PBoolean IsTerminal() const;
01045 
01048     PBoolean IsGateway() const;
01049 
01052     PBoolean IsGatekeeper() const;
01053 
01056     PBoolean IsMCU() const;
01057 
01061     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01062 
01066     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01067 
01070     void SetAudioJitterDelay(
01071       unsigned minDelay,   
01072       unsigned maxDelay    
01073     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01074 
01077     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01078 
01081     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01082 
01085     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01086 
01089     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01090         
01094     virtual void LoadBaseFeatureSet();
01095 
01100     virtual bool OnFeatureInstance(
01101       int instType,
01102       const PString & identifer
01103     );
01104 
01105 #if OPAL_H460
01106 
01108     bool FeatureSetDisabled() const { return disableH460; }
01109 
01112     void FeatureSetDisable() { disableH460 = true; }
01113 
01117     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01118 #endif
01119 
01122     virtual PBoolean IsLocalAddress(
01123       const PIPSocket::Address & remoteAddress
01124     ) const { return manager.IsLocalAddress(remoteAddress); }
01125 
01128     virtual void TranslateTCPAddress(
01129       PIPSocket::Address & localAddr,
01130       const PIPSocket::Address & remoteAddr
01131     );
01132 
01135     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01136 
01139     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01140 
01143     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01144 
01147     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01148 
01151     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01152 
01155     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01156 
01159     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01160 
01163     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01164 
01167     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01168 
01171     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01172 
01175     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01176 
01179     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01180 
01183     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01184 
01187     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01188 
01191     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01192 
01195     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01196 
01199     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01200 
01203     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01204 
01207     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01208 
01211     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01212 
01215     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01216 
01219     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01220 
01223     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01224 
01227     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01228 
01231     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01232 
01235     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01236 
01239     PBoolean SetNoMediaTimeout(
01240       const PTimeInterval & newInterval  
01241     ) { return manager.SetNoMediaTimeout(newInterval); }
01242 
01245     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01246 
01249     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01250 
01253     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01254 
01257     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01258 
01262     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01263 
01267     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01268 
01271     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01272 
01275     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01276 
01279     PBoolean GetSendGRQ() const
01280     { return sendGRQ; }
01281 
01284     void SetSendGRQ(PBoolean v) 
01285     { sendGRQ = v; }
01286 
01289     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01290 
01293     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01294 
01297     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01298 
01301     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01302 
01304     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01305     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01306     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01307     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01308     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01309     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01310 
01313     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01314 
01317 #if OPAL_H450
01318     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01319 #endif
01320 
01321     PString GetDefaultTransport() const;
01323 
01324   protected:
01325     bool InternalCreateGatekeeper(H323Transport * transport);
01326     PBoolean InternalMakeCall(
01327       OpalCall & call,
01328       const PString & existingToken,           
01329       const PString & callIdentity,            
01330       unsigned capabilityLevel,                
01331       const PString & remoteParty,             
01332       void * userData,                         
01333       unsigned int options = 0,                
01334       OpalConnection::StringOptions * stringOptions = NULL 
01335     );
01336 
01337     // Configuration variables, commonly changed
01338     PStringList     localAliasNames;
01339     PStringList     localAliasPatterns;
01340     PBoolean        autoStartReceiveFax;
01341     PBoolean        autoStartTransmitFax;
01342     PBoolean        isH224Enabled;
01343     PBoolean        autoCallForward;
01344     PBoolean        disableFastStart;
01345     PBoolean        disableH245Tunneling;
01346     PBoolean        disableH245inSetup;
01347     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01348     PBoolean        canDisplayAmountString;
01349     PBoolean        canEnforceDurationLimit;
01350 #if OPAL_H450
01351     unsigned    callIntrusionProtectionLevel;
01352 #endif
01353 
01354     TerminalTypes terminalType;
01355 
01356     PBoolean          clearCallOnRoundTripFail;
01357 
01358     // Some more configuration variables, rarely changed.
01359     PTimeInterval signallingChannelCallTimeout;
01360     PTimeInterval controlChannelStartTimeout;
01361     PTimeInterval endSessionTimeout;
01362     PTimeInterval masterSlaveDeterminationTimeout;
01363     unsigned      masterSlaveDeterminationRetries;
01364     PTimeInterval capabilityExchangeTimeout;
01365     PTimeInterval logicalChannelTimeout;
01366     PTimeInterval requestModeTimeout;
01367     PTimeInterval roundTripDelayTimeout;
01368     PTimeInterval roundTripDelayRate;
01369     PTimeInterval gatekeeperRequestTimeout;
01370     unsigned      gatekeeperRequestRetries;
01371     PTimeInterval rasRequestTimeout;
01372     unsigned      rasRequestRetries;
01373     PTimeInterval registrationTimeToLive;
01374 
01375     PString       gkAccessTokenOID;
01376     PBoolean          sendGRQ;
01377 
01378     /* Protect against absence of a response to the ctIdentify reqest
01379        (Transferring Endpoint - Call Transfer with a secondary Call) */
01380     PTimeInterval callTransferT1;
01381     /* Protect against failure of completion of the call transfer operation
01382        involving a secondary Call (Transferred-to Endpoint) */
01383     PTimeInterval callTransferT2;
01384     /* Protect against failure of the Transferred Endpoint not responding
01385        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01386     PTimeInterval callTransferT3;
01387     /* May optionally operate - protects against absence of a response to the
01388        ctSetup request (Transferred Endpoint) */
01389     PTimeInterval callTransferT4;
01390 
01392     PTimeInterval callIntrusionT1;
01393     PTimeInterval callIntrusionT2;
01394     PTimeInterval callIntrusionT3;
01395     PTimeInterval callIntrusionT4;
01396     PTimeInterval callIntrusionT5;
01397     PTimeInterval callIntrusionT6;
01398 
01399     // Dynamic variables
01400     mutable H323Capabilities capabilities;
01401     H323Gatekeeper *     gatekeeper;
01402     PString              gatekeeperUsername;
01403     PString              gatekeeperPassword;
01404     H323CallIdentityDict secondaryConnectionsActive;
01405 
01406 #if OPAL_H450
01407     mutable PAtomicInteger nextH450CallIdentity;
01409 #endif
01410 
01411 #if OPAL_H460
01412     bool            disableH460;
01413     H460_FeatureSet features;
01414 #endif
01415 
01416 };
01417 
01418 #endif // __OPAL_H323EP_H
01419 
01420 

Generated on Mon Sep 15 11:49:05 2008 for OPAL by  doxygen 1.5.1