-- ****************************************************************************
-- ****************************************************************************
--
--      Copyright(c) 2004-2005 Mediatrix Telecom, Inc.
--      Copyright(c) 2008 Media5 Corporation. ("Media5")
--
--  NOTICE:
--   This document contains information that is confidential and proprietary
--   to Media5.
--
--   Media5 reserves all rights to this document as well as to the Intellectual
--   Property of the document and the technology and know-how that it includes
--   and represents.
--
--   This publication cannot be reproduced, neither in whole nor in part, in
--   any form whatsoever without written prior approval by Media5.
--
--   Media5 reserves the right to revise this publication and make changes at
--   any time and without the obligation to notify any person and/or entity of
--   such revisions and/or changes.
--
-- ****************************************************************************
-- ****************************************************************************

MX-MGCPNCS-EXPERIMENTAL-MIB
DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-IDENTITY,
        OBJECT-TYPE,
        Unsigned32
    FROM SNMPv2-SMI
        OBJECT-GROUP,
        MODULE-COMPLIANCE
    FROM SNMPv2-CONF
        ifIndex
    FROM RFC1213-MIB
        MxEnableState
    FROM MX-TC
        mediatrixExperimental
    FROM MX-SMI;

mgcpncsExperimentalMIB MODULE-IDENTITY
    LAST-UPDATED "201008180000Z"
    ORGANIZATION "Media5 Corporation"
    CONTACT-INFO "Media5 Corporation
                  4229, Garlock Street
                  Sherbrooke (Quebec)
                  Canada
                  Phone: (819) 829-8749
                  "
    DESCRIPTION "This MIB contains MGCP/NCS experimental and interoperability
                 configuration objects."

    -- ************************************************************************
    -- Revision history
    -- ************************************************************************
    REVISION    "201008180000Z"
    DESCRIPTION "Added the mgcpncsPolarityReversalOnCallingCardServiceToneEnable variable."
    REVISION    "200903170000Z"
    DESCRIPTION "Added the mgcpncsBracketsAroundIpAddressInDomainNameEnable variable."
    REVISION    "200806130000Z"
    DESCRIPTION "Added the mgcpncsUseItuT38Format variable."
    REVISION    "200606090000Z"
    DESCRIPTION "Added the mgcpncsImmediateModemToneReporting, mgcpncsMakeOsiSignalBrief
                 and mgcpncsFakeRfc3407Recognition variables."
    REVISION    "200605040000Z"
    DESCRIPTION "Added the mgcpncsRtpUdpChecksumEnable variable."
    REVISION    "200510170000Z"
    DESCRIPTION "Addition of mgcpncsT38NegociationWithAudioCodec98"
    REVISION    "200504180000Z"
    DESCRIPTION "Addition of mgcpncsMultipleFaxToneDetection and
                 mgcpncsConnectRtpSockets"
    REVISION    "200503070000Z"
    DESCRIPTION "Addition of the mgcpncsValidateOfferAnswerModel variable"
    REVISION    "200411080000Z"
    DESCRIPTION "Creation"
    ::= { mediatrixExperimental 100 }

mgcpncsExperimentalMIBObjects   OBJECT IDENTIFIER ::= { mgcpncsExperimentalMIB 1 }
mgcpncsExperimentalConformance  OBJECT IDENTIFIER ::= { mgcpncsExperimentalMIB 2 }

    -- ************************************************************************
    -- Interopability Group
    -- ************************************************************************
    mgcpncsInterop OBJECT IDENTIFIER ::= { mgcpncsExperimentalMIBObjects 5 }

        mgcpncsAnswerStreamFormat OBJECT-TYPE
            SYNTAX      INTEGER {
                                 zeroAnswerStream(1),
                                 removeAnswerStream(10)
                                }
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "The answer to an offered session description is based on
                        the offered session description.

                        RFC 3264 stipulates that to reject an offered stream,
                        the port number in the corresponding stream in the
                        answer MUST be set to zero.

                        However, some gateways prefer to remove the unwanted
                        stream from the answer.

                        zeroAnswerStream:
                            The port number is set to zero if the corresponding
                            stream in the answer is unwanted.  This behaviour
                            follows the RFC 3264 best practice.

                        removeAnswerStream:
                            The unwanted stream is removed from the answer and
                            returned to the offerer. This behaviour is kept
                            for backward compatibility issue."
            DEFVAL { zeroAnswerStream }
            ::=  { mgcpncsInterop 5 }

        mgcpncsOriginLineSessionIDAndVersionMaxLength OBJECT-TYPE
            SYNTAX      INTEGER {
                                 none(1),
                                 max-32bits(10),
                                 max-64bits(20)
                                }
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "The maximum length of the session ID and the session
                         version number in the origin line (o=) of the SDP.

                         none:
                            The session ID and the session version number are
                            represented by the 0 value.

                         max-32bits:
                            The session ID and the session version number are
                            represented with a 32-bit integer. They have a
                            maximum length of 10 digits.

                         max-64bits:
                            The session ID and the session version number are
                            represented with a 64-bit integer. They have a
                            maximum length of 20 digits."
            DEFVAL      { none }
            ::= { mgcpncsInterop  10 }

        mgcpncsG729AnnexBNegotiation OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Indicates if the G.729 Annex B is negotiated through
                         the session description protocol.

                         RFC 3555 (MIME Type Registration of RTP Payload
                         Formats), July 2003 explains how the Annex B can be
                         negotiated by using the session description protocol.

                         The Annex B indicates that Annex B, voice activity
                         detection, is used or preferred. Permissible values
                         are 'yes' and 'no' (without the quotes); 'yes' is
                         implied if this parameter is omitted.

                         m=audio 5004 RTP/AVP 0 18 13
                         a=fmtp:18 annexb=yes

                         disable:
                            The G.729 Annex B is NOT negotiated through the
                            session description protocol.

                            In that case, the G.729 Annex B is based on the
                            MIB variable voiceIfG729VoiceActivityDetectionEnable.
                            When this variable is set to 'enable', the G.729
                            codec negotiated as payload number 18 (G729)
                            supports the Annex B implicitly.

                            However, when the voiceIfG729VoiceActivityDetectionEnable
                            variable is set to 'disable', the G.729 codec
                            negotiated as payload number 18 (G729) does NOT
                            support the Annex B implicitly.

                         enable:
                            The G.729 Annex B is negotiated through the
                            session description protocol.

                            In that case, the G.729 Annex B is advertised in
                            the offer. The value depends on the MIB variable
                            voiceIfG729VoiceActivityDetectionEnable. If this
                            variable is set to 'enable', then the Annex B is
                            set to 'yes'; otherwise, the value 'no' is
                            advertised.

                            The answerer MAY not be able to support the Annex B.
                            In that case, the answer to the Annex B can be set
                            to 'no'.  This forces the offerer not to use the
                            Annex B in G.729.  However, the opposite is not
                            possible.  The answerer can NOT force the offerer to
                            use the Annex B if this one does not bear such
                            capability."
            DEFVAL      { disable }
            ::= { mgcpncsInterop  15 }

        mgcpncsValidateOfferAnswerModel OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Determines whether the unit requires strict adherence to RFC 3264
                        from the peer when negotiating capabilities for the establishment
                        of a media session.

                        When enabled, the following guidelines from the Offer-Answer Model
                        must be strictly followed.  An answer must:
                        - Include at least one codec from the list that the unit sent in the offer;
                        - Avoid adding extra codecs that were not present in the offer;
                        - Contain the same number of media lines that the unit put in its offer.
                        Otherwise, the answer is rejected and the unit ends the call.

                        When disabled, then the peer can freely:
                        - Send back a brand new list of codecs or add new ones to the offered list;
                        - Add media lines AFTER the ones found in the offer.
                        As long as at least one codec sent back is supported by the unit, the call
                        is allowed to go on.  Any media lines added by the peer
                        is simply ignored."
            DEFVAL { enable }
            ::=  { mgcpncsInterop 20 }

        mgcpncsMultipleFaxToneDetection OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Controls whether the unit reports more than one occurrence
                         of the fax tone during the negotiation phase.  This when
                         event notification requests can be received after the fax
                         tone.

                         disable : when establishing a fax call, the unit only
                                   reports the first occurrence of the fax tone
                                   event.

                         enable  : the unit will report every occurrence of the fax
                                   tone event."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 100 }

        mgcpncsConnectRtpSockets OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Determines whether the endpoints will listen to RTP sources
                         other than the one to which they are sending packets.

                         disable : use unconnected sockets.  Endpoints will play any
                                   RTP packets addressed to them.

                         enable  : use connected sockets.  Endpoints will only play
                                   packets coming from the address to which they are
                                   sending."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 150 }

        mgcpncsRtpUdpChecksumEnable OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Enables/disables the UDP checksum for RTP packets. UDP
                         checksum is disabled by default to gain performance.

                         Enable: UDP checksum will be calculated for each RTP
                                 packet. This may affect performance.

                         Disable: UDP checksum will not be calculated. The value
                                  0 will be written in the checksum field of each
                                  RTP packet header."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 200 }

        mgcpncsT38CapabilitiesUsingAudioCodec98 OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Enables or disables parsing of remote SDP in order to
                         extract remote T.38 capabilities from an audio stream.

                         This variable is useful when a call-agent is re-using
                         the audio stream to advertise the remote T.38
                         capabilities instead of creating a new image stream.

                         Enable: Verifies the remote SDP audio stream for the
                                 T.38 port number. The remote SDP must meet the
                                 following conditions in order to detect T.38
                                 capabilities from the audio stream:
                                     - Single audio stream
                                     - Single media format 98
                                     - No rtpmaps

                         Disable: The call-agent never uses the audio stream
                                  to advertise the remote T.38 port number."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 250 }

        mgcpncsImmediateModemToneReporting OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Controls whether the early detection of a modem tone by the
                         the unit is immediately reported to the call agent (when requested)
                         or delayed until the exact nature of the transmission has been
                         determined.
                         Some fax transmissions begin by exchanging modem tones in their
                         setup stage; therefore, a little time is needed before the unit
                         is able to discriminate between a fax or a modem transmission.

                         enable: The unit will report a modem tone to the call agent
                                 (assuming the call agent has requested it) as soon as
                                 it detects one.

                         disable: The unit will wait until it has determined the exact
                                  nature of a data transmission and then report either
                                  a fax or a modem tone to the call agent (always assuming
                                  the call agent has requested it)."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 300 }

        mgcpncsMakeOsiSignalBrief OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "For legacy reasons, this variable makes it possible to change the
                         behaviour of the Network Disconnect signal (L/osi) by changing its
                         type from time-out to brief (see RFC 3435 for a description
                         of the various signal types).

                         enable: The L/osi signal will behave like a brief signal.

                         disable: The L/osi signal will conform to its standard definition
                                  and behave like a time-out signal."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 350 }

        mgcpncsFakeRfc3407Recognition OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Allows recognition of a remote endpoint's T.38 capabilities
                         when they are advertised using the notation recommended
                         in RFC 3407.  More precisely, when enabled, the unit will
                         recognize the line 'a=cdsc: 1 image udptl t38' in the following
                         SDP:

                            v=0
                            c=IN IP4 47.47.47.47
                            a=sqn: 0
                            a=cdsc: 1 image udptl t38
                            m=audio 1234 RTP/AVP 18
                            a=ptime:20

                         as valid T.38 support advertisement.

                         No other part of the RFC is supported and the unit itself
                         never uses this syntax.

                         enable: T.38 advertisement as described above will be recognized.

                         disable: RFC 3407 syntax will be ignored."
            DEFVAL { disable }
            ::=  { mgcpncsInterop 400 }

        mgcpncsUseItuT38Format OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Determines the format used, in the SDP portion of packets, to advertise
                         the unit's T.38 capabilities.

                         disable :
                            Support for the boolean T.38 parameters T38FaxFillBitRemoval,
                            T38FaxTranscodingMMR and T38FaxTranscodingJBIG
                            is advertised by associating a value of 0 (unsupported)
                            or 1 (supported) with the parameter in the following manner:

                                a=T38FaxFillBitRemoval:0
                                a=T38FaxTranscodingMMR:0
                                a=T38FaxTranscodingJBIG:0

                         enable :
                            Support for the above T.38 parameters is advertised in conformance with ITU-T
                            Recommendation T.38, section D.2.3.  The presence of the parameter in the SDP
                            indicates support for it (without the need for an associated value), while its
                            absence means that it is not supported."
            DEFVAL      { disable }
            ::= { mgcpncsInterop  450 }

        mgcpncsBracketsAroundIpAddressInDomainNameEnable OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Defines when brackets are added around the endpoint's domain name only
                         when the configured domain name is an IP address.

                         disable :
                            Brackets are not added around the IP address.
                            e.g.: aaln/1@192.168.0.1

                         enable :
                            Brackets are added around the IP address.
                            e.g.: aaln/1@[192.168.0.1]"
            DEFVAL      { enable }
            ::= { mgcpncsInterop  500 }
            
        mgcpncsPolarityReversalOnCallingCardServiceToneEnable OBJECT-TYPE
            SYNTAX      MxEnableState
            MAX-ACCESS  read-write
            STATUS      current
            DESCRIPTION "Defines if a polarity reversal must be performed before
                         playing the calling card service tone when receiving the
                         S:L/z signal request.

                         disable :
                            Calling card service tone signal request is handled
                            normally.

                         enable :
                            A polarity reversal is performed before handling the
                            calling card service tone signal request."
            DEFVAL      { disable }
            ::= { mgcpncsInterop  550 }

    -- ************************************************************************
    -- Conformance information
    -- ************************************************************************
    mgcpncsExperimentalCompliances OBJECT IDENTIFIER ::= { mgcpncsExperimentalConformance 1 }

    mgcpncsExperimentalBasicComplVer1 MODULE-COMPLIANCE
        STATUS      current
        DESCRIPTION "Minimal definitions for the MGCP/NCS experimental group."
        MODULE -- This Module
            MANDATORY-GROUPS {
                                mgcpncsExperimentalGroupVer1
                             }
        ::= { mgcpncsExperimentalCompliances 5 }

    -- ************************************************************************
    -- MIB variable grouping
    -- ************************************************************************
    mgcpncsExperimentalGroups OBJECT IDENTIFIER ::= { mgcpncsExperimentalConformance 2 }

    mgcpncsExperimentalGroupVer1 OBJECT-GROUP
        OBJECTS {
                    mgcpncsAnswerStreamFormat,
                    mgcpncsOriginLineSessionIDAndVersionMaxLength,
                    mgcpncsG729AnnexBNegotiation,
                    mgcpncsValidateOfferAnswerModel,
                    mgcpncsMultipleFaxToneDetection,
                    mgcpncsConnectRtpSockets,
                    mgcpncsRtpUdpChecksumEnable,
                    mgcpncsT38CapabilitiesUsingAudioCodec98,
                    mgcpncsImmediateModemToneReporting,
                    mgcpncsMakeOsiSignalBrief,
                    mgcpncsFakeRfc3407Recognition,
                    mgcpncsUseItuT38Format,
                    mgcpncsBracketsAroundIpAddressInDomainNameEnable,
                    mgcpncsPolarityReversalOnCallingCardServiceToneEnable
                }
        STATUS      current
        DESCRIPTION "This group holds the objects that define the MGCP/NCS
                     experimental group."
        ::= { mgcpncsExperimentalGroups 5 }

END
