-- *****************************************************************
-- QTECH-BFD-MIB.mib:  Qtech BFD MIB file
--
-- 2012-12-26 Wangxiaoyang@qtech.com.cn
--
-- Copyright (c) 2012 by Qtech Networks Co.,Ltd.
-- All rights reserved.
-- 
-- *****************************************************************
--

QTECH-BFD-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
        mib-2, Integer32, Unsigned32, Counter32, Counter64
        FROM SNMPv2-SMI

    TEXTUAL-CONVENTION, TruthValue, RowStatus, StorageType, TimeStamp
        FROM SNMPv2-TC

    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
        FROM SNMPv2-CONF

    InterfaceIndexOrZero
        FROM IF-MIB

    InetAddress, InetAddressType, InetPortNumber
        FROM INET-ADDRESS-MIB
        
    qtechMgmt
        FROM QTECH-SMI;

-- TEXTUAL-CONVENTION
    QtechBfdSessIndexTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT   "d"
    STATUS         current
    DESCRIPTION
        "An index used to uniquely identify BFD sessions."
    SYNTAX Unsigned32 (1..4294967295)

    QtechBfdIntervalTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "The BFD interval in microseconds."
    SYNTAX Unsigned32 (0..4294967295)

    QtechBfdMultiplierTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT    "d"
    STATUS          current
    DESCRIPTION
        "The BFD failure detection multiplier."
    SYNTAX Unsigned32 (1..255)

    QtechBfdDiagTC ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "A common BFD diagnostic code."
    SYNTAX INTEGER {
        noDiagnostic(0),
        controlDetectionTimeExpired(1),
        echoFunctionFailed(2),
        neighborSignaledSessionDown(3),
        forwardingPlaneReset(4),
        pathDown(5),
        concatenatedPathDown(6),
        administrativelyDown(7),
        reverseConcatenatedPathDown(8)
    }

    QtechBfdSessTypeTC ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
        "BFD session type"
    REFERENCE
        "Katz, D. and D. Ward, Bidirectional Forwarding
              Detection (BFD), RFC 5880, June 2010.

         Katz, D. and D. Ward, Bidirectional Forwarding
              Detection (BFD) for IPv4 and IPv6 (Single Hop),
              RFC 5881, June 2010. 

         Katz, D. and D. Ward, Bidirectional Forwarding
              Detection (BFD) for Multihop Paths, RFC 5883,
              June 2010."
    SYNTAX INTEGER {
        singleHop(1),
        multiHopTotallyArbitraryPaths(2),
        multiHopOutOfBandSignaling(3),
        multiHopUnidirectionalLinks(4),
        multiPointHead(5),
        multiPointTail(6)
    }

    QtechBfdSessOperModeTC ::= TEXTUAL-CONVENTION
    STATUS            current
    DESCRIPTION
        "BFD session operating mode"
    REFERENCE
        "Katz, D. and D. Ward, Bidirectional Forwarding Detection (BFD), RFC 5880, June 2010."
    SYNTAX INTEGER {
        asyncModeWEchoFunction(1),
        asynchModeWOEchoFunction(2),
        demandModeWEchoFunction(3),
        demandModeWOEchoFunction(4)
    }

    QtechBfdCtrlDestPortNumberTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT            "d"
    STATUS                  current
    DESCRIPTION
        "UDP destination port number of BFD control packets.
         3784 represents single hop BFD session.
         4784 represents multi hop BFD session.
         However, syntax is left open to wider range of values
         purposely for two reasons:
         1. implementation uses non-compliant port number for
            valid proprietary reason.
         2. potential future extension drafts."
    REFERENCE
        "Use of port 3784 from Katz, D. and D. Ward, 
              Bidirectional Forwarding
              Detection (BFD) for IPv4 and IPv6 (Single Hop),
              RFC 5881, June 2010.

         Use of port 4784 from Katz, D. and D. Ward, Bidirectional 
              Forwarding Detection (BFD) for IPv4 and IPv6 
              (Single Hop), RFC 5881, June 2010."
    SYNTAX Unsigned32 (0..65535)

    QtechBfdCtrlSourcePortNumberTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT              "d"
    STATUS                    current
    DESCRIPTION
        "UDP source port number of BFD control packets.
         However, syntax is left open to wider range of values
         purposely for two reasons:
         1. implementation uses non-compliant port number for
            valid proprietary reason.
         2. potential future extension drafts."
    REFERENCE
        "Port 49152..65535 (RFC5881)"
    SYNTAX Unsigned32 (0..65535)

    QtechBfdSessStateTC ::= TEXTUAL-CONVENTION
    STATUS         current
    DESCRIPTION
        "BFD session state. State failing(5) is only applicable if
         corresponding session is running in BFD version 0."
    REFERENCE
        "RFC 5880 - Bidirectional Forwarding Detection (BFD), Katz, 
         D., Ward, D., June 2010."
    SYNTAX INTEGER {
        adminDown(1),
        down(2),
        init(3),
        up(4),
        failing(5)
    }

    QtechBfdSessAuthenticationTypeTC ::= TEXTUAL-CONVENTION
    STATUS                      current
    DESCRIPTION
        "BFD authentication type"
    REFERENCE
        "Sections 4.2 - 4.4 from Katz, D. and D. Ward, 
         Bidirectional Forwarding Detection (BFD), 
         RFC 5880, June 2010."
    SYNTAX INTEGER {
        noAuthentication(-1),
        reserved(0),
        simplePassword(1),
        keyedMD5(2),
        meticulousKeyedMD5(3),
        keyedSHA1(4),
        meticulousKeyedSHA1(5)
    }

    QtechBfdSessionAuthenticationKeyTC ::= TEXTUAL-CONVENTION
    DISPLAY-HINT                  "1x "
    STATUS                        current
    DESCRIPTION
        "BFD authentication key type.

         A QtechBfdSessionAuthenticationKeyTC is always interpreted within
         the context of an QtechBfdSessAuthenticationTypeTC value.  Every
         usage of the QtechBfdSessionAuthenticationTypeTC textual
         convention is required to specify the the
         QtechBfdSessionAuthenticationKeyTC object that provides the
         context.  It is suggested that the
         QtechBfdSessionAuthentcationTypeTC object be logically registered
         before the object(s) that use the
         QtechBfdSessionAuthenticationKeyTC textual convention, if they
         appear in the same logical row.

         The value of a QtechBfdSessionAuthenticationKeyTC must always be
         consistent with the value of the associated
         QtechBfdSessionAuthencationTypeTC object.  Attempts to set a
         QtechBfdSessionAuthenticationKeyTC object to a value inconsistent
         with the associated QtechBfdSessionAuthenticationTypeTC must fail
         with an inconsistentValue error.

         The following size constraints for a
         QtechBfdSessionAuthenticationKeyTC object are defined for the
         associated QtechBfdSessionAuthenticationTypeTC values show below:

         noAuthentication(-1): SIZE(0)
         reserved(0): SIZE(0)
         simplePassword(1): SIZE(1..16)
         keyedMD5(2): SIZE(16)
         meticulousKeyedMD5(3): SIZE(16)
         keyedSHA1(4): SIZE(20)
         meticulousKeyedSHA1(5): SIZE(20)

         When this textual convention is used as the syntax of an
         index object, there may be issues with the limit of 128
         sub-identifiers specified in SMIv2, STD 58.  In this case,
         the object definition MUST include a 'SIZE' clause to limit
         the number of potential instance sub-identifiers; otherwise
         the applicable constraints MUST be stated in the appropriate
         conceptual row DESCRIPTION clauses, or in the surrounding
         documentation if there is no single DESCRIPTION clause that
         is appropriate."
    REFERENCE
        "RFC5880, Sections 4.2 - 4.4"
    SYNTAX OCTET STRING(SIZE(0..252))
    
    
-- qtech bfd mib 


qtechBfdMIB MODULE-IDENTITY
    LAST-UPDATED "201204141200Z"
    ORGANIZATION "Qtech Networks Co.,Ltd."
    CONTACT-INFO
            " 
            Tel: 4008-111-000 

            E-mail: service@qtech.com.cn"
    DESCRIPTION
            "This module defines qtech BFD mibs."
    REVISION      "201204141200Z"
    DESCRIPTION
            "Initial version of this MIB module."
                
-- RFC Ed.: RFC-editor pls fill in xxxx
    ::= { qtechMgmt 48 }
-- RFC Ed.: assigned by IANA, see section 7.1 for details

-- Top level components of this MIB module.

qtechBfdNotifications OBJECT IDENTIFIER ::= { qtechBfdMIB 0 }

qtechBfdObjects       OBJECT IDENTIFIER ::= { qtechBfdMIB 1 }

qtechBfdConformance   OBJECT IDENTIFIER ::= { qtechBfdMIB 2 }

qtechBfdScalarObjects OBJECT IDENTIFIER ::= { qtechBfdObjects 1 }

-- BFD General Variables

-- These parameters apply globally to the Systems'
-- BFD Process.

qtechBfdAdminStatus OBJECT-TYPE
    SYNTAX     INTEGER {
        enabled(1),
        disabled(2)
    }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The global administrative status of BFD in this device.
         The value 'enabled' denotes that the BFD Process is
         active on at least one interface; 'disabled' disables
         it on all interfaces."
    DEFVAL { enabled }
    ::= { qtechBfdScalarObjects 1 }

qtechBfdSessNotificationsEnable OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "If this object is set to true(1), then it enables
         the emission of qtechBfdSessUp and qtechBfdSessDown
         notifications; otherwise these notifications are not
         emitted."
    REFERENCE
        "See also RFC3413 for explanation that
         notifications are under the ultimate control of the
         MIB modules in this document."
    DEFVAL { false }
    ::= { qtechBfdScalarObjects 2 }

-- BFD Session Table
-- The BFD Session Table specifies BFD session specific
-- information.

qtechBfdSessTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechBfdSessEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Table describes the BFD sessions."
    REFERENCE
        "Katz, D. and D. Ward, Bidirectional Forwarding
          Detection (BFD), RFC 5880, June 2012."
    ::= { qtechBfdObjects 2 }

qtechBfdSessEntry OBJECT-TYPE
    SYNTAX     QtechBfdSessEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Entry describes BFD session."
    INDEX { qtechBfdSessIndex }
    ::= { qtechBfdSessTable 1 }

QtechBfdSessEntry ::= SEQUENCE {
    qtechBfdSessIndex                    QtechBfdSessIndexTC,
    qtechBfdSessVersionNumber            Unsigned32,
    qtechBfdSessType                     QtechBfdSessTypeTC,
    qtechBfdSessDiscriminator            Unsigned32,
    qtechBfdSessRemoteDiscr              Unsigned32,
    qtechBfdSessDestinationUdpPort       QtechBfdCtrlDestPortNumberTC,
    qtechBfdSessSourceUdpPort            QtechBfdCtrlSourcePortNumberTC,
    qtechBfdSessEchoSourceUdpPort        InetPortNumber,
    qtechBfdSessAdminStatus              INTEGER,
    qtechBfdSessState                    QtechBfdSessStateTC,
    qtechBfdSessRemoteHeardFlag          TruthValue,
    qtechBfdSessDiag                     QtechBfdDiagTC,
    qtechBfdSessOperMode                 QtechBfdSessOperModeTC,
    qtechBfdSessDemandModeDesiredFlag    TruthValue,
    qtechBfdSessControlPlaneIndepFlag    TruthValue,
    qtechBfdSessMultipointFlag           TruthValue,
    qtechBfdSessInterface                InterfaceIndexOrZero,
    qtechBfdSessSrcAddrType              InetAddressType,
    qtechBfdSessSrcAddr                  InetAddress,
    qtechBfdSessDstAddrType              InetAddressType,
    qtechBfdSessDstAddr                  InetAddress,
    qtechBfdSessGTSM                     TruthValue,
    qtechBfdSessGTSMTTL                  Unsigned32,
    qtechBfdSessDesiredMinTxInterval     QtechBfdIntervalTC,
    qtechBfdSessReqMinRxInterval         QtechBfdIntervalTC,
    qtechBfdSessReqMinEchoRxInterval     QtechBfdIntervalTC,
    qtechBfdSessDetectMult               QtechBfdMultiplierTC,
    qtechBfdSessNegotiatedInterval       QtechBfdIntervalTC,
    qtechBfdSessNegotiatedEchoInterval   QtechBfdIntervalTC,
    qtechBfdSessNegotiatedDetectMult     QtechBfdMultiplierTC,
    qtechBfdSessAuthPresFlag             TruthValue,
    qtechBfdSessAuthenticationType       QtechBfdSessAuthenticationTypeTC,
    qtechBfdSessAuthenticationKeyID      Integer32,
    qtechBfdSessAuthenticationKey        QtechBfdSessionAuthenticationKeyTC,
    qtechBfdSessStorageType              StorageType,
    qtechBfdSessRowStatus                RowStatus
}

qtechBfdSessIndex OBJECT-TYPE
    SYNTAX     QtechBfdSessIndexTC
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "This object contains an index used to represent a
         unique BFD session on this device."
    ::= { qtechBfdSessEntry 1 }

qtechBfdSessVersionNumber OBJECT-TYPE
    SYNTAX     Unsigned32 (0..7)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The version number of the BFD protocol that this session
         is running in. Write access is available for this object
         to provide ability to set desired version for this
         BFD session."
    REFERENCE
        "Katz, D. and D. Ward, Bidirectional Forwarding
          Detection (BFD), RFC 5880, June 2012."
    DEFVAL { 1 }
    ::= { qtechBfdSessEntry 2 }

qtechBfdSessType OBJECT-TYPE
    SYNTAX     QtechBfdSessTypeTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the type of this BFD session."
    ::= { qtechBfdSessEntry 3 }

qtechBfdSessDiscriminator OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the local discriminator for this BFD
         session, used to uniquely identify it."
    ::= { qtechBfdSessEntry 4 }

qtechBfdSessRemoteDiscr OBJECT-TYPE
    SYNTAX     Unsigned32 (0 | 1..4294967295)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the session discriminator chosen
         by the remote system for this BFD session.  The value may
         be zero(0) if the remote discriminator is not yet known
         or if the session is in the down or adminDown(1) state."
    REFERENCE
        "Section 6.8.6, from Katz, D. and D. Ward, Bidirectional 
         Forwarding Detection (BFD), RFC 5880, June 2012."
    ::= { qtechBfdSessEntry 5 }

qtechBfdSessDestinationUdpPort OBJECT-TYPE
    SYNTAX     QtechBfdCtrlDestPortNumberTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the destination UDP port number
         used for this BFD session's control packets. The value
         may be zero(0) if the session is in adminDown(1) state."
    DEFVAL { 0 }
    ::= { qtechBfdSessEntry 6 }

qtechBfdSessSourceUdpPort OBJECT-TYPE
    SYNTAX     QtechBfdCtrlSourcePortNumberTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the source UDP port number used
         for this BFD session's control packets. The value may be
         zero(0) if the session is in adminDown(1) state. Upon
         creation of a new BFD session via this MIB, the value of
         zero(0) specified would permit the implementation to
         chose its own source port number."
    DEFVAL { 0 }
    ::= { qtechBfdSessEntry 7 }

qtechBfdSessEchoSourceUdpPort OBJECT-TYPE
    SYNTAX     InetPortNumber
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the source UDP port number used for
         this BFD session's echo packets. The value may be zero(0)
         if the session is not running in the echo mode, or the
         session is in adminDown(1) state. Upon creation of a new
         BFD session via this MIB, the value of zero(0) would
         permit the implementation to chose its own source port
         number."
    DEFVAL { 0 }
    ::= { qtechBfdSessEntry 8 }

qtechBfdSessAdminStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                        stop(1),
                        start(2)
               }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "A transition from 'stop' to 'start' will start
             the BFD state machine for the session. The state
             machine will have an initial state of down.
             A transition from 'start' to 'stop' will cause
             the BFD sesssion to be brought down to
             adminDown(1). Care should be used in providing
             write access to this object without adequate
             authentication."
    DEFVAL { 2 }
    ::= { qtechBfdSessEntry 9 }

qtechBfdSessState OBJECT-TYPE
    SYNTAX     QtechBfdSessStateTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "BFD session state."
    DEFVAL { 2 }
    ::= { qtechBfdSessEntry 10 }

qtechBfdSessRemoteHeardFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies status of BFD packet reception from
         the remote system. Specifically, it is set to true(1) if
         the local system is actively receiving BFD packets from the
         remote system, and is set to false(2) if the local system
         has not received BFD packets recently (within the detection
         time) or if the local system is attempting to tear down
         the BFD session."
    REFERENCE
        "Katz, D. and D. Ward, Bidirectional 
         Forwarding Detection (BFD), RFC 5880, June 2012."
    DEFVAL { false }
    ::= { qtechBfdSessEntry 11 }

qtechBfdSessDiag OBJECT-TYPE
    SYNTAX     QtechBfdDiagTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A diagnostic code specifying the local system's reason
         for the last transition of the session from up(4)
         to some other state."
    ::= { qtechBfdSessEntry 12 }

qtechBfdSessOperMode OBJECT-TYPE
    SYNTAX     QtechBfdSessOperModeTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies current operating mode that BFD
         session is operating in."
    ::= { qtechBfdSessEntry 13 }

qtechBfdSessDemandModeDesiredFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object indicates that the local system's
         desire to use Demand mode. Specifically, it is set
         to true(1) if the local system wishes to use
         Demand mode or false(2) if not"
    DEFVAL { false }
    ::= { qtechBfdSessEntry 14 }

qtechBfdSessControlPlaneIndepFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object indicates that the local system's
         ability to continue to function through a disruption of
         the control plane. Specifically, it is set
         to true(1) if the local system BFD implementation is
         independent of the control plane. Otherwise, the
         value is set to false(2)"
    DEFVAL { false }
    ::= { qtechBfdSessEntry 15 }

qtechBfdSessMultipointFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object indicates the Multipoint (M) bit for this
         session. It is set to true(1) if Multipoint (M) bit is
         set to 1. Otherwise, the value is set to false(2)"
    DEFVAL { false }
    ::= { qtechBfdSessEntry 16 }

qtechBfdSessInterface OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object contains an interface index used to indicate
         the interface which this BFD session is running on. This
         value can be zero if there is no interface associated
         with this BFD session."
    ::= { qtechBfdSessEntry 17 }

qtechBfdSessSrcAddrType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies IP address type of the source IP
         address of this BFD session. Only values unknown(0),
         ipv4(1), ipv6(2), or ipv6z(4) have to be supported.
         The value of unknown(0) is allowed only when the session
         is singleHop(1) and the source IP address of this BFD
         session is drived from the outgoing interface, or when
         the BFD session is not associated with a specific
         interface. If any other unsupported values are attempted
         in a set operation, the agent MUST return an
         inconsistentValue error."
  ::= { qtechBfdSessEntry 18 }

qtechBfdSessSrcAddr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the source IP address of this BFD
         session."
    ::= { qtechBfdSessEntry 19 }

qtechBfdSessDstAddrType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies IP address type of the neighboring IP
         address which is being monitored with this BFD session.
         Only values unknown(0), ipv4(1), ipv6(2), or ipv6z(4)
         have to be supported. The value of unknown(0) is allowed
         only when the session is singleHop(1) and the outgoing
         interface is of type point-to-point, or when the BFD
         session is not associated with a specific interface. If any
         other unsupported values are attempted in a set operation,
         the agent MUST return an inconsistentValue error."
  ::= { qtechBfdSessEntry 20 }

qtechBfdSessDstAddr OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the neighboring IP address which is
         being monitored with this BFD session."
    ::= { qtechBfdSessEntry 21 }

qtechBfdSessGTSM OBJECT-TYPE
    SYNTAX  TruthValue
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
       "Setting the value of this object to true(1) will enable GTSM
        protection of the BFD session.  GTSM MUST be enabled on a
        singleHop(1) session if no authentication is in use."
    REFERENCE
       "RFC5082, The Generalized TTL Security Mechanism (GTSM).
        RFC5881, Section 5"
    DEFVAL { false }
    ::= { qtechBfdSessEntry 22 }

qtechBfdSessGTSMTTL OBJECT-TYPE
    SYNTAX Unsigned32 (0..255)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "This object is valid only when qtechBfdSessGTSM protection is
         enabled on the system. This object specifies the minimum
         allowed TTL for received BFD control packets. For
         singleHop(1) session, if GTSM protection is enabled,
         this object SHOULD be set to maximum TTL allowed for
         single hop. The value of zero(0) indicates that
         qtechBfdSessGTSM is disabled."
    REFERENCE
       "RFC5082, The Generalized TTL Security Mechanism (GTSM).
        RFC5881, Section 5"
    DEFVAL { 0 }
    ::= { qtechBfdSessEntry 23 }

qtechBfdSessDesiredMinTxInterval OBJECT-TYPE
    SYNTAX     QtechBfdIntervalTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the minimum interval, in
         microseconds, that the local system would like to use
         when transmitting BFD Control packets. The value of
         zero(0) is reserved, and should not be used."
    REFERENCE
        "Section 4.1 from Katz, D. and D. Ward, Bidirectional 
         Forwarding Detection (BFD), RFC 5880, June 2012."
    ::= { qtechBfdSessEntry 24 }

qtechBfdSessReqMinRxInterval OBJECT-TYPE
    SYNTAX     QtechBfdIntervalTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the minimum interval, in
         microseconds, between received  BFD Control packets the
         local system is capable of supporting. The value of
         zero(0) can be specified when the transmitting system
         does not want the remote system to send any periodic BFD
         control packets."
    REFERENCE
        "Section 4.1 from Katz, D. and D. Ward, Bidirectional 
         Forwarding Detection (BFD), RFC 5880, June 2012."
    ::= { qtechBfdSessEntry 25 }

qtechBfdSessReqMinEchoRxInterval OBJECT-TYPE
    SYNTAX     QtechBfdIntervalTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the minimum interval, in
         microseconds, between received BFD Echo packets that this
         system is capable of supporting. Value must be zero(0) if
         this is a multihop BFD session."
    ::= { qtechBfdSessEntry 26 }

qtechBfdSessDetectMult OBJECT-TYPE
    SYNTAX     QtechBfdMultiplierTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object specifies the Detect time multiplier."
    ::= { qtechBfdSessEntry 27 }

qtechBfdSessNegotiatedInterval OBJECT-TYPE
    SYNTAX     QtechBfdIntervalTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the negotiated interval, in
         microseconds, that the local system is transmitting
         BFD Control packets."
    ::= { qtechBfdSessEntry 28 }

qtechBfdSessNegotiatedEchoInterval OBJECT-TYPE
    SYNTAX     QtechBfdIntervalTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the negotiated interval, in
         microseconds, that the local system is transmitting
         BFD echo packets. Value is expected to be zero if
         the sessions is not running in echo mode."
    ::= { qtechBfdSessEntry 29 }

qtechBfdSessNegotiatedDetectMult OBJECT-TYPE
    SYNTAX     QtechBfdMultiplierTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the Detect time multiplier."
    ::= { qtechBfdSessEntry 30 }

qtechBfdSessAuthPresFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object indicates that the local system's
         desire to use Authentication. Specifically, it is set
         to true(1) if the local system wishes the session
         to be authenticated or false(2) if not."
    REFERENCE
        "Sections 4.2 - 4.4 from Katz, D. and D. Ward, 
         Bidirectional Forwarding Detection (BFD), RFC 5880, 
         June 2012."
    DEFVAL { false }
    ::= { qtechBfdSessEntry 31 }

qtechBfdSessAuthenticationType OBJECT-TYPE
    SYNTAX     QtechBfdSessAuthenticationTypeTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The Authentication Type used for this BFD session.
         This field is valid only when the Authentication
         Present bit is set. Max-access to this object as well as
         other authentication related objects are set to
         read-create in order to support management of a single
         key ID at a time, key rotation is not handled. Key update
         in practice must be done by atomic update using a set
         containing all affected objects in the same varBindList
         or otherwise risk the session dropping. Value -1
         indicates that no authentication is in use for this
         session."
    REFERENCE
        "Sections 4.2 - 4.4 from Katz, D. and D. Ward, 
         Bidirectional Forwarding Detection (BFD), RFC 5880, 
         June 2012."
    DEFVAL { -1 }
    ::= { qtechBfdSessEntry 32 }

qtechBfdSessAuthenticationKeyID OBJECT-TYPE
    SYNTAX     Integer32 (-1 | 0..255)
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The authentication key ID in use for this session.  This
         object permits multiple keys to be active simultaneously.
         When qtechBfdSessAuthPresFlag is false(2), then the value
         of this object MUST be -1.  The value -1 indicates that
         no Authentication Key ID will be present in the optional
         BFD Authentication Section."
    REFERENCE
        "Sections 4.2 - 4.4 from Katz, D. and D. Ward, 
         Bidirectional Forwarding Detection (BFD), RFC 5880, 
         June 2012."
    DEFVAL { -1 }
    ::= { qtechBfdSessEntry 33 }

qtechBfdSessAuthenticationKey OBJECT-TYPE
    SYNTAX     QtechBfdSessionAuthenticationKeyTC
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The authentication key.  When the
         qtechBfdSessAuthenticationType is simplePassword(1), the value
         of this object is the password present in the BFD packets.

         When the qtechBfdSessAuthentication type is one of the keyed
         authentication types, this value is used in the
         computation of the key present in the BFD authentication
         packet."
    REFERENCE
        "Sections 4.2 - 4.4 from from Katz, D. and D. Ward, 
         Bidirectional Forwarding Detection (BFD), RFC 5880, 
         June 2012."
    ::= { qtechBfdSessEntry 34 }

qtechBfdSessStorageType OBJECT-TYPE
    SYNTAX     StorageType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable indicates the storage type for this
         object. Conceptual rows having the value
         'permanent' need not allow write-access to any
         columnar objects in the row."
    ::= { qtechBfdSessEntry 35 }

qtechBfdSessRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table. When a row in this
         table has a row in the active(1) state, no
         objects in this row can be modified except the
         qtechBfdSessRowStatus and qtechBfdSessStorageType."
    ::= { qtechBfdSessEntry 36 }

-- BFD Session Performance Table

qtechBfdSessPerfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechBfdSessPerfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "This table specifies BFD Session performance counters."
    ::= { qtechBfdObjects 3 }

qtechBfdSessPerfEntry OBJECT-TYPE
    SYNTAX     QtechBfdSessPerfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry in this table is created by a BFD-enabled node
         for every BFD Session. qtechBfdSessPerfDiscTime is used to
         indicate potential discontinuity for all counter objects
         in this table."
    AUGMENTS    { qtechBfdSessEntry }
    ::= { qtechBfdSessPerfTable 1 }

QtechBfdSessPerfEntry ::= SEQUENCE {
   qtechBfdSessPerfCtrlPktIn           Counter32,
   qtechBfdSessPerfCtrlPktOut          Counter32,
   qtechBfdSessPerfCtrlPktDrop         Counter32,
   qtechBfdSessPerfCtrlPktDropLastTime TimeStamp,
   qtechBfdSessPerfEchoPktIn           Counter32,
   qtechBfdSessPerfEchoPktOut          Counter32,
   qtechBfdSessPerfEchoPktDrop         Counter32,
   qtechBfdSessPerfEchoPktDropLastTime TimeStamp,
   qtechBfdSessUpTime                  TimeStamp,
   qtechBfdSessPerfLastSessDownTime    TimeStamp,
   qtechBfdSessPerfLastCommLostDiag    QtechBfdDiagTC,
   qtechBfdSessPerfSessUpCount         Counter32,
   qtechBfdSessPerfDiscTime            TimeStamp,

   -- High Capacity Counters
   qtechBfdSessPerfCtrlPktInHC         Counter64,
   qtechBfdSessPerfCtrlPktOutHC        Counter64,
   qtechBfdSessPerfCtrlPktDropHC       Counter64,
   qtechBfdSessPerfEchoPktInHC         Counter64,
   qtechBfdSessPerfEchoPktOutHC        Counter64,
   qtechBfdSessPerfEchoPktDropHC       Counter64
}

-- Ed Note: should we add per-diag code counts here,

qtechBfdSessPerfCtrlPktIn OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD control messages received for this
         BFD session. This value MUST be equal to the least
         significant 32 bits of qtechBfdSessPerfCtrlPktInHC."
    ::= { qtechBfdSessPerfEntry 1 }

qtechBfdSessPerfCtrlPktOut OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD control messages sent for this BFD
         session. 

         It MUST be equal to the least significant 32 bits of
         significant 32 bits of qtechBfdSessPerfCtrlPktOutHC
         if supported, and MUST do so the rules spelled out in 
         RFC 2863."             

    ::= { qtechBfdSessPerfEntry 2 }

qtechBfdSessPerfCtrlPktDrop OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD control messages received for this
         session yet dropped for being invalid. 

         It MUST be equal to the least significant 32 bits of
         significant 32 bits of qtechBfdSessPerfCtrlPktDropHC
         if supported, and MUST do so the rules spelled out in 
         RFC 2863."             
    ::= { qtechBfdSessPerfEntry 3 }

qtechBfdSessPerfCtrlPktDropLastTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime on the most recent occasion at
         which received BFD control message for this session was
         dropped. If no such up event exists, this object contains
         a zero value."
    ::= { qtechBfdSessPerfEntry 4 }

qtechBfdSessPerfEchoPktIn OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD echo messages received for this
         BFD session. 

         It MUST be equal to the least significant 32 bits of
         significant 32 bits of qtechBfdSessPerfEchoPktInHC if 
         supported, and MUST do so the rules spelled out in 
         RFC 2863."             
    ::= { qtechBfdSessPerfEntry 5 }

qtechBfdSessPerfEchoPktOut OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD echo messages sent for this BFD
         session. 

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfEchoPktOutHC if supported, and MUST do so
         the rules spelled out in RFC 2863."             
    ::= { qtechBfdSessPerfEntry 6 }

qtechBfdSessPerfEchoPktDrop OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The total number of BFD echo messages received for this
         session yet dropped for being invalid. 

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfEchoPktDropHC if supported, and MUST do so
         the rules spelled out in RFC 2863."             
    ::= { qtechBfdSessPerfEntry 7 }

qtechBfdSessPerfEchoPktDropLastTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime on the most recent occasion at
         which received BFD echo message for this session was
         dropped. If no such up event exists, this object contains
         a zero value."
    ::= { qtechBfdSessPerfEntry 8 }

qtechBfdSessUpTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime on the most recent occasion at which
         the session came up. If no such up event exists this object
         contains a zero value."
    ::= { qtechBfdSessPerfEntry 9 }

qtechBfdSessPerfLastSessDownTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime on the most recent occasion at
         which the last time communication was lost with the
         neighbor. If no such down event exist this object
         contains a zero value."
    ::= { qtechBfdSessPerfEntry 10 }

qtechBfdSessPerfLastCommLostDiag OBJECT-TYPE
    SYNTAX     QtechBfdDiagTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The BFD diag code for the last time communication was lost
         with the neighbor. If no such down event exists this object
         contains a zero value."
    ::= { qtechBfdSessPerfEntry 11 }

qtechBfdSessPerfSessUpCount OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times this session has gone into the Up
         state since the system last rebooted."
    ::= { qtechBfdSessPerfEntry 12 }

qtechBfdSessPerfDiscTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
      "The value of sysUpTime on the most recent occasion at
       which any one or more of the session counters suffered
       a discontinuity.

       The relevant counters are the specific instances associated
       with this BFD session of any Counter32 object contained in
       the BfdSessPerfTable. If no such discontinuities have
       occurred since the last re-initialization of the local
       management subsystem, then this object contains a zero
       value."
    ::= { qtechBfdSessPerfEntry 13 }

qtechBfdSessPerfCtrlPktInHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD control
         messages received for this BFD session. 

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfCtrlPktInHC if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 14 }

qtechBfdSessPerfCtrlPktOutHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD control
         messages transmitted for this BFD session.

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfCtrlPktOut if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 15 }

qtechBfdSessPerfCtrlPktDropHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD control
         messages received for this BFD session yet dropped for
         being invalid.

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfCtrlPktDrop if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 16 }

qtechBfdSessPerfEchoPktInHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD echo
         messages received for this BFD session.

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfEchoPktIn if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 17 }

qtechBfdSessPerfEchoPktOutHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD echo
         messages transmitted for this BFD session.

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfEchoPktOut if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 18 }

qtechBfdSessPerfEchoPktDropHC OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This value represents the total number of BFD echo
         messages received for this BFD session yet dropped
         for being invalid.

         It MUST be equal to the least significant 32 bits of
         qtechBfdSessPerfEchoPktDrop if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { qtechBfdSessPerfEntry 19 }

-- BFD Session Discriminator Mapping Table

qtechBfdSessDiscMapTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechBfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Discriminator Mapping Table maps a
         local discriminator value to associated BFD session's
         QtechBfdSessIndexTC used in the qtechBfdSessionTable."
    ::= { qtechBfdObjects 4 }

qtechBfdSessDiscMapEntry OBJECT-TYPE
    SYNTAX     QtechBfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Discriminator Map Entry describes
         BFD session that is mapped to this QtechBfdSessIndexTC."
    INDEX { qtechBfdSessDiscriminator }
    ::= { qtechBfdSessDiscMapTable 1 }

QtechBfdSessDiscMapEntry ::= SEQUENCE {
    qtechBfdSessDiscMapIndex            QtechBfdSessIndexTC,
    qtechBfdSessDiscMapStorageType      StorageType,
    qtechBfdSessDiscMapRowStatus        RowStatus
}

qtechBfdSessDiscMapIndex OBJECT-TYPE
    SYNTAX     QtechBfdSessIndexTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the QtechBfdSessIndexTC referred to by
         the indices of this row. In essence, a mapping is
         provided between these indexes and the QtechBfdSessTable."
    ::= { qtechBfdSessDiscMapEntry 1 }

qtechBfdSessDiscMapStorageType OBJECT-TYPE
    SYNTAX     StorageType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable indicates the storage type for this
         object. Conceptual rows having the value
         'permanent' need not allow write-access to any
         columnar objects in the row."
    ::= { qtechBfdSessDiscMapEntry 2 }

qtechBfdSessDiscMapRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table. When a row in this
         table has a row in the active(1) state, no
         objects in this row can be modified except the
         qtechBfdSessDiscMapRowStatus and qtechBfdSessDiscMapStorageType."
    ::= { qtechBfdSessDiscMapEntry 3 }

-- BFD Session IP Mapping Table

qtechBfdSessIpMapTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF QtechBfdSessIpMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session IP Mapping Table maps given
         qtechBfdSessInterface, qtechBfdSessSrcAddrType, qtechBfdSessSrcAddr,
         qtechBfdSessDstAddrType and qtechBfdSessDstAddr
         to an associated BFD session's QtechBfdSessIndexTC used in
         the qtechBfdSessionTable."
    ::= { qtechBfdObjects 5 }

qtechBfdSessIpMapEntry OBJECT-TYPE
    SYNTAX     QtechBfdSessIpMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "The BFD Session IP Map Entry describes
        BFD session that is mapped to this QtechBfdSessIndexTC."
    INDEX {
        qtechBfdSessInterface,
        qtechBfdSessSrcAddrType,
        qtechBfdSessSrcAddr,
        qtechBfdSessDstAddrType,
        qtechBfdSessDstAddr
    }
    ::= { qtechBfdSessIpMapTable 1 }

QtechBfdSessIpMapEntry ::= SEQUENCE {
    qtechBfdSessIpMapIndex            QtechBfdSessIndexTC,
    qtechBfdSessIpMapStorageType      StorageType,
    qtechBfdSessIpMapRowStatus        RowStatus
}

qtechBfdSessIpMapIndex OBJECT-TYPE
    SYNTAX     QtechBfdSessIndexTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This object specifies the QtechBfdSessIndexTC referred to by
         the indexes of this row. In essence, a mapping is
         provided between these indexes and the QtechBfdSessTable."
    ::= { qtechBfdSessIpMapEntry 1 }

qtechBfdSessIpMapStorageType OBJECT-TYPE
    SYNTAX     StorageType
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable indicates the storage type for this
         object. Conceptual rows having the value
         'permanent' need not allow write-access to any
         columnar objects in the row."
    ::= { qtechBfdSessIpMapEntry 2 }

qtechBfdSessIpMapRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table. When a row in this
         table has a row in the active(1) state, no
         objects in this row can be modified except the
         qtechBfdSessIpMapRowStatus and qtechBfdSessIpMapStorageType."
    ::= { qtechBfdSessIpMapEntry 3 }

-- Notification Configuration

qtechBfdSessUp NOTIFICATION-TYPE
    OBJECTS {
        qtechBfdSessDiag, -- low range value
        qtechBfdSessDiag  -- high range value
    }
    STATUS     current
    DESCRIPTION
        "This notification is generated when the
         qtechBfdSessState object for one or more contiguous
         entries in qtechBfdSessTable are about to enter the up(4)
         state from some other state. The included values of
         qtechBfdSessDiag MUST both be set equal to this
         new state (i.e: up(4)).  The two instances of
         qtechBfdSessDiag in this notification indicate the range
         of indexes that are affected.  Note that all the indexes
         of the two ends of the range can be derived from the
         instance identifiers of these two objects.  For the
         cases where a contiguous range of sessions
         have transitioned into the up(4) state at roughly
         the same time, the device SHOULD issue a single
         notification for each range of contiguous indexes in
         an effort to minimize the emission of a large number
         of notifications.  If a notification has to be
         issued for just a single qtechBfdSessEntry, then
         the instance identifier (and values) of the two
         qtechBfdSessDiag objects MUST be the identical."
    ::= { qtechBfdNotifications 1 }

qtechBfdSessDown NOTIFICATION-TYPE
    OBJECTS {
        qtechBfdSessDiag, -- low range value
        qtechBfdSessDiag  -- high range value
    }
    STATUS     current
    DESCRIPTION
        "This notification is generated when the
         qtechBfdSessState object for one or more contiguous
         entries in qtechBfdSessTable are about to enter the down(2)
         or adminDown(1) states from some other state. The included
         values of qtechBfdSessDiag MUST both be set equal to this new
         state (i.e: down(2) or adminDown(1)).  The two instances
         of qtechBfdSessDiag in this notification indicate the range
         of indexes that are affected.  Note that all the indexes
         of the two ends of the range can be derived from the
         instance identifiers of these two objects.  For
         cases where a contiguous range of sessions
         have transitioned into the down(2) or adminDown(1) states
         at roughly the same time, the device SHOULD issue a single
         notification for each range of contiguous indexes in
         an effort to minimize the emission of a large number
         of notifications.  If a notification has to be
         issued for just a single qtechBfdSessEntry, then
         the instance identifier (and values) of the two
         qtechBfdSessDiag objects MUST be the identical."
    ::= { qtechBfdNotifications 2 }

-- Ed Note: We need to add notification for changes
-- when the two ends automatically negotiate to a new detection time
-- value or when detection multiplier changes.


-- Module compliance.

qtechBfdGroups
    OBJECT IDENTIFIER ::= { qtechBfdConformance 1 }

qtechBfdCompliances
    OBJECT IDENTIFIER ::= { qtechBfdConformance 2 }

-- Compliance requirement for fully compliant implementations.

qtechBfdModuleFullCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "Compliance statement for agents that provide full
         support for the BFD-MIB module. Such devices can
         then be monitored and also be configured using
         this MIB module."
    MODULE -- This module.

    MANDATORY-GROUPS {
        qtechBfdSessionGroup,
        qtechBfdSessionReadOnlyGroup,
        qtechBfdSessionPerfGroup,
        qtechBfdNotificationGroup
    }

    GROUP        qtechBfdSessionPerfHCGroup
    DESCRIPTION  "This group is mandatory for all systems that
                  are able to support the Counter64 date type."

    OBJECT       qtechBfdSessSrcAddrType
    SYNTAX       InetAddressType --{ unknown(0), ipv4(1), ipv6(2), ipv6z(4) }
    DESCRIPTION  "Only unknown(0), ipv4(1), ipv6(2) and ipv6z(4)
                  support are required."

    OBJECT       qtechBfdSessSrcAddr
    SYNTAX       InetAddress (SIZE (0|4|16|20))
    DESCRIPTION  "An implementation is only required to support
                  unknown(0), ipv4(1), ipv6(2) and ipv6z(4) sizes."

    OBJECT       qtechBfdSessDstAddrType
    SYNTAX       InetAddressType --{ unknown(0), ipv4(1), ipv6(2), ipv6z(4) }
    DESCRIPTION  "Only unknown(0), ipv4(1), ipv6(2) and ipv6z(4)
                  support are required."

    OBJECT       qtechBfdSessDstAddr
    SYNTAX       InetAddress (SIZE (0|4|16|20))
    DESCRIPTION  "An implementation is only required to support
                  unknown(0), ipv4(1), ipv6(2) and ipv6z(4) sizes."

    OBJECT       qtechBfdSessRowStatus
    SYNTAX       RowStatus --{ active(1), notInService(2) }
    --WRITE-SYNTAX RowStatus { active(1), notInService(2), createAndGo(4), destroy(6) }
    DESCRIPTION  "Support for createAndWait and notReady is not
                  required."

    OBJECT       qtechBfdSessDiscMapRowStatus
    SYNTAX       RowStatus --{ active(1), notInService(2) }
    --WRITE-SYNTAX RowStatus { active(1), notInService(2),
                             --createAndGo(4), destroy(6) }
    DESCRIPTION  "Support for createAndWait and notReady is not
                  required."


    OBJECT       qtechBfdSessIpMapRowStatus
    SYNTAX       RowStatus --{ active(1), notInService(2) }
    --WRITE-SYNTAX RowStatus { active(1), notInService(2),
                             --createAndGo(4), destroy(6) }
    DESCRIPTION  "Support for createAndWait and notReady is not
                  required."

    ::= { qtechBfdCompliances 1 }

qtechBfdModuleReadOnlyCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "Compliance requirement for implementations that only
         provide read-only support for BFD-MIB. Such devices
         can then be monitored but cannot be configured using
         this MIB module."

    MODULE -- This module.

    MANDATORY-GROUPS {
        qtechBfdSessionGroup,
        qtechBfdSessionReadOnlyGroup,
        qtechBfdSessionPerfGroup,
        qtechBfdNotificationGroup
    }

    GROUP        qtechBfdSessionPerfHCGroup
    DESCRIPTION  "This group is mandatory for all systems that
                  are able to support the Counter64 date type."

    OBJECT       qtechBfdSessVersionNumber
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessType
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDestinationUdpPort
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessSourceUdpPort
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessEchoSourceUdpPort
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessAdminStatus
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessOperMode
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDemandModeDesiredFlag
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessControlPlaneIndepFlag
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessMultipointFlag
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessInterface
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessSrcAddrType
    SYNTAX       InetAddressType --{ unknown(0), ipv4(1), ipv6(2), ipv6z(4) }
    MIN-ACCESS   read-only
    DESCRIPTION  "Only unknown(0), ipv4(1), ipv6(2) and ipv6z(4)
                  support are required."

    OBJECT       qtechBfdSessSrcAddr
    SYNTAX       InetAddress (SIZE (0|4|16|20))
    MIN-ACCESS   read-only
    DESCRIPTION  "An implementation is only required to support
                  unknown(0), ipv4(1), ipv6(2) and ipv6z(4) sizes."

    OBJECT       qtechBfdSessDstAddrType
    SYNTAX       InetAddressType --{ unknown(0), ipv4(1), ipv6(2), ipv6z(4) }
    MIN-ACCESS   read-only
    DESCRIPTION  "Only unknown(0), ipv4(1), ipv6(2) and ipv6z(4)
                  support are required."

    OBJECT       qtechBfdSessDstAddr
    SYNTAX       InetAddress (SIZE (0|4|16|20))
    MIN-ACCESS   read-only
    DESCRIPTION  "An implementation is only required to support
                  unknown(0), ipv4(1), ipv6(2) and ipv6z(4) sizes."

    OBJECT       qtechBfdSessGTSM
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessGTSMTTL
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDesiredMinTxInterval
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessReqMinRxInterval
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessReqMinEchoRxInterval
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDetectMult
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessAuthPresFlag
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessAuthenticationType
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessAuthenticationKeyID
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessAuthenticationKey
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessStorageType
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessRowStatus
    SYNTAX       RowStatus --{ active(1) }
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDiscMapStorageType
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessDiscMapRowStatus
    SYNTAX       RowStatus --{ active(1) }
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessIpMapStorageType
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    OBJECT       qtechBfdSessIpMapRowStatus
    SYNTAX       RowStatus --{ active(1) }
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

    ::= { qtechBfdCompliances 2 }

-- Units of conformance.

qtechBfdSessionGroup OBJECT-GROUP
    OBJECTS {
        qtechBfdAdminStatus,
        qtechBfdSessNotificationsEnable,
        qtechBfdSessVersionNumber,
        qtechBfdSessType,
        qtechBfdSessDestinationUdpPort,
        qtechBfdSessSourceUdpPort,
        qtechBfdSessEchoSourceUdpPort,
        qtechBfdSessAdminStatus,
        qtechBfdSessOperMode,
        qtechBfdSessDemandModeDesiredFlag,
        qtechBfdSessControlPlaneIndepFlag,
        qtechBfdSessMultipointFlag,
        qtechBfdSessInterface,
        qtechBfdSessSrcAddrType,
        qtechBfdSessSrcAddr,
        qtechBfdSessDstAddrType,
        qtechBfdSessDstAddr,
        qtechBfdSessGTSM,
        qtechBfdSessGTSMTTL,
        qtechBfdSessDesiredMinTxInterval,
        qtechBfdSessReqMinRxInterval,
        qtechBfdSessReqMinEchoRxInterval,
        qtechBfdSessDetectMult,
        qtechBfdSessAuthPresFlag,
        qtechBfdSessAuthenticationType,
        qtechBfdSessAuthenticationKeyID,
        qtechBfdSessAuthenticationKey,
        qtechBfdSessStorageType,
        qtechBfdSessRowStatus,
        qtechBfdSessDiscMapStorageType,
        qtechBfdSessDiscMapRowStatus,
        qtechBfdSessIpMapStorageType,
        qtechBfdSessIpMapRowStatus
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed for BFD sessions."
    ::= { qtechBfdGroups 1 }

qtechBfdSessionReadOnlyGroup OBJECT-GROUP
    OBJECTS {
        qtechBfdSessDiscriminator,
        qtechBfdSessRemoteDiscr,
        qtechBfdSessState,
        qtechBfdSessRemoteHeardFlag,
        qtechBfdSessDiag,
        qtechBfdSessNegotiatedInterval,
        qtechBfdSessNegotiatedEchoInterval,
        qtechBfdSessNegotiatedDetectMult,
        qtechBfdSessDiscMapIndex,
        qtechBfdSessIpMapIndex
    }
    STATUS     current
    DESCRIPTION
        "Collection of read-only objects needed for BFD sessions."
    ::= { qtechBfdGroups 2 }

qtechBfdSessionPerfGroup OBJECT-GROUP
    OBJECTS {
        qtechBfdSessPerfCtrlPktIn,
        qtechBfdSessPerfCtrlPktOut,
        qtechBfdSessPerfCtrlPktDrop,
        qtechBfdSessPerfCtrlPktDropLastTime,
        qtechBfdSessPerfEchoPktIn,
        qtechBfdSessPerfEchoPktOut,
        qtechBfdSessPerfEchoPktDrop,
        qtechBfdSessPerfEchoPktDropLastTime,
        qtechBfdSessUpTime,
        qtechBfdSessPerfLastSessDownTime,
        qtechBfdSessPerfLastCommLostDiag,
        qtechBfdSessPerfSessUpCount,
        qtechBfdSessPerfDiscTime
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed to monitor the
         performance of BFD sessions."
    ::= { qtechBfdGroups 3 }

qtechBfdSessionPerfHCGroup OBJECT-GROUP
    OBJECTS {
        qtechBfdSessPerfCtrlPktInHC,
        qtechBfdSessPerfCtrlPktOutHC,
        qtechBfdSessPerfCtrlPktDropHC,
        qtechBfdSessPerfEchoPktInHC,
        qtechBfdSessPerfEchoPktOutHC,
        qtechBfdSessPerfEchoPktDropHC
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed to monitor the
         performance of BFD sessions for which the
         values of qtechBfdSessPerfPktIn, qtechBfdSessPerfPktOut
         wrap around too quickly."
    ::= { qtechBfdGroups 4 }

qtechBfdNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        qtechBfdSessUp,
        qtechBfdSessDown
    }
    STATUS     current
    DESCRIPTION
        "Set of notifications implemented in this
         module."
    ::= { qtechBfdGroups 5 }

END
