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: 23525 $
00030  * $Author: csoutheren $
00031  * $Date: 2009-09-24 01:02:24 -0500 (Thu, 24 Sep 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 #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     );
00734 
00741     virtual void OnConnectionCleared(
00742       H323Connection & connection,    
00743       const PString & token           
00744     );
00746 
00747 
00754     virtual PBoolean OnStartLogicalChannel(
00755       H323Connection & connection,    
00756       H323Channel & channel           
00757     );
00758 
00763     virtual void OnClosedLogicalChannel(
00764       H323Connection & connection,    
00765       const H323Channel & channel     
00766     );
00767 
00775     virtual void OnRTPStatistics(
00776       const H323Connection & connection,  
00777       const RTP_Session & session         
00778     ) const;
00779 
00785     virtual void OnGatekeeperNATDetect(
00786       PIPSocket::Address publicAddr,         
00787       PString & gkIdentifier,                
00788       H323TransportAddress & gkRouteAddress  
00789     );
00791 
00801     virtual void OnHTTPServiceControl(
00802       unsigned operation,  
00803       unsigned sessionId,  
00804       const PString & url  
00805     );
00806 
00816     virtual void OnCallCreditServiceControl(
00817       const PString & amount,  
00818       PBoolean mode          
00819     );
00820 
00824     virtual void OnServiceControlSession(
00825       unsigned type,
00826       unsigned sessionid,
00827       const H323ServiceControlSession & session,
00828       H323Connection * connection
00829     );
00830 
00833     virtual H323ServiceControlSession * CreateServiceControlSession(
00834       const H225_ServiceControlDescriptor & contents
00835     );
00837 
00845     virtual PBoolean OnConferenceInvite(
00846       const H323SignalPDU & setupPDU
00847     );
00848 
00854     virtual PBoolean OnCallIndependentSupplementaryService(
00855       const H323SignalPDU & setupPDU
00856     );
00857 
00863     virtual PBoolean OnNegotiateConferenceCapabilities(
00864       const H323SignalPDU & setupPDU
00865     );
00867 
00872     virtual void SetDefaultLocalPartyName(
00873       const PString & name  
00874     );
00875 
00884     virtual void SetLocalUserName(
00885       const PString & name  
00886     );
00887 
00892     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00893 
00900     PBoolean AddAliasName(
00901       const PString & name  
00902     );
00903 
00907     PBoolean RemoveAliasName(
00908       const PString & name  
00909     );
00910 
00915     const PStringList & GetAliasNames() const { return localAliasNames; }
00916 
00919     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00920 
00924     PBoolean AddAliasNamePattern(
00925       const PString & pattern  
00926     );
00927 
00930     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00931 
00934     void SetDefaultILSServer(
00935       const PString & server
00936     ) { manager.SetDefaultILSServer(server); }
00937 
00940     PBoolean IsFastStartDisabled() const
00941       { return disableFastStart; }
00942 
00945     void DisableFastStart(
00946       PBoolean mode 
00947     ) { disableFastStart = mode; } 
00948 
00951     PBoolean IsH245TunnelingDisabled() const
00952       { return disableH245Tunneling; }
00953 
00956     void DisableH245Tunneling(
00957       PBoolean mode 
00958     ) { disableH245Tunneling = mode; } 
00959 
00962     PBoolean IsH245inSetupDisabled() const
00963       { return disableH245inSetup; }
00964 
00967     void DisableH245inSetup(
00968       PBoolean mode 
00969     ) { disableH245inSetup = mode; } 
00970 
00974     PBoolean IsH245Disabled() const
00975     { return m_bH245Disabled; }
00976 
00980     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00981     
00984     PBoolean CanDisplayAmountString() const
00985       { return canDisplayAmountString; }
00986 
00989     void SetCanDisplayAmountString(
00990       PBoolean mode 
00991     ) { canDisplayAmountString = mode; } 
00992 
00995     PBoolean CanEnforceDurationLimit() const
00996       { return canEnforceDurationLimit; }
00997 
01000     void SetCanEnforceDurationLimit(
01001       PBoolean mode 
01002     ) { canEnforceDurationLimit = mode; } 
01003 
01004 #if OPAL_H450
01005 
01007     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
01008 
01011     void SetCallIntrusionProtectionLevel(
01012       unsigned level  
01013     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
01014 #endif
01015 
01018     virtual void OnReceivedInitiateReturnError();
01019 
01022     PBoolean CanAutoCallForward() const { return autoCallForward; }
01023 
01026     const H323Capabilities & GetCapabilities() const;
01027 
01030     enum TerminalTypes {
01031       e_TerminalOnly = 50,
01032       e_TerminalAndMC = 70,
01033       e_GatewayOnly = 60,
01034       e_GatewayAndMC = 80,
01035       e_GatewayAndMCWithDataMP = 90,
01036       e_GatewayAndMCWithAudioMP = 100,
01037       e_GatewayAndMCWithAVMP = 110,
01038       e_GatekeeperOnly = 120,
01039       e_GatekeeperWithDataMP = 130,
01040       e_GatekeeperWithAudioMP = 140,
01041       e_GatekeeperWithAVMP = 150,
01042       e_MCUOnly = 160,
01043       e_MCUWithDataMP = 170,
01044       e_MCUWithAudioMP = 180,
01045       e_MCUWithAVMP = 190
01046     };
01047 
01050     TerminalTypes GetTerminalType() const { return terminalType; }
01051 
01054     PBoolean IsTerminal() const;
01055 
01058     PBoolean IsGateway() const;
01059 
01062     PBoolean IsGatekeeper() const;
01063 
01066     PBoolean IsMCU() const;
01067 
01071     unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
01072 
01076     unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
01077 
01080     void SetAudioJitterDelay(
01081       unsigned minDelay,   
01082       unsigned maxDelay    
01083     ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
01084 
01087     unsigned GetInitialBandwidth() const { return initialBandwidth; }
01088 
01091     void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
01092 
01093 #if OPAL_H239
01094 
01096     bool GetDefaultH239Control() const { return m_defaultH239Control; }
01097 
01100     void SetDefaultH239Control(
01101       bool on   
01102     ) { m_defaultH239Control = on; }
01103 #endif
01104 
01107     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01108 
01111     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01112         
01116     virtual void LoadBaseFeatureSet();
01117 
01122     virtual bool OnFeatureInstance(
01123       int instType,
01124       const PString & identifer
01125     );
01126 
01127 #if OPAL_H460
01128 
01130     bool FeatureSetDisabled() const { return disableH460; }
01131 
01134     void FeatureSetDisable() { disableH460 = true; }
01135 
01139     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01140 #endif
01141 
01144     virtual PBoolean IsLocalAddress(
01145       const PIPSocket::Address & remoteAddress
01146     ) const { return manager.IsLocalAddress(remoteAddress); }
01147 
01150     virtual void TranslateTCPAddress(
01151       PIPSocket::Address & localAddr,
01152       const PIPSocket::Address & remoteAddr
01153     );
01154 
01157     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01158 
01161     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01162 
01165     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01166 
01169     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01170 
01173     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01174 
01177     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01178 
01181     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01182 
01185     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01186 
01189     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01190 
01193     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01194 
01197     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01198 
01201     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01202 
01205     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01206 
01209     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01210 
01213     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01214 
01217     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01218 
01221     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01222 
01225     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01226 
01229     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01230 
01233     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01234 
01237     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01238 
01241     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01242 
01245     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01246 
01249     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01250 
01253     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01254 
01257     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01258 
01261     PBoolean SetNoMediaTimeout(
01262       const PTimeInterval & newInterval  
01263     ) { return manager.SetNoMediaTimeout(newInterval); }
01264 
01267     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01268 
01271     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01272 
01275     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01276 
01279     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01280 
01284     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01285 
01289     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01290 
01293     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01294 
01297     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01298 
01301     PBoolean GetSendGRQ() const
01302     { return sendGRQ; }
01303 
01306     void SetSendGRQ(PBoolean v) 
01307     { sendGRQ = v; }
01308 
01311     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01312 
01315     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01316 
01319     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01320 
01323     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01324 
01326     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01327     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01328     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01329     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01330     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01331     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01332 
01335     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01336 
01339 #if OPAL_H450
01340     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01341 #endif
01342 
01343     PString GetDefaultTransport() const;
01345 
01346   protected:
01347     bool InternalCreateGatekeeper(H323Transport * transport);
01348     H323Connection * InternalMakeCall(
01349       OpalCall & call,
01350       const PString & existingToken,           
01351       const PString & callIdentity,            
01352       unsigned capabilityLevel,                
01353       const PString & remoteParty,             
01354       void * userData,                         
01355       unsigned int options = 0,                
01356       OpalConnection::StringOptions * stringOptions = NULL 
01357     );
01358 
01359     // Configuration variables, commonly changed
01360     PStringList     localAliasNames;
01361     PStringList     localAliasPatterns;
01362     PBoolean        autoCallForward;
01363     PBoolean        disableFastStart;
01364     PBoolean        disableH245Tunneling;
01365     PBoolean        disableH245inSetup;
01366     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01367     PBoolean        canDisplayAmountString;
01368     PBoolean        canEnforceDurationLimit;
01369 #if OPAL_H450
01370     unsigned        callIntrusionProtectionLevel;
01371 #endif
01372 
01373     TerminalTypes   terminalType;
01374 
01375 #if OPAL_H239
01376     bool            m_defaultH239Control;
01377 #endif
01378 
01379     PBoolean        clearCallOnRoundTripFail;
01380 
01381     // Some more configuration variables, rarely changed.
01382     PTimeInterval signallingChannelCallTimeout;
01383     PTimeInterval controlChannelStartTimeout;
01384     PTimeInterval endSessionTimeout;
01385     PTimeInterval masterSlaveDeterminationTimeout;
01386     unsigned      masterSlaveDeterminationRetries;
01387     PTimeInterval capabilityExchangeTimeout;
01388     PTimeInterval logicalChannelTimeout;
01389     PTimeInterval requestModeTimeout;
01390     PTimeInterval roundTripDelayTimeout;
01391     PTimeInterval roundTripDelayRate;
01392     PTimeInterval gatekeeperRequestTimeout;
01393     unsigned      gatekeeperRequestRetries;
01394     PTimeInterval rasRequestTimeout;
01395     unsigned      rasRequestRetries;
01396     PTimeInterval registrationTimeToLive;
01397 
01398     PString       gkAccessTokenOID;
01399     PBoolean          sendGRQ;
01400 
01401     /* Protect against absence of a response to the ctIdentify reqest
01402        (Transferring Endpoint - Call Transfer with a secondary Call) */
01403     PTimeInterval callTransferT1;
01404     /* Protect against failure of completion of the call transfer operation
01405        involving a secondary Call (Transferred-to Endpoint) */
01406     PTimeInterval callTransferT2;
01407     /* Protect against failure of the Transferred Endpoint not responding
01408        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01409     PTimeInterval callTransferT3;
01410     /* May optionally operate - protects against absence of a response to the
01411        ctSetup request (Transferred Endpoint) */
01412     PTimeInterval callTransferT4;
01413 
01415     PTimeInterval callIntrusionT1;
01416     PTimeInterval callIntrusionT2;
01417     PTimeInterval callIntrusionT3;
01418     PTimeInterval callIntrusionT4;
01419     PTimeInterval callIntrusionT5;
01420     PTimeInterval callIntrusionT6;
01421 
01422     // Dynamic variables
01423     mutable H323Capabilities capabilities;
01424     H323Gatekeeper *     gatekeeper;
01425     PString              gatekeeperUsername;
01426     PString              gatekeeperPassword;
01427     H323CallIdentityDict secondaryConnectionsActive;
01428 
01429 #if OPAL_H450
01430     mutable PAtomicInteger nextH450CallIdentity;
01432 #endif
01433 
01434 #if OPAL_H460
01435     bool            disableH460;
01436     H460_FeatureSet features;
01437 #endif
01438 
01439 };
01440 
01441 #endif // OPAL_H323
01442 
01443 #endif // OPAL_H323_H323EP_H
01444 
01445 

Generated on Mon Feb 21 20:19:20 2011 for OPAL by  doxygen 1.4.7