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: 24813 $
00030  * $Author: rjongbloed $
00031  * $Date: 2010-10-21 03:18:03 -0500 (Thu, 21 Oct 2010) $
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 #include <asn/h225.h>
00053 
00054 #if OPAL_H460
00055 #include <h460/h4601.h>
00056 #endif
00057 
00058 
00059 class H225_EndpointType;
00060 class H225_VendorIdentifier;
00061 class H225_H221NonStandard;
00062 class H225_ServiceControlDescriptor;
00063 class H225_FeatureSet;
00064 
00065 class H235SecurityInfo;
00066 
00067 class H323Gatekeeper;
00068 class H323SignalPDU;
00069 class H323ServiceControlSession;
00070 
00072 
00085 class H323EndPoint : public OpalRTPEndPoint
00086 {
00087   PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
00088 
00089   public:
00090     enum {
00091       DefaultTcpSignalPort = 1720
00092     };
00093 
00098     H323EndPoint(
00099       OpalManager & manager
00100     );
00101 
00104     ~H323EndPoint();
00106 
00113     virtual void ShutDown();
00114 
00144     virtual PSafePtr<OpalConnection> MakeConnection(
00145       OpalCall & call,                  
00146       const PString & party,            
00147       void * userData  = NULL,          
00148       unsigned int options = NULL,      
00149       OpalConnection::StringOptions * stringOptions = NULL
00150     );
00152 
00157     virtual void SetEndpointTypeInfo(
00158       H225_EndpointType & info
00159     ) const;
00160 
00163     virtual void SetVendorIdentifierInfo(
00164       H225_VendorIdentifier & info
00165     ) const;
00166 
00169     virtual void SetH221NonStandardInfo(
00170       H225_H221NonStandard & info
00171     ) const;
00172 
00175     virtual bool SetGatewaySupportedProtocol(
00176       H225_ArrayOf_SupportedProtocols & protocols
00177     ) const;
00178 
00182     virtual bool OnSetGatewayPrefixes(
00183       PStringList & prefixes
00184     ) const;
00186 
00187 
00198     void AddCapability(
00199       H323Capability * capability   
00200     );
00201 
00222     PINDEX SetCapability(
00223       PINDEX descriptorNum, 
00224       PINDEX simultaneous,  
00225       H323Capability * cap  
00226     );
00227 
00232     PINDEX AddAllCapabilities(
00233       PINDEX descriptorNum, 
00234       PINDEX simultaneous,  
00235       const PString & name  
00236     );
00237 
00240     void AddAllUserInputCapabilities(
00241       PINDEX descriptorNum, 
00242       PINDEX simultaneous   
00243     );
00244 
00247     void RemoveCapabilities(
00248       const PStringArray & codecNames
00249     );
00250 
00253     void ReorderCapabilities(
00254       const PStringArray & preferenceOrder
00255     );
00256 
00259     H323Capability * FindCapability(
00260       const H245_Capability & cap  
00261     ) const;
00262 
00265     H323Capability * FindCapability(
00266       const H245_DataType & dataType  
00267     ) const;
00268 
00271     H323Capability * FindCapability(
00272       H323Capability::MainTypes mainType,   
00273       unsigned subType                      
00274     ) const;
00276 
00299     PBoolean UseGatekeeper(
00300       const PString & address = PString::Empty(),     
00301       const PString & identifier = PString::Empty(),  
00302       const PString & localAddress = PString::Empty() 
00303     );
00304 
00315     PBoolean SetGatekeeper(
00316       const PString & address,          
00317       H323Transport * transport = NULL  
00318     );
00319 
00334     PBoolean SetGatekeeperZone(
00335       const PString & address,          
00336       const PString & identifier,       
00337       H323Transport * transport = NULL  
00338     );
00339 
00349     PBoolean LocateGatekeeper(
00350       const PString & identifier,       
00351       H323Transport * transport = NULL  
00352     );
00353 
00362     PBoolean DiscoverGatekeeper(
00363       H323Transport * transport = NULL  
00364     );
00365 
00373     virtual H323Gatekeeper * CreateGatekeeper(
00374       H323Transport * transport  
00375     );
00376 
00379     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00380 
00383     PBoolean IsRegisteredWithGatekeeper() const;
00384 
00390     PBoolean RemoveGatekeeper(
00391       int reason = -1    
00392     );
00393 
00396     virtual void SetGatekeeperPassword(
00397       const PString & password,
00398       const PString & username = PString::Empty()
00399     );
00400 
00403     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00404 
00407     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00408 
00411     virtual H235Authenticators CreateAuthenticators();
00412 
00415     virtual void  OnGatekeeperConfirm();
00416 
00419     virtual void  OnGatekeeperReject();
00420 
00423     virtual void OnRegistrationConfirm();
00424 
00427     virtual void  OnRegistrationReject();
00429 
00434     virtual PBoolean NewIncomingConnection(
00435       OpalTransport * transport  
00436     );
00437 
00440     virtual H323Connection * CreateConnection(
00441       OpalCall & call,                         
00442       const PString & token,                   
00443       void * userData,                         
00444       OpalTransport & transport,               
00445       const PString & alias,                   
00446       const H323TransportAddress & address,    
00447       H323SignalPDU * setupPDU,                
00448       unsigned options = 0,
00449       OpalConnection::StringOptions * stringOptions = NULL 
00450     );
00451 
00467     virtual PBoolean SetupTransfer(
00468       const PString & token,        
00469       const PString & callIdentity, 
00470       const PString & remoteParty,  
00471       void * userData = NULL        
00472     );
00473 
00479     void TransferCall(
00480       const PString & token,        
00481       const PString & remoteParty,  
00482       const PString & callIdentity = PString::Empty()
00484     );
00485 
00492     void ConsultationTransfer(
00493       const PString & primaryCallToken,   
00494       const PString & secondaryCallToken  
00495     );
00496 
00500     void HoldCall(
00501       const PString & token,        
00502       PBoolean localHold   
00503     );
00504 
00508     PBoolean IntrudeCall(
00509       const PString & remoteParty,  
00510       unsigned capabilityLevel,     
00511       void * userData = NULL        
00512     );
00513 
00520     PBoolean ParsePartyName(
00521       const PString & party,          
00522       PString & alias,                
00523       H323TransportAddress & address, 
00524       OpalConnection::StringOptions * stringOptions = NULL 
00525     );
00526 
00537     PSafePtr<H323Connection> FindConnectionWithLock(
00538       const PString & token,     
00539       PSafetyMode mode = PSafeReadWrite
00540     );
00541 
00549     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00550                                    H323SignalPDU & setupPDU);
00551 
00563     virtual PBoolean OnSendCallProceeding(
00564       H323Connection & connection,
00565       H323SignalPDU & callProceedingPDU
00566     );
00567 
00579     virtual PBoolean OnSendConnect(
00580       H323Connection & connection,
00581       H323SignalPDU & connectPDU
00582     );
00583     
00595     virtual PBoolean OnIncomingCall(
00596       H323Connection & connection,    
00597       const H323SignalPDU & setupPDU,   
00598       H323SignalPDU & alertingPDU       
00599     );
00600 
00607     virtual PBoolean OnOutgoingCall(
00608       H323Connection & conn, 
00609       const H323SignalPDU & connectPDU
00610     );
00611 
00616     virtual PBoolean OnCallTransferInitiate(
00617       H323Connection & connection,    
00618       const PString & remoteParty     
00619     );
00620 
00625     virtual PBoolean OnCallTransferIdentify(
00626       H323Connection & connection    
00627     );
00628 
00633     virtual void OnSendARQ(
00634       H323Connection & conn,
00635       H225_AdmissionRequest & arq
00636     );
00637 
00644     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00645       H323Connection & connection,    
00646       const PString & callerName,       
00647       const H323SignalPDU & setupPDU,   
00648       H323SignalPDU & connectPDU,       
00649       H323SignalPDU & progressPDU        
00650     );
00651     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00652        OpalConnection & connection,
00653        const PString & caller
00654     );
00655 
00666     virtual PBoolean OnAlerting(
00667       H323Connection & connection,    
00668       const H323SignalPDU & alertingPDU,  
00669       const PString & user                
00670     );
00671 
00676     virtual PBoolean OnSendAlerting(
00677       H323Connection & connection,  
00678       H323SignalPDU & alerting,     
00679       const PString & calleeName,   
00680       PBoolean withMedia                
00681     );
00682 
00686     virtual PBoolean OnSentAlerting(
00687       H323Connection & connection
00688     );
00689 
00698     virtual PBoolean OnConnectionForwarded(
00699       H323Connection & connection,    
00700       const PString & forwardParty,   
00701       const H323SignalPDU & pdu       
00702     );
00703 
00712     virtual PBoolean ForwardConnection(
00713       H323Connection & connection,    
00714       const PString & forwardParty,   
00715       const H323SignalPDU & pdu       
00716     );
00717 
00724     virtual void OnConnectionEstablished(
00725       H323Connection & connection,    
00726       const PString & token           
00727     );
00728 
00731     virtual PBoolean IsConnectionEstablished(
00732       const PString & token   
00733     );
00735 
00736 
00743     virtual PBoolean OnStartLogicalChannel(
00744       H323Connection & connection,    
00745       H323Channel & channel           
00746     );
00747 
00752     virtual void OnClosedLogicalChannel(
00753       H323Connection & connection,    
00754       const H323Channel & channel     
00755     );
00756 
00764     virtual void OnRTPStatistics(
00765       const H323Connection & connection,  
00766       const RTP_Session & session         
00767     ) const;
00768 
00774     virtual void OnGatekeeperNATDetect(
00775       PIPSocket::Address publicAddr,         
00776       PString & gkIdentifier,                
00777       H323TransportAddress & gkRouteAddress  
00778     );
00780 
00790     virtual void OnHTTPServiceControl(
00791       unsigned operation,  
00792       unsigned sessionId,  
00793       const PString & url  
00794     );
00795 
00805     virtual void OnCallCreditServiceControl(
00806       const PString & amount,  
00807       PBoolean mode          
00808     );
00809 
00813     virtual void OnServiceControlSession(
00814       unsigned type,
00815       unsigned sessionid,
00816       const H323ServiceControlSession & session,
00817       H323Connection * connection
00818     );
00819 
00822     virtual H323ServiceControlSession * CreateServiceControlSession(
00823       const H225_ServiceControlDescriptor & contents
00824     );
00826 
00834     virtual PBoolean OnConferenceInvite(
00835       const H323SignalPDU & setupPDU
00836     );
00837 
00843     virtual PBoolean OnCallIndependentSupplementaryService(
00844       const H323SignalPDU & setupPDU
00845     );
00846 
00852     virtual PBoolean OnNegotiateConferenceCapabilities(
00853       const H323SignalPDU & setupPDU
00854     );
00856 
00861     virtual void SetDefaultLocalPartyName(
00862       const PString & name  
00863     );
00864 
00873     virtual void SetLocalUserName(
00874       const PString & name  
00875     );
00876 
00881     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00882 
00889     PBoolean AddAliasName(
00890       const PString & name  
00891     );
00892 
00896     PBoolean RemoveAliasName(
00897       const PString & name  
00898     );
00899 
00904     const PStringList & GetAliasNames() const { return localAliasNames; }
00905 
00908     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00909 
00913     PBoolean AddAliasNamePattern(
00914       const PString & pattern  
00915     );
00916 
00919     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00920 
00923     void SetDefaultILSServer(
00924       const PString & server
00925     ) { manager.SetDefaultILSServer(server); }
00926 
00929     PBoolean IsFastStartDisabled() const
00930       { return disableFastStart; }
00931 
00934     void DisableFastStart(
00935       PBoolean mode 
00936     ) { disableFastStart = mode; } 
00937 
00940     PBoolean IsH245TunnelingDisabled() const
00941       { return disableH245Tunneling; }
00942 
00945     void DisableH245Tunneling(
00946       PBoolean mode 
00947     ) { disableH245Tunneling = mode; } 
00948 
00951     PBoolean IsH245inSetupDisabled() const
00952       { return disableH245inSetup; }
00953 
00956     void DisableH245inSetup(
00957       PBoolean mode 
00958     ) { disableH245inSetup = mode; } 
00959 
00963     PBoolean IsH245Disabled() const
00964     { return m_bH245Disabled; }
00965 
00969     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00970     
00973     PBoolean CanDisplayAmountString() const
00974       { return canDisplayAmountString; }
00975 
00978     void SetCanDisplayAmountString(
00979       PBoolean mode 
00980     ) { canDisplayAmountString = mode; } 
00981 
00984     PBoolean CanEnforceDurationLimit() const
00985       { return canEnforceDurationLimit; }
00986 
00989     void SetCanEnforceDurationLimit(
00990       PBoolean mode 
00991     ) { canEnforceDurationLimit = mode; } 
00992 
00993 #if OPAL_H450
00994 
00996     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00997 
01000     void SetCallIntrusionProtectionLevel(
01001       unsigned level  
01002     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01003 #endif
01004 
01007     virtual void OnReceivedInitiateReturnError();
01008 
01011     PBoolean CanAutoCallForward() const { return autoCallForward; }
01012 
01015     const H323Capabilities & GetCapabilities() const;
01016 
01019     enum TerminalTypes {
01020       e_TerminalOnly = 50,
01021       e_TerminalAndMC = 70,
01022       e_GatewayOnly = 60,
01023       e_GatewayAndMC = 80,
01024       e_GatewayAndMCWithDataMP = 90,
01025       e_GatewayAndMCWithAudioMP = 100,
01026       e_GatewayAndMCWithAVMP = 110,
01027       e_GatekeeperOnly = 120,
01028       e_GatekeeperWithDataMP = 130,
01029       e_GatekeeperWithAudioMP = 140,
01030       e_GatekeeperWithAVMP = 150,
01031       e_MCUOnly = 160,
01032       e_MCUWithDataMP = 170,
01033       e_MCUWithAudioMP = 180,
01034       e_MCUWithAVMP = 190
01035     };
01036 
01039     TerminalTypes GetTerminalType() const { return terminalType; }
01040 
01043     PBoolean IsTerminal() const;
01044 
01047     PBoolean IsGateway() const;
01048 
01051     PBoolean IsGatekeeper() const;
01052 
01055     PBoolean IsMCU() const;
01056 
01060     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01061 
01065     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01066 
01069     void SetAudioJitterDelay(
01070       unsigned minDelay,   
01071       unsigned maxDelay    
01072     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01073 
01076     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01077 
01080     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01081 
01082 #if OPAL_H239
01083 
01085     bool GetDefaultH239Control() const { return m_defaultH239Control; }
01086 
01089     void SetDefaultH239Control(
01090       bool on   
01091     ) { m_defaultH239Control = on; }
01092 #endif
01093 
01096     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01097 
01100     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01101         
01105     virtual void LoadBaseFeatureSet();
01106 
01111     virtual bool OnFeatureInstance(
01112       int instType,
01113       const PString & identifer
01114     );
01115 
01116 #if OPAL_H460
01117 
01119     bool FeatureSetDisabled() const { return disableH460; }
01120 
01123     void FeatureSetDisable() { disableH460 = true; }
01124 
01128     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01129 #endif
01130 
01133     virtual PBoolean IsLocalAddress(
01134       const PIPSocket::Address & remoteAddress
01135     ) const { return manager.IsLocalAddress(remoteAddress); }
01136 
01139     virtual void TranslateTCPAddress(
01140       PIPSocket::Address & localAddr,
01141       const PIPSocket::Address & remoteAddr
01142     );
01143 
01146     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01147 
01150     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01151 
01154     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01155 
01158     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01159 
01162     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01163 
01166     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01167 
01170     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01171 
01174     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01175 
01178     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01179 
01182     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01183 
01186     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01187 
01190     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01191 
01194     BYTE P_DEPRECATED GetRtpIpTypeofService() const { return manager.GetMediaTypeOfService(); }
01195 
01198     void P_DEPRECATED SetRtpIpTypeofService(unsigned tos) { manager.SetMediaTypeOfService(tos); }
01199 
01202     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01203 
01206     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01207 
01210     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01211 
01214     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01215 
01218     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01219 
01222     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01223 
01226     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01227 
01230     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01231 
01234     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01235 
01238     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01239 
01242     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01243 
01246     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01247 
01250     PBoolean SetNoMediaTimeout(
01251       const PTimeInterval & newInterval  
01252     ) { return manager.SetNoMediaTimeout(newInterval); }
01253 
01256     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01257 
01260     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01261 
01264     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01265 
01268     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01269 
01273     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01274 
01278     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01279 
01282     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01283 
01286     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01287 
01290     PBoolean GetSendGRQ() const
01291     { return sendGRQ; }
01292 
01295     void SetSendGRQ(PBoolean v) 
01296     { sendGRQ = v; }
01297 
01300     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01301 
01304     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01305 
01308     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01309 
01312     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01313 
01315     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01316     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01317     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01318     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01319     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01320     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01321 
01324     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01325 
01328 #if OPAL_H450
01329     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01330 #endif
01331 
01332     PString GetDefaultTransport() const;
01334 
01335   protected:
01336     bool InternalCreateGatekeeper(H323Transport * transport);
01337     H323Connection * InternalMakeCall(
01338       OpalCall & call,
01339       const PString & existingToken,           
01340       const PString & callIdentity,            
01341       unsigned capabilityLevel,                
01342       const PString & remoteParty,             
01343       void * userData,                         
01344       unsigned int options = 0,                
01345       OpalConnection::StringOptions * stringOptions = NULL 
01346     );
01347 
01348     // Configuration variables, commonly changed
01349     PStringList     localAliasNames;
01350     PStringList     localAliasPatterns;
01351     PBoolean        autoCallForward;
01352     PBoolean        disableFastStart;
01353     PBoolean        disableH245Tunneling;
01354     PBoolean        disableH245inSetup;
01355     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01356     PBoolean        canDisplayAmountString;
01357     PBoolean        canEnforceDurationLimit;
01358 #if OPAL_H450
01359     unsigned        callIntrusionProtectionLevel;
01360 #endif
01361 
01362     TerminalTypes   terminalType;
01363 
01364 #if OPAL_H239
01365     bool            m_defaultH239Control;
01366 #endif
01367 
01368     PBoolean        clearCallOnRoundTripFail;
01369 
01370     // Some more configuration variables, rarely changed.
01371     PTimeInterval signallingChannelCallTimeout;
01372     PTimeInterval controlChannelStartTimeout;
01373     PTimeInterval endSessionTimeout;
01374     PTimeInterval masterSlaveDeterminationTimeout;
01375     unsigned      masterSlaveDeterminationRetries;
01376     PTimeInterval capabilityExchangeTimeout;
01377     PTimeInterval logicalChannelTimeout;
01378     PTimeInterval requestModeTimeout;
01379     PTimeInterval roundTripDelayTimeout;
01380     PTimeInterval roundTripDelayRate;
01381     PTimeInterval gatekeeperRequestTimeout;
01382     unsigned      gatekeeperRequestRetries;
01383     PTimeInterval rasRequestTimeout;
01384     unsigned      rasRequestRetries;
01385     PTimeInterval registrationTimeToLive;
01386 
01387     PString       gkAccessTokenOID;
01388     PBoolean          sendGRQ;
01389 
01390     /* Protect against absence of a response to the ctIdentify reqest
01391        (Transferring Endpoint - Call Transfer with a secondary Call) */
01392     PTimeInterval callTransferT1;
01393     /* Protect against failure of completion of the call transfer operation
01394        involving a secondary Call (Transferred-to Endpoint) */
01395     PTimeInterval callTransferT2;
01396     /* Protect against failure of the Transferred Endpoint not responding
01397        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01398     PTimeInterval callTransferT3;
01399     /* May optionally operate - protects against absence of a response to the
01400        ctSetup request (Transferred Endpoint) */
01401     PTimeInterval callTransferT4;
01402 
01404     PTimeInterval callIntrusionT1;
01405     PTimeInterval callIntrusionT2;
01406     PTimeInterval callIntrusionT3;
01407     PTimeInterval callIntrusionT4;
01408     PTimeInterval callIntrusionT5;
01409     PTimeInterval callIntrusionT6;
01410 
01411     // Dynamic variables
01412     mutable H323Capabilities capabilities;
01413     H323Gatekeeper *     gatekeeper;
01414     PString              gatekeeperUsername;
01415     PString              gatekeeperPassword;
01416     H323CallIdentityDict secondaryConnectionsActive;
01417 
01418 #if OPAL_H450
01419     mutable PAtomicInteger nextH450CallIdentity;
01421 #endif
01422 
01423 #if OPAL_H460
01424     bool            disableH460;
01425     H460_FeatureSet features;
01426 #endif
01427 
01428   private:
01429     P_REMOVE_VIRTUAL_VOID(OnConnectionCleared(H323Connection &, const PString &));
01430 };
01431 
01432 #endif // OPAL_H323
01433 
01434 #endif // OPAL_H323_H323EP_H
01435 
01436 

Generated on Sun Nov 21 20:20:50 2010 for OPAL by  doxygen 1.4.7