RC-BFD-TMP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Unsigned32, Counter32, Counter64,
    NOTIFICATION-TYPE
        FROM SNMPv2-SMI                        -- [RFC2578]
    TEXTUAL-CONVENTION, TruthValue,
    RowStatus, StorageType, TimeStamp
        FROM SNMPv2-TC                         -- [RFC2579]
    InetAddress, InetAddressType, InetPortNumber
        FROM INET-ADDRESS-MIB                  -- [RFC3291]
    VrfIdentifier
        FROM RC-VRF-MIB
    DisplayString
    	FROM RFC1213-MIB
    rcBfd
        FROM RAPID-CITY;

rcBfdTmpMib MODULE-IDENTITY
    LAST-UPDATED     "201907160000Z"
    ORGANIZATION     "Nortel"
    CONTACT-INFO     "Alka Malik
                      Postal:   Nortel Networks, Inc.
                                600 Technology Park Drive
                                Billerica, MA 02478
    Tel:              978-288-7051
    Fax:              978-288-0620
    E-mail:           alka@nortel.com"                        

    DESCRIPTION      "This MIB module is a duplicate of Bidirectional 
                      Forwarding Detection Management Information Base 
                      draft-ietf-bfd-mib-03.txt.
                      The object names and OIDs may be different from 
                      the draft." 

    REVISION          "201907160000Z" -- 16 Jul 2019
    DESCRIPTION       "Version 5: Add rcBfdTmpSessPerfClearStats,
				rcBfdTmpSessPerfVrfId and
				rcBfdTmpSessPerfVrfName
	                        to rcBfdTmpSessPerfTable.
	   			Requested by Sumukh (Prem)"

    REVISION          "201906190000Z" -- 19 Jun 2019
    DESCRIPTION       "Version 4: Add rcBfdTmpSessVrfId and rcBfdTmpSessVrfName
	                        to rcBfdTmpSessTable.
	   			Requested by Vinay (commit 4a2f8e58) (Prem)"
       
    REVISION          "201206260000Z" -- 26 Jun. 2012
    DESCRIPTION       "Version 3: Changed rcBfdTmpSessDestAddr from 
		       read-create to read-only."
       
    REVISION          "201206200000Z" -- 20 Jun. 2012
    DESCRIPTION       "Version 2: Added rcBfdTmpSessDestAddr and
		       rcBfdTmpSessOldState under rcBfdTmpSessTable."

    REVISION          "200802260000Z" -- 26 Feb. 2008
    DESCRIPTION       "Version 1: Initial version."

    ::= { rcBfd 1 }

--
-- Top level components of this MIB module.
--
rcBfdTmpNotifications OBJECT IDENTIFIER ::= { rcBfdTmpMib 0 }
rcBfdTmpObjects       OBJECT IDENTIFIER ::= { rcBfdTmpMib 1 }

--
-- Scalar objects
--
rcBfdTmpScalarObjects OBJECT IDENTIFIER ::= { rcBfdTmpObjects 1 }

-- Textual Conventions

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

RcBfdTmpInterval ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION   
	"The BFD interval delay in microseconds."
    SYNTAX        Unsigned32 (1..4294967295)

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

-- BFD General Variables
-- These parameters apply globally to the Router's
-- BFD Process.

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

rcBfdTmpVersionNumber OBJECT-TYPE
    SYNTAX   Unsigned32
    MAX-ACCESS   read-only
    STATUS   current
    DESCRIPTION
        "The current version number of the BFD protocol."
    REFERENCE
        " BFD Version 0 (draft-katz-ward-bfd-02.txt)"
    DEFVAL { 0 }
    ::= { rcBfdTmpScalarObjects 3 }

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

rcBfdTmpSessTable OBJECT-TYPE
    SYNTAX   SEQUENCE OF RcBfdTmpSessEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
        "The BFD Session Table describes the BFD sessions."
    REFERENCE 
        "BFD Version 0 (draft-katz-ward-bfd-02.txt)"
    ::= { rcBfdTmpObjects 2 }

rcBfdTmpSessEntry OBJECT-TYPE
    SYNTAX      RcBfdTmpSessEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The BFD Session Entry describes BFD session."
    INDEX { rcBfdTmpSessIndex }
    ::= { rcBfdTmpSessTable 1 }

RcBfdTmpSessEntry ::= SEQUENCE {
    rcBfdTmpSessIndex                    RcBfdTmpSessIndexTC,
    rcBfdTmpSessApplicationId            Unsigned32,
    rcBfdTmpSessDiscriminator            Unsigned32,
    rcBfdTmpSessRemoteDiscr              Unsigned32,
    rcBfdTmpSessUdpPort                  InetPortNumber,
    rcBfdTmpSessState                    INTEGER,
    rcBfdTmpSessRemoteHeardFlag          TruthValue,
    rcBfdTmpSessDiag                     Unsigned32,
    rcBfdTmpSessOperMode                 INTEGER,
    rcBfdTmpSessDemandModeDesiredFlag    TruthValue,
    rcBfdTmpSessEchoFuncModeDesiredFlag  TruthValue,
    rcBfdTmpSessControlPlanIndepFlag     TruthValue,
    rcBfdTmpSessAddrType                 InetAddressType,
    rcBfdTmpSessAddr                     InetAddress,
    rcBfdTmpSessDesiredMinTxInterval     RcBfdTmpInterval,
    rcBfdTmpSessReqMinRxInterval         RcBfdTmpInterval,
    rcBfdTmpSessReqMinEchoRxInterval     RcBfdTmpInterval,
    rcBfdTmpSessDetectMult               Unsigned32,
    rcBfdTmpSessStorType                 StorageType,
    rcBfdTmpSessRowStatus                RowStatus,
    rcBfdTmpSessAuthPresFlag             TruthValue,
    rcBfdTmpSessAuthenticationType       INTEGER,
    rcBfdTmpSessDestAddr                 InetAddress,
    rcBfdTmpSessOldState 		 INTEGER,
    rcBfdTmpSessVrfId                    VrfIdentifier,
    rcBfdTmpSessVrfName                  DisplayString
  }

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

rcBfdTmpSessApplicationId  OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object contains an index used to indicate
         a local application which owns or maintains this
         BFD session. For instance, the MPLS VPN process may
         maintain a subset of the total number of BFD
         sessions.  This application ID provides a convenient
         way to segregate sessions by the applications which
         maintain them."
    ::= { rcBfdTmpSessEntry 2 }

rcBfdTmpSessDiscriminator  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."
    ::= { rcBfdTmpSessEntry 3 }

rcBfdTmpSessRemoteDiscr OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object specifies the session discriminator chosen
         by the remote system for this BFD session."
    ::= { rcBfdTmpSessEntry 4 } 

rcBfdTmpSessUdpPort OBJECT-TYPE
    SYNTAX      InetPortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The UDP Port for BFD. The default value is the
         well-known value for this port."
    REFERENCE
        "draft-katz-ward-bfd-02.txt and
         draft-raggarwa-mpls-bfd-00.txt"
    DEFVAL { 0 }
    ::= { rcBfdTmpSessEntry 5 }

rcBfdTmpSessState OBJECT-TYPE
    SYNTAX   INTEGER {
                       adminDown(1),
                       down(2),
                       init(3),
                       up(4)
                     }
    MAX-ACCESS   read-only
    STATUS   current
    DESCRIPTION
        "The perceived state of the BFD session."
    ::= { rcBfdTmpSessEntry 6 }

rcBfdTmpSessRemoteHeardFlag 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(0) 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."
    ::= { rcBfdTmpSessEntry 7 }

rcBfdTmpSessDiag OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "A diagnostic code specifying the local system's reason
         for the last transition of the session from up(1)
         to some other state."
    ::= { rcBfdTmpSessEntry 8 }

rcBfdTmpSessOperMode OBJECT-TYPE
    SYNTAX   INTEGER { asyncModeWEchoFun(1),
                       asynchModeWOEchoFun(2),
                       demandModeWEchoFunction(3),
                       demandModeWOEchoFunction(4)
                     }
    MAX-ACCESS   read-only
    STATUS   current
    DESCRIPTION
        "This object specifies current operating mode that BFD
         session is operating in.

         A value of AsyncModeWEchoFun(1) ...
         A value of AsynchModeWOEchoFun(2) ...
         A value of DemandModeWEchoFunction(3) ...
         A value of DemandModeWOEchoFunction(4) ...
        "
        ::= { rcBfdTmpSessEntry 9 }

rcBfdTmpSessDemandModeDesiredFlag 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(0) if not"
    DEFVAL { false }
    ::= { rcBfdTmpSessEntry 10 }

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

rcBfdTmpSessControlPlanIndepFlag     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(0)"
    DEFVAL { false }
    ::= { rcBfdTmpSessEntry 12 }

rcBfdTmpSessAddrType  OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object specifies IP address of the interface
         associated with this BFD session.

         Only values unknown(0), ipv4(1) or ipv6(2)
         have to be supported.

         A value of unknown(0) is allowed only when
         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."
    ::= { rcBfdTmpSessEntry 13 }

rcBfdTmpSessAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object specifies IP address of the interface
         associated with this BFD session.
         It can also be used to enabled BFD on a specific
         interface. The value is set to zero when BFD session is not
         associated with a specific interface."
    ::= { rcBfdTmpSessEntry 14 }

rcBfdTmpSessDesiredMinTxInterval OBJECT-TYPE
    SYNTAX    RcBfdTmpInterval
    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."
    ::= { rcBfdTmpSessEntry 15 }

rcBfdTmpSessReqMinRxInterval     OBJECT-TYPE
    SYNTAX        RcBfdTmpInterval
    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."
    ::= { rcBfdTmpSessEntry 16 }

rcBfdTmpSessReqMinEchoRxInterval  OBJECT-TYPE
    SYNTAX        RcBfdTmpInterval
    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."
    ::= { rcBfdTmpSessEntry 17 }

rcBfdTmpSessDetectMult OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object specifies the Detect time multiplier."
    ::= { rcBfdTmpSessEntry 18 }

rcBfdTmpSessStorType  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."
    ::= { rcBfdTmpSessEntry 19 }

rcBfdTmpSessRowStatus 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
         bfdSessRowStatus and bfdSessStorageType."
    ::= { rcBfdTmpSessEntry 20 }

rcBfdTmpSessAuthPresFlag 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(0) if not"
    DEFVAL { false }
    ::= { rcBfdTmpSessEntry 21 }

rcBfdTmpSessAuthenticationType OBJECT-TYPE
    SYNTAX      INTEGER { simplePassword(1),
                          keyedMD5(2),
                          meticulousKeyedMD5(3),
                          keyedSHA1(4),
                          meticulousKeyedSHA1(5)
                        }
    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"
    ::= { rcBfdTmpSessEntry 22 }

rcBfdTmpSessDestAddr OBJECT-TYPE
    SYNTAX	InetAddress
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
        "This object specifies destination IP address of the interface
         associated with this BFD session."
    ::= { rcBfdTmpSessEntry 23 }

rcBfdTmpSessOldState OBJECT-TYPE
    SYNTAX	INTEGER { adminDown(1),
    			  down(2),
			  init(3),
			  up(4)
			}
    MAX-ACCESS	read-only
    STATUS	current
    DESCRIPTION
        "The old state of the BFD session."
    ::= { rcBfdTmpSessEntry 24 }

rcBfdTmpSessVrfId OBJECT-TYPE
    SYNTAX        VrfIdentifier
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION   "Indicates the Virtual Router to which the IPv4 BFD
                   session belongs."
    ::= { rcBfdTmpSessEntry 25 }

rcBfdTmpSessVrfName OBJECT-TYPE
    SYNTAX         DisplayString (SIZE (0..32))
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION    "The Name of the Virtual Router to which the IPv4 BFD
	            session belongs."
    ::= { rcBfdTmpSessEntry 26 }

-- BFD Session Performance Table

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

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

RcBfdTmpSessPerfEntry ::= SEQUENCE {
    rcBfdTmpSessPerfPktIn               Counter32,
    rcBfdTmpSessPerfPktOut              Counter32,
    rcBfdTmpSessUpTime                  TimeStamp,
    rcBfdTmpSessPerfLastSessDownTime    TimeStamp,
    rcBfdTmpSessPerfLastCommLostDiag    RcBfdTmpDiag,
    rcBfdTmpSessPerfSessUpCount         Counter32,
    rcBfdTmpSessPerfDiscTime            TimeStamp,
    -- High Capacity Counters
    rcBfdTmpSessPerfPktInHC             Counter64,
    rcBfdTmpSessPerfPktOutHC            Counter64,
    rcBfdTmpSessPerfClearStats          TruthValue,
    rcBfdTmpSessPerfVrfId               VrfIdentifier,
    rcBfdTmpSessPerfVrfName             DisplayString
}

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

rcBfdTmpSessPerfPktIn OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of BFD messages received for this BFD
         session."
    ::= { rcBfdTmpSessPerfEntry 1 }

rcBfdTmpSessPerfPktOut OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of BFD messages sent for this BFD session."
    ::= { rcBfdTmpSessPerfEntry 2 }

rcBfdTmpSessUpTime 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."
    ::= { rcBfdTmpSessPerfEntry 3 }

rcBfdTmpSessPerfLastSessDownTime 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."
    ::= { rcBfdTmpSessPerfEntry 4 }

rcBfdTmpSessPerfLastCommLostDiag  OBJECT-TYPE
    SYNTAX       RcBfdTmpDiag
    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."
    ::= { rcBfdTmpSessPerfEntry 5 }

rcBfdTmpSessPerfSessUpCount 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 router last rebooted."
    ::= { rcBfdTmpSessPerfEntry 6 }

rcBfdTmpSessPerfDiscTime 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."
    ::= { rcBfdTmpSessPerfEntry 7 }

rcBfdTmpSessPerfPktInHC OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "This value represents the total number of BFD messages
         received for this BFD session. It MUST be equal to the
         least significant 32 bits of bfdSessPerfPktIn
         if bfdSessPerfPktInHC is supported according to
         the rules spelled out in RFC2863."
    ::= { rcBfdTmpSessPerfEntry 8 }

rcBfdTmpSessPerfPktOutHC OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "This value represents the total number of
         total number of BFD messages transmitted for this
         BFD session. It MUST be equal to the
         least significant 32 bits of bfdSessPerfPktIn
         if bfdSessPerfPktOutHC is supported according to
         the rules spelled out in RFC2863."
    ::= { rcBfdTmpSessPerfEntry 9 }

rcBfdTmpSessPerfClearStats OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION  "Used to clear BFD stats for a VRF. This will display
                  always false when retrieved through SNMP Get."
    DEFVAL       { false }
    ::= { rcBfdTmpSessPerfEntry 10 }

rcBfdTmpSessPerfVrfId  OBJECT-TYPE
    SYNTAX       VrfIdentifier
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION  "Indicates the Virtual Router to which the BFD
                  instance belongs."
    ::= { rcBfdTmpSessPerfEntry 11 }

rcBfdTmpSessPerfVrfName OBJECT-TYPE
    SYNTAX       DisplayString (SIZE (0..32))
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  "The Name of the Virtual Router to which the BFD
                  instance belongs."
    ::= { rcBfdTmpSessPerfEntry 12 }


-- BFD Session Mapping Table

rcBfdTmpSessMapTable OBJECT-TYPE
    SYNTAX   SEQUENCE OF RcBfdTmpSessMapEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
        "The BFD Session Mapping Table maps the complex
         indexing of the BFD sessions to the flat
         BFDIndex used in the BfdSessionTable.

         Implementors need to be aware that if the value of
         the bfdSessAddr (an OID) has more
         that 111 sub-identifiers, then OIDs of column
         instances in this table will have more than 128
         sub-identifiers and cannot be accessed using SNMPv1,
         SNMPv2c, or SNMPv3."
    REFERENCE
        "BFD Version 0 (draft-katz-ward-bfd-02.txt)"
    ::= { rcBfdTmpObjects 4 }

rcBfdTmpSessMapEntry OBJECT-TYPE
    SYNTAX   RcBfdTmpSessMapEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
        "The BFD Session Entry describes BFD session
         that is mapped to this index.

         Implementors need to be aware that if the value of
         the mplsInSegmentMapLabelPtrIndex (an OID) has more
         that 111 sub-identifiers, then OIDs of column
         instances in this table will have more than 128
         sub-identifiers and cannot be accessed using SNMPv1,
         SNMPv2c, or SNMPv3."
    INDEX { rcBfdTmpSessApplicationId,
            rcBfdTmpSessDiscriminator,
            rcBfdTmpSessAddrType,
            rcBfdTmpSessAddr
          }
    ::= { rcBfdTmpSessMapTable 1 }

RcBfdTmpSessMapEntry ::= SEQUENCE {
    rcBfdTmpSessMapBfdIndex            RcBfdTmpSessIndexTC
}

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

-- Notification Configuration

rcBfdTmpSessNotificationsEnable 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 bfdSessUp and bfdSessDown
         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 }
    ::= { rcBfdTmpScalarObjects 4 }

rcBfdTmpSessUp NOTIFICATION-TYPE
    OBJECTS     { rcBfdTmpSessDiag, -- low range value
                  rcBfdTmpSessDiag  -- high range value
                }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the
         bfdSessState object for one or more contiguous
         entries in bfdSessTable are about to enter the up(2)
         state from some other state. The included values of
         bfdSessDiag MUST both be set equal to this
         new state (i.e: up(1)).  The two instances of
         bfdSessDiag 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(1) 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 bfdSessEntry, then
         the instance identifier (and values) of the two
         bfdSessDiag objects MUST be the identical."
    ::= { rcBfdTmpNotifications 1 }

rcBfdTmpSessDown NOTIFICATION-TYPE
    OBJECTS     { rcBfdTmpSessDiag, -- low range value
                  rcBfdTmpSessDiag  -- high range value
                }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the
         bfdSessState object for one or more contiguous
         entries in bfdSessTable are about to enter the down(4)
         or adminDown(5) states from some other state. The included
         values of bfdSessDiag MUST both be set equal to this
         new state (i.e: down(4) or adminDown(5)).  The two instances
         of bfdSessDiag 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(4) or adminDown(5) 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 bfdSessEntry, then
         the instance identifier (and values) of the two
         bfdSessDiag objects MUST be the identical."
    ::= { rcBfdTmpNotifications 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.
-- Similarly, changes in the operating mode (bfdSessOperMode)
-- also need to be notified.
-- Module compliance.

END
