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: 21568 $
00030  * $Author: rjongbloed $
00031  * $Date: 2008-11-20 03:24:56 +0000 (Thu, 20 Nov 2008) $
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;
00172 
00173 
00184     void AddCapability(
00185       H323Capability * capability   
00186     );
00187 
00208     PINDEX SetCapability(
00209       PINDEX descriptorNum, 
00210       PINDEX simultaneous,  
00211       H323Capability * cap  
00212     );
00213 
00218     PINDEX AddAllCapabilities(
00219       PINDEX descriptorNum, 
00220       PINDEX simultaneous,  
00221       const PString & name  
00222     );
00223 
00226     void AddAllUserInputCapabilities(
00227       PINDEX descriptorNum, 
00228       PINDEX simultaneous   
00229     );
00230 
00233     void RemoveCapabilities(
00234       const PStringArray & codecNames
00235     );
00236 
00239     void ReorderCapabilities(
00240       const PStringArray & preferenceOrder
00241     );
00242 
00245     H323Capability * FindCapability(
00246       const H245_Capability & cap  
00247     ) const;
00248 
00251     H323Capability * FindCapability(
00252       const H245_DataType & dataType  
00253     ) const;
00254 
00257     H323Capability * FindCapability(
00258       H323Capability::MainTypes mainType,   
00259       unsigned subType                      
00260     ) const;
00262 
00282     PBoolean UseGatekeeper(
00283       const PString & address = PString::Empty(),     
00284       const PString & identifier = PString::Empty(),  
00285       const PString & localAddress = PString::Empty() 
00286     );
00287 
00298     PBoolean SetGatekeeper(
00299       const PString & address,          
00300       H323Transport * transport = NULL  
00301     );
00302 
00317     PBoolean SetGatekeeperZone(
00318       const PString & address,          
00319       const PString & identifier,       
00320       H323Transport * transport = NULL  
00321     );
00322 
00332     PBoolean LocateGatekeeper(
00333       const PString & identifier,       
00334       H323Transport * transport = NULL  
00335     );
00336 
00345     PBoolean DiscoverGatekeeper(
00346       H323Transport * transport = NULL  
00347     );
00348 
00356     virtual H323Gatekeeper * CreateGatekeeper(
00357       H323Transport * transport  
00358     );
00359 
00362     H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
00363 
00366     PBoolean IsRegisteredWithGatekeeper() const;
00367 
00373     PBoolean RemoveGatekeeper(
00374       int reason = -1    
00375     );
00376 
00379     virtual void SetGatekeeperPassword(
00380       const PString & password,
00381       const PString & username = PString::Empty()
00382     );
00383 
00386     virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
00387 
00390     virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
00391 
00394     virtual H235Authenticators CreateAuthenticators();
00395 
00398     virtual void  OnGatekeeperConfirm();
00399 
00402     virtual void  OnGatekeeperReject();
00403 
00406     virtual void OnRegistrationConfirm();
00407 
00410     virtual void  OnRegistrationReject();
00412 
00417     virtual PBoolean NewIncomingConnection(
00418       OpalTransport * transport  
00419     );
00420 
00423     virtual H323Connection * CreateConnection(
00424       OpalCall & call,                         
00425       const PString & token,                   
00426       void * userData,                         
00427       OpalTransport & transport,               
00428       const PString & alias,                   
00429       const H323TransportAddress & address,    
00430       H323SignalPDU * setupPDU,                
00431       unsigned options = 0,
00432       OpalConnection::StringOptions * stringOptions = NULL 
00433     );
00434 
00450     virtual PBoolean SetupTransfer(
00451       const PString & token,        
00452       const PString & callIdentity, 
00453       const PString & remoteParty,  
00454       void * userData = NULL        
00455     );
00456 
00462     void TransferCall(
00463       const PString & token,        
00464       const PString & remoteParty,  
00465       const PString & callIdentity = PString::Empty()
00467     );
00468 
00475     void ConsultationTransfer(
00476       const PString & primaryCallToken,   
00477       const PString & secondaryCallToken  
00478     );
00479 
00483     void HoldCall(
00484       const PString & token,        
00485       PBoolean localHold   
00486     );
00487 
00491     PBoolean IntrudeCall(
00492       const PString & remoteParty,  
00493       unsigned capabilityLevel,     
00494       void * userData = NULL        
00495     );
00496 
00503     PBoolean ParsePartyName(
00504       const PString & party,          
00505       PString & alias,                
00506       H323TransportAddress & address  
00507     );
00508 
00519     PSafePtr<H323Connection> FindConnectionWithLock(
00520       const PString & token,     
00521       PSafetyMode mode = PSafeReadWrite
00522     );
00523 
00531     virtual PBoolean OnSendSignalSetup(H323Connection & connection,
00532                                    H323SignalPDU & setupPDU);
00533 
00545     virtual PBoolean OnSendCallProceeding(H323Connection & connection,
00546                                       H323SignalPDU & callProceedingPDU
00547                                      );
00548     
00560     virtual PBoolean OnSendConnect(H323Connection & connection,
00561                                H323SignalPDU & connectPDU
00562                               );
00563     
00575     virtual PBoolean OnIncomingCall(
00576       H323Connection & connection,    
00577       const H323SignalPDU & setupPDU,   
00578       H323SignalPDU & alertingPDU       
00579     );
00580 
00587     virtual PBoolean OnOutgoingCall(
00588         H323Connection & conn, 
00589         const H323SignalPDU & connectPDU
00590     );
00591 
00596     virtual PBoolean OnCallTransferInitiate(
00597       H323Connection & connection,    
00598       const PString & remoteParty     
00599     );
00600 
00605     virtual PBoolean OnCallTransferIdentify(
00606       H323Connection & connection    
00607     );
00608 
00613     virtual void OnSendARQ(
00614       H323Connection & conn,
00615       H225_AdmissionRequest & arq
00616     );
00617 
00624     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00625       H323Connection & connection,    
00626       const PString & callerName,       
00627       const H323SignalPDU & setupPDU,   
00628       H323SignalPDU & connectPDU,       
00629       H323SignalPDU & progressPDU        
00630     );
00631     virtual OpalConnection::AnswerCallResponse OnAnswerCall(
00632        OpalConnection & connection,
00633        const PString & caller
00634     );
00635 
00646     virtual PBoolean OnAlerting(
00647       H323Connection & connection,    
00648       const H323SignalPDU & alertingPDU,  
00649       const PString & user                
00650     );
00651 
00657     virtual PBoolean OnSendAlerting(H323Connection & connection,  
00658                                 H323SignalPDU & alerting,     
00659                                 const PString & calleeName,   
00660                                 PBoolean withMedia                
00661                                );
00662         
00667     virtual PBoolean OnSentAlerting(H323Connection & connection);
00668     
00677     virtual PBoolean OnConnectionForwarded(
00678       H323Connection & connection,    
00679       const PString & forwardParty,   
00680       const H323SignalPDU & pdu       
00681     );
00682 
00691     virtual PBoolean ForwardConnection(
00692       H323Connection & connection,    
00693       const PString & forwardParty,   
00694       const H323SignalPDU & pdu       
00695     );
00696 
00703     virtual void OnConnectionEstablished(
00704       H323Connection & connection,    
00705       const PString & token           
00706     );
00707 
00710     virtual PBoolean IsConnectionEstablished(
00711       const PString & token   
00712     );
00713 
00720     virtual void OnConnectionCleared(
00721       H323Connection & connection,    
00722       const PString & token           
00723     );
00725 
00726 
00733     virtual PBoolean OnStartLogicalChannel(
00734       H323Connection & connection,    
00735       H323Channel & channel           
00736     );
00737 
00742     virtual void OnClosedLogicalChannel(
00743       H323Connection & connection,    
00744       const H323Channel & channel     
00745     );
00746 
00754     virtual void OnRTPStatistics(
00755       const H323Connection & connection,  
00756       const RTP_Session & session         
00757     ) const;
00758 
00764     virtual void OnGatekeeperNATDetect(
00765       PIPSocket::Address publicAddr,         
00766       PString & gkIdentifier,                
00767       H323TransportAddress & gkRouteAddress  
00768     );
00770 
00780     virtual void OnHTTPServiceControl(
00781       unsigned operation,  
00782       unsigned sessionId,  
00783       const PString & url  
00784     );
00785 
00795     virtual void OnCallCreditServiceControl(
00796       const PString & amount,  
00797       PBoolean mode          
00798     );
00799 
00803     virtual void OnServiceControlSession(
00804       unsigned type,
00805       unsigned sessionid,
00806       const H323ServiceControlSession & session,
00807       H323Connection * connection
00808     );
00809 
00812     virtual H323ServiceControlSession * CreateServiceControlSession(
00813       const H225_ServiceControlDescriptor & contents
00814     );
00816 
00824     virtual PBoolean OnConferenceInvite(
00825       const H323SignalPDU & setupPDU
00826     );
00827 
00833     virtual PBoolean OnCallIndependentSupplementaryService(
00834       const H323SignalPDU & setupPDU
00835     );
00836 
00842     virtual PBoolean OnNegotiateConferenceCapabilities(
00843       const H323SignalPDU & setupPDU
00844     );
00846 
00851     virtual void SetDefaultLocalPartyName(
00852       const PString & name  
00853     );
00854 
00863     virtual void SetLocalUserName(
00864       const PString & name  
00865     );
00866 
00871     virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
00872 
00879     PBoolean AddAliasName(
00880       const PString & name  
00881     );
00882 
00886     PBoolean RemoveAliasName(
00887       const PString & name  
00888     );
00889 
00894     const PStringList & GetAliasNames() const { return localAliasNames; }
00895 
00898     const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
00899 
00903     PBoolean AddAliasNamePattern(
00904       const PString & pattern  
00905     );
00906 
00909     const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
00910 
00913     void SetDefaultILSServer(
00914       const PString & server
00915     ) { manager.SetDefaultILSServer(server); }
00916 
00919     PBoolean IsFastStartDisabled() const
00920       { return disableFastStart; }
00921 
00924     void DisableFastStart(
00925       PBoolean mode 
00926     ) { disableFastStart = mode; } 
00927 
00930     PBoolean IsH245TunnelingDisabled() const
00931       { return disableH245Tunneling; }
00932 
00935     void DisableH245Tunneling(
00936       PBoolean mode 
00937     ) { disableH245Tunneling = mode; } 
00938 
00941     PBoolean IsH245inSetupDisabled() const
00942       { return disableH245inSetup; }
00943 
00946     void DisableH245inSetup(
00947       PBoolean mode 
00948     ) { disableH245inSetup = mode; } 
00949 
00953     PBoolean IsH245Disabled() const
00954     { return m_bH245Disabled; }
00955 
00959     void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
00960     
00963     PBoolean CanDisplayAmountString() const
00964       { return canDisplayAmountString; }
00965 
00968     void SetCanDisplayAmountString(
00969       PBoolean mode 
00970     ) { canDisplayAmountString = mode; } 
00971 
00974     PBoolean CanEnforceDurationLimit() const
00975       { return canEnforceDurationLimit; }
00976 
00979     void SetCanEnforceDurationLimit(
00980       PBoolean mode 
00981     ) { canEnforceDurationLimit = mode; } 
00982 
00983 #if OPAL_H450
00984 
00986     unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
00987 
00990     void SetCallIntrusionProtectionLevel(
00991       unsigned level  
00992     ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
00993 #endif
00994 
00997     virtual void OnReceivedInitiateReturnError();
00998 
00999 #if OPAL_VIDEO
01000 
01002     PBoolean CanAutoStartReceiveVideo() const { return manager.CanAutoStartReceiveVideo(); }
01003 
01006     PBoolean CanAutoStartTransmitVideo() const { return manager.CanAutoStartTransmitVideo(); }
01007 #endif
01008 
01009 #if OPAL_T38_CAPABILITY
01010 
01012     PBoolean CanAutoStartReceiveFax() const { return autoStartReceiveFax; }
01013 
01016     PBoolean CanAutoStartTransmitFax() const { return autoStartTransmitFax; }
01017 #endif
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 
01094     virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
01095 
01098     virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
01099         
01103     virtual void LoadBaseFeatureSet();
01104 
01109     virtual bool OnFeatureInstance(
01110       int instType,
01111       const PString & identifer
01112     );
01113 
01114 #if OPAL_H460
01115 
01117     bool FeatureSetDisabled() const { return disableH460; }
01118 
01121     void FeatureSetDisable() { disableH460 = true; }
01122 
01126     H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
01127 #endif
01128 
01131     virtual PBoolean IsLocalAddress(
01132       const PIPSocket::Address & remoteAddress
01133     ) const { return manager.IsLocalAddress(remoteAddress); }
01134 
01137     virtual void TranslateTCPAddress(
01138       PIPSocket::Address & localAddr,
01139       const PIPSocket::Address & remoteAddr
01140     );
01141 
01144     WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
01145 
01148     WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
01149 
01152     void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
01153 
01156     WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
01157 
01160     WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
01161 
01164     WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
01165 
01168     void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
01169 
01172     WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
01173 
01176     WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
01177 
01180     WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
01181 
01184     void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
01185 
01188     WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
01189 
01192     BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
01193 
01196     void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
01197 
01200     const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
01201 
01204     const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
01205 
01208     const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
01209 
01212     const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
01213 
01216     unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
01217 
01220     const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
01221 
01224     const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
01225 
01228     const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
01229 
01232     const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
01233 
01236     const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
01237 
01240     PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
01241 
01244     const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
01245 
01248     PBoolean SetNoMediaTimeout(
01249       const PTimeInterval & newInterval  
01250     ) { return manager.SetNoMediaTimeout(newInterval); }
01251 
01254     const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
01255 
01258     unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
01259 
01262     const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
01263 
01266     unsigned GetRasRequestRetries() const { return rasRequestRetries; }
01267 
01271     const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
01272 
01276     void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
01277 
01280     const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
01281 
01284     void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
01285 
01288     PBoolean GetSendGRQ() const
01289     { return sendGRQ; }
01290 
01293     void SetSendGRQ(PBoolean v) 
01294     { sendGRQ = v; }
01295 
01298     const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
01299 
01302     const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
01303 
01306     const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
01307 
01310     const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
01311 
01313     const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
01314     const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
01315     const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
01316     const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
01317     const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
01318     const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
01319 
01322     H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
01323 
01326 #if OPAL_H450
01327     unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
01328 #endif
01329 
01330     PString GetDefaultTransport() const;
01332 
01333   protected:
01334     bool InternalCreateGatekeeper(H323Transport * transport);
01335     PBoolean InternalMakeCall(
01336       OpalCall & call,
01337       const PString & existingToken,           
01338       const PString & callIdentity,            
01339       unsigned capabilityLevel,                
01340       const PString & remoteParty,             
01341       void * userData,                         
01342       unsigned int options = 0,                
01343       OpalConnection::StringOptions * stringOptions = NULL 
01344     );
01345 
01346     // Configuration variables, commonly changed
01347     PStringList     localAliasNames;
01348     PStringList     localAliasPatterns;
01349     PBoolean        autoStartReceiveFax;
01350     PBoolean        autoStartTransmitFax;
01351     PBoolean        isH224Enabled;
01352     PBoolean        autoCallForward;
01353     PBoolean        disableFastStart;
01354     PBoolean        disableH245Tunneling;
01355     PBoolean        disableH245inSetup;
01356     PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
01357     PBoolean        canDisplayAmountString;
01358     PBoolean        canEnforceDurationLimit;
01359 #if OPAL_H450
01360     unsigned    callIntrusionProtectionLevel;
01361 #endif
01362 
01363     TerminalTypes terminalType;
01364 
01365     PBoolean          clearCallOnRoundTripFail;
01366 
01367     // Some more configuration variables, rarely changed.
01368     PTimeInterval signallingChannelCallTimeout;
01369     PTimeInterval controlChannelStartTimeout;
01370     PTimeInterval endSessionTimeout;
01371     PTimeInterval masterSlaveDeterminationTimeout;
01372     unsigned      masterSlaveDeterminationRetries;
01373     PTimeInterval capabilityExchangeTimeout;
01374     PTimeInterval logicalChannelTimeout;
01375     PTimeInterval requestModeTimeout;
01376     PTimeInterval roundTripDelayTimeout;
01377     PTimeInterval roundTripDelayRate;
01378     PTimeInterval gatekeeperRequestTimeout;
01379     unsigned      gatekeeperRequestRetries;
01380     PTimeInterval rasRequestTimeout;
01381     unsigned      rasRequestRetries;
01382     PTimeInterval registrationTimeToLive;
01383 
01384     PString       gkAccessTokenOID;
01385     PBoolean          sendGRQ;
01386 
01387     /* Protect against absence of a response to the ctIdentify reqest
01388        (Transferring Endpoint - Call Transfer with a secondary Call) */
01389     PTimeInterval callTransferT1;
01390     /* Protect against failure of completion of the call transfer operation
01391        involving a secondary Call (Transferred-to Endpoint) */
01392     PTimeInterval callTransferT2;
01393     /* Protect against failure of the Transferred Endpoint not responding
01394        within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
01395     PTimeInterval callTransferT3;
01396     /* May optionally operate - protects against absence of a response to the
01397        ctSetup request (Transferred Endpoint) */
01398     PTimeInterval callTransferT4;
01399 
01401     PTimeInterval callIntrusionT1;
01402     PTimeInterval callIntrusionT2;
01403     PTimeInterval callIntrusionT3;
01404     PTimeInterval callIntrusionT4;
01405     PTimeInterval callIntrusionT5;
01406     PTimeInterval callIntrusionT6;
01407 
01408     // Dynamic variables
01409     mutable H323Capabilities capabilities;
01410     H323Gatekeeper *     gatekeeper;
01411     PString              gatekeeperUsername;
01412     PString              gatekeeperPassword;
01413     H323CallIdentityDict secondaryConnectionsActive;
01414 
01415 #if OPAL_H450
01416     mutable PAtomicInteger nextH450CallIdentity;
01418 #endif
01419 
01420 #if OPAL_H460
01421     bool            disableH460;
01422     H460_FeatureSet features;
01423 #endif
01424 
01425 };
01426 
01427 #endif // OPAL_H323
01428 
01429 #endif // OPAL_H323_H323EP_H
01430 
01431 

Generated on Mon Feb 23 02:01:30 2009 for OPAL by  doxygen 1.5.1