-- *****************************************************************
-- FS-BFD-MIB.mib:  FS BFD MIB file
--
-- 2012-12-26 Wangxiaoyang@fs.com.cn
--
-- Copyright (c) 2012 by FS.COM Inc..
-- All rights reserved.
-- 
-- *****************************************************************
--

FS-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,
    DisplayString
        FROM SNMPv2-TC

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

    InterfaceIndexOrZero
        FROM IF-MIB

    InetAddress, InetAddressType, InetPortNumber
        FROM INET-ADDRESS-MIB
        
    fsMgmt
        FROM FS-SMI;

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

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

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

    FSBfdDiagTC ::= 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)
    }

    FSBfdSessTypeTC ::= 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)
    }

    FSBfdSessOperModeTC ::= 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)
    }

    FSBfdCtrlDestPortNumberTC ::= 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)

    FSBfdCtrlSourcePortNumberTC ::= 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)

    FSBfdSessStateTC ::= 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)
    }

    FSBfdSessAuthenticationTypeTC ::= 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)
    }

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

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

         The value of a FSBfdSessionAuthenticationKeyTC must always be
         consistent with the value of the associated
         FSBfdSessionAuthencationTypeTC object.  Attempts to set a
         FSBfdSessionAuthenticationKeyTC object to a value inconsistent
         with the associated FSBfdSessionAuthenticationTypeTC must fail
         with an inconsistentValue error.

         The following size constraints for a
         FSBfdSessionAuthenticationKeyTC object are defined for the
         associated FSBfdSessionAuthenticationTypeTC 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))
    
    
-- fs bfd mib 


fsBfdMIB MODULE-IDENTITY
    LAST-UPDATED "201204141200Z"
    ORGANIZATION "FS.COM Inc.."
    CONTACT-INFO
            " 
            Tel: 400-865-2852 

            E-mail: https://www.fs.com/live_chat_service_mail.html"
    DESCRIPTION
            "This module defines fs BFD mibs."
    REVISION      "201204141200Z"
    DESCRIPTION
            "Initial version of this MIB module."
                
-- RFC Ed.: RFC-editor pls fill in xxxx
    ::= { fsMgmt 48 }
-- RFC Ed.: assigned by IANA, see section 7.1 for details

-- Top level components of this MIB module.

fsBfdNotifications OBJECT IDENTIFIER ::= { fsBfdMIB 0 }

fsBfdObjects       OBJECT IDENTIFIER ::= { fsBfdMIB 1 }

fsBfdConformance   OBJECT IDENTIFIER ::= { fsBfdMIB 2 }

fsBfdScalarObjects OBJECT IDENTIFIER ::= { fsBfdObjects 1 }

-- BFD General Variables

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

fsBfdAdminStatus 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 }
    ::= { fsBfdScalarObjects 1 }

fsBfdSessNotificationsEnable 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 fsBfdSessUp and fsBfdSessDown
         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 }
    ::= { fsBfdScalarObjects 2 }

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

fsBfdSessTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF FSBfdSessEntry
    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."
    ::= { fsBfdObjects 2 }

fsBfdSessEntry OBJECT-TYPE
    SYNTAX     FSBfdSessEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Entry describes BFD session."
    INDEX { fsBfdSessIndex }
    ::= { fsBfdSessTable 1 }

FSBfdSessEntry ::= SEQUENCE {
    fsBfdSessIndex                    FSBfdSessIndexTC,
    fsBfdSessVersionNumber            Unsigned32,
    fsBfdSessType                     FSBfdSessTypeTC,
    fsBfdSessDiscriminator            Unsigned32,
    fsBfdSessRemoteDiscr              Unsigned32,
    fsBfdSessDestinationUdpPort       FSBfdCtrlDestPortNumberTC,
    fsBfdSessSourceUdpPort            FSBfdCtrlSourcePortNumberTC,
    fsBfdSessEchoSourceUdpPort        InetPortNumber,
    fsBfdSessAdminStatus              INTEGER,
    fsBfdSessState                    FSBfdSessStateTC,
    fsBfdSessRemoteHeardFlag          TruthValue,
    fsBfdSessDiag                     FSBfdDiagTC,
    fsBfdSessOperMode                 FSBfdSessOperModeTC,
    fsBfdSessDemandModeDesiredFlag    TruthValue,
    fsBfdSessControlPlaneIndepFlag    TruthValue,
    fsBfdSessMultipointFlag           TruthValue,
    fsBfdSessInterface                InterfaceIndexOrZero,
    fsBfdSessSrcAddrType              InetAddressType,
    fsBfdSessSrcAddr                  InetAddress,
    fsBfdSessDstAddrType              InetAddressType,
    fsBfdSessDstAddr                  InetAddress,
    fsBfdSessGTSM                     TruthValue,
    fsBfdSessGTSMTTL                  Unsigned32,
    fsBfdSessDesiredMinTxInterval     FSBfdIntervalTC,
    fsBfdSessReqMinRxInterval         FSBfdIntervalTC,
    fsBfdSessReqMinEchoRxInterval     FSBfdIntervalTC,
    fsBfdSessDetectMult               FSBfdMultiplierTC,
    fsBfdSessNegotiatedInterval       FSBfdIntervalTC,
    fsBfdSessNegotiatedEchoInterval   FSBfdIntervalTC,
    fsBfdSessNegotiatedDetectMult     FSBfdMultiplierTC,
    fsBfdSessAuthPresFlag             TruthValue,
    fsBfdSessAuthenticationType       FSBfdSessAuthenticationTypeTC,
    fsBfdSessAuthenticationKeyID      Integer32,
    fsBfdSessAuthenticationKey        FSBfdSessionAuthenticationKeyTC,
    fsBfdSessStorageType              StorageType,
    fsBfdSessRowStatus                RowStatus,
    fsBfdSessIfName                   DisplayString,
	fsBfdSessIfDes                    DisplayString
}

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

fsBfdSessVersionNumber 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 }
    ::= { fsBfdSessEntry 2 }

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

fsBfdSessDiscriminator 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."
    ::= { fsBfdSessEntry 4 }

fsBfdSessRemoteDiscr 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."
    ::= { fsBfdSessEntry 5 }

fsBfdSessDestinationUdpPort OBJECT-TYPE
    SYNTAX     FSBfdCtrlDestPortNumberTC
    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 }
    ::= { fsBfdSessEntry 6 }

fsBfdSessSourceUdpPort OBJECT-TYPE
    SYNTAX     FSBfdCtrlSourcePortNumberTC
    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 }
    ::= { fsBfdSessEntry 7 }

fsBfdSessEchoSourceUdpPort 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 }
    ::= { fsBfdSessEntry 8 }

fsBfdSessAdminStatus 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 }
    ::= { fsBfdSessEntry 9 }

fsBfdSessState OBJECT-TYPE
    SYNTAX     FSBfdSessStateTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "BFD session state."
    DEFVAL { 2 }
    ::= { fsBfdSessEntry 10 }

fsBfdSessRemoteHeardFlag 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 }
    ::= { fsBfdSessEntry 11 }

fsBfdSessDiag OBJECT-TYPE
    SYNTAX     FSBfdDiagTC
    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."
    ::= { fsBfdSessEntry 12 }

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

fsBfdSessDemandModeDesiredFlag 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 }
    ::= { fsBfdSessEntry 14 }

fsBfdSessControlPlaneIndepFlag 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 }
    ::= { fsBfdSessEntry 15 }

fsBfdSessMultipointFlag 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 }
    ::= { fsBfdSessEntry 16 }

fsBfdSessInterface 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."
    ::= { fsBfdSessEntry 17 }

fsBfdSessSrcAddrType 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."
  ::= { fsBfdSessEntry 18 }

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

fsBfdSessDstAddrType 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."
  ::= { fsBfdSessEntry 20 }

fsBfdSessDstAddr 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."
    ::= { fsBfdSessEntry 21 }

fsBfdSessGTSM 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 }
    ::= { fsBfdSessEntry 22 }

fsBfdSessGTSMTTL OBJECT-TYPE
    SYNTAX Unsigned32 (0..255)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "This object is valid only when fsBfdSessGTSM 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
         fsBfdSessGTSM is disabled."
    REFERENCE
       "RFC5082, The Generalized TTL Security Mechanism (GTSM).
        RFC5881, Section 5"
    DEFVAL { 0 }
    ::= { fsBfdSessEntry 23 }

fsBfdSessDesiredMinTxInterval OBJECT-TYPE
    SYNTAX     FSBfdIntervalTC
    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."
    ::= { fsBfdSessEntry 24 }

fsBfdSessReqMinRxInterval OBJECT-TYPE
    SYNTAX     FSBfdIntervalTC
    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."
    ::= { fsBfdSessEntry 25 }

fsBfdSessReqMinEchoRxInterval OBJECT-TYPE
    SYNTAX     FSBfdIntervalTC
    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."
    ::= { fsBfdSessEntry 26 }

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

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

fsBfdSessNegotiatedEchoInterval OBJECT-TYPE
    SYNTAX     FSBfdIntervalTC
    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."
    ::= { fsBfdSessEntry 29 }

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

fsBfdSessAuthPresFlag 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 }
    ::= { fsBfdSessEntry 31 }

fsBfdSessAuthenticationType OBJECT-TYPE
    SYNTAX     FSBfdSessAuthenticationTypeTC
    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 }
    ::= { fsBfdSessEntry 32 }

fsBfdSessAuthenticationKeyID 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 fsBfdSessAuthPresFlag 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 }
    ::= { fsBfdSessEntry 33 }

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

         When the fsBfdSessAuthentication 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."
    ::= { fsBfdSessEntry 34 }

fsBfdSessStorageType 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."
    ::= { fsBfdSessEntry 35 }

fsBfdSessRowStatus 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
         fsBfdSessRowStatus and fsBfdSessStorageType."
    ::= { fsBfdSessEntry 36 }
	
fsBfdSessIfName OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (0..255))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object contains an interface name 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."
    ::= { fsBfdSessEntry 37 }
	
fsBfdSessIfDes OBJECT-TYPE
    SYNTAX     DisplayString (SIZE (0..255))
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "This object contains an interface description 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."
    ::= { fsBfdSessEntry 38 }
	
-- BFD Session Performance Table

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

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

FSBfdSessPerfEntry ::= SEQUENCE {
   fsBfdSessPerfCtrlPktIn           Counter32,
   fsBfdSessPerfCtrlPktOut          Counter32,
   fsBfdSessPerfCtrlPktDrop         Counter32,
   fsBfdSessPerfCtrlPktDropLastTime TimeStamp,
   fsBfdSessPerfEchoPktIn           Counter32,
   fsBfdSessPerfEchoPktOut          Counter32,
   fsBfdSessPerfEchoPktDrop         Counter32,
   fsBfdSessPerfEchoPktDropLastTime TimeStamp,
   fsBfdSessUpTime                  TimeStamp,
   fsBfdSessPerfLastSessDownTime    TimeStamp,
   fsBfdSessPerfLastCommLostDiag    FSBfdDiagTC,
   fsBfdSessPerfSessUpCount         Counter32,
   fsBfdSessPerfDiscTime            TimeStamp,

   -- High Capacity Counters
   fsBfdSessPerfCtrlPktInHC         Counter64,
   fsBfdSessPerfCtrlPktOutHC        Counter64,
   fsBfdSessPerfCtrlPktDropHC       Counter64,
   fsBfdSessPerfEchoPktInHC         Counter64,
   fsBfdSessPerfEchoPktOutHC        Counter64,
   fsBfdSessPerfEchoPktDropHC       Counter64
}

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

fsBfdSessPerfCtrlPktIn 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 fsBfdSessPerfCtrlPktInHC."
    ::= { fsBfdSessPerfEntry 1 }

fsBfdSessPerfCtrlPktOut 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 fsBfdSessPerfCtrlPktOutHC
         if supported, and MUST do so the rules spelled out in 
         RFC 2863."             

    ::= { fsBfdSessPerfEntry 2 }

fsBfdSessPerfCtrlPktDrop 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 fsBfdSessPerfCtrlPktDropHC
         if supported, and MUST do so the rules spelled out in 
         RFC 2863."             
    ::= { fsBfdSessPerfEntry 3 }

fsBfdSessPerfCtrlPktDropLastTime 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."
    ::= { fsBfdSessPerfEntry 4 }

fsBfdSessPerfEchoPktIn 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 fsBfdSessPerfEchoPktInHC if 
         supported, and MUST do so the rules spelled out in 
         RFC 2863."             
    ::= { fsBfdSessPerfEntry 5 }

fsBfdSessPerfEchoPktOut 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
         fsBfdSessPerfEchoPktOutHC if supported, and MUST do so
         the rules spelled out in RFC 2863."             
    ::= { fsBfdSessPerfEntry 6 }

fsBfdSessPerfEchoPktDrop 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
         fsBfdSessPerfEchoPktDropHC if supported, and MUST do so
         the rules spelled out in RFC 2863."             
    ::= { fsBfdSessPerfEntry 7 }

fsBfdSessPerfEchoPktDropLastTime 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."
    ::= { fsBfdSessPerfEntry 8 }

fsBfdSessUpTime 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."
    ::= { fsBfdSessPerfEntry 9 }

fsBfdSessPerfLastSessDownTime 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."
    ::= { fsBfdSessPerfEntry 10 }

fsBfdSessPerfLastCommLostDiag OBJECT-TYPE
    SYNTAX     FSBfdDiagTC
    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."
    ::= { fsBfdSessPerfEntry 11 }

fsBfdSessPerfSessUpCount 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."
    ::= { fsBfdSessPerfEntry 12 }

fsBfdSessPerfDiscTime 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."
    ::= { fsBfdSessPerfEntry 13 }

fsBfdSessPerfCtrlPktInHC 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
         fsBfdSessPerfCtrlPktInHC if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 14 }

fsBfdSessPerfCtrlPktOutHC 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
         fsBfdSessPerfCtrlPktOut if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 15 }

fsBfdSessPerfCtrlPktDropHC 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
         fsBfdSessPerfCtrlPktDrop if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 16 }

fsBfdSessPerfEchoPktInHC 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
         fsBfdSessPerfEchoPktIn if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 17 }

fsBfdSessPerfEchoPktOutHC 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
         fsBfdSessPerfEchoPktOut if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 18 }

fsBfdSessPerfEchoPktDropHC 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
         fsBfdSessPerfEchoPktDrop if supported, and MUST do so
         the rules spelled out in RFC 2863."
    ::= { fsBfdSessPerfEntry 19 }

-- BFD Session Discriminator Mapping Table

fsBfdSessDiscMapTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF FSBfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Discriminator Mapping Table maps a
         local discriminator value to associated BFD session's
         FSBfdSessIndexTC used in the fsBfdSessionTable."
    ::= { fsBfdObjects 4 }

fsBfdSessDiscMapEntry OBJECT-TYPE
    SYNTAX     FSBfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session Discriminator Map Entry describes
         BFD session that is mapped to this FSBfdSessIndexTC."
    INDEX { fsBfdSessDiscriminator }
    ::= { fsBfdSessDiscMapTable 1 }

FSBfdSessDiscMapEntry ::= SEQUENCE {
    fsBfdSessDiscMapIndex            FSBfdSessIndexTC,
    fsBfdSessDiscMapStorageType      StorageType,
    fsBfdSessDiscMapRowStatus        RowStatus
}

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

fsBfdSessDiscMapStorageType 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."
    ::= { fsBfdSessDiscMapEntry 2 }

fsBfdSessDiscMapRowStatus 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
         fsBfdSessDiscMapRowStatus and fsBfdSessDiscMapStorageType."
    ::= { fsBfdSessDiscMapEntry 3 }

-- BFD Session IP Mapping Table

fsBfdSessIpMapTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF FSBfdSessIpMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The BFD Session IP Mapping Table maps given
         fsBfdSessInterface, fsBfdSessSrcAddrType, fsBfdSessSrcAddr,
         fsBfdSessDstAddrType and fsBfdSessDstAddr
         to an associated BFD session's FSBfdSessIndexTC used in
         the fsBfdSessionTable."
    ::= { fsBfdObjects 5 }

fsBfdSessIpMapEntry OBJECT-TYPE
    SYNTAX     FSBfdSessIpMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
       "The BFD Session IP Map Entry describes
        BFD session that is mapped to this FSBfdSessIndexTC."
    INDEX {
        fsBfdSessInterface,
        fsBfdSessSrcAddrType,
        fsBfdSessSrcAddr,
        fsBfdSessDstAddrType,
        fsBfdSessDstAddr
    }
    ::= { fsBfdSessIpMapTable 1 }

FSBfdSessIpMapEntry ::= SEQUENCE {
    fsBfdSessIpMapIndex            FSBfdSessIndexTC,
    fsBfdSessIpMapStorageType      StorageType,
    fsBfdSessIpMapRowStatus        RowStatus
}

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

fsBfdSessIpMapStorageType 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."
    ::= { fsBfdSessIpMapEntry 2 }

fsBfdSessIpMapRowStatus 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
         fsBfdSessIpMapRowStatus and fsBfdSessIpMapStorageType."
    ::= { fsBfdSessIpMapEntry 3 }

-- Notification Configuration

fsBfdSessUp NOTIFICATION-TYPE
    OBJECTS {
        fsBfdSessDiag,  -- low range value
        fsBfdSessDiag,  -- high range value
        fsBfdSessInterface, -- bfd session interface index
        fsBfdSessIfName,    -- bfd session interface name
		fsBfdSessIfDes    -- bfd session interface describes
    }
    STATUS     current
    DESCRIPTION
        "This notification is generated when the
         fsBfdSessState object for one or more contiguous
         entries in fsBfdSessTable are about to enter the up(4)
         state from some other state. The included values of
         fsBfdSessDiag MUST both be set equal to this
         new state (i.e: up(4)). The included values of
         fsBfdSessInterface MUST be set equal to interface index of bfd session(i.e: index(2)).
         The included values of fsBfdSessIfname MUST be set equal to interface name of bfd session(i.e: name(GigabitEthernet 0/1)).
         The two instances of fsBfdSessDiag 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 fsBfdSessEntry, then
         the instance identifier (and values) of the two
         fsBfdSessDiag objects MUST be the identical."
    ::= { fsBfdNotifications 1 }

fsBfdSessDown NOTIFICATION-TYPE
    OBJECTS {
        fsBfdSessDiag,  -- low range value
        fsBfdSessDiag,  -- high range value
        fsBfdSessInterface,  -- bfd session interface index
        fsBfdSessIfName,     -- bfd session interface name
		fsBfdSessIfDes     -- bfd session interface describes
    }
    STATUS     current
    DESCRIPTION
        "This notification is generated when the
         fsBfdSessState object for one or more contiguous
         entries in fsBfdSessTable are about to enter the down(2)
         or adminDown(1) states from some other state. The included
         values of fsBfdSessDiag MUST both be set equal to this new
         state (i.e: down(2) or adminDown(1)). The included values of
         fsBfdSessInterface MUST be set equal to interface index of bfd session(i.e: index(2)). 
         The included values of fsBfdSessIfname MUST be set equal to interface name of bfd session(i.e: name(GigabitEthernet 0/1)).
         The two instances of fsBfdSessDiag 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 fsBfdSessEntry, then
         the instance identifier (and values) of the two
         fsBfdSessDiag objects MUST be the identical."
    ::= { fsBfdNotifications 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.

fsBfdGroups
    OBJECT IDENTIFIER ::= { fsBfdConformance 1 }

fsBfdCompliances
    OBJECT IDENTIFIER ::= { fsBfdConformance 2 }

-- Compliance requirement for fully compliant implementations.

fsBfdModuleFullCompliance 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 {
        fsBfdSessionGroup,
        fsBfdSessionReadOnlyGroup,
        fsBfdSessionPerfGroup,
        fsBfdNotificationGroup
    }

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

    OBJECT       fsBfdSessSrcAddrType
    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       fsBfdSessSrcAddr
    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       fsBfdSessDstAddrType
    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       fsBfdSessDstAddr
    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       fsBfdSessRowStatus
    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       fsBfdSessDiscMapRowStatus
    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       fsBfdSessIpMapRowStatus
    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."

    ::= { fsBfdCompliances 1 }

fsBfdModuleReadOnlyCompliance 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 {
        fsBfdSessionGroup,
        fsBfdSessionReadOnlyGroup,
        fsBfdSessionPerfGroup,
        fsBfdNotificationGroup
    }

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

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

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

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

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

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

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

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

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

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

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

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

    OBJECT       fsBfdSessSrcAddrType
    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       fsBfdSessSrcAddr
    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       fsBfdSessDstAddrType
    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       fsBfdSessDstAddr
    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       fsBfdSessGTSM
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    OBJECT       fsBfdSessIfName
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."
	
	OBJECT       fsBfdSessIfDes
    MIN-ACCESS   read-only
    DESCRIPTION  "Write access is not required."
	
    ::= { fsBfdCompliances 2 }

-- Units of conformance.

fsBfdSessionGroup OBJECT-GROUP
    OBJECTS {
        fsBfdAdminStatus,
        fsBfdSessNotificationsEnable,
        fsBfdSessVersionNumber,
        fsBfdSessType,
        fsBfdSessDestinationUdpPort,
        fsBfdSessSourceUdpPort,
        fsBfdSessEchoSourceUdpPort,
        fsBfdSessAdminStatus,
        fsBfdSessOperMode,
        fsBfdSessDemandModeDesiredFlag,
        fsBfdSessControlPlaneIndepFlag,
        fsBfdSessMultipointFlag,
        fsBfdSessInterface,
        fsBfdSessSrcAddrType,
        fsBfdSessSrcAddr,
        fsBfdSessDstAddrType,
        fsBfdSessDstAddr,
        fsBfdSessGTSM,
        fsBfdSessGTSMTTL,
        fsBfdSessDesiredMinTxInterval,
        fsBfdSessReqMinRxInterval,
        fsBfdSessReqMinEchoRxInterval,
        fsBfdSessDetectMult,
        fsBfdSessAuthPresFlag,
        fsBfdSessAuthenticationType,
        fsBfdSessAuthenticationKeyID,
        fsBfdSessAuthenticationKey,
        fsBfdSessStorageType,
        fsBfdSessRowStatus,
        fsBfdSessDiscMapStorageType,
        fsBfdSessDiscMapRowStatus,
        fsBfdSessIpMapStorageType,
        fsBfdSessIpMapRowStatus
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed for BFD sessions."
    ::= { fsBfdGroups 1 }

fsBfdSessionReadOnlyGroup OBJECT-GROUP
    OBJECTS {
        fsBfdSessDiscriminator,
        fsBfdSessRemoteDiscr,
        fsBfdSessState,
        fsBfdSessRemoteHeardFlag,
        fsBfdSessDiag,
        fsBfdSessNegotiatedInterval,
        fsBfdSessNegotiatedEchoInterval,
        fsBfdSessNegotiatedDetectMult,
        fsBfdSessDiscMapIndex,
        fsBfdSessIpMapIndex
    }
    STATUS     current
    DESCRIPTION
        "Collection of read-only objects needed for BFD sessions."
    ::= { fsBfdGroups 2 }

fsBfdSessionPerfGroup OBJECT-GROUP
    OBJECTS {
        fsBfdSessPerfCtrlPktIn,
        fsBfdSessPerfCtrlPktOut,
        fsBfdSessPerfCtrlPktDrop,
        fsBfdSessPerfCtrlPktDropLastTime,
        fsBfdSessPerfEchoPktIn,
        fsBfdSessPerfEchoPktOut,
        fsBfdSessPerfEchoPktDrop,
        fsBfdSessPerfEchoPktDropLastTime,
        fsBfdSessUpTime,
        fsBfdSessPerfLastSessDownTime,
        fsBfdSessPerfLastCommLostDiag,
        fsBfdSessPerfSessUpCount,
        fsBfdSessPerfDiscTime
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed to monitor the
         performance of BFD sessions."
    ::= { fsBfdGroups 3 }

fsBfdSessionPerfHCGroup OBJECT-GROUP
    OBJECTS {
        fsBfdSessPerfCtrlPktInHC,
        fsBfdSessPerfCtrlPktOutHC,
        fsBfdSessPerfCtrlPktDropHC,
        fsBfdSessPerfEchoPktInHC,
        fsBfdSessPerfEchoPktOutHC,
        fsBfdSessPerfEchoPktDropHC
    }
    STATUS     current
    DESCRIPTION
        "Collection of objects needed to monitor the
         performance of BFD sessions for which the
         values of fsBfdSessPerfPktIn, fsBfdSessPerfPktOut
         wrap around too quickly."
    ::= { fsBfdGroups 4 }

fsBfdNotificationGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        fsBfdSessUp,
        fsBfdSessDown
    }
    STATUS     current
    DESCRIPTION
        "Set of notifications implemented in this
         module."
    ::= { fsBfdGroups 5 }

END
