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: 19846 $
00030  * $Author: rjongbloed $
00031  * $Date: 2008-03-31 02:56:21 +0000 (Mon, 31 Mar 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/endpoint.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 H323_H460
00051 #include <h323/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 OpalEndPoint
00082 {
00083   PCLASSINFO(H323EndPoint, OpalEndPoint);
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     );
00147 
00157     virtual OpalMediaFormatList GetMediaFormats() const;
00159 
00164     virtual void SetEndpointTypeInfo(
00165       H225_EndpointType & info
00166     ) const;
00167 
00170     virtual void SetVendorIdentifierInfo(
00171       H225_VendorIdentifier & info
00172     ) const;
00173 
00176     virtual void SetH221NonStandardInfo(
00177       H225_H221NonStandard & info
00178     ) const;
00180 
00181 
00192     void AddCapability(
00193       H323Capability * capability   
00194     );
00195 
00216     PINDEX SetCapability(
00217       PINDEX descriptorNum, 
00218       PINDEX simultaneous,  
00219       H323Capability * cap  
00220     );
00221 
00226     PINDEX AddAllCapabilities(
00227       PINDEX descriptorNum, 
00228       PINDEX simultaneous,  
00229       const PString & name  
00230     );
00231 
00234     void AddAllUserInputCapabilities(
00235       PINDEX descriptorNum, 
00236       PINDEX simultaneous   
00237     );
00238 
00241     void RemoveCapabilities(
00242       const PStringArray & codecNames
00243     );
00244 
00247     void ReorderCapabilities(
00248       const PStringArray & preferenceOrder
00249     );
00250 
00253     H323Capability * FindCapability(
00254       const H245_Capability & cap  
00255     ) const;
00256 
00259     H323Capability * FindCapability(
00260       const H245_DataType & dataType  
00261     ) const;
00262 
00265     H323Capability * FindCapability(
00266       H323Capability::MainTypes mainType,   
00267       unsigned subType                      
00268     ) const;
00270 
00290     PBoolean UseGatekeeper(
00291       const PString & address = PString::Empty(),     
00292       const PString & identifier = PString::Empty(),  
00293       const PString & localAddress = PString::Empty() 
00294     );
00295 
00306     PBoolean SetGatekeeper(
00307       const PString & address,          
00308       H323Transport * transport = NULL  
00309     );
00310 
00325     PBoolean SetGatekeeperZone(
00326       const PString & address,          
00327       const PString & identifier,       
00328       H323Transport * transport = NULL  
00329     );
00330 
00340     PBoolean LocateGatekeeper(
00341       const PString & identifier,       
00342       H323Transport * transport = NULL  
00343     );
00344 
00353     PBoolean DiscoverGatekeeper(
00354       H323Transport * transport = NULL  
00355     );
00356 
00364     virtual H323Gatekeeper * CreateGatekeeper(
00365       H323Transport * transport  
00366     );
00367 
00370     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00371 
00374     PBoolean IsRegisteredWithGatekeeper() const;
00375 
00381     PBoolean RemoveGatekeeper(
00382       int reason = -1    
00383     );
00384 
00387     virtual void SetGatekeeperPassword(
00388       const PString & password,
00389       const PString & username = PString::Empty()
00390     );
00391 
00394     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00395 
00398     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00399 
00402     virtual H235Authenticators CreateAuthenticators();
00403 
00406     virtual void  OnGatekeeperConfirm();
00407 
00410     virtual void  OnGatekeeperReject();
00411 
00414     virtual void OnRegistrationConfirm();
00415 
00418     virtual void  OnRegistrationReject();
00420 
00425     virtual PBoolean NewIncomingConnection(
00426       OpalTransport * transport  
00427     );
00428 
00431     virtual H323Connection * CreateConnection(
00432       OpalCall & call,                         
00433       const PString & token,                   
00434       void * userData,                         
00435       OpalTransport & transport,               
00436       const PString & alias,                   
00437       const H323TransportAddress & address,    
00438       H323SignalPDU * setupPDU,                
00439       unsigned options = 0,
00440       OpalConnection::StringOptions * stringOptions = NULL 
00441     );
00442 
00458     virtual PBoolean SetupTransfer(
00459       const PString & token,        
00460       const PString & callIdentity, 
00461       const PString & remoteParty,  
00462       void * userData = NULL        
00463     );
00464 
00470     void TransferCall(
00471       const PString & token,        
00472       const PString & remoteParty,  
00473       const PString & callIdentity = PString::Empty()
00475     );
00476 
00483     void ConsultationTransfer(
00484       const PString & primaryCallToken,   
00485       const PString & secondaryCallToken  
00486     );
00487 
00491     void HoldCall(
00492       const PString & token,        
00493       PBoolean localHold   
00494     );
00495 
00499     PBoolean IntrudeCall(
00500       const PString & remoteParty,  
00501       unsigned capabilityLevel,     
00502       void * userData = NULL        
00503     );
00504 
00511     PBoolean ParsePartyName(
00512       const PString & party,          
00513       PString & alias,                
00514       H323TransportAddress & address  
00515     );
00516 
00527     PSafePtr<H323Connection> FindConnectionWithLock(
00528       const PString & token,     
00529       PSafetyMode mode = PSafeReadWrite
00530     );
00531 
00539     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00540                                    H323SignalPDU & setupPDU);
00541 
00553     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00554                                       H323SignalPDU & callProceedingPDU
00555                                      );
00556     
00568     virtual PBoolean OnSendConnect(H323Connection & connection,
00569                                H323SignalPDU & connectPDU
00570                               );
00571     
00583     virtual PBoolean OnIncomingCall(
00584       H323Connection & connection,    
00585       const H323SignalPDU & setupPDU,   
00586       H323SignalPDU & alertingPDU       
00587     );
00588 
00595     virtual PBoolean OnOutgoingCall(
00596         H323Connection & conn, 
00597         const H323SignalPDU & connectPDU
00598     );
00599 
00604     virtual PBoolean OnCallTransferInitiate(
00605       H323Connection & connection,    
00606       const PString & remoteParty     
00607     );
00608 
00613     virtual PBoolean OnCallTransferIdentify(
00614       H323Connection & connection    
00615     );
00616 
00621     virtual void OnSendARQ(
00622       H323Connection & conn,
00623       H225_AdmissionRequest & arq
00624     );
00625 
00632     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00633       H323Connection & connection,    
00634       const PString & callerName,       
00635       const H323SignalPDU & setupPDU,   
00636       H323SignalPDU & connectPDU,       
00637       H323SignalPDU & progressPDU        
00638     );
00639     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00640        OpalConnection & connection,
00641        const PString & caller
00642     );
00643 
00654     virtual PBoolean OnAlerting(
00655       H323Connection & connection,    
00656       const H323SignalPDU & alertingPDU,  
00657       const PString & user                
00658     );
00659 
00665     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00666                                 H323SignalPDU & alerting,     
00667                                 const PString & calleeName,   
00668                                 PBoolean withMedia                
00669                                );
00670         
00675     virtual PBoolean OnSentAlerting(H323Connection & connection);
00676     
00685     virtual PBoolean OnConnectionForwarded(
00686       H323Connection & connection,    
00687       const PString & forwardParty,   
00688       const H323SignalPDU & pdu       
00689     );
00690 
00699     virtual PBoolean ForwardConnection(
00700       H323Connection & connection,    
00701       const PString & forwardParty,   
00702       const H323SignalPDU & pdu       
00703     );
00704 
00711     virtual void OnConnectionEstablished(
00712       H323Connection & connection,    
00713       const PString & token           
00714     );
00715 
00718     virtual PBoolean IsConnectionEstablished(
00719       const PString & token   
00720     );
00721 
00728     virtual void OnConnectionCleared(
00729       H323Connection & connection,    
00730       const PString & token           
00731     );
00733 
00734 
00741     virtual PBoolean OnStartLogicalChannel(
00742       H323Connection & connection,    
00743       H323Channel & channel           
00744     );
00745 
00750     virtual void OnClosedLogicalChannel(
00751       H323Connection & connection,    
00752       const H323Channel & channel     
00753     );
00754 
00762     virtual void OnRTPStatistics(
00763       const H323Connection & connection,  
00764       const RTP_Session & session         
00765     ) const;
00766 
00772     virtual void OnGatekeeperNATDetect(
00773       PIPSocket::Address publicAddr,         
00774       PString & gkIdentifier,                
00775       H323TransportAddress & gkRouteAddress  
00776     );
00778 
00788     virtual void OnHTTPServiceControl(
00789       unsigned operation,  
00790       unsigned sessionId,  
00791       const PString & url  
00792     );
00793 
00803     virtual void OnCallCreditServiceControl(
00804       const PString & amount,  
00805       PBoolean mode          
00806     );
00807 
00811     virtual void OnServiceControlSession(
00812       unsigned type,
00813       unsigned sessionid,
00814       const H323ServiceControlSession & session,
00815       H323Connection * connection
00816     );
00817 
00820     virtual H323ServiceControlSession * CreateServiceControlSession(
00821       const H225_ServiceControlDescriptor & contents
00822     );
00824 
00832     virtual PBoolean OnConferenceInvite(
00833       const H323SignalPDU & setupPDU
00834     );
00835 
00841     virtual PBoolean OnCallIndependentSupplementaryService(
00842       const H323SignalPDU & setupPDU
00843     );
00844 
00850     virtual PBoolean OnNegotiateConferenceCapabilities(
00851       const H323SignalPDU & setupPDU
00852     );
00854 
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 
01001 #if OPAL_VIDEO
01002 
01004     PBoolean CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
01005 
01008     PBoolean CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
01009 #endif
01010 
01011 #if OPAL_T38FAX
01012 
01014     PBoolean CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01015 
01018     PBoolean CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01019 #endif
01020 
01023     PBoolean IsH224Enabled() const { return isH224Enabled; }
01024         
01027     void SetIsH224Enabled(PBoolean flag) { isH224Enabled = flag; }
01028 
01031     PBoolean CanAutoCallForward() const { return autoCallForward; }
01032 
01035     const H323Capabilities & GetCapabilities() const;
01036 
01039     enum TerminalTypes {
01040       e_TerminalOnly = 50,
01041       e_TerminalAndMC = 70,
01042       e_GatewayOnly = 60,
01043       e_GatewayAndMC = 80,
01044       e_GatewayAndMCWithDataMP = 90,
01045       e_GatewayAndMCWithAudioMP = 100,
01046       e_GatewayAndMCWithAVMP = 110,
01047       e_GatekeeperOnly = 120,
01048       e_GatekeeperWithDataMP = 130,
01049       e_GatekeeperWithAudioMP = 140,
01050       e_GatekeeperWithAVMP = 150,
01051       e_MCUOnly = 160,
01052       e_MCUWithDataMP = 170,
01053       e_MCUWithAudioMP = 180,
01054       e_MCUWithAVMP = 190
01055     };
01056 
01059     TerminalTypes GetTerminalType() const { return terminalType; }
01060 
01063     PBoolean IsTerminal() const;
01064 
01067     PBoolean IsGateway() const;
01068 
01071     PBoolean IsGatekeeper() const;
01072 
01075     PBoolean IsMCU() const;
01076 
01080     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01081 
01085     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01086 
01089     void SetAudioJitterDelay(
01090       unsigned minDelay,   
01091       unsigned maxDelay    
01092     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01093 
01096     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01097 
01100     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01101 
01104     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01105 
01108     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01109         
01110 #ifdef H323_H460
01111 
01113     H460_FeatureSet & GetFeatureSet() { return features; };
01114 #endif
01115 
01118     virtual PBoolean IsLocalAddress(
01119       const PIPSocket::Address & remoteAddress
01120     ) const { return manager.IsLocalAddress(remoteAddress); }
01121 
01124     virtual void TranslateTCPAddress(
01125       PIPSocket::Address & localAddr,
01126       const PIPSocket::Address & remoteAddr
01127     );
01128 
01131     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01132 
01135     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01136 
01139     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01140 
01143     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01144 
01147     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01148 
01151     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01152 
01155     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01156 
01159     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01160 
01163     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01164 
01167     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01168 
01171     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01172 
01175     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01176 
01179     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01180 
01183     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01184 
01187     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01188 
01191     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01192 
01195     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01196 
01199     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01200 
01203     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01204 
01207     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01208 
01211     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01212 
01215     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01216 
01219     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01220 
01223     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01224 
01227     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01228 
01231     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01232 
01235     PBoolean SetNoMediaTimeout(
01236       const PTimeInterval & newInterval  
01237     ) { return manager.SetNoMediaTimeout(newInterval); }
01238 
01241     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01242 
01245     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01246 
01249     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01250 
01253     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01254 
01258     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01259 
01263     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01264 
01267     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01268 
01271     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01272 
01275     PBoolean GetSendGRQ() const
01276     { return sendGRQ; }
01277 
01280     void SetSendGRQ(PBoolean v) 
01281     { sendGRQ = v; }
01282 
01285     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01286 
01289     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01290 
01293     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01294 
01297     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01298 
01300     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01301     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01302     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01303     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01304     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01305     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01306 
01309     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01310 
01313 #if OPAL_H450
01314     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01315 #endif
01316 
01317     PString GetDefaultTransport() const;
01319 
01320   protected:
01321     H323Gatekeeper * InternalCreateGatekeeper(H323Transport * transport);
01322     PBoolean InternalRegisterGatekeeper(H323Gatekeeper * gk, PBoolean discovered);
01323     PBoolean InternalMakeCall(
01324       OpalCall & call,
01325       const PString & existingToken,           
01326       const PString & callIdentity,            
01327       unsigned capabilityLevel,                
01328       const PString & remoteParty,             
01329       void * userData,                         
01330       unsigned int options = 0,                
01331       OpalConnection::StringOptions * stringOptions = NULL 
01332     );
01333 
01334     // Configuration variables, commonly changed
01335     PStringList     localAliasNames;
01336     PStringList     localAliasPatterns;
01337     PBoolean        autoStartReceiveFax;
01338     PBoolean        autoStartTransmitFax;
01339     PBoolean        isH224Enabled;
01340     PBoolean        autoCallForward;
01341     PBoolean        disableFastStart;
01342     PBoolean        disableH245Tunneling;
01343     PBoolean        disableH245inSetup;
01344     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01345     PBoolean        canDisplayAmountString;
01346     PBoolean        canEnforceDurationLimit;
01347 #if OPAL_H450
01348     unsigned    callIntrusionProtectionLevel;
01349 #endif
01350 
01351     TerminalTypes terminalType;
01352 
01353     PBoolean          clearCallOnRoundTripFail;
01354 
01355     // Some more configuration variables, rarely changed.
01356     PTimeInterval signallingChannelCallTimeout;
01357     PTimeInterval controlChannelStartTimeout;
01358     PTimeInterval endSessionTimeout;
01359     PTimeInterval masterSlaveDeterminationTimeout;
01360     unsigned      masterSlaveDeterminationRetries;
01361     PTimeInterval capabilityExchangeTimeout;
01362     PTimeInterval logicalChannelTimeout;
01363     PTimeInterval requestModeTimeout;
01364     PTimeInterval roundTripDelayTimeout;
01365     PTimeInterval roundTripDelayRate;
01366     PTimeInterval gatekeeperRequestTimeout;
01367     unsigned      gatekeeperRequestRetries;
01368     PTimeInterval rasRequestTimeout;
01369     unsigned      rasRequestRetries;
01370     PTimeInterval registrationTimeToLive;
01371 
01372     PString       gkAccessTokenOID;
01373     PBoolean          sendGRQ;
01374 
01375     /* Protect against absence of a response to the ctIdentify reqest
01376        (Transferring Endpoint - Call Transfer with a secondary Call) */
01377     PTimeInterval callTransferT1;
01378     /* Protect against failure of completion of the call transfer operation
01379        involving a secondary Call (Transferred-to Endpoint) */
01380     PTimeInterval callTransferT2;
01381     /* Protect against failure of the Transferred Endpoint not responding
01382        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01383     PTimeInterval callTransferT3;
01384     /* May optionally operate - protects against absence of a response to the
01385        ctSetup request (Transferred Endpoint) */
01386     PTimeInterval callTransferT4;
01387 
01389     PTimeInterval callIntrusionT1;
01390     PTimeInterval callIntrusionT2;
01391     PTimeInterval callIntrusionT3;
01392     PTimeInterval callIntrusionT4;
01393     PTimeInterval callIntrusionT5;
01394     PTimeInterval callIntrusionT6;
01395 
01396     // Dynamic variables
01397     mutable H323Capabilities capabilities;
01398     H323Gatekeeper *     gatekeeper;
01399     PString              gatekeeperUsername;
01400     PString              gatekeeperPassword;
01401     H323CallIdentityDict secondaryConnectionsActive;
01402 
01403 #if OPAL_H450
01404     mutable PAtomicInteger nextH450CallIdentity;
01406 #endif
01407 
01408 #if OPAL_H460
01409     H460_FeatureSet features;
01410 #endif
01411 
01412 };
01413 
01414 #endif // __OPAL_H323EP_H
01415 
01416 

Generated on Wed May 7 00:55:53 2008 for OPAL by  doxygen 1.5.1