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: 19522 $
00030  * $Author: rjongbloed $
00031  * $Date: 2008-02-15 11:37:24 +0000 (Fri, 15 Feb 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 
00134     virtual PBoolean MakeConnection(
00135       OpalCall & call,                  
00136       const PString & party,            
00137       void * userData  = NULL,          
00138       unsigned int options = NULL,      
00139       OpalConnection::StringOptions * stringOptions = NULL
00140     );
00141 
00151     virtual OpalMediaFormatList GetMediaFormats() const;
00153 
00158     virtual void SetEndpointTypeInfo(
00159       H225_EndpointType & info
00160     ) const;
00161 
00164     virtual void SetVendorIdentifierInfo(
00165       H225_VendorIdentifier & info
00166     ) const;
00167 
00170     virtual void SetH221NonStandardInfo(
00171       H225_H221NonStandard & info
00172     ) const;
00174 
00175 
00186     void AddCapability(
00187       H323Capability * capability   
00188     );
00189 
00210     PINDEX SetCapability(
00211       PINDEX descriptorNum, 
00212       PINDEX simultaneous,  
00213       H323Capability * cap  
00214     );
00215 
00220     PINDEX AddAllCapabilities(
00221       PINDEX descriptorNum, 
00222       PINDEX simultaneous,  
00223       const PString & name  
00224     );
00225 
00228     void AddAllUserInputCapabilities(
00229       PINDEX descriptorNum, 
00230       PINDEX simultaneous   
00231     );
00232 
00235     void RemoveCapabilities(
00236       const PStringArray & codecNames
00237     );
00238 
00241     void ReorderCapabilities(
00242       const PStringArray & preferenceOrder
00243     );
00244 
00247     H323Capability * FindCapability(
00248       const H245_Capability & cap  
00249     ) const;
00250 
00253     H323Capability * FindCapability(
00254       const H245_DataType & dataType  
00255     ) const;
00256 
00259     H323Capability * FindCapability(
00260       H323Capability::MainTypes mainType,   
00261       unsigned subType                      
00262     ) const;
00264 
00284     PBoolean UseGatekeeper(
00285       const PString & address = PString::Empty(),     
00286       const PString & identifier = PString::Empty(),  
00287       const PString & localAddress = PString::Empty() 
00288     );
00289 
00300     PBoolean SetGatekeeper(
00301       const PString & address,          
00302       H323Transport * transport = NULL  
00303     );
00304 
00319     PBoolean SetGatekeeperZone(
00320       const PString & address,          
00321       const PString & identifier,       
00322       H323Transport * transport = NULL  
00323     );
00324 
00334     PBoolean LocateGatekeeper(
00335       const PString & identifier,       
00336       H323Transport * transport = NULL  
00337     );
00338 
00347     PBoolean DiscoverGatekeeper(
00348       H323Transport * transport = NULL  
00349     );
00350 
00358     virtual H323Gatekeeper * CreateGatekeeper(
00359       H323Transport * transport  
00360     );
00361 
00364     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00365 
00368     PBoolean IsRegisteredWithGatekeeper() const;
00369 
00375     PBoolean RemoveGatekeeper(
00376       int reason = -1    
00377     );
00378 
00381     virtual void SetGatekeeperPassword(
00382       const PString & password,
00383       const PString & username = PString::Empty()
00384     );
00385 
00388     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00389 
00392     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00393 
00396     virtual H235Authenticators CreateAuthenticators();
00397 
00400     virtual void  OnGatekeeperConfirm();
00401 
00404     virtual void  OnGatekeeperReject();
00405 
00408     virtual void OnRegistrationConfirm();
00409 
00412     virtual void  OnRegistrationReject();
00414 
00419     virtual PBoolean NewIncomingConnection(
00420       OpalTransport * transport  
00421     );
00422 
00425     virtual H323Connection * CreateConnection(
00426       OpalCall & call,                         
00427       const PString & token,                   
00428       void * userData,                         
00429       OpalTransport & transport,               
00430       const PString & alias,                   
00431       const H323TransportAddress & address,    
00432       H323SignalPDU * setupPDU,                
00433       unsigned options = 0,
00434       OpalConnection::StringOptions * stringOptions = NULL 
00435     );
00436 
00452     virtual PBoolean SetupTransfer(
00453       const PString & token,        
00454       const PString & callIdentity, 
00455       const PString & remoteParty,  
00456       void * userData = NULL        
00457     );
00458 
00464     void TransferCall(
00465       const PString & token,        
00466       const PString & remoteParty,  
00467       const PString & callIdentity = PString::Empty()
00469     );
00470 
00477     void ConsultationTransfer(
00478       const PString & primaryCallToken,   
00479       const PString & secondaryCallToken  
00480     );
00481 
00485     void HoldCall(
00486       const PString & token,        
00487       PBoolean localHold   
00488     );
00489 
00493     PBoolean IntrudeCall(
00494       const PString & remoteParty,  
00495       unsigned capabilityLevel,     
00496       void * userData = NULL        
00497     );
00498 
00505     PBoolean ParsePartyName(
00506       const PString & party,          
00507       PString & alias,                
00508       H323TransportAddress & address  
00509     );
00510 
00521     PSafePtr<H323Connection> FindConnectionWithLock(
00522       const PString & token,     
00523       PSafetyMode mode = PSafeReadWrite
00524     );
00525 
00533     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00534                                    H323SignalPDU & setupPDU);
00535 
00547     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00548                                       H323SignalPDU & callProceedingPDU
00549                                      );
00550     
00562     virtual PBoolean OnSendConnect(H323Connection & connection,
00563                                H323SignalPDU & connectPDU
00564                               );
00565     
00577     virtual PBoolean OnIncomingCall(
00578       H323Connection & connection,    
00579       const H323SignalPDU & setupPDU,   
00580       H323SignalPDU & alertingPDU       
00581     );
00582 
00589     virtual PBoolean OnOutgoingCall(
00590         H323Connection & conn, 
00591         const H323SignalPDU & connectPDU
00592     );
00593 
00598     virtual PBoolean OnCallTransferInitiate(
00599       H323Connection & connection,    
00600       const PString & remoteParty     
00601     );
00602 
00607     virtual PBoolean OnCallTransferIdentify(
00608       H323Connection & connection    
00609     );
00610 
00615     virtual void OnSendARQ(
00616       H323Connection & conn,
00617       H225_AdmissionRequest & arq
00618     );
00619 
00626     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00627       H323Connection & connection,    
00628       const PString & callerName,       
00629       const H323SignalPDU & setupPDU,   
00630       H323SignalPDU & connectPDU,       
00631       H323SignalPDU & progressPDU        
00632     );
00633     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00634        OpalConnection & connection,
00635        const PString & caller
00636     );
00637 
00648     virtual PBoolean OnAlerting(
00649       H323Connection & connection,    
00650       const H323SignalPDU & alertingPDU,  
00651       const PString & user                
00652     );
00653 
00659     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00660                                 H323SignalPDU & alerting,     
00661                                 const PString & calleeName,   
00662                                 PBoolean withMedia                
00663                                );
00664         
00669     virtual PBoolean OnSentAlerting(H323Connection & connection);
00670     
00679     virtual PBoolean OnConnectionForwarded(
00680       H323Connection & connection,    
00681       const PString & forwardParty,   
00682       const H323SignalPDU & pdu       
00683     );
00684 
00693     virtual PBoolean ForwardConnection(
00694       H323Connection & connection,    
00695       const PString & forwardParty,   
00696       const H323SignalPDU & pdu       
00697     );
00698 
00705     virtual void OnConnectionEstablished(
00706       H323Connection & connection,    
00707       const PString & token           
00708     );
00709 
00712     virtual PBoolean IsConnectionEstablished(
00713       const PString & token   
00714     );
00715 
00722     virtual void OnConnectionCleared(
00723       H323Connection & connection,    
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 
00859     virtual void SetLocalUserName(
00860       const PString & name  
00861     );
00862 
00867     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00868 
00875     PBoolean AddAliasName(
00876       const PString & name  
00877     );
00878 
00882     PBoolean RemoveAliasName(
00883       const PString & name  
00884     );
00885 
00890     const PStringList & GetAliasNames() const { return localAliasNames; }
00891 
00894     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00895 
00899     PBoolean AddAliasNamePattern(
00900       const PString & pattern  
00901     );
00902 
00905     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00906 
00909     void SetDefaultILSServer(
00910       const PString & server
00911     ) { manager.SetDefaultILSServer(server); }
00912 
00915     PBoolean IsFastStartDisabled() const
00916       { return disableFastStart; }
00917 
00920     void DisableFastStart(
00921       PBoolean mode 
00922     ) { disableFastStart = mode; } 
00923 
00926     PBoolean IsH245TunnelingDisabled() const
00927       { return disableH245Tunneling; }
00928 
00931     void DisableH245Tunneling(
00932       PBoolean mode 
00933     ) { disableH245Tunneling = mode; } 
00934 
00937     PBoolean IsH245inSetupDisabled() const
00938       { return disableH245inSetup; }
00939 
00942     void DisableH245inSetup(
00943       PBoolean mode 
00944     ) { disableH245inSetup = mode; } 
00945 
00949     PBoolean IsH245Disabled() const
00950     { return m_bH245Disabled; }
00951 
00955     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00956     
00959     PBoolean CanDisplayAmountString() const
00960       { return canDisplayAmountString; }
00961 
00964     void SetCanDisplayAmountString(
00965       PBoolean mode 
00966     ) { canDisplayAmountString = mode; } 
00967 
00970     PBoolean CanEnforceDurationLimit() const
00971       { return canEnforceDurationLimit; }
00972 
00975     void SetCanEnforceDurationLimit(
00976       PBoolean mode 
00977     ) { canEnforceDurationLimit = mode; } 
00978 
00979 #if OPAL_H450
00980 
00982     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00983 
00986     void SetCallIntrusionProtectionLevel(
00987       unsigned level  
00988     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00989 #endif
00990 
00993     virtual void OnReceivedInitiateReturnError();
00994 
00995 #if OPAL_VIDEO
00996 
00998     PBoolean CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
00999 
01002     PBoolean CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
01003 #endif
01004 
01005 #if OPAL_T38FAX
01006 
01008     PBoolean CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01009 
01012     PBoolean CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01013 #endif
01014 
01017     PBoolean IsH224Enabled() const { return isH224Enabled; }
01018         
01021     void SetIsH224Enabled(PBoolean flag) { isH224Enabled = flag; }
01022 
01025     PBoolean CanAutoCallForward() const { return autoCallForward; }
01026 
01029     const H323Capabilities & GetCapabilities() const;
01030 
01033     enum TerminalTypes {
01034       e_TerminalOnly = 50,
01035       e_TerminalAndMC = 70,
01036       e_GatewayOnly = 60,
01037       e_GatewayAndMC = 80,
01038       e_GatewayAndMCWithDataMP = 90,
01039       e_GatewayAndMCWithAudioMP = 100,
01040       e_GatewayAndMCWithAVMP = 110,
01041       e_GatekeeperOnly = 120,
01042       e_GatekeeperWithDataMP = 130,
01043       e_GatekeeperWithAudioMP = 140,
01044       e_GatekeeperWithAVMP = 150,
01045       e_MCUOnly = 160,
01046       e_MCUWithDataMP = 170,
01047       e_MCUWithAudioMP = 180,
01048       e_MCUWithAVMP = 190
01049     };
01050 
01053     TerminalTypes GetTerminalType() const { return terminalType; }
01054 
01057     PBoolean IsTerminal() const;
01058 
01061     PBoolean IsGateway() const;
01062 
01065     PBoolean IsGatekeeper() const;
01066 
01069     PBoolean IsMCU() const;
01070 
01074     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01075 
01079     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01080 
01083     void SetAudioJitterDelay(
01084       unsigned minDelay,   
01085       unsigned maxDelay    
01086     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01087 
01090     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01091 
01094     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01095 
01098     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01099 
01102     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01103         
01104 #ifdef H323_H460
01105 
01107     H460_FeatureSet & GetFeatureSet() { return features; };
01108 #endif
01109 
01112     virtual PBoolean IsLocalAddress(
01113       const PIPSocket::Address & remoteAddress
01114     ) const { return manager.IsLocalAddress(remoteAddress); }
01115 
01118     virtual void TranslateTCPAddress(
01119       PIPSocket::Address & localAddr,
01120       const PIPSocket::Address & remoteAddr
01121     );
01122 
01125     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01126 
01129     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01130 
01133     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01134 
01137     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01138 
01141     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01142 
01145     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01146 
01149     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01150 
01153     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01154 
01157     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01158 
01161     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01162 
01165     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01166 
01169     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01170 
01173     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01174 
01177     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01178 
01181     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01182 
01185     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01186 
01189     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01190 
01193     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01194 
01197     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01198 
01201     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01202 
01205     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01206 
01209     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01210 
01213     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01214 
01217     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01218 
01221     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01222 
01225     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01226 
01229     PBoolean SetNoMediaTimeout(
01230       const PTimeInterval & newInterval  
01231     ) { return manager.SetNoMediaTimeout(newInterval); }
01232 
01235     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01236 
01239     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01240 
01243     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01244 
01247     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01248 
01252     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01253 
01257     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01258 
01261     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01262 
01265     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01266 
01269     PBoolean GetSendGRQ() const
01270     { return sendGRQ; }
01271 
01274     void SetSendGRQ(PBoolean v) 
01275     { sendGRQ = v; }
01276 
01279     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01280 
01283     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01284 
01287     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01288 
01291     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01292 
01294     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01295     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01296     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01297     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01298     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01299     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01300 
01303     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01304 
01307 #if OPAL_H450
01308     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01309 #endif
01310 
01311     PString GetDefaultTransport() const;
01313 
01314   protected:
01315     H323Gatekeeper * InternalCreateGatekeeper(H323Transport * transport);
01316     PBoolean InternalRegisterGatekeeper(H323Gatekeeper * gk, PBoolean discovered);
01317     PBoolean InternalMakeCall(
01318       OpalCall & call,
01319       const PString & existingToken,           
01320       const PString & callIdentity,            
01321       unsigned capabilityLevel,                
01322       const PString & remoteParty,             
01323       void * userData,                         
01324       unsigned int options = 0,                
01325       OpalConnection::StringOptions * stringOptions = NULL 
01326     );
01327 
01328     // Configuration variables, commonly changed
01329     PStringList     localAliasNames;
01330     PStringList     localAliasPatterns;
01331     PBoolean        autoStartReceiveFax;
01332     PBoolean        autoStartTransmitFax;
01333     PBoolean        isH224Enabled;
01334     PBoolean        autoCallForward;
01335     PBoolean        disableFastStart;
01336     PBoolean        disableH245Tunneling;
01337     PBoolean        disableH245inSetup;
01338     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01339     PBoolean        canDisplayAmountString;
01340     PBoolean        canEnforceDurationLimit;
01341 #if OPAL_H450
01342     unsigned    callIntrusionProtectionLevel;
01343 #endif
01344 
01345     TerminalTypes terminalType;
01346 
01347     PBoolean          clearCallOnRoundTripFail;
01348 
01349     // Some more configuration variables, rarely changed.
01350     PTimeInterval signallingChannelCallTimeout;
01351     PTimeInterval controlChannelStartTimeout;
01352     PTimeInterval endSessionTimeout;
01353     PTimeInterval masterSlaveDeterminationTimeout;
01354     unsigned      masterSlaveDeterminationRetries;
01355     PTimeInterval capabilityExchangeTimeout;
01356     PTimeInterval logicalChannelTimeout;
01357     PTimeInterval requestModeTimeout;
01358     PTimeInterval roundTripDelayTimeout;
01359     PTimeInterval roundTripDelayRate;
01360     PTimeInterval gatekeeperRequestTimeout;
01361     unsigned      gatekeeperRequestRetries;
01362     PTimeInterval rasRequestTimeout;
01363     unsigned      rasRequestRetries;
01364     PTimeInterval registrationTimeToLive;
01365 
01366     PString       gkAccessTokenOID;
01367     PBoolean          sendGRQ;
01368 
01369     /* Protect against absence of a response to the ctIdentify reqest
01370        (Transferring Endpoint - Call Transfer with a secondary Call) */
01371     PTimeInterval callTransferT1;
01372     /* Protect against failure of completion of the call transfer operation
01373        involving a secondary Call (Transferred-to Endpoint) */
01374     PTimeInterval callTransferT2;
01375     /* Protect against failure of the Transferred Endpoint not responding
01376        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01377     PTimeInterval callTransferT3;
01378     /* May optionally operate - protects against absence of a response to the
01379        ctSetup request (Transferred Endpoint) */
01380     PTimeInterval callTransferT4;
01381 
01383     PTimeInterval callIntrusionT1;
01384     PTimeInterval callIntrusionT2;
01385     PTimeInterval callIntrusionT3;
01386     PTimeInterval callIntrusionT4;
01387     PTimeInterval callIntrusionT5;
01388     PTimeInterval callIntrusionT6;
01389 
01390     // Dynamic variables
01391     mutable H323Capabilities capabilities;
01392     H323Gatekeeper *     gatekeeper;
01393     PString              gatekeeperUsername;
01394     PString              gatekeeperPassword;
01395     H323CallIdentityDict secondaryConnectionsActive;
01396 
01397 #if OPAL_H450
01398     mutable PAtomicInteger nextH450CallIdentity;
01400 #endif
01401 
01402 #if OPAL_H460
01403     H460_FeatureSet features;
01404 #endif
01405 
01406 };
01407 
01408 #endif // __OPAL_H323EP_H
01409 
01410 

Generated on Fri Mar 7 07:36:29 2008 for OPAL by  doxygen 1.5.1