ports/146420: opal3

Richard Kolkovich richard at sigil.org
Sun May 9 02:50:01 UTC 2010


>Number:         146420
>Category:       ports
>Synopsis:       opal3
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun May 09 02:50:01 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Richard Kolkovich
>Release:        8.0-STABLE
>Organization:
>Environment:
FreeBSD magus 8.0-STABLE FreeBSD 8.0-STABLE #2: Tue Mar  2 10:43:00 CST 2010     root at magus:/usr/obj/usr/source/RELENG_8/sys/MAGUS  amd64

>Description:
net/opal3 fails to build (at least on amd64, 8.0-STABLE) with the following error:

In file included from /usr/ports/net/opal3/work/opal-3.6.6/src/opal/opal_c.cxx:42:
/usr/ports/net/opal3/work/opal-3.6.6/include/h323/h323ep.h:175: error: 'H225_ArrayOf_SupportedProtocols' has not been declared
gmake[1]: *** [/usr/ports/net/opal3/work/opal-3.6.6/lib_FreeBSD_amd64/obj/opal_c.o] Error 1
gmake[1]: Leaving directory `/usr/ports/net/opal3/work/opal-3.6.6'
gmake: *** [opt] Error 2


And the following options:

# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for opal3-3.6.6_4
_OPTIONS_READ=opal3-3.6.6_4
WITHOUT_ZRTP=true
WITHOUT_JAVA=true
WITH_CELT=true
WITHOUT_ILBC=true
WITH_GSM=true
WITH_SPEEX=true
WITHOUT_THEORA=true
WITH_FFMPEG=true
WITH_X264=true
WITH_SIP=true
WITH_H323=true
WITHOUT_IAX=true
WITH_H224=true
WITH_H281=true
WITH_FAX=true
WITH_MSRP=true
WITH_SIPIM=true
WITH_RTPTEXT=true
WITHOUT_H450=true
WITHOUT_H460=true
WITHOUT_H501=true
WITH_LID=true
WITHOUT_UVIDEO=true
WITH_AEC=true
>How-To-Repeat:
cd /usr/ports/net/opal3 && make
>Fix:
Patch attached.

Patch attached with submission follows:

--- h323ep.h.orig	2010-05-08 21:37:26.720385776 -0500
+++ h323.h	2009-09-21 19:57:57.000000000 -0500
@@ -1,11 +1,11 @@
 /*
- * h323ep.h
+ * h323.h
  *
  * H.323 protocol handler
  *
  * Open H323 Library
  *
- * Copyright (c) 1998-2001 Equivalence Pty. Ltd.
+ * Copyright (c) 1998-2000 Equivalence Pty. Ltd.
  *
  * The contents of this file are subject to the Mozilla Public License
  * Version 1.0 (the "License"); you may not use this file except in
@@ -26,1400 +26,27 @@
  *
  * Contributor(s): ______________________________________.
  *
- * $Revision: 23128 $
+ * $Revision: 21293 $
  * $Author: rjongbloed $
- * $Date: 2009-07-22 05:17:45 +0000 (Wed, 22 Jul 2009) $
+ * $Date: 2008-10-12 23:24:41 +0000 (Sun, 12 Oct 2008) $
  */
 
-#ifndef OPAL_H323_H323EP_H
-#define OPAL_H323_H323EP_H
-
-#ifdef P_USE_PRAGMA
-#pragma interface
-#endif
+#ifndef OPAL_H323_H323_H
+#define OPAL_H323_H323_H
 
 #include <opal/buildopts.h>
 
-#if OPAL_H323
-
-#include <opal/rtpep.h>
-#include <opal/manager.h>
-#include <opal/call.h>
-#include <opal/transports.h>
+#include <h323/h323ep.h>
 #include <h323/h323con.h>
-#include <h323/h323caps.h>
-#include <h323/h235auth.h>
-
-#if OPAL_H460
-#include <h460/h4601.h>
-#endif
-
-
-class H225_EndpointType;
-class H225_VendorIdentifier;
-class H225_H221NonStandard;
-class H225_ServiceControlDescriptor;
-class H225_FeatureSet;
-
-class H235SecurityInfo;
-
-class H323Gatekeeper;
-class H323SignalPDU;
-class H323ServiceControlSession;
-
-///////////////////////////////////////////////////////////////////////////////
-
-/**This class manages the H323 endpoint.
-   An endpoint may have zero or more listeners to create incoming connections
-   or zero or more outgoing connections initiated via the MakeCall() function.
-   Once a conection exists it is managed by this class instance.
-
-   The main thing this class embodies is the capabilities of the application,
-   that is the codecs and protocols it is capable of.
-
-   An application may create a descendent off this class and overide the
-   CreateConnection() function, if they require a descendent of H323Connection
-   to be created. This would be quite likely in most applications.
- */
-class H323EndPoint : public OpalRTPEndPoint
-{
-  PCLASSINFO(H323EndPoint, OpalRTPEndPoint);
-
-  public:
-    enum {
-      DefaultTcpSignalPort = 1720
-    };
-
-  /**@name Construction */
-  //@{
-    /**Create a new endpoint.
-     */
-    H323EndPoint(
-      OpalManager & manager
-    );
-
-    /**Destroy endpoint.
-     */
-    ~H323EndPoint();
-  //@}
-
-  /**@name Overrides from OpalEndPoint */
-  //@{
-    /**Shut down the endpoint, this is called by the OpalManager just before
-       destroying the object and can be handy to make sure some things are
-       stopped before the vtable gets clobbered.
-      */
-    virtual void ShutDown();
-
-    /**Set up a connection to a remote party.
-       This is called from the OpalManager::SetUpConnection() function once
-       it has determined that this is the endpoint for the protocol.
-
-       The general form for this party parameter is:
-
-            [proto:][alias@][transport$]address[:port]
-
-       where the various fields will have meanings specific to the endpoint
-       type. For example, with H.323 it could be "h323:Fred at site.com" which
-       indicates a user Fred at gatekeeper size.com. Whereas for the PSTN
-       endpoint it could be "pstn:5551234" which is to call 5551234 on the
-       first available PSTN line.
-
-       The proto field is optional when passed to a specific endpoint. If it
-       is present, however, it must agree with the endpoints protocol name or
-       PFalse is returned.
-
-       This function usually returns almost immediately with the connection
-       continuing to occur in a new background thread.
-
-       If PFalse is returned then the connection could not be established. For
-       example if a PSTN endpoint is used and the assiciated line is engaged
-       then it may return immediately. Returning a non-NULL value does not
-       mean that the connection will succeed, only that an attempt is being
-       made.
-
-       The default behaviour is pure.
-     */
-    virtual PBoolean MakeConnection(
-      OpalCall & call,                  ///<  Owner of connection
-      const PString & party,            ///<  Remote party to call
-      void * userData  = NULL,          ///<  Arbitrary data to pass to connection
-      unsigned int options = NULL,      ///<  options to pass to conneciton
-      OpalConnection::StringOptions * stringOptions = NULL
-    );
-  //@}
-
-  /**@name Set up functions */
-  //@{
-    /**Set the endpoint information in H225 PDU's.
-      */
-    virtual void SetEndpointTypeInfo(
-      H225_EndpointType & info
-    ) const;
-
-    /**Set the vendor information in H225 PDU's.
-      */
-    virtual void SetVendorIdentifierInfo(
-      H225_VendorIdentifier & info
-    ) const;
-
-    /**Set the H221NonStandard information in H225 PDU's.
-      */
-    virtual void SetH221NonStandardInfo(
-      H225_H221NonStandard & info
-    ) const;
-
-    /**Set the Gateway supported protocol default always H.323
-      */
-    virtual bool SetGatewaySupportedProtocol(
-      H225_ArrayOf_SupportedProtocols & protocols
-    ) const;
-
-    /**Set the gateway prefixes 
-       Override this to set the acceptable prefixes to the gatekeeper
-      */
-    virtual bool OnSetGatewayPrefixes(
-      PStringList & prefixes
-    ) const;
-  //@}
-
-
-  /**@name Capabilities */
-  //@{
-    /**Add a codec to the capabilities table. This will assure that the
-       assignedCapabilityNumber field in the codec is unique for all codecs
-       installed on this endpoint.
-
-       If the specific instnace of the capability is already in the table, it
-       is not added again. Ther can be multiple instances of the same
-       capability class however.
-     */
-    void AddCapability(
-      H323Capability * capability   ///<  New codec specification
-    );
-
-    /**Set the capability descriptor lists. This is three tier set of
-       codecs. The top most level is a list of particular capabilities. Each
-       of these consists of a list of alternatives that can operate
-       simultaneously. The lowest level is a list of codecs that cannot
-       operate together. See H323 section 6.2.8.1 and H245 section 7.2 for
-       details.
-
-       If descriptorNum is P_MAX_INDEX, the the next available index in the
-       array of descriptors is used. Similarly if simultaneous is P_MAX_INDEX
-       the the next available SimultaneousCapabilitySet is used. The return
-       value is the index used for the new entry. Note if both are P_MAX_INDEX
-       then the return value is the descriptor index as the simultaneous index
-       must be zero.
-
-       Note that the capability specified here is automatically added to the
-       capability table using the AddCapability() function. A specific
-       instance of a capability is only ever added once, so multiple
-       SetCapability() calls with the same H323Capability pointer will only
-       add that capability once.
-     */
-    PINDEX SetCapability(
-      PINDEX descriptorNum, ///<  The member of the capabilityDescriptor to add
-      PINDEX simultaneous,  ///<  The member of the SimultaneousCapabilitySet to add
-      H323Capability * cap  ///<  New capability specification
-    );
-
-    /**Add all matching capabilities in list.
-       All capabilities that match the specified name are added. See the
-       capabilities code for details on the matching algorithm.
-      */
-    PINDEX AddAllCapabilities(
-      PINDEX descriptorNum, ///<  The member of the capabilityDescriptor to add
-      PINDEX simultaneous,  ///<  The member of the SimultaneousCapabilitySet to add
-      const PString & name  ///<  New capabilities name, if using "known" one.
-    );
-
-    /**Add all user input capabilities to this endpoints capability table.
-      */
-    void AddAllUserInputCapabilities(
-      PINDEX descriptorNum, ///<  The member of the capabilityDescriptor to add
-      PINDEX simultaneous   ///<  The member of the SimultaneousCapabilitySet to add
-    );
-
-    /**Remove capabilites in table.
-      */
-    void RemoveCapabilities(
-      const PStringArray & codecNames
-    );
-
-    /**Reorder capabilites in table.
-      */
-    void ReorderCapabilities(
-      const PStringArray & preferenceOrder
-    );
-
-    /**Find a capability that has been registered.
-     */
-    H323Capability * FindCapability(
-      const H245_Capability & cap  ///<  H245 capability table entry
-    ) const;
-
-    /**Find a capability that has been registered.
-     */
-    H323Capability * FindCapability(
-      const H245_DataType & dataType  ///<  H245 data type of codec
-    ) const;
-
-    /**Find a capability that has been registered.
-     */
-    H323Capability * FindCapability(
-      H323Capability::MainTypes mainType,   ///<  Main type of codec
-      unsigned subType                      ///<  Subtype of codec
-    ) const;
-  //@}
-
-  /**@name Gatekeeper management */
-  //@{
-    /**Use and register with an explicit gatekeeper.
-       This will call other functions according to the following table:
-
-           address    identifier   function
-           empty      empty        DiscoverGatekeeper()
-           non-empty  empty        SetGatekeeper()
-           empty      non-empty    LocateGatekeeper()
-           non-empty  non-empty    SetGatekeeperZone()
-
-       The localAddress field, if non-empty, indicates the interface on which
-       to look for the gatekeeper. An empty string is equivalent to "ip$*:*"
-       which is any interface or port.
-
-       If the endpoint is already registered with a gatekeeper that meets
-       the same criteria then the gatekeeper is not changed, otherwise it is
-       deleted (with unregistration) and new one created and registered to.
-
-       Note that a gatekeeper address of "*" is treated like an empty string
-       resulting in gatekeeper discovery.
-     */
-    PBoolean UseGatekeeper(
-      const PString & address = PString::Empty(),     ///<  Address of gatekeeper to use.
-      const PString & identifier = PString::Empty(),  ///<  Identifier of gatekeeper to use.
-      const PString & localAddress = PString::Empty() ///<  Local interface to use.
-    );
-
-    /**Select and register with an explicit gatekeeper.
-       This will use the specified transport and a string giving a transport
-       dependent address to locate a specific gatekeeper. The endpoint will
-       register with that gatekeeper and, if successful, set it as the current
-       gatekeeper used by this endpoint.
-
-       Note the transport being passed in will be deleted by this function or
-       the H323Gatekeeper object it becomes associated with. Also if transport
-       is NULL then a H323TransportUDP is created.
-     */
-    PBoolean SetGatekeeper(
-      const PString & address,          ///<  Address of gatekeeper to use.
-      H323Transport * transport = NULL  ///<  Transport over which to talk to gatekeeper.
-    );
-
-    /**Select and register with an explicit gatekeeper and zone.
-       This will use the specified transport and a string giving a transport
-       dependent address to locate a specific gatekeeper. The endpoint will
-       register with that gatekeeper and, if successful, set it as the current
-       gatekeeper used by this endpoint.
-
-       The gatekeeper identifier is set to the spplied parameter to allow the
-       gatekeeper to either allocate a zone or sub-zone, or refuse to register
-       if the zones do not match.
-
-       Note the transport being passed in will be deleted by this function or
-       the H323Gatekeeper object it becomes associated with. Also if transport
-       is NULL then a H323TransportUDP is created.
-     */
-    PBoolean SetGatekeeperZone(
-      const PString & address,          ///<  Address of gatekeeper to use.
-      const PString & identifier,       ///<  Identifier of gatekeeper to use.
-      H323Transport * transport = NULL  ///<  Transport over which to talk to gatekeeper.
-    );
-
-    /**Locate and select gatekeeper.
-       This function will use the automatic gatekeeper discovery methods to
-       locate the gatekeeper on the particular transport that has the specified
-       gatekeeper identifier name. This is often the "Zone" for the gatekeeper.
-
-       Note the transport being passed in will be deleted becomes owned by the
-       H323Gatekeeper created by this function and will be deleted by it. Also
-       if transport is NULL then a H323TransportUDP is created.
-     */
-    PBoolean LocateGatekeeper(
-      const PString & identifier,       ///<  Identifier of gatekeeper to locate.
-      H323Transport * transport = NULL  ///<  Transport over which to talk to gatekeeper.
-    );
-
-    /**Discover and select gatekeeper.
-       This function will use the automatic gatekeeper discovery methods to
-       locate the first gatekeeper on a particular transport.
-
-       Note the transport being passed in will be deleted becomes owned by the
-       H323Gatekeeper created by this function and will be deleted by it. Also
-       if transport is NULL then a H323TransportUDP is created.
-     */
-    PBoolean DiscoverGatekeeper(
-      H323Transport * transport = NULL  ///<  Transport over which to talk to gatekeeper.
-    );
-
-    /**Create a gatekeeper.
-       This allows the application writer to have the gatekeeper as a
-       descendent of the H323Gatekeeper in order to add functionality to the
-       base capabilities in the library.
-
-       The default creates an instance of the H323Gatekeeper class.
-     */
-    virtual H323Gatekeeper * CreateGatekeeper(
-      H323Transport * transport  ///<  Transport over which gatekeepers communicates.
-    );
-
-    /**Get the gatekeeper we are registered with.
-     */
-    H323Gatekeeper * GetGatekeeper() const { return gatekeeper; }
-
-    /**Return if endpoint is registered with gatekeeper.
-      */
-    PBoolean IsRegisteredWithGatekeeper() const;
-
-    /**Unregister and delete the gatekeeper we are registered with.
-       The return value indicates PFalse if there was an error during the
-       unregistration. However the gatekeeper is still removed and its
-       instance deleted regardless of this error.
-     */
-    PBoolean RemoveGatekeeper(
-      int reason = -1    ///<  Reason for gatekeeper removal
-    );
-
-    /**Set the H.235 password for the gatekeeper.
-      */
-    virtual void SetGatekeeperPassword(
-      const PString & password,
-      const PString & username = PString::Empty()
-    );
-
-    /**Get the H.235 username for the gatekeeper.
-      */
-    virtual const PString & GetGatekeeperUsername() const { return gatekeeperUsername; }
-
-    /**Get the H.235 password for the gatekeeper.
-      */
-    virtual const PString & GetGatekeeperPassword() const { return gatekeeperPassword; }
-
-    /**Create a list of authenticators for gatekeeper.
-      */
-    virtual H235Authenticators CreateAuthenticators();
-
-    /**Called when the gatekeeper sends a GatekeeperConfirm
-      */
-    virtual void  OnGatekeeperConfirm();
-
-    /**Called when the gatekeeper sends a GatekeeperReject
-      */
-    virtual void  OnGatekeeperReject();
-
-    /**Called when the gatekeeper sends a RegistrationConfirm
-      */
-    virtual void OnRegistrationConfirm();
-
-    /**Called when the gatekeeper sends a RegistrationReject
-      */
-    virtual void  OnRegistrationReject();
-  //@}
-
-  /**@name Connection management */
-  //@{
-    /**Handle new incoming connetion from listener.
-      */
-    virtual PBoolean NewIncomingConnection(
-      OpalTransport * transport  ///<  Transport connection came in on
-    );
-
-    /**Create a connection that uses the specified call.
-      */
-    virtual H323Connection * CreateConnection(
-      OpalCall & call,                         ///<  Call object to attach the connection to
-      const PString & token,                   ///<  Call token for new connection
-      void * userData,                         ///<  Arbitrary user data from MakeConnection
-      OpalTransport & transport,               ///<  Transport for connection
-      const PString & alias,                   ///<  Alias for outgoing call
-      const H323TransportAddress & address,    ///<  Address for outgoing call
-      H323SignalPDU * setupPDU,                ///<  Setup PDU for incoming call
-      unsigned options = 0,
-      OpalConnection::StringOptions * stringOptions = NULL ///<  complex string options
-    );
-
-    /**Setup the transfer of an existing call (connection) to a new remote party
-       using H.450.2.  This sends a Call Transfer Setup Invoke message from the
-       B-Party (transferred endpoint) to the C-Party (transferred-to endpoint).
-
-       If the transport parameter is NULL the transport is determined from the
-       remoteParty description. The general form for this parameter is
-       [alias@][transport$]host[:port] where the default alias is the same as
-       the host, the default transport is "ip" and the default port is 1720.
-
-       This function returns almost immediately with the transfer occurring in a
-       new background thread.
-
-       This function is declared virtual to allow an application to override
-       the function and get the new call token of the forwarded call.
-     */
-    virtual PBoolean SetupTransfer(
-      const PString & token,        ///<  Existing connection to be transferred
-      const PString & callIdentity, ///<  Call identity of the secondary call (if it exists)
-      const PString & remoteParty,  ///<  Remote party to transfer the existing call to
-      void * userData = NULL        ///<  user data to pass to CreateConnection
-    );
-
-    /**Initiate the transfer of an existing call (connection) to a new remote
-       party using H.450.2.  This sends a Call Transfer Initiate Invoke
-       message from the A-Party (transferring endpoint) to the B-Party
-       (transferred endpoint).
-     */
-    void TransferCall(
-      const PString & token,        ///<  Existing connection to be transferred
-      const PString & remoteParty,  ///<  Remote party to transfer the existing call to
-      const PString & callIdentity = PString::Empty()
-                                    ///<  Call Identity of secondary call if present
-    );
-
-    /**Transfer the call through consultation so the remote party in the
-       primary call is connected to the called party in the second call
-       using H.450.2.  This sends a Call Transfer Identify Invoke message
-       from the A-Party (transferring endpoint) to the C-Party
-       (transferred-to endpoint).
-     */
-    void ConsultationTransfer(
-      const PString & primaryCallToken,   ///<  Token of primary call
-      const PString & secondaryCallToken  ///<  Token of secondary call
-    );
-
-    /**Place the call on hold, suspending all media channels (H.450.4)
-    * NOTE: Only Local Hold is implemented so far. 
-    */
-    void HoldCall(
-      const PString & token,        ///<  Existing connection to be transferred
-      PBoolean localHold   ///<  true for Local Hold, false for Remote Hold
-    );
-
-    /** Initiate Call intrusion
-        Designed similar to MakeCall function
-      */
-    PBoolean IntrudeCall(
-      const PString & remoteParty,  ///<  Remote party to intrude call
-      unsigned capabilityLevel,     ///<  Capability level
-      void * userData = NULL        ///<  user data to pass to CreateConnection
-    );
-
-    /**Parse a party address into alias and transport components.
-       An appropriate transport is determined from the remoteParty parameter.
-       The general form for this parameter is [alias@][transport$]host[:port]
-       where the default alias is the same as the host, the default transport
-       is "ip" and the default port is 1720.
-      */
-    PBoolean ParsePartyName(
-      const PString & party,          ///<  Party name string.
-      PString & alias,                ///<  Parsed alias name
-      H323TransportAddress & address  ///<  Parsed transport address
-    );
-
-    /**Find a connection that uses the specified token.
-       This searches the endpoint for the connection that contains the token
-       as provided by functions such as MakeCall(). if not found it will then search for
-       the string representation of the CallIdentifier for the connection, and
-       finally try for the string representation of the ConferenceIdentifier.
-
-       Note the caller of this function MUSt call the H323Connection::Unlock()
-       function if this function returns a non-NULL pointer. If it does not
-       then a deadlock can occur.
-      */
-    PSafePtr<H323Connection> FindConnectionWithLock(
-      const PString & token,     ///<  Token to identify connection
-      PSafetyMode mode = PSafeReadWrite
-    );
-
-    /** OnSendSignalSetup is a hook for the appliation to attach H450 info in setup, 
-        for instance, H450.7 Activate or Deactivate 
-        @param connection the connection associated to the setup
-        @param pduSetup the setup message to modify
-        @return if false, do no send the setup pdu
-      */
-      
-    virtual PBoolean OnSendSignalSetup(H323Connection & connection,
-                                   H323SignalPDU & setupPDU);
-
-    /**Adjust call proceeding PDU being sent. This function is called from
-    the OnReceivedSignalSetup() function before it sends the Call
-    Proceeding PDU. It gives an opportunity for an application to alter
-    the request before transmission to the other endpoint. If this function
-    returns PFalse then the Call Proceeding PDU is not sent at all.
-
-    The default behaviour simply returns PTrue.
-    @param connection the connection associated to the call proceeding
-    @param callProceedingPDU the call processding to modify
-    @return if false, do no send the connect pdu  
-     */
-    virtual PBoolean OnSendCallProceeding(H323Connection & connection,
-                                      H323SignalPDU & callProceedingPDU
-                                     );
-    
-    /**Adjust call connect PDU being sent. This function is called from
-    the H323Connection::SetConnected function before it sends the connect  PDU. 
-    It gives an opportunity for an application to alter
-    the request before transmission to the other endpoint. If this function
-    returns PFalse then the connect PDU is not sent at all.
-
-    The default behaviour simply returns PTrue.
-    @param connection the connection associated to the connect
-    @param connectPDU the connect to modify
-    @return if false, do no send the connect pdu  
-     */
-    virtual PBoolean OnSendConnect(H323Connection & connection,
-                               H323SignalPDU & connectPDU
-                              );
-    
-    /**Call back for incoming call.
-       This function is called from the OnReceivedSignalSetup() function
-       before it sends the Alerting PDU. It gives an opportunity for an
-       application to alter the reply before transmission to the other
-       endpoint.
-
-       If PFalse is returned the connection is aborted and a Release Complete
-       PDU is sent.
-
-       The default behaviour simply returns PTrue.
-     */
-    virtual PBoolean OnIncomingCall(
-      H323Connection & connection,    ///<  Connection that was established
-      const H323SignalPDU & setupPDU,   ///<  Received setup PDU
-      H323SignalPDU & alertingPDU       ///<  Alerting PDU to send
-    );
-
-    /**Called when an outgoing call connects
-       If PFalse is returned the connection is aborted and a Release Complete
-       PDU is sent.
-
-       The default behaviour simply returns PTrue.
-      */
-    virtual PBoolean OnOutgoingCall(
-        H323Connection & conn, 
-        const H323SignalPDU & connectPDU
-    );
-
-    /**Handle a connection transfer.
-       This gives the application an opportunity to abort the transfer.
-       The default behaviour just returns PTrue.
-      */
-    virtual PBoolean OnCallTransferInitiate(
-      H323Connection & connection,    ///<  Connection to transfer
-      const PString & remoteParty     ///<  Party transferring to.
-    );
-
-    /**Handle a transfer via consultation.
-       This gives the transferred-to user an opportunity to abort the transfer.
-       The default behaviour just returns PTrue.
-      */
-    virtual PBoolean OnCallTransferIdentify(
-      H323Connection & connection    ///<  Connection to transfer
-    );
-
-    /**
-      * Callback for ARQ send to a gatekeeper. This allows the endpoint
-      * to change or check fields in the ARQ before it is sent.
-      */
-    virtual void OnSendARQ(
-      H323Connection & conn,
-      H225_AdmissionRequest & arq
-    );
-
-    /**Call back for answering an incoming call.
-       This function is a H.323 specific version of OpalEndPoint::OnAnswerCall
-       that contains additional information that applies only to H.323.
-
-       By default this calls OpalEndPoint::OnAnswerCall, which returns
-     */
-    virtual OpalConnection::AnswerCallResponse OnAnswerCall(
-      H323Connection & connection,    ///< Connection that was established
-      const PString & callerName,       ///< Name of caller
-      const H323SignalPDU & setupPDU,   ///< Received setup PDU
-      H323SignalPDU & connectPDU,       ///< Connect PDU to send. 
-      H323SignalPDU & progressPDU        ///< Progress PDU to send. 
-    );
-    virtual OpalConnection::AnswerCallResponse OnAnswerCall(
-       OpalConnection & connection,
-       const PString & caller
-    );
-
-    /**Call back for remote party being alerted.
-       This function is called from the SendSignalSetup() function after it
-       receives the optional Alerting PDU from the remote endpoint. That is
-       when the remote "phone" is "ringing".
-
-       If PFalse is returned the connection is aborted and a Release Complete
-       PDU is sent.
-
-       The default behaviour simply returns PTrue.
-     */
-    virtual PBoolean OnAlerting(
-      H323Connection & connection,    ///<  Connection that was established
-      const H323SignalPDU & alertingPDU,  ///<  Received Alerting PDU
-      const PString & user                ///<  Username of remote endpoint
-    );
-
-    /** A call back function when the alerting is about to be sent, 
-        can be used by the application to alter the alerting Pdu
-        @return if PFalse, then the alerting is not sent
-     */
-      
-    virtual PBoolean OnSendAlerting(H323Connection & connection,  ///< onnection that was established
-                                H323SignalPDU & alerting,     ///< Alerting PDU to modify
-                                const PString & calleeName,   ///< Name of endpoint being alerted.
-                                PBoolean withMedia                ///< Open media with alerting
-                               );
-        
-    /** A call back function when the alerting has been sent, can be used by the application 
-        to send the connect as soon as the alerting has been sent.
-     */
-      
-    virtual PBoolean OnSentAlerting(H323Connection & connection);
-    
-    /**A call back function when a connection indicates it is to be forwarded.
-       An H323 application may handle this call back so it can make
-       complicated decisions on if the call forward ius to take place. If it
-       decides to do so it must call MakeCall() and return PTrue.
-
-       The default behaviour simply returns PFalse and that the automatic
-       call forwarding should take place. See ForwardConnection()
-      */
-    virtual PBoolean OnConnectionForwarded(
-      H323Connection & connection,    ///<  Connection to be forwarded
-      const PString & forwardParty,   ///<  Remote party to forward to
-      const H323SignalPDU & pdu       ///<  Full PDU initiating forwarding
-    );
-
-    /**Forward the call using the same token as the specified connection.
-       Return PTrue if the call is being redirected.
-
-       The default behaviour will replace the current call in the endpoints
-       call list using the same token as the call being redirected. Not that
-       even though the same token is being used the actual object is
-       completely mad anew.
-      */
-    virtual PBoolean ForwardConnection(
-      H323Connection & connection,    ///<  Connection to be forwarded
-      const PString & forwardParty,   ///<  Remote party to forward to
-      const H323SignalPDU & pdu       ///<  Full PDU initiating forwarding
-    );
-
-    /**A call back function whenever a connection is established.
-       This indicates that a connection to a remote endpoint was established
-       with a control channel and zero or more logical channels.
-
-       The default behaviour does nothing.
-      */
-    virtual void OnConnectionEstablished(
-      H323Connection & connection,    ///<  Connection that was established
-      const PString & token           ///<  Token for identifying connection
-    );
-
-    /**Determine if a connection is established.
-      */
-    virtual PBoolean IsConnectionEstablished(
-      const PString & token   ///<  Token for identifying connection
-    );
-
-    /**A call back function whenever a connection is broken.
-       This indicates that a connection to a remote endpoint is no longer
-       available.
-
-       The default behaviour does nothing.
-      */
-    virtual void OnConnectionCleared(
-      H323Connection & connection,    ///<  Connection that was established
-      const PString & token           ///<  Token for identifying connection
-    );
-  //@}
-
-
-  /**@name Logical Channels management */
-  //@{
-    /**Call back for opening a logical channel.
-
-       The default behaviour simply returns PTrue.
-      */
-    virtual PBoolean OnStartLogicalChannel(
-      H323Connection & connection,    ///<  Connection for the channel
-      H323Channel & channel           ///<  Channel being started
-    );
-
-    /**Call back for closed a logical channel.
-
-       The default behaviour does nothing.
-      */
-    virtual void OnClosedLogicalChannel(
-      H323Connection & connection,    ///<  Connection for the channel
-      const H323Channel & channel     ///<  Channel being started
-    );
-
-    /**Callback from the RTP session for statistics monitoring.
-       This is called every so many packets on the transmitter and receiver
-       threads of the RTP session indicating that the statistics have been
-       updated.
-
-       The default behaviour does nothing.
-      */
-    virtual void OnRTPStatistics(
-      const H323Connection & connection,  ///<  Connection for the channel
-      const RTP_Session & session         ///<  Session with statistics
-    ) const;
-
-    /**Call back from GK admission confirm to notify the 
-     * Endpoint it is behind a NAT (GNUGK Gatekeeper).
-     * The default does nothing. 
-     * Override this to notify the user they are behind a NAT.
-     */
-    virtual void OnGatekeeperNATDetect(
-      PIPSocket::Address publicAddr,         ///> Public address as returned by the Gatekeeper
-      PString & gkIdentifier,                ///> Identifier at the gatekeeper
-      H323TransportAddress & gkRouteAddress  ///> Gatekeeper Route Address
-    );
-  //@}
-
-  /**@name Service Control */
-  //@{
-    /**Call back for HTTP based Service Control.
-       An application may override this to use an HTTP based channel using a
-       resource designated by the session ID. For example the session ID can
-       correspond to a browser window and the 
-
-       The default behaviour does nothing.
-      */
-    virtual void OnHTTPServiceControl(
-      unsigned operation,  ///<  Control operation
-      unsigned sessionId,  ///<  Session ID for HTTP page
-      const PString & url  ///<  URL to use.
-    );
-
-    /**Call back for call credit information.
-       An application may override this to display call credit information
-       on registration, or when a call is started.
-
-       The canDisplayAmountString member variable must also be set to PTrue
-       for this to operate.
-
-       The default behaviour does nothing.
-      */
-    virtual void OnCallCreditServiceControl(
-      const PString & amount,  ///<  UTF-8 string for amount, including currency.
-      PBoolean mode          ///<  Flag indicating that calls will debit the account.
-    );
-
-    /**Handle incoming service control session information.
-       Default behaviour calls session.OnChange()
-     */
-    virtual void OnServiceControlSession(
-      unsigned type,
-      unsigned sessionid,
-      const H323ServiceControlSession & session,
-      H323Connection * connection
-    );
-
-    /**Create the service control session object.
-     */
-    virtual H323ServiceControlSession * CreateServiceControlSession(
-      const H225_ServiceControlDescriptor & contents
-    );
-  //@}
-
-  /**@name Additional call services */
-  //@{
-    /** Called when an endpoint receives a SETUP PDU with a
-        conference goal of "invite"
-      
-        The default behaviour is to return PFalse, which will close the connection
-     */
-    virtual PBoolean OnConferenceInvite(
-      const H323SignalPDU & setupPDU
-    );
-
-    /** Called when an endpoint receives a SETUP PDU with a
-        conference goal of "callIndependentSupplementaryService"
-      
-        The default behaviour is to return PFalse, which will close the connection
-     */
-    virtual PBoolean OnCallIndependentSupplementaryService(
-      const H323SignalPDU & setupPDU
-    );
-
-    /** Called when an endpoint receives a SETUP PDU with a
-        conference goal of "capability_negotiation"
-      
-        The default behaviour is to return PFalse, which will close the connection
-     */
-    virtual PBoolean OnNegotiateConferenceCapabilities(
-      const H323SignalPDU & setupPDU
-    );
-  //@}
-
-  /**@name Member variable access */
-  //@{
-    /**Set the default local party name for all connections on this endpoint.
-      */
-    virtual void SetDefaultLocalPartyName(
-      const PString & name  /// Name for local party
-    );
-
-    /**Set the user name to be used for the local end of any connections. This
-       defaults to the logged in user as obtained from the
-       PProcess::GetUserName() function.
-
-       Note that this name is technically the first alias for the endpoint.
-       Additional aliases may be added by the use of the AddAliasName()
-       function, however that list will be cleared when this function is used.
-     */
-    virtual void SetLocalUserName(
-      const PString & name  ///<  Local name of endpoint (prime alias)
-    );
-
-    /**Get the user name to be used for the local end of any connections. This
-       defaults to the logged in user as obtained from the
-       PProcess::GetUserName() function.
-     */
-    virtual const PString & GetLocalUserName() const { return localAliasNames.front(); }
-
-    /**Add an alias name to be used for the local end of any connections. If
-       the alias name already exists in the list then is is not added again.
-
-       The list defaults to the value set in the SetLocalUserName() function.
-       Note that calling SetLocalUserName() will clear the alias list.
-     */
-    PBoolean AddAliasName(
-      const PString & name  ///<  New alias name to add
-    );
-
-    /**Remove an alias name used for the local end of any connections. 
-       defaults to an empty list.
-     */
-    PBoolean RemoveAliasName(
-      const PString & name  ///<  New alias namer to add
-    );
-
-    /**Get the user name to be used for the local end of any connections. This
-       defaults to the logged in user as obtained from the
-       PProcess::GetUserName() function.
-     */
-    const PStringList & GetAliasNames() const { return localAliasNames; }
-
-    /**Get the alias patterns, might be used in terminalAliasPattern.
-     */
-    const PStringList & GetAliasNamePatterns() const { return localAliasPatterns; }
-
-    /**Add an alias name pattern to localAliasPatterns. If
-       the pattern already exists in the list then is is not added again.
-     */
-    PBoolean AddAliasNamePattern(
-      const PString & pattern  
-    );
-
-    /**Get the default ILS server to use for user lookup.
-      */
-    const PString & GetDefaultILSServer() const { return manager.GetDefaultILSServer(); }
-
-    /**Set the default ILS server to use for user lookup.
-      */
-    void SetDefaultILSServer(
-      const PString & server
-    ) { manager.SetDefaultILSServer(server); }
-
-    /**Get the default fast start mode.
-      */
-    PBoolean IsFastStartDisabled() const
-      { return disableFastStart; }
-
-    /**Set the default fast start mode.
-      */
-    void DisableFastStart(
-      PBoolean mode ///<  New default mode
-    ) { disableFastStart = mode; } 
-
-    /**Get the default H.245 tunneling mode.
-      */
-    PBoolean IsH245TunnelingDisabled() const
-      { return disableH245Tunneling; }
-
-    /**Set the default H.245 tunneling mode.
-      */
-    void DisableH245Tunneling(
-      PBoolean mode ///<  New default mode
-    ) { disableH245Tunneling = mode; } 
-
-    /**Get the default H.245 tunneling mode.
-      */
-    PBoolean IsH245inSetupDisabled() const
-      { return disableH245inSetup; }
-
-    /**Set the default H.245 tunneling mode.
-      */
-    void DisableH245inSetup(
-      PBoolean mode ///<  New default mode
-    ) { disableH245inSetup = mode; } 
-
-    /** find out if h245 is disabled or enabled 
-      * @return PTrue if h245 is disabled 
-      */
-    PBoolean IsH245Disabled() const
-    { return m_bH245Disabled; }
-
-    /**Disable/Enable H.245, used at least for h450.7 calls
-     * @param  bH245Disabled PTrue if h245 has to be disabled 
-     */
-    void DisableH245(PBoolean bH245Disabled) { m_bH245Disabled = bH245Disabled; } 
-    
-    /**Get the flag indicating the endpoint can display an amount string.
-      */
-    PBoolean CanDisplayAmountString() const
-      { return canDisplayAmountString; }
-
-    /**Set the flag indicating the endpoint can display an amount string.
-      */
-    void SetCanDisplayAmountString(
-      PBoolean mode ///<  New default mode
-    ) { canDisplayAmountString = mode; } 
-
-    /**Get the flag indicating the call will automatically clear after a time.
-      */
-    PBoolean CanEnforceDurationLimit() const
-      { return canEnforceDurationLimit; }
-
-    /**Set the flag indicating the call will automatically clear after a time.
-      */
-    void SetCanEnforceDurationLimit(
-      PBoolean mode ///<  New default mode
-    ) { canEnforceDurationLimit = mode; } 
-
-#if OPAL_H450
-    /**Get Call Intrusion Protection Level of the end point.
-      */
-    unsigned GetCallIntrusionProtectionLevel() const { return callIntrusionProtectionLevel; }
-
-    /**Set Call Intrusion Protection Level of the end point.
-      */
-    void SetCallIntrusionProtectionLevel(
-      unsigned level  ///<  New level from 0 to 3
-    ) { PAssert(level<=3, PInvalidParameter); callIntrusionProtectionLevel = level; }
-#endif
-
-    /**Called from H.450 OnReceivedInitiateReturnError
-      */
-    virtual void OnReceivedInitiateReturnError();
-
-    /**See if should automatically do call forward of connection.
-     */
-    PBoolean CanAutoCallForward() const { return autoCallForward; }
-
-    /**Get the current capability table for this endpoint.
-     */
-    const H323Capabilities & GetCapabilities() const;
-
-    /**Endpoint types.
-     */
-    enum TerminalTypes {
-      e_TerminalOnly = 50,
-      e_TerminalAndMC = 70,
-      e_GatewayOnly = 60,
-      e_GatewayAndMC = 80,
-      e_GatewayAndMCWithDataMP = 90,
-      e_GatewayAndMCWithAudioMP = 100,
-      e_GatewayAndMCWithAVMP = 110,
-      e_GatekeeperOnly = 120,
-      e_GatekeeperWithDataMP = 130,
-      e_GatekeeperWithAudioMP = 140,
-      e_GatekeeperWithAVMP = 150,
-      e_MCUOnly = 160,
-      e_MCUWithDataMP = 170,
-      e_MCUWithAudioMP = 180,
-      e_MCUWithAVMP = 190
-    };
-
-    /**Get the endpoint terminal type.
-     */
-    TerminalTypes GetTerminalType() const { return terminalType; }
-
-    /**Determine if endpoint is terminal type.
-     */
-    PBoolean IsTerminal() const;
-
-    /**Determine if endpoint is gateway type.
-     */
-    PBoolean IsGateway() const;
-
-    /**Determine if endpoint is gatekeeper type.
-     */
-    PBoolean IsGatekeeper() const;
-
-    /**Determine if endpoint is gatekeeper type.
-     */
-    PBoolean IsMCU() const;
-
-    /**Get the default maximum audio jitter delay parameter.
-       Defaults to 50ms
-     */
-    unsigned GetMinAudioJitterDelay() const { return manager.GetMinAudioJitterDelay(); }
-
-    /**Get the default maximum audio delay jitter parameter.
-       Defaults to 250ms.
-     */
-    unsigned GetMaxAudioJitterDelay() const { return manager.GetMaxAudioJitterDelay(); }
-
-    /**Set the maximum audio delay jitter parameter.
-     */
-    void SetAudioJitterDelay(
-      unsigned minDelay,   ///<  New minimum jitter buffer delay in milliseconds
-      unsigned maxDelay    ///<  New maximum jitter buffer delay in milliseconds
-    ) { manager.SetAudioJitterDelay(minDelay, maxDelay); }
-
-    /**Get the initial bandwidth parameter.
-     */
-    unsigned GetInitialBandwidth() const { return initialBandwidth; }
-
-    /**Get the initial bandwidth parameter.
-     */
-    void SetInitialBandwidth(unsigned bandwidth) { initialBandwidth = bandwidth; }
-
-    /**Called when an outgoing PDU requires a feature set
-     */
-    virtual PBoolean OnSendFeatureSet(unsigned, H225_FeatureSet &);
-
-    /**Called when an incoming PDU contains a feature set
-     */
-    virtual void OnReceiveFeatureSet(unsigned, const H225_FeatureSet &);
-	
-    /**Load the Base FeatureSet usually called when you initialise the endpoint prior to 
-       registering with a gatekeeper.
-      */
-    virtual void LoadBaseFeatureSet();
-
-    /**Callback when creating Feature Instance. This can be used to disable features on
-       a case by case basis by returning FALSE
-       Default returns TRUE
-      */
-    virtual bool OnFeatureInstance(
-      int instType,
-      const PString & identifer
-    );
-
-#if OPAL_H460
-    /** Is the FeatureSet disabled
-      */
-    bool FeatureSetDisabled() const { return disableH460; }
-
-    /** Disable all FeatureSets. Use this for pre H323v4 interoperability
-      */
-    void FeatureSetDisable() { disableH460 = true; }
-
-    /** Get the Endpoint FeatureSet
-        This creates a new instance of the featureSet
-      */
-    H460_FeatureSet * GetFeatureSet() { return features.DeriveNewFeatureSet(); };
-#endif
-
-    /**Determine if the address is "local", ie does not need STUN
-     */
-    virtual PBoolean IsLocalAddress(
-      const PIPSocket::Address & remoteAddress
-    ) const { return manager.IsLocalAddress(remoteAddress); }
-
-    /**Provide TCP address translation hook
-     */
-    virtual void TranslateTCPAddress(
-      PIPSocket::Address & localAddr,
-      const PIPSocket::Address & remoteAddr
-    );
-
-    /**Get the TCP port number base for H.245 channels
-     */
-    WORD GetTCPPortBase() const { return manager.GetTCPPortBase(); }
-
-    /**Get the TCP port number base for H.245 channels.
-     */
-    WORD GetTCPPortMax() const { return manager.GetTCPPortMax(); }
-
-    /**Set the TCP port number base and max for H.245 channels.
-     */
-    void SetTCPPorts(unsigned tcpBase, unsigned tcpMax) { manager.SetTCPPorts(tcpBase, tcpMax); }
-
-    /**Get the next TCP port number for H.245 channels
-     */
-    WORD GetNextTCPPort() { return manager.GetNextTCPPort(); }
-
-    /**Get the UDP port number base for RAS channels
-     */
-    WORD GetUDPPortBase() const { return manager.GetUDPPortBase(); }
-
-    /**Get the UDP port number base for RAS channels.
-     */
-    WORD GetUDPPortMax() const { return manager.GetUDPPortMax(); }
-
-    /**Set the TCP port number base and max for H.245 channels.
-     */
-    void SetUDPPorts(unsigned udpBase, unsigned udpMax) { manager.SetUDPPorts(udpBase, udpMax); }
-
-    /**Get the next UDP port number for RAS channels
-     */
-    WORD GetNextUDPPort() { return manager.GetNextUDPPort(); }
-
-    /**Get the UDP port number base for RTP channels.
-     */
-    WORD GetRtpIpPortBase() const { return manager.GetRtpIpPortBase(); }
-
-    /**Get the max UDP port number for RTP channels.
-     */
-    WORD GetRtpIpPortMax() const { return manager.GetRtpIpPortMax(); }
-
-    /**Set the UDP port number base and max for RTP channels.
-     */
-    void SetRtpIpPorts(unsigned udpBase, unsigned udpMax) { manager.SetRtpIpPorts(udpBase, udpMax); }
-
-    /**Get the UDP port number pair for RTP channels.
-     */
-    WORD GetRtpIpPortPair() { return manager.GetRtpIpPortPair(); }
-
-    /**Get the IP Type Of Service byte for RTP channels.
-     */
-    BYTE GetRtpIpTypeofService() const { return manager.GetRtpIpTypeofService(); }
-
-    /**Set the IP Type Of Service byte for RTP channels.
-     */
-    void SetRtpIpTypeofService(unsigned tos) { manager.SetRtpIpTypeofService(tos); }
-
-    /**Get the default timeout for calling another endpoint.
-     */
-    const PTimeInterval & GetSignallingChannelCallTimeout() const { return signallingChannelCallTimeout; }
-
-    /**Get the default timeout for incoming H.245 connection.
-     */
-    const PTimeInterval & GetControlChannelStartTimeout() const { return controlChannelStartTimeout; }
-
-    /**Get the default timeout for waiting on an end session.
-     */
-    const PTimeInterval & GetEndSessionTimeout() const { return endSessionTimeout; }
-
-    /**Get the default timeout for master slave negotiations.
-     */
-    const PTimeInterval & GetMasterSlaveDeterminationTimeout() const { return masterSlaveDeterminationTimeout; }
-
-    /**Get the default retries for H245 master slave negotiations.
-     */
-    unsigned GetMasterSlaveDeterminationRetries() const { return masterSlaveDeterminationRetries; }
-
-    /**Get the default timeout for H245 capability exchange negotiations.
-     */
-    const PTimeInterval & GetCapabilityExchangeTimeout() const { return capabilityExchangeTimeout; }
-
-    /**Get the default timeout for H245 logical channel negotiations.
-     */
-    const PTimeInterval & GetLogicalChannelTimeout() const { return logicalChannelTimeout; }
-
-    /**Get the default timeout for H245 request mode negotiations.
-     */
-    const PTimeInterval & GetRequestModeTimeout() const { return logicalChannelTimeout; }
-
-    /**Get the default timeout for H245 round trip delay negotiations.
-     */
-    const PTimeInterval & GetRoundTripDelayTimeout() const { return roundTripDelayTimeout; }
-
-    /**Get the default rate H245 round trip delay is calculated by connection.
-     */
-    const PTimeInterval & GetRoundTripDelayRate() const { return roundTripDelayRate; }
-
-    /**Get the flag for clearing a call if the round trip delay calculation fails.
-     */
-    PBoolean ShouldClearCallOnRoundTripFail() const { return clearCallOnRoundTripFail; }
-
-    /**Get the amount of time with no media that should cause call to clear
-     */
-    const PTimeInterval & GetNoMediaTimeout() const { return manager.GetNoMediaTimeout(); }
-
-    /**Set the amount of time with no media that should cause call to clear
-     */
-    PBoolean SetNoMediaTimeout(
-      const PTimeInterval & newInterval  ///<  New timeout for media
-    ) { return manager.SetNoMediaTimeout(newInterval); }
-
-    /**Get the default timeout for GatekeeperRequest and Gatekeeper discovery.
-     */
-    const PTimeInterval & GetGatekeeperRequestTimeout() const { return gatekeeperRequestTimeout; }
-
-    /**Get the default retries for GatekeeperRequest and Gatekeeper discovery.
-     */
-    unsigned GetGatekeeperRequestRetries() const { return gatekeeperRequestRetries; }
-
-    /**Get the default timeout for RAS protocol transactions.
-     */
-    const PTimeInterval & GetRasRequestTimeout() const { return rasRequestTimeout; }
-
-    /**Get the default retries for RAS protocol transations.
-     */
-    unsigned GetRasRequestRetries() const { return rasRequestRetries; }
-
-    /**Get the default time for gatekeeper to reregister.
-       A value of zero disables the keep alive facility.
-     */
-    const PTimeInterval & GetGatekeeperTimeToLive() const { return registrationTimeToLive; }
-
-    /**Set the default time for gatekeeper to reregister.
-       A value of zero disables the keep alive facility.
-     */
-    void SetGatekeeperTimeToLive(const PTimeInterval & ttl) { registrationTimeToLive = ttl; }
-
-    /**Get the iNow Gatekeeper Access Token OID.
-     */
-    const PString & GetGkAccessTokenOID() const { return gkAccessTokenOID; }
-
-    /**Set the iNow Gatekeeper Access Token OID.
-     */
-    void SetGkAccessTokenOID(const PString & token) { gkAccessTokenOID = token; }
-
-    /**Get flag to indicate whether to send GRQ on gatekeeper registration
-     */
-    PBoolean GetSendGRQ() const
-    { return sendGRQ; }
-
-    /**Sent flag to indicate whether to send GRQ on gatekeeper registration
-     */
-    void SetSendGRQ(PBoolean v) 
-    { sendGRQ = v; }
-
-    /**Get the default timeout for Call Transfer Timer CT-T1.
-     */
-    const PTimeInterval & GetCallTransferT1() const { return callTransferT1; }
-
-    /**Get the default timeout for Call Transfer Timer CT-T2.
-     */
-    const PTimeInterval & GetCallTransferT2() const { return callTransferT2; }
-
-    /**Get the default timeout for Call Transfer Timer CT-T3.
-     */
-    const PTimeInterval & GetCallTransferT3() const { return callTransferT3; }
-
-    /**Get the default timeout for Call Transfer Timer CT-T4.
-     */
-    const PTimeInterval & GetCallTransferT4() const { return callTransferT4; }
-
-    /** Get Call Intrusion timers timeout */
-    const PTimeInterval & GetCallIntrusionT1() const { return callIntrusionT1; }
-    const PTimeInterval & GetCallIntrusionT2() const { return callIntrusionT2; }
-    const PTimeInterval & GetCallIntrusionT3() const { return callIntrusionT3; }
-    const PTimeInterval & GetCallIntrusionT4() const { return callIntrusionT4; }
-    const PTimeInterval & GetCallIntrusionT5() const { return callIntrusionT5; }
-    const PTimeInterval & GetCallIntrusionT6() const { return callIntrusionT6; }
-
-    /**Get the dictionary of <callIdentities, connections>
-     */
-    H323CallIdentityDict& GetCallIdentityDictionary() { return secondaryConnectionsActive; }
-
-    /**Get the next available invoke Id for H450 operations
-      */
-#if OPAL_H450
-    unsigned GetNextH450CallIdentityValue() const { return ++nextH450CallIdentity; }
-#endif
-
-    PString GetDefaultTransport() const;
-  //@}
-
-  protected:
-    bool InternalCreateGatekeeper(H323Transport * transport);
-    PBoolean InternalMakeCall(
-      OpalCall & call,
-      const PString & existingToken,           ///<  Existing connection to be transferred
-      const PString & callIdentity,            ///<  Call identity of the secondary call (if it exists)
-      unsigned capabilityLevel,                ///<  Intrusion capability level
-      const PString & remoteParty,             ///<  Remote party to call
-      void * userData,                         ///<  user data to pass to CreateConnection
-      unsigned int options = 0,                ///<  options to pass to connection
-      OpalConnection::StringOptions * stringOptions = NULL ///<  complex string options
-    );
-
-    // Configuration variables, commonly changed
-    PStringList     localAliasNames;
-    PStringList     localAliasPatterns;
-    PBoolean        autoCallForward;
-    PBoolean        disableFastStart;
-    PBoolean        disableH245Tunneling;
-    PBoolean        disableH245inSetup;
-    PBoolean        m_bH245Disabled; /* enabled or disabled h245 */
-    PBoolean        canDisplayAmountString;
-    PBoolean        canEnforceDurationLimit;
-#if OPAL_H450
-    unsigned    callIntrusionProtectionLevel;
-#endif
-
-    TerminalTypes terminalType;
-
-    PBoolean          clearCallOnRoundTripFail;
-
-    // Some more configuration variables, rarely changed.
-    PTimeInterval signallingChannelCallTimeout;
-    PTimeInterval controlChannelStartTimeout;
-    PTimeInterval endSessionTimeout;
-    PTimeInterval masterSlaveDeterminationTimeout;
-    unsigned      masterSlaveDeterminationRetries;
-    PTimeInterval capabilityExchangeTimeout;
-    PTimeInterval logicalChannelTimeout;
-    PTimeInterval requestModeTimeout;
-    PTimeInterval roundTripDelayTimeout;
-    PTimeInterval roundTripDelayRate;
-    PTimeInterval gatekeeperRequestTimeout;
-    unsigned      gatekeeperRequestRetries;
-    PTimeInterval rasRequestTimeout;
-    unsigned      rasRequestRetries;
-    PTimeInterval registrationTimeToLive;
-
-    PString       gkAccessTokenOID;
-    PBoolean          sendGRQ;
-
-    /* Protect against absence of a response to the ctIdentify reqest
-       (Transferring Endpoint - Call Transfer with a secondary Call) */
-    PTimeInterval callTransferT1;
-    /* Protect against failure of completion of the call transfer operation
-       involving a secondary Call (Transferred-to Endpoint) */
-    PTimeInterval callTransferT2;
-    /* Protect against failure of the Transferred Endpoint not responding
-       within sufficient time to the ctInitiate APDU (Transferring Endpoint) */
-    PTimeInterval callTransferT3;
-    /* May optionally operate - protects against absence of a response to the
-       ctSetup request (Transferred Endpoint) */
-    PTimeInterval callTransferT4;
-
-    /** Call Intrusion Timers */
-    PTimeInterval callIntrusionT1;
-    PTimeInterval callIntrusionT2;
-    PTimeInterval callIntrusionT3;
-    PTimeInterval callIntrusionT4;
-    PTimeInterval callIntrusionT5;
-    PTimeInterval callIntrusionT6;
-
-    // Dynamic variables
-    mutable H323Capabilities capabilities;
-    H323Gatekeeper *     gatekeeper;
-    PString              gatekeeperUsername;
-    PString              gatekeeperPassword;
-    H323CallIdentityDict secondaryConnectionsActive;
-
-#if OPAL_H450
-    mutable PAtomicInteger nextH450CallIdentity;
-            /// Next available callIdentity for H450 Transfer operations via consultation.
-#endif
-
-#if OPAL_H460
-    bool            disableH460;
-    H460_FeatureSet features;
-#endif
-
-};
+#include <h323/gkclient.h>
+#include <opal/buildopts.h>
 
-#endif // OPAL_H323
+PString  OpalGetVersion();
+unsigned OpalGetMajorVersion();
+unsigned OpalGetMinorVersion();
+unsigned OpalGetBuildNumber();
 
-#endif // OPAL_H323_H323EP_H
 
+#endif // OPAL_H323_H323_H
 
 /////////////////////////////////////////////////////////////////////////////


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list