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: 23129 $
00030  * $Author: rjongbloed $
00031  * $Date: 2009-07-22 05:19:59 +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 PSafePtr<OpalConnection> 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       OpalConnection::StringOptions * stringOptions = NULL 
00524     );
00525 
00536     PSafePtr<H323Connection> FindConnectionWithLock(
00537       const PString & token,     
00538       PSafetyMode mode = PSafeReadWrite
00539     );
00540 
00548     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00549                                    H323SignalPDU & setupPDU);
00550 
00562     virtual PBoolean OnSendCallProceeding(
00563       H323Connection & connection,
00564       H323SignalPDU & callProceedingPDU
00565     );
00566 
00578     virtual PBoolean OnSendConnect(
00579       H323Connection & connection,
00580       H323SignalPDU & connectPDU
00581     );
00582     
00594     virtual PBoolean OnIncomingCall(
00595       H323Connection & connection,    
00596       const H323SignalPDU & setupPDU,   
00597       H323SignalPDU & alertingPDU       
00598     );
00599 
00606     virtual PBoolean OnOutgoingCall(
00607       H323Connection & conn, 
00608       const H323SignalPDU & connectPDU
00609     );
00610 
00615     virtual PBoolean OnCallTransferInitiate(
00616       H323Connection & connection,    
00617       const PString & remoteParty     
00618     );
00619 
00624     virtual PBoolean OnCallTransferIdentify(
00625       H323Connection & connection    
00626     );
00627 
00632     virtual void OnSendARQ(
00633       H323Connection & conn,
00634       H225_AdmissionRequest & arq
00635     );
00636 
00643     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00644       H323Connection & connection,    
00645       const PString & callerName,       
00646       const H323SignalPDU & setupPDU,   
00647       H323SignalPDU & connectPDU,       
00648       H323SignalPDU & progressPDU        
00649     );
00650     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00651        OpalConnection & connection,
00652        const PString & caller
00653     );
00654 
00665     virtual PBoolean OnAlerting(
00666       H323Connection & connection,    
00667       const H323SignalPDU & alertingPDU,  
00668       const PString & user                
00669     );
00670 
00675     virtual PBoolean OnSendAlerting(
00676       H323Connection & connection,  
00677       H323SignalPDU & alerting,     
00678       const PString & calleeName,   
00679       PBoolean withMedia                
00680     );
00681 
00685     virtual PBoolean OnSentAlerting(
00686       H323Connection & connection
00687     );
00688 
00697     virtual PBoolean OnConnectionForwarded(
00698       H323Connection & connection,    
00699       const PString & forwardParty,   
00700       const H323SignalPDU & pdu       
00701     );
00702 
00711     virtual PBoolean ForwardConnection(
00712       H323Connection & connection,    
00713       const PString & forwardParty,   
00714       const H323SignalPDU & pdu       
00715     );
00716 
00723     virtual void OnConnectionEstablished(
00724       H323Connection & connection,    
00725       const PString & token           
00726     );
00727 
00730     virtual PBoolean IsConnectionEstablished(
00731       const PString & token   
00732     );
00733 
00740     virtual void OnConnectionCleared(
00741       H323Connection & connection,    
00742       const PString & token           
00743     );
00745 
00746 
00753     virtual PBoolean OnStartLogicalChannel(
00754       H323Connection & connection,    
00755       H323Channel & channel           
00756     );
00757 
00762     virtual void OnClosedLogicalChannel(
00763       H323Connection & connection,    
00764       const H323Channel & channel     
00765     );
00766 
00774     virtual void OnRTPStatistics(
00775       const H323Connection & connection,  
00776       const RTP_Session & session         
00777     ) const;
00778 
00784     virtual void OnGatekeeperNATDetect(
00785       PIPSocket::Address publicAddr,         
00786       PString & gkIdentifier,                
00787       H323TransportAddress & gkRouteAddress  
00788     );
00790 
00800     virtual void OnHTTPServiceControl(
00801       unsigned operation,  
00802       unsigned sessionId,  
00803       const PString & url  
00804     );
00805 
00815     virtual void OnCallCreditServiceControl(
00816       const PString & amount,  
00817       PBoolean mode          
00818     );
00819 
00823     virtual void OnServiceControlSession(
00824       unsigned type,
00825       unsigned sessionid,
00826       const H323ServiceControlSession & session,
00827       H323Connection * connection
00828     );
00829 
00832     virtual H323ServiceControlSession * CreateServiceControlSession(
00833       const H225_ServiceControlDescriptor & contents
00834     );
00836 
00844     virtual PBoolean OnConferenceInvite(
00845       const H323SignalPDU & setupPDU
00846     );
00847 
00853     virtual PBoolean OnCallIndependentSupplementaryService(
00854       const H323SignalPDU & setupPDU
00855     );
00856 
00862     virtual PBoolean OnNegotiateConferenceCapabilities(
00863       const H323SignalPDU & setupPDU
00864     );
00866 
00871     virtual void SetDefaultLocalPartyName(
00872       const PString & name  
00873     );
00874 
00883     virtual void SetLocalUserName(
00884       const PString & name  
00885     );
00886 
00891     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00892 
00899     PBoolean AddAliasName(
00900       const PString & name  
00901     );
00902 
00906     PBoolean RemoveAliasName(
00907       const PString & name  
00908     );
00909 
00914     const PStringList & GetAliasNames() const { return localAliasNames; }
00915 
00918     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00919 
00923     PBoolean AddAliasNamePattern(
00924       const PString & pattern  
00925     );
00926 
00929     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00930 
00933     void SetDefaultILSServer(
00934       const PString & server
00935     ) { manager.SetDefaultILSServer(server); }
00936 
00939     PBoolean IsFastStartDisabled() const
00940       { return disableFastStart; }
00941 
00944     void DisableFastStart(
00945       PBoolean mode 
00946     ) { disableFastStart = mode; } 
00947 
00950     PBoolean IsH245TunnelingDisabled() const
00951       { return disableH245Tunneling; }
00952 
00955     void DisableH245Tunneling(
00956       PBoolean mode 
00957     ) { disableH245Tunneling = mode; } 
00958 
00961     PBoolean IsH245inSetupDisabled() const
00962       { return disableH245inSetup; }
00963 
00966     void DisableH245inSetup(
00967       PBoolean mode 
00968     ) { disableH245inSetup = mode; } 
00969 
00973     PBoolean IsH245Disabled() const
00974     { return m_bH245Disabled; }
00975 
00979     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00980     
00983     PBoolean CanDisplayAmountString() const
00984       { return canDisplayAmountString; }
00985 
00988     void SetCanDisplayAmountString(
00989       PBoolean mode 
00990     ) { canDisplayAmountString = mode; } 
00991 
00994     PBoolean CanEnforceDurationLimit() const
00995       { return canEnforceDurationLimit; }
00996 
00999     void SetCanEnforceDurationLimit(
01000       PBoolean mode 
01001     ) { canEnforceDurationLimit = mode; } 
01002 
01003 #if OPAL_H450
01004 
01006     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
01007 
01010     void SetCallIntrusionProtectionLevel(
01011       unsigned level  
01012     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01013 #endif
01014 
01017     virtual void OnReceivedInitiateReturnError();
01018 
01021     PBoolean CanAutoCallForward() const { return autoCallForward; }
01022 
01025     const H323Capabilities & GetCapabilities() const;
01026 
01029     enum TerminalTypes {
01030       e_TerminalOnly = 50,
01031       e_TerminalAndMC = 70,
01032       e_GatewayOnly = 60,
01033       e_GatewayAndMC = 80,
01034       e_GatewayAndMCWithDataMP = 90,
01035       e_GatewayAndMCWithAudioMP = 100,
01036       e_GatewayAndMCWithAVMP = 110,
01037       e_GatekeeperOnly = 120,
01038       e_GatekeeperWithDataMP = 130,
01039       e_GatekeeperWithAudioMP = 140,
01040       e_GatekeeperWithAVMP = 150,
01041       e_MCUOnly = 160,
01042       e_MCUWithDataMP = 170,
01043       e_MCUWithAudioMP = 180,
01044       e_MCUWithAVMP = 190
01045     };
01046 
01049     TerminalTypes GetTerminalType() const { return terminalType; }
01050 
01053     PBoolean IsTerminal() const;
01054 
01057     PBoolean IsGateway() const;
01058 
01061     PBoolean IsGatekeeper() const;
01062 
01065     PBoolean IsMCU() const;
01066 
01070     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01071 
01075     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01076 
01079     void SetAudioJitterDelay(
01080       unsigned minDelay,   
01081       unsigned maxDelay    
01082     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01083 
01086     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01087 
01090     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01091 
01092 #if OPAL_H239
01093 
01095     bool GetDefaultH239Control() const { return m_defaultH239Control; }
01096 
01099     void SetDefaultH239Control(
01100       bool on   
01101     ) { m_defaultH239Control = on; }
01102 #endif
01103 
01106     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01107 
01110     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01111         
01115     virtual void LoadBaseFeatureSet();
01116 
01121     virtual bool OnFeatureInstance(
01122       int instType,
01123       const PString & identifer
01124     );
01125 
01126 #if OPAL_H460
01127 
01129     bool FeatureSetDisabled() const { return disableH460; }
01130 
01133     void FeatureSetDisable() { disableH460 = true; }
01134 
01138     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01139 #endif
01140 
01143     virtual PBoolean IsLocalAddress(
01144       const PIPSocket::Address & remoteAddress
01145     ) const { return manager.IsLocalAddress(remoteAddress); }
01146 
01149     virtual void TranslateTCPAddress(
01150       PIPSocket::Address & localAddr,
01151       const PIPSocket::Address & remoteAddr
01152     );
01153 
01156     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01157 
01160     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01161 
01164     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01165 
01168     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01169 
01172     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01173 
01176     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01177 
01180     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01181 
01184     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01185 
01188     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01189 
01192     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01193 
01196     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01197 
01200     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01201 
01204     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01205 
01208     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01209 
01212     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01213 
01216     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01217 
01220     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01221 
01224     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01225 
01228     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01229 
01232     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01233 
01236     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01237 
01240     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01241 
01244     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01245 
01248     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01249 
01252     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01253 
01256     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01257 
01260     PBoolean SetNoMediaTimeout(
01261       const PTimeInterval & newInterval  
01262     ) { return manager.SetNoMediaTimeout(newInterval); }
01263 
01266     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01267 
01270     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01271 
01274     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01275 
01278     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01279 
01283     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01284 
01288     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01289 
01292     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01293 
01296     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01297 
01300     PBoolean GetSendGRQ() const
01301     { return sendGRQ; }
01302 
01305     void SetSendGRQ(PBoolean v) 
01306     { sendGRQ = v; }
01307 
01310     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01311 
01314     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01315 
01318     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01319 
01322     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01323 
01325     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01326     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01327     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01328     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01329     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01330     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01331 
01334     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01335 
01338 #if OPAL_H450
01339     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01340 #endif
01341 
01342     PString GetDefaultTransport() const;
01344 
01345   protected:
01346     bool InternalCreateGatekeeper(H323Transport * transport);
01347     H323Connection * InternalMakeCall(
01348       OpalCall & call,
01349       const PString & existingToken,           
01350       const PString & callIdentity,            
01351       unsigned capabilityLevel,                
01352       const PString & remoteParty,             
01353       void * userData,                         
01354       unsigned int options = 0,                
01355       OpalConnection::StringOptions * stringOptions = NULL 
01356     );
01357 
01358     // Configuration variables, commonly changed
01359     PStringList     localAliasNames;
01360     PStringList     localAliasPatterns;
01361     PBoolean        autoCallForward;
01362     PBoolean        disableFastStart;
01363     PBoolean        disableH245Tunneling;
01364     PBoolean        disableH245inSetup;
01365     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01366     PBoolean        canDisplayAmountString;
01367     PBoolean        canEnforceDurationLimit;
01368 #if OPAL_H450
01369     unsigned        callIntrusionProtectionLevel;
01370 #endif
01371 
01372     TerminalTypes   terminalType;
01373 
01374 #if OPAL_H239
01375     bool            m_defaultH239Control;
01376 #endif
01377 
01378     PBoolean        clearCallOnRoundTripFail;
01379 
01380     // Some more configuration variables, rarely changed.
01381     PTimeInterval signallingChannelCallTimeout;
01382     PTimeInterval controlChannelStartTimeout;
01383     PTimeInterval endSessionTimeout;
01384     PTimeInterval masterSlaveDeterminationTimeout;
01385     unsigned      masterSlaveDeterminationRetries;
01386     PTimeInterval capabilityExchangeTimeout;
01387     PTimeInterval logicalChannelTimeout;
01388     PTimeInterval requestModeTimeout;
01389     PTimeInterval roundTripDelayTimeout;
01390     PTimeInterval roundTripDelayRate;
01391     PTimeInterval gatekeeperRequestTimeout;
01392     unsigned      gatekeeperRequestRetries;
01393     PTimeInterval rasRequestTimeout;
01394     unsigned      rasRequestRetries;
01395     PTimeInterval registrationTimeToLive;
01396 
01397     PString       gkAccessTokenOID;
01398     PBoolean          sendGRQ;
01399 
01400     /* Protect against absence of a response to the ctIdentify reqest
01401        (Transferring Endpoint - Call Transfer with a secondary Call) */
01402     PTimeInterval callTransferT1;
01403     /* Protect against failure of completion of the call transfer operation
01404        involving a secondary Call (Transferred-to Endpoint) */
01405     PTimeInterval callTransferT2;
01406     /* Protect against failure of the Transferred Endpoint not responding
01407        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01408     PTimeInterval callTransferT3;
01409     /* May optionally operate - protects against absence of a response to the
01410        ctSetup request (Transferred Endpoint) */
01411     PTimeInterval callTransferT4;
01412 
01414     PTimeInterval callIntrusionT1;
01415     PTimeInterval callIntrusionT2;
01416     PTimeInterval callIntrusionT3;
01417     PTimeInterval callIntrusionT4;
01418     PTimeInterval callIntrusionT5;
01419     PTimeInterval callIntrusionT6;
01420 
01421     // Dynamic variables
01422     mutable H323Capabilities capabilities;
01423     H323Gatekeeper *     gatekeeper;
01424     PString              gatekeeperUsername;
01425     PString              gatekeeperPassword;
01426     H323CallIdentityDict secondaryConnectionsActive;
01427 
01428 #if OPAL_H450
01429     mutable PAtomicInteger nextH450CallIdentity;
01431 #endif
01432 
01433 #if OPAL_H460
01434     bool            disableH460;
01435     H460_FeatureSet features;
01436 #endif
01437 
01438 };
01439 
01440 #endif // OPAL_H323
01441 
01442 #endif // OPAL_H323_H323EP_H
01443 
01444 

Generated on Mon Aug 3 20:50:13 2009 for OPAL by  doxygen 1.5.1