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: 23128 $
00030  * $Author: rjongbloed $
00031  * $Date: 2009-07-22 05:17:45 +0000 (Wed, 22 Jul 2009) $
00032  */
00033 
00034 #ifndef OPAL_H323_H323EP_H
00035 #define OPAL_H323_H323EP_H
00036 
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040 
00041 #include <opal/buildopts.h>
00042 
00043 #if OPAL_H323
00044 
00045 #include <opal/rtpep.h>
00046 #include <opal/manager.h>
00047 #include <opal/call.h>
00048 #include <opal/transports.h>
00049 #include <h323/h323con.h>
00050 #include <h323/h323caps.h>
00051 #include <h323/h235auth.h>
00052 
00053 #if OPAL_H460
00054 #include <h460/h4601.h>
00055 #endif
00056 
00057 
00058 class H225_EndpointType;
00059 class H225_VendorIdentifier;
00060 class H225_H221NonStandard;
00061 class H225_ServiceControlDescriptor;
00062 class H225_FeatureSet;
00063 
00064 class H235SecurityInfo;
00065 
00066 class H323Gatekeeper;
00067 class H323SignalPDU;
00068 class H323ServiceControlSession;
00069 
00071 
00084 class H323EndPoint : public OpalRTPEndPoint
00085 {
00086   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00087 
00088   public:
00089     enum {
00090       DefaultTcpSignalPort = 1720
00091     };
00092 
00097     H323EndPoint(
00098       OpalManager & manager
00099     );
00100 
00103     ~H323EndPoint();
00105 
00112     virtual void ShutDown();
00113 
00143     virtual PBoolean MakeConnection(
00144       OpalCall & call,                  
00145       const PString & party,            
00146       void * userData  = NULL,          
00147       unsigned int options = NULL,      
00148       OpalConnection::StringOptions * stringOptions = NULL
00149     );
00151 
00156     virtual void SetEndpointTypeInfo(
00157       H225_EndpointType & info
00158     ) const;
00159 
00162     virtual void SetVendorIdentifierInfo(
00163       H225_VendorIdentifier & info
00164     ) const;
00165 
00168     virtual void SetH221NonStandardInfo(
00169       H225_H221NonStandard & info
00170     ) const;
00171 
00174     virtual bool SetGatewaySupportedProtocol(
00175       H225_ArrayOf_SupportedProtocols & protocols
00176     ) const;
00177 
00181     virtual bool OnSetGatewayPrefixes(
00182       PStringList & prefixes
00183     ) const;
00185 
00186 
00197     void AddCapability(
00198       H323Capability * capability   
00199     );
00200 
00221     PINDEX SetCapability(
00222       PINDEX descriptorNum, 
00223       PINDEX simultaneous,  
00224       H323Capability * cap  
00225     );
00226 
00231     PINDEX AddAllCapabilities(
00232       PINDEX descriptorNum, 
00233       PINDEX simultaneous,  
00234       const PString & name  
00235     );
00236 
00239     void AddAllUserInputCapabilities(
00240       PINDEX descriptorNum, 
00241       PINDEX simultaneous   
00242     );
00243 
00246     void RemoveCapabilities(
00247       const PStringArray & codecNames
00248     );
00249 
00252     void ReorderCapabilities(
00253       const PStringArray & preferenceOrder
00254     );
00255 
00258     H323Capability * FindCapability(
00259       const H245_Capability & cap  
00260     ) const;
00261 
00264     H323Capability * FindCapability(
00265       const H245_DataType & dataType  
00266     ) const;
00267 
00270     H323Capability * FindCapability(
00271       H323Capability::MainTypes mainType,   
00272       unsigned subType                      
00273     ) const;
00275 
00298     PBoolean UseGatekeeper(
00299       const PString & address = PString::Empty(),     
00300       const PString & identifier = PString::Empty(),  
00301       const PString & localAddress = PString::Empty() 
00302     );
00303 
00314     PBoolean SetGatekeeper(
00315       const PString & address,          
00316       H323Transport * transport = NULL  
00317     );
00318 
00333     PBoolean SetGatekeeperZone(
00334       const PString & address,          
00335       const PString & identifier,       
00336       H323Transport * transport = NULL  
00337     );
00338 
00348     PBoolean LocateGatekeeper(
00349       const PString & identifier,       
00350       H323Transport * transport = NULL  
00351     );
00352 
00361     PBoolean DiscoverGatekeeper(
00362       H323Transport * transport = NULL  
00363     );
00364 
00372     virtual H323Gatekeeper * CreateGatekeeper(
00373       H323Transport * transport  
00374     );
00375 
00378     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00379 
00382     PBoolean IsRegisteredWithGatekeeper() const;
00383 
00389     PBoolean RemoveGatekeeper(
00390       int reason = -1    
00391     );
00392 
00395     virtual void SetGatekeeperPassword(
00396       const PString & password,
00397       const PString & username = PString::Empty()
00398     );
00399 
00402     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00403 
00406     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00407 
00410     virtual H235Authenticators CreateAuthenticators();
00411 
00414     virtual void  OnGatekeeperConfirm();
00415 
00418     virtual void  OnGatekeeperReject();
00419 
00422     virtual void OnRegistrationConfirm();
00423 
00426     virtual void  OnRegistrationReject();
00428 
00433     virtual PBoolean NewIncomingConnection(
00434       OpalTransport * transport  
00435     );
00436 
00439     virtual H323Connection * CreateConnection(
00440       OpalCall & call,                         
00441       const PString & token,                   
00442       void * userData,                         
00443       OpalTransport & transport,               
00444       const PString & alias,                   
00445       const H323TransportAddress & address,    
00446       H323SignalPDU * setupPDU,                
00447       unsigned options = 0,
00448       OpalConnection::StringOptions * stringOptions = NULL 
00449     );
00450 
00466     virtual PBoolean SetupTransfer(
00467       const PString & token,        
00468       const PString & callIdentity, 
00469       const PString & remoteParty,  
00470       void * userData = NULL        
00471     );
00472 
00478     void TransferCall(
00479       const PString & token,        
00480       const PString & remoteParty,  
00481       const PString & callIdentity = PString::Empty()
00483     );
00484 
00491     void ConsultationTransfer(
00492       const PString & primaryCallToken,   
00493       const PString & secondaryCallToken  
00494     );
00495 
00499     void HoldCall(
00500       const PString & token,        
00501       PBoolean localHold   
00502     );
00503 
00507     PBoolean IntrudeCall(
00508       const PString & remoteParty,  
00509       unsigned capabilityLevel,     
00510       void * userData = NULL        
00511     );
00512 
00519     PBoolean ParsePartyName(
00520       const PString & party,          
00521       PString & alias,                
00522       H323TransportAddress & address  
00523     );
00524 
00535     PSafePtr<H323Connection> FindConnectionWithLock(
00536       const PString & token,     
00537       PSafetyMode mode = PSafeReadWrite
00538     );
00539 
00547     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00548                                    H323SignalPDU & setupPDU);
00549 
00561     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00562                                       H323SignalPDU & callProceedingPDU
00563                                      );
00564     
00576     virtual PBoolean OnSendConnect(H323Connection & connection,
00577                                H323SignalPDU & connectPDU
00578                               );
00579     
00591     virtual PBoolean OnIncomingCall(
00592       H323Connection & connection,    
00593       const H323SignalPDU & setupPDU,   
00594       H323SignalPDU & alertingPDU       
00595     );
00596 
00603     virtual PBoolean OnOutgoingCall(
00604         H323Connection & conn, 
00605         const H323SignalPDU & connectPDU
00606     );
00607 
00612     virtual PBoolean OnCallTransferInitiate(
00613       H323Connection & connection,    
00614       const PString & remoteParty     
00615     );
00616 
00621     virtual PBoolean OnCallTransferIdentify(
00622       H323Connection & connection    
00623     );
00624 
00629     virtual void OnSendARQ(
00630       H323Connection & conn,
00631       H225_AdmissionRequest & arq
00632     );
00633 
00640     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00641       H323Connection & connection,    
00642       const PString & callerName,       
00643       const H323SignalPDU & setupPDU,   
00644       H323SignalPDU & connectPDU,       
00645       H323SignalPDU & progressPDU        
00646     );
00647     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00648        OpalConnection & connection,
00649        const PString & caller
00650     );
00651 
00662     virtual PBoolean OnAlerting(
00663       H323Connection & connection,    
00664       const H323SignalPDU & alertingPDU,  
00665       const PString & user                
00666     );
00667 
00673     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00674                                 H323SignalPDU & alerting,     
00675                                 const PString & calleeName,   
00676                                 PBoolean withMedia                
00677                                );
00678         
00683     virtual PBoolean OnSentAlerting(H323Connection & connection);
00684     
00693     virtual PBoolean OnConnectionForwarded(
00694       H323Connection & connection,    
00695       const PString & forwardParty,   
00696       const H323SignalPDU & pdu       
00697     );
00698 
00707     virtual PBoolean ForwardConnection(
00708       H323Connection & connection,    
00709       const PString & forwardParty,   
00710       const H323SignalPDU & pdu       
00711     );
00712 
00719     virtual void OnConnectionEstablished(
00720       H323Connection & connection,    
00721       const PString & token           
00722     );
00723 
00726     virtual PBoolean IsConnectionEstablished(
00727       const PString & token   
00728     );
00729 
00736     virtual void OnConnectionCleared(
00737       H323Connection & connection,    
00738       const PString & token           
00739     );
00741 
00742 
00749     virtual PBoolean OnStartLogicalChannel(
00750       H323Connection & connection,    
00751       H323Channel & channel           
00752     );
00753 
00758     virtual void OnClosedLogicalChannel(
00759       H323Connection & connection,    
00760       const H323Channel & channel     
00761     );
00762 
00770     virtual void OnRTPStatistics(
00771       const H323Connection & connection,  
00772       const RTP_Session & session         
00773     ) const;
00774 
00780     virtual void OnGatekeeperNATDetect(
00781       PIPSocket::Address publicAddr,         
00782       PString & gkIdentifier,                
00783       H323TransportAddress & gkRouteAddress  
00784     );
00786 
00796     virtual void OnHTTPServiceControl(
00797       unsigned operation,  
00798       unsigned sessionId,  
00799       const PString & url  
00800     );
00801 
00811     virtual void OnCallCreditServiceControl(
00812       const PString & amount,  
00813       PBoolean mode          
00814     );
00815 
00819     virtual void OnServiceControlSession(
00820       unsigned type,
00821       unsigned sessionid,
00822       const H323ServiceControlSession & session,
00823       H323Connection * connection
00824     );
00825 
00828     virtual H323ServiceControlSession * CreateServiceControlSession(
00829       const H225_ServiceControlDescriptor & contents
00830     );
00832 
00840     virtual PBoolean OnConferenceInvite(
00841       const H323SignalPDU & setupPDU
00842     );
00843 
00849     virtual PBoolean OnCallIndependentSupplementaryService(
00850       const H323SignalPDU & setupPDU
00851     );
00852 
00858     virtual PBoolean OnNegotiateConferenceCapabilities(
00859       const H323SignalPDU & setupPDU
00860     );
00862 
00867     virtual void SetDefaultLocalPartyName(
00868       const PString & name  
00869     );
00870 
00879     virtual void SetLocalUserName(
00880       const PString & name  
00881     );
00882 
00887     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00888 
00895     PBoolean AddAliasName(
00896       const PString & name  
00897     );
00898 
00902     PBoolean RemoveAliasName(
00903       const PString & name  
00904     );
00905 
00910     const PStringList & GetAliasNames() const { return localAliasNames; }
00911 
00914     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00915 
00919     PBoolean AddAliasNamePattern(
00920       const PString & pattern  
00921     );
00922 
00925     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00926 
00929     void SetDefaultILSServer(
00930       const PString & server
00931     ) { manager.SetDefaultILSServer(server); }
00932 
00935     PBoolean IsFastStartDisabled() const
00936       { return disableFastStart; }
00937 
00940     void DisableFastStart(
00941       PBoolean mode 
00942     ) { disableFastStart = mode; } 
00943 
00946     PBoolean IsH245TunnelingDisabled() const
00947       { return disableH245Tunneling; }
00948 
00951     void DisableH245Tunneling(
00952       PBoolean mode 
00953     ) { disableH245Tunneling = mode; } 
00954 
00957     PBoolean IsH245inSetupDisabled() const
00958       { return disableH245inSetup; }
00959 
00962     void DisableH245inSetup(
00963       PBoolean mode 
00964     ) { disableH245inSetup = mode; } 
00965 
00969     PBoolean IsH245Disabled() const
00970     { return m_bH245Disabled; }
00971 
00975     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00976     
00979     PBoolean CanDisplayAmountString() const
00980       { return canDisplayAmountString; }
00981 
00984     void SetCanDisplayAmountString(
00985       PBoolean mode 
00986     ) { canDisplayAmountString = mode; } 
00987 
00990     PBoolean CanEnforceDurationLimit() const
00991       { return canEnforceDurationLimit; }
00992 
00995     void SetCanEnforceDurationLimit(
00996       PBoolean mode 
00997     ) { canEnforceDurationLimit = mode; } 
00998 
00999 #if OPAL_H450
01000 
01002     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
01003 
01006     void SetCallIntrusionProtectionLevel(
01007       unsigned level  
01008     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01009 #endif
01010 
01013     virtual void OnReceivedInitiateReturnError();
01014 
01017     PBoolean CanAutoCallForward() const { return autoCallForward; }
01018 
01021     const H323Capabilities & GetCapabilities() const;
01022 
01025     enum TerminalTypes {
01026       e_TerminalOnly = 50,
01027       e_TerminalAndMC = 70,
01028       e_GatewayOnly = 60,
01029       e_GatewayAndMC = 80,
01030       e_GatewayAndMCWithDataMP = 90,
01031       e_GatewayAndMCWithAudioMP = 100,
01032       e_GatewayAndMCWithAVMP = 110,
01033       e_GatekeeperOnly = 120,
01034       e_GatekeeperWithDataMP = 130,
01035       e_GatekeeperWithAudioMP = 140,
01036       e_GatekeeperWithAVMP = 150,
01037       e_MCUOnly = 160,
01038       e_MCUWithDataMP = 170,
01039       e_MCUWithAudioMP = 180,
01040       e_MCUWithAVMP = 190
01041     };
01042 
01045     TerminalTypes GetTerminalType() const { return terminalType; }
01046 
01049     PBoolean IsTerminal() const;
01050 
01053     PBoolean IsGateway() const;
01054 
01057     PBoolean IsGatekeeper() const;
01058 
01061     PBoolean IsMCU() const;
01062 
01066     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01067 
01071     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01072 
01075     void SetAudioJitterDelay(
01076       unsigned minDelay,   
01077       unsigned maxDelay    
01078     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01079 
01082     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01083 
01086     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01087 
01090     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01091 
01094     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01095         
01099     virtual void LoadBaseFeatureSet();
01100 
01105     virtual bool OnFeatureInstance(
01106       int instType,
01107       const PString & identifer
01108     );
01109 
01110 #if OPAL_H460
01111 
01113     bool FeatureSetDisabled() const { return disableH460; }
01114 
01117     void FeatureSetDisable() { disableH460 = true; }
01118 
01122     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01123 #endif
01124 
01127     virtual PBoolean IsLocalAddress(
01128       const PIPSocket::Address & remoteAddress
01129     ) const { return manager.IsLocalAddress(remoteAddress); }
01130 
01133     virtual void TranslateTCPAddress(
01134       PIPSocket::Address & localAddr,
01135       const PIPSocket::Address & remoteAddr
01136     );
01137 
01140     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01141 
01144     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01145 
01148     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01149 
01152     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01153 
01156     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01157 
01160     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01161 
01164     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01165 
01168     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01169 
01172     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01173 
01176     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01177 
01180     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01181 
01184     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01185 
01188     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01189 
01192     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01193 
01196     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01197 
01200     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01201 
01204     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01205 
01208     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01209 
01212     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01213 
01216     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01217 
01220     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01221 
01224     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01225 
01228     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01229 
01232     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01233 
01236     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01237 
01240     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01241 
01244     PBoolean SetNoMediaTimeout(
01245       const PTimeInterval & newInterval  
01246     ) { return manager.SetNoMediaTimeout(newInterval); }
01247 
01250     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01251 
01254     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01255 
01258     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01259 
01262     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01263 
01267     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01268 
01272     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01273 
01276     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01277 
01280     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01281 
01284     PBoolean GetSendGRQ() const
01285     { return sendGRQ; }
01286 
01289     void SetSendGRQ(PBoolean v) 
01290     { sendGRQ = v; }
01291 
01294     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01295 
01298     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01299 
01302     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01303 
01306     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01307 
01309     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01310     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01311     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01312     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01313     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01314     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01315 
01318     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01319 
01322 #if OPAL_H450
01323     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01324 #endif
01325 
01326     PString GetDefaultTransport() const;
01328 
01329   protected:
01330     bool InternalCreateGatekeeper(H323Transport * transport);
01331     PBoolean InternalMakeCall(
01332       OpalCall & call,
01333       const PString & existingToken,           
01334       const PString & callIdentity,            
01335       unsigned capabilityLevel,                
01336       const PString & remoteParty,             
01337       void * userData,                         
01338       unsigned int options = 0,                
01339       OpalConnection::StringOptions * stringOptions = NULL 
01340     );
01341 
01342     // Configuration variables, commonly changed
01343     PStringList     localAliasNames;
01344     PStringList     localAliasPatterns;
01345     PBoolean        autoCallForward;
01346     PBoolean        disableFastStart;
01347     PBoolean        disableH245Tunneling;
01348     PBoolean        disableH245inSetup;
01349     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01350     PBoolean        canDisplayAmountString;
01351     PBoolean        canEnforceDurationLimit;
01352 #if OPAL_H450
01353     unsigned    callIntrusionProtectionLevel;
01354 #endif
01355 
01356     TerminalTypes terminalType;
01357 
01358     PBoolean          clearCallOnRoundTripFail;
01359 
01360     // Some more configuration variables, rarely changed.
01361     PTimeInterval signallingChannelCallTimeout;
01362     PTimeInterval controlChannelStartTimeout;
01363     PTimeInterval endSessionTimeout;
01364     PTimeInterval masterSlaveDeterminationTimeout;
01365     unsigned      masterSlaveDeterminationRetries;
01366     PTimeInterval capabilityExchangeTimeout;
01367     PTimeInterval logicalChannelTimeout;
01368     PTimeInterval requestModeTimeout;
01369     PTimeInterval roundTripDelayTimeout;
01370     PTimeInterval roundTripDelayRate;
01371     PTimeInterval gatekeeperRequestTimeout;
01372     unsigned      gatekeeperRequestRetries;
01373     PTimeInterval rasRequestTimeout;
01374     unsigned      rasRequestRetries;
01375     PTimeInterval registrationTimeToLive;
01376 
01377     PString       gkAccessTokenOID;
01378     PBoolean          sendGRQ;
01379 
01380     /* Protect against absence of a response to the ctIdentify reqest
01381        (Transferring Endpoint - Call Transfer with a secondary Call) */
01382     PTimeInterval callTransferT1;
01383     /* Protect against failure of completion of the call transfer operation
01384        involving a secondary Call (Transferred-to Endpoint) */
01385     PTimeInterval callTransferT2;
01386     /* Protect against failure of the Transferred Endpoint not responding
01387        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01388     PTimeInterval callTransferT3;
01389     /* May optionally operate - protects against absence of a response to the
01390        ctSetup request (Transferred Endpoint) */
01391     PTimeInterval callTransferT4;
01392 
01394     PTimeInterval callIntrusionT1;
01395     PTimeInterval callIntrusionT2;
01396     PTimeInterval callIntrusionT3;
01397     PTimeInterval callIntrusionT4;
01398     PTimeInterval callIntrusionT5;
01399     PTimeInterval callIntrusionT6;
01400 
01401     // Dynamic variables
01402     mutable H323Capabilities capabilities;
01403     H323Gatekeeper *     gatekeeper;
01404     PString              gatekeeperUsername;
01405     PString              gatekeeperPassword;
01406     H323CallIdentityDict secondaryConnectionsActive;
01407 
01408 #if OPAL_H450
01409     mutable PAtomicInteger nextH450CallIdentity;
01411 #endif
01412 
01413 #if OPAL_H460
01414     bool            disableH460;
01415     H460_FeatureSet features;
01416 #endif
01417 
01418 };
01419 
01420 #endif // OPAL_H323
01421 
01422 #endif // OPAL_H323_H323EP_H
01423 
01424 

Generated on Mon Feb 1 00:25:43 2010 for OPAL by  doxygen 1.5.1