IPI-BFD-MIB DEFINITIONS ::= BEGIN

IMPORTS
OBJECT-TYPE, MODULE-IDENTITY,
  Counter32, Integer32, Unsigned32,
  Counter64,
  NOTIFICATION-TYPE
  FROM SNMPv2-SMI
  TimeStamp, TruthValue
  FROM SNMPv2-TC
  ipi  FROM IPI-MODULE-MIB;

  bfdMib MODULE-IDENTITY
  LAST-UPDATED "202110191230Z"
  ORGANIZATION "IP Infusion"
  CONTACT-INFO "support@ipinfusion.com"
  DESCRIPTION
  "IPI BFD MIB. "
  ::= { ipi 1 }

  bfdNotifications  OBJECT IDENTIFIER ::= { bfdMib 0 }
  bfdObjects       OBJECT IDENTIFIER ::= { bfdMib 1 }
  bfdSessScalarObjects  OBJECT IDENTIFIER ::= { bfdObjects 1 }

  bfdSessUp NOTIFICATION-TYPE
  OBJECTS {
         bfdSessDiag, -- low range value
         bfdSessDiag  -- 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(4)
          state from some other state.  The included values of
          bfdSessDiag MUST both be set equal to this
          new state (i.e., up(4)).  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(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 bfdSessEntry, then
          the instance identifier (and values) of the two
          bfdSessDiag objects MUST be identical."
  ::= { bfdNotifications 1 }  

  bfdSessDown NOTIFICATION-TYPE
  OBJECTS {
         bfdSessDiag, -- low range value
         bfdSessDiag  -- 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(2)
          or adminDown(1) states from some other state.  The included
          values of bfdSessDiag MUST both be set equal to this new
          state (i.e., down(2) or adminDown(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
          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 bfdSessEntry, then
          the instance identifier (and values) of the two
          bfdSessDiag objects MUST be identical."
  ::= { bfdNotifications 2 }  

  bfdAdminStatus OBJECT-TYPE
  SYNTAX     INTEGER {
          enabled(1),
            disabled(2)
           }
MAX-ACCESS read-write
STATUS     current
DESCRIPTION
"The desired global administrative status of the
BFD system in this device."
::= { bfdSessScalarObjects 1 }   


bfdSessNotificationsEnable 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."
DEFVAL { false }
::= { bfdSessScalarObjects 2}

bfdSessionTable  OBJECT-TYPE
SYNTAX      SEQUENCE OF BfdSessionEntry
MAX-ACCESS  not-accessible
STATUS      current
DESCRIPTION
"The BFD Session Entry describes the BFD session."
::= { bfdObjects 2 }

bfdSessionEntry  OBJECT-TYPE
SYNTAX      BfdSessionEntry
MAX-ACCESS  not-accessible
STATUS      current
DESCRIPTION
"A Table object containing BFD Session information."
INDEX   { bfdSessIndex }
::= { bfdSessionTable 1 }

BfdSessionEntry ::=
SEQUENCE {
        bfdSessIndex                 Unsigned32,
        bfdSessVersionNumber         Unsigned32,
        bfdSessType            INTEGER,
        bfdSessDescriminator  Unsigned32,
        bfdSessRemoteDiscr     Unsigned32,
        bfdSessDestinationUdpPort    Unsigned32,
        bfdSessSourceUdpPort      Unsigned32,
        bfdSessEchoSourceUdpPort    Unsigned32,
        bfdSessAdminStatus    INTEGER,
        bfdSessOperStatus     INTEGER,
        bfdSessState   INTEGER,
        bfdSessRemoteHeardFlag    TruthValue,
        bfdSessDiag       INTEGER,
        bfdSessOperMode     INTEGER,
        bfdSessDemandModeDesiredFlag   TruthValue,
        bfdSessControlPlaneIndepFlag   TruthValue,
        bfdSessMultiPntFlag  TruthValue,
        bfdSessInterface  Integer32,
        bfdSessSrcAddrType  INTEGER,
        bfdSessSrcAddr  OCTET STRING,
        bfdSessDestAddrType INTEGER,
        bfdSessDestAddr  OCTET STRING,
        bfdSessGtsm  TruthValue,
        bfdSessGtsmTtl Unsigned32,
        bfdSessDesireMinTxInterval  Unsigned32,
        bfdSessReqMinRxInterval  Unsigned32,
        bfdSessReqMinEchoRxInterval  Unsigned32,
        bfdSessDetectMult  Unsigned32,
        bfdSessNegotiatedInterval  Unsigned32,
        bfdSessNegotiatedEchoInterval  Unsigned32,
        bfdSessNegotiatedDetectMult  Unsigned32,
        bfdSessAuthPresFlag  TruthValue,
        bfdSessAuthenticationType   Integer32,
        bfdSessAuthenticationKeyId  Integer32,
        bfdSessAuthenticationKey  OCTET STRING,
        bfdSessStoreType   Integer32,
        bfdSessRowStatus  Integer32
}

bfdSessIndex  OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  not-accessible
  STATUS      current
  DESCRIPTION
  "This object contains an index used to represent a
  unique BFD session on this device.  Managers
  should obtain new values for row creation in this
  table by reading bfdSessIndexNext."
  ::= { bfdSessionEntry 1 }

bfdSessVersionNumber  OBJECT-TYPE
SYNTAX      Unsigned32 (0..7)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "he version number of the BFD protocol that this session
  is running in.  Write access is available for this object
  to provide the ability to set the desired version for this
  BFD session."
  DEFVAL { 1 }
  ::= { bfdSessionEntry 2 }


bfdSessType  OBJECT-TYPE
SYNTAX      INTEGER {singleHop(1), 
                     multiHopTotallyArbitraryPaths(2),
                     multiHopOutOfBandSignaling(3),
                     multiHopUnidirectionalLinks(4)
                    }
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the type of this BFD session."

  ::= { bfdSessionEntry 3 }


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

bfdSessRemoteDiscr  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."
  ::= { bfdSessionEntry 5 }

bfdSessDestinationUdpPort  OBJECT-TYPE
SYNTAX      Unsigned32 (0..65535)
  MAX-ACCESS  read-only
  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 }
  ::= { bfdSessionEntry 6 }

bfdSessSourceUdpPort  OBJECT-TYPE
SYNTAX      Unsigned32 (0..65535)
  MAX-ACCESS  read-write
  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
  choose its own source port number."
  DEFVAL { 0 }
  ::= { bfdSessionEntry 7 }

bfdSessEchoSourceUdpPort  OBJECT-TYPE
SYNTAX      Unsigned32 (0..65535)
  MAX-ACCESS  read-write
  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 choose its own source port
  number."
  DEFVAL { 0 }
  ::= { bfdSessionEntry 8 }

  bfdSessAdminStatus  OBJECT-TYPE
  SYNTAX       INTEGER {
              enabled(1),
              disabled(2)
  }
MAX-ACCESS  read-write
STATUS      current
DESCRIPTION
"Denotes the desired operational status of the BFD session."

::= { bfdSessionEntry 9 }

bfdSessOperStatus       OBJECT-TYPE
SYNTAX      INTEGER {
                     up(1),
                     down(2)
}
MAX-ACCESS  read-only
STATUS      current
DESCRIPTION
"Denotes the actual operational status of the BFD session."
::= { bfdSessionEntry 10 }

bfdSessState  OBJECT-TYPE
SYNTAX      INTEGER {
                     adminDown(1),
                     down(2),
                     init(3),
                     up(4)
                    }
MAX-ACCESS  read-only
STATUS      current
DESCRIPTION
"Configured BFD session state."
::= { bfdSessionEntry 11 }

bfdSessRemoteHeardFlag      OBJECT-TYPE
SYNTAX      TruthValue
MAX-ACCESS  read-only
STATUS      current
DESCRIPTION
"This object specifies the 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."
::= { bfdSessionEntry 12 }

bfdSessDiag         OBJECT-TYPE
SYNTAX      INTEGER {noDiagnostic(0),
                     controlDetectionTimeExpired(1),
                     echoFunctionFailed(2),
                     neighborSignaledSessionDown(3),
                     forwardingPlaneReset(4),
                     pathDown(5),
                     concatenatedPathDown(6),
                     administrativelyDown(7),
                     reverseConcatenatedPathDown(8),
                     misConnectivityDefect(9)
                    }
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."
  ::= { bfdSessionEntry 13 }

  bfdSessOperMode       OBJECT-TYPE
  SYNTAX      INTEGER {
                      asyncModeWEchoFunction(1),
                      asynchModeWOEchoFunction(2),
                      demandModeWEchoFunction(3),
                      demandModeWOEchoFunction(4)
                      }
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the operational mode of this
  BFD session."
  ::= { bfdSessionEntry  14}

  bfdSessDemandModeDesiredFlag     OBJECT-TYPE
  SYNTAX      TruthValue
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object indicates 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 }
  ::= { bfdSessionEntry 15 }

  bfdSessControlPlaneIndepFlag     OBJECT-TYPE
  SYNTAX      TruthValue
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object indicates 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 }
  ::= { bfdSessionEntry 16 }

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

  bfdSessInterface    OBJECT-TYPE
  SYNTAX      Integer32(0..2147483647)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object contains an interface index used to indicate
  the interface that this BFD session is running on.  This
  value can be zero if there is no interface associated
  with this BFD session."
  ::= { bfdSessionEntry 18 }

  bfdSessSrcAddrType    OBJECT-TYPE
   SYNTAX      INTEGER {unknown(0),
        ipv4(1),
        ipv6(2),
        ipv4z(3),
        ipv6z(4),
        dns(16)
        }
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the IP address type of the source IP
  address of this BFD session.  The value of unknown(0) is
  allowed only when the session is singleHop(1) and the
  source IP address of this BFD session is derived 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."
  ::= { bfdSessionEntry 19 }

  bfdSessSrcAddr    OBJECT-TYPE
  SYNTAX      OCTET STRING
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the source IP address of this BFD
  session.  The format of this object is controlled by the
  bfdSessSrcAddrType object."
  ::= { bfdSessionEntry 20 }


  bfdSessDestAddrType    OBJECT-TYPE
  SYNTAX      INTEGER {unknown(0),
         ipv4(1),
         ipv6(2),
         ipv4z(3),
         ipv6z(4),
         dns(16)
         }
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the IP address type of the neighboring
  IP address that is being monitored with this BFD session.
  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."
  ::= { bfdSessionEntry 21}

  bfdSessDestAddr    OBJECT-TYPE
  SYNTAX      OCTET STRING
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the neighboring IP address that is
  being monitored with this BFD session.  The format of this
  object is controlled by the bfdSessDestAddrType object."
  ::= { bfdSessionEntry  22}


  bfdSessGtsm    OBJECT-TYPE
  SYNTAX      TruthValue
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "Setting the value of this object to false(2) will disable
  GTSM protection of the BFD session.  GTSM MUST be enabled
  on a singleHop(1) session if no authentication is in use."
  ::= { bfdSessionEntry 23 }


bfdSessGtsmTtl   OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object is valid only when bfdSessGTSM protection is
  enabled on the system.  This object indicates the minimum
  allowed Time to Live (TTL) for received BFD Control packets.
  For a singleHop(1) session, if GTSM protection is enabled,
  this object SHOULD be set to the maximum TTL value allowed
  for a single hop.

  By default, GTSM is enabled and the TTL value is 255.  For a
  multihop session, updating of the maximum TTL value allowed
  is likely required."
  ::= { bfdSessionEntry 24 }

bfdSessDesireMinTxInterval    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-write
  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 in this case and should not be
  used."
  ::= { bfdSessionEntry 25 }

bfdSessReqMinRxInterval    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-write
  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."
  ::= { bfdSessionEntry 26 }

bfdSessReqMinEchoRxInterval    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the minimum interval, in
  microseconds, between received BFD Echo packets that this
  system is capable of supporting.  The value must be zero(0) if
  this is a multihop BFD session."
  ::= { bfdSessionEntry 27 }

bfdSessDetectMult    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object specifies the Detect time multiplier."
  ::= { bfdSessionEntry 28 }

bfdSessNegotiatedInterval    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the negotiated interval, in
  microseconds, that the local system is transmitting
  BFD Control packets."
  ::= { bfdSessionEntry 29 }

bfdSessNegotiatedEchoInterval    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the negotiated interval, in
  microseconds, that the local system is transmitting
  BFD Echo packets.  The value is expected to be zero if
  the sessions are not running in Echo mode."
  ::= { bfdSessionEntry 30 }

bfdSessNegotiatedDetectMult    OBJECT-TYPE
SYNTAX      Unsigned32 (1..4294967295)
  MAX-ACCESS  read-only
  STATUS      current
  DESCRIPTION
  "This object specifies the Detect time multiplier."
  ::= { bfdSessionEntry 31 }

  bfdSessAuthPresFlag    OBJECT-TYPE
  SYNTAX      TruthValue
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This object indicates 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."
  DEFVAL { false }
  ::= { bfdSessionEntry 32 }

  bfdSessAuthenticationType     OBJECT-TYPE
  SYNTAX      Integer32
  MAX-ACCESS  read-write
  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."
  ::= { bfdSessionEntry 33 }

  bfdSessAuthenticationKeyId    OBJECT-TYPE
  SYNTAX      Integer32
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "
  The authentication key ID in use for this session.  This
  object permits multiple keys to be active simultaneously.
  The value -1 indicates that no authentication key ID will
  be present in the optional BFD Authentication Section.
  "
  DEFVAL { -1 }
  ::= { bfdSessionEntry 34 }

  bfdSessAuthenticationKey    OBJECT-TYPE
  SYNTAX      OCTET STRING
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "The authentication key.  When the
  bfdSessAuthenticationType is simplePassword(1), the value
  of this object is the password present in the BFD packets.

  When the bfdSessAuthenticationType is one of the keyed
  authentication types, this value is used in the
  computation of the key present in the BFD authentication
  packet."
  ::= { bfdSessionEntry 35 }

  bfdSessStoreType     OBJECT-TYPE
  SYNTAX      Integer32
  MAX-ACCESS  read-write
  STATUS      current
  DESCRIPTION
  "This variable idicates the storage type for this
  object.  Conceptual rows having the value
  'permanent' need not allow write-access to any
  columnar objects in the row."
  ::= { bfdSessionEntry 36 }

  bfdSessRowStatus    OBJECT-TYPE
  SYNTAX      Integer32
  MAX-ACCESS  read-write
  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."

  ::= { bfdSessionEntry 37 }

  -- BFD Session Performance Table

  bfdSessPerfTable OBJECT-TYPE
  SYNTAX     SEQUENCE OF BfdSessPerfEntry
  MAX-ACCESS not-accessible
  STATUS     current
  DESCRIPTION
  "This table specifies BFD session performance counters."
  ::= { bfdObjects 3 }

  bfdSessPerfEntry OBJECT-TYPE
  SYNTAX     BfdSessPerfEntry
  MAX-ACCESS not-accessible
  STATUS     current
  DESCRIPTION
  "An entry in this table is created by a BFD-enabled node
  for every BFD session. bfdSessPerfDiscTime is used to
  indicate potential discontinuity for all counter objects
  in this table."
  AUGMENTS    { bfdSessionEntry }
  ::= { bfdSessPerfTable 1 }


  BfdSessPerfEntry ::= SEQUENCE {
          bfdSessPerfCtrlPktIn           Counter32,
                                         bfdSessPerfCtrlPktOut          Counter32,
                                         bfdSessPerfCtrlPktDrop         Counter32,
                                         bfdSessPerfCtrlPktDropLastTime TimeStamp,
                                         bfdSessPerfEchoPktIn           Counter32,
                                         bfdSessPerfEchoPktOut          Counter32,
                                         bfdSessPerfEchoPktDrop         Counter32,
                                         bfdSessPerfEchoPktDropLastTime TimeStamp,
                                         bfdSessUpTime                  TimeStamp,
                                         bfdSessPerfLastSessDownTime    TimeStamp,
                                         bfdSessPerfLastCommLostDiag    Integer32,
                                         bfdSessPerfSessUpCount         Counter32,
                                         bfdSessPerfDiscTime            TimeStamp,

                                         -- High Capacity Counters
                                           bfdSessPerfCtrlPktInHC         Counter64,
                                         bfdSessPerfCtrlPktOutHC        Counter64,
                                         bfdSessPerfCtrlPktDropHC       Counter64,
                                         bfdSessPerfEchoPktInHC         Counter64,
                                         bfdSessPerfEchoPktOutHC        Counter64,
                                         bfdSessPerfEchoPktDropHC       Counter64
  }

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

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

bfdSessPerfCtrlPktOut 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
bfdSessPerfCtrlPktOutHC if supported, and MUST do so
with the rules spelled out in RFC 2863."
::= { bfdSessPerfEntry 2 }

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

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

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

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


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

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

bfdSessUpTime 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 event has been issued,
    this object contains a zero value."
    ::= { bfdSessPerfEntry 9 }

    bfdSessPerfLastSessDownTime 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 down event has been issued, this object
    contains a zero value."
    ::= { bfdSessPerfEntry 10 }

    bfdSessPerfLastCommLostDiag OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "The BFD diag code for the last time communication was lost
    with the neighbor.  If such an event has not been issued,
    this object contains a zero value."
    ::= { bfdSessPerfEntry 11 }

    bfdSessPerfSessUpCount 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."
    ::= { bfdSessPerfEntry 12 }


    bfdSessPerfDiscTime 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 reinitialization of the local
    management subsystem, then this object contains a zero
    value."
    ::= { bfdSessPerfEntry 13 }


    bfdSessPerfCtrlPktInHC 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.

    The least significant 32 bits MUST be equal to
    bfdSessPerfCtrlPktIn, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 14 }


    bfdSessPerfCtrlPktOutHC 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.

    The least significant 32 bits MUST be equal to
    bfdSessPerfCtrlPktOut, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 15 }


    bfdSessPerfCtrlPktDropHC 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.

    The least significant 32 bits MUST be equal to
    bfdSessPerfCtrlPktDrop, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 16 }

    bfdSessPerfEchoPktInHC 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.

    The least significant 32 bits MUST be equal to
    bfdSessPerfEchoPktIn, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 17 }

    bfdSessPerfEchoPktOutHC 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.

    The least significant 32 bits MUST be equal to
    bfdSessPerfEchoPktOut, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 18 }

    bfdSessPerfEchoPktDropHC 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.
    The least significant 32 bits MUST be equal to
    bfdSessPerfEchoPktDrop, and MUST do so with
    the rules spelled out in RFC 2863."
    ::= { bfdSessPerfEntry 19 }


    -- BFD Session Discriminator Mapping Table

    bfdSessDiscMapTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF BfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The BFD Session Discriminator Mapping Table maps a
    local discriminator value to the associated BFD session's
    bfdSessIndex found in the bfdSessionTable."
    ::= { bfdObjects 4 }

    bfdSessDiscMapEntry OBJECT-TYPE
    SYNTAX     BfdSessDiscMapEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "The BFD Session Discriminator Mapping Entry
    specifies a mapping between a local discriminator
    and a BFD session."
    INDEX { bfdSessDescriminator }
    ::= { bfdSessDiscMapTable 1 }

    BfdSessDiscMapEntry ::= SEQUENCE {
            bfdSessDiscMapIndex Unsigned32
    }

bfdSessDiscMapIndex OBJECT-TYPE
SYNTAX     Unsigned32
MAX-ACCESS read-only
STATUS     current
DESCRIPTION
"This object specifies a mapping between a
local discriminator and a BFD session in
the BfdSessTable."
::= { bfdSessDiscMapEntry 1 }


-- BFD Session IP Mapping Table

bfdSessIpMapTable OBJECT-TYPE
SYNTAX     SEQUENCE OF BfdSessIpMapEntry
MAX-ACCESS not-accessible
STATUS     current
DESCRIPTION
"The BFD Session IP Mapping Table maps given
bfdSessInterface, bfdSessSrcAddrType, bfdSessSrcAddr,
  bfdSessDestAddrType, and bfdSessDestAddr
  to an associated BFD session found in the
  bfdSessionTable."
  ::= { bfdObjects 5 }

  bfdSessIpMapEntry OBJECT-TYPE
  SYNTAX     BfdSessIpMapEntry
  MAX-ACCESS not-accessible
  STATUS     current
  DESCRIPTION
  "The BFD Session IP Map Entry contains a mapping
  from the IP information for a session to the session
  in the bfdSessionTable."
  INDEX {
            bfdSessInterface,
            bfdSessSrcAddrType,
            bfdSessSrcAddr,
            bfdSessDestAddrType,
            bfdSessDestAddr
  }
::= { bfdSessIpMapTable 1 }

BfdSessIpMapEntry ::= SEQUENCE {
        bfdSessIpMapIndex Unsigned32
}

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

END
