MPLS-FRR-GENERAL-STD-MIB DEFINITIONS ::= BEGIN

 IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, mib-2,
    Unsigned32,
    Counter32
       FROM SNMPv2-SMI                            -- [RFC2578]
    MODULE-COMPLIANCE, OBJECT-GROUP
       FROM SNMPv2-CONF                           -- [RFC2580]
    RowStatus, StorageType
       FROM SNMPv2-TC                             -- [RFC2579]
    InterfaceIndexOrZero,
    ifGeneralInformationGroup,
    ifCounterDiscontinuityGroup

       FROM IF-MIB                                -- [RFC2863]
    MplsTunnelIndex, MplsTunnelInstanceIndex,
    MplsBitRate,
    MplsTunnelAffinity
       FROM MPLS-TC-STD-MIB                       -- [RFC3811]
    mplsTunnelGroup, mplsTunnelScalarGroup,
    mplsTunnelARHopListIndex, mplsTunnelARHopIndex
       FROM MPLS-TE-STD-MIB                       -- [RFC3812]
    ;

 mplsFrrGeneralMIB MODULE-IDENTITY
    LAST-UPDATED
       "201111030000Z" -- 03 Nov 2011 00:00:00 GMT
    ORGANIZATION
       "Multiprotocol Label Switching (MPLS) Working Group"
    CONTACT-INFO
         "
                  Riza Cetin
           Email: riza.cetin@alcatel.be

                  Thomas D. Nadeau
           Email: thomas.nadeau@ca.com

                  A S Kiran Koushik
           Email: kkoushik@cisco.com

                  Stefaan De Cnodder
           Email: Stefaan.de_cnodder@alcatel.be

                  Der-Hwa Gan
           Email: dhg@juniper.net
         "
    DESCRIPTION
      "Copyright (c) 2011 IETF Trust and the persons
       identified as authors of the code.  All rights
       reserved.

       Redistribution and use in source and binary forms,
       with or without modification, is permitted pursuant
       to, and subject to the license terms contained in,
       the Simplified BSD License set forth in Section 4.c
       of the IETF Trust's Legal Provisions Relating to
       IETF Documents
       (http://trustee.ietf.org/license-info).

       This MIB module contains generic object definitions for
       MPLS Traffic Engineering Fast Reroute as defined in
       RFC 4090."

 -- Revision history.
    REVISION
      "201111030000Z" -- 03 Nov 2011 00:00:00 GMT
    DESCRIPTION
      "Initial version.  Published as RFC 6445."
    ::= { mib-2 202 }

 -- Top-level components of this MIB module

 mplsFrrGeneralObjects
             OBJECT IDENTIFIER ::= { mplsFrrGeneralMIB 1 }

 mplsFrrGeneralConformance
             OBJECT IDENTIFIER ::= { mplsFrrGeneralMIB 2 }

 -- MPLS Fast-Reroute generic scalars

 mplsFrrGeneralProtectionMethod OBJECT-TYPE
    SYNTAX        INTEGER {
                            unknown(1),
                            oneToOneBackup(2),
                            facilityBackup(3)
                          }
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
      "Indicates which protection method is to be used for fast
       reroute on this device.  Some devices may require a reboot
       if this variable is to take effect after being modified."
    ::= { mplsFrrGeneralObjects 1 }

 mplsFrrGeneralIngressTunnelInstances OBJECT-TYPE
    SYNTAX        Counter32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
      "The number of tunnel instances for either detour LSPs or
       bypass tunnels for which this LSR is the ingress."
    ::= { mplsFrrGeneralObjects 2 }

 --
 -- General FRR Table section
 --
 -- These tables apply to both types of FRR
 -- and should be implemented by all LSRs supporting
 -- FRR.
 --
 -- MPLS Fast-Reroute Constraints table

 mplsFrrGeneralConstraintsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF MplsFrrGeneralConstraintsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
      "This table shows detour LSP or bypass tunnel setup
       constraints."
    ::= {  mplsFrrGeneralObjects 3 }

 mplsFrrGeneralConstraintsEntry OBJECT-TYPE
    SYNTAX        MplsFrrGeneralConstraintsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
      "An entry in this table represents detour LSP or bypass
       tunnel setup constraints for an interface or link to be
       protected by detour LSPs or a bypass tunnel.

       Once the LSP or tunnel instance to be protected is identified
       in the mplsTunnelTable, the corresponding mplsTunnelIfIndex

       value of that tunnel can be used to get the ifIndex of
       the underlying physical interface using the ifStackTable.
       That ifIndex of the underlying physical interface will
       be used as mplsFrrGeneralConstraintsIfIndexOrZero in this
       table to protect the LSPs or tunnel instances determined
       earlier.

       It is recommended that ifIndex persistence be enabled
       across re-initializations.  If persistence is not
       implemented, then the value of
       mplsFrrGeneralConstraintsIfIndexOrZero in this
       table cannot be guaranteed across restarts and all entries
       in this table MUST NOT be persistent, or the values of
       mplsFrrGeneralConstraintsIfIndexOrZero MUST be reconstructed
       on restart.

       SNMP engines must only allow entries in this table
       to be created for tunnel instances that require fast reroute
       as indicated by the presence of the FAST_REROUTE object
       in the signaling for the LSP in question.

       An entry in this table can be created only if a
       corresponding entry in mplsTunnelTable exists with the
       same mplsTunnelIndex as mplsFrrGeneralConstraintsTunnelIndex.

       Entries in this table are deleted when the corresponding
       entries in mplsTunnelTable are deleted.

       It is recommended that entries in this table be persistent
       across reboots.

       Entries indexed with mplsFrrGeneralConstraintsIfIndexOrZero
       and set to 0 apply to all interfaces on this device for
       which the FRR feature can operate.

       If the mplsTunnelInstance object is set to a value of 0,
       it indicates that the mplsTunnelEntry contains a tunnel
       ingress.  This is typically how configuration of this
       feature is performed on devices where the actual
       protection LSP used is left up to the protecting tunnel.
       However, in cases where static configuration is
       possible, any valid tunnel instance is possible;
       however, it is strongly RECOMMENDED that the instance
       index SHOULD use the following convention to identify
       backup LSPs:

       - lower 16 bits : protected tunnel instance
       - higher 16 bits: must be all zeros"
    REFERENCE
      "Section 4.1 of RFC 4090 and Section 6.1 of RFC 3812."
    INDEX { mplsFrrGeneralConstraintsIfIndexOrZero,
            mplsFrrGeneralConstraintsTunnelIndex,
            mplsFrrGeneralConstraintsTunnelInstance
          }
    ::= { mplsFrrGeneralConstraintsTable 1 }

 MplsFrrGeneralConstraintsEntry ::= SEQUENCE {
    mplsFrrGeneralConstraintsIfIndexOrZero   InterfaceIndexOrZero,
    mplsFrrGeneralConstraintsTunnelIndex     MplsTunnelIndex,
    mplsFrrGeneralConstraintsTunnelInstance  MplsTunnelInstanceIndex,
    mplsFrrGeneralConstraintsProtectionType  INTEGER,
    mplsFrrGeneralConstraintsSetupPrio       Unsigned32,
    mplsFrrGeneralConstraintsHoldingPrio     Unsigned32,
    mplsFrrGeneralConstraintsInclAnyAffinity MplsTunnelAffinity,
    mplsFrrGeneralConstraintsInclAllAffinity MplsTunnelAffinity,
    mplsFrrGeneralConstraintsExclAnyAffinity MplsTunnelAffinity,
    mplsFrrGeneralConstraintsHopLimit        Unsigned32,
    mplsFrrGeneralConstraintsBandwidth       MplsBitRate,
    mplsFrrGeneralConstraintsStorageType     StorageType,
    mplsFrrGeneralConstraintsRowStatus       RowStatus
 }

 mplsFrrGeneralConstraintsIfIndexOrZero  OBJECT-TYPE
    SYNTAX        InterfaceIndexOrZero
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
      "Uniquely identifies an interface that a fast-reroute
       protection tunnel is configured to potentially protect
       in the event of a fault.  Entries with this index set to
       0 indicate that the configured protection tunnel protects
       all interfaces on this device (i.e., node protection)."
    ::= { mplsFrrGeneralConstraintsEntry 1 }

 mplsFrrGeneralConstraintsTunnelIndex OBJECT-TYPE
    SYNTAX        MplsTunnelIndex
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
      "Uniquely identifies a tunnel in the mplsTunnelTable that
       is configured to possibly protect the interface(s) specified
       by mplsFrrGeneralConstraintsIfIndexOrZero in the event of a
       fault."
    REFERENCE
      "mplsTunnelTable from RFC 3812."
    ::= { mplsFrrGeneralConstraintsEntry 2 }

 mplsFrrGeneralConstraintsTunnelInstance OBJECT-TYPE
    SYNTAX        MplsTunnelInstanceIndex
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
      "Uniquely identifies an existing instance of this tunnel
       for which fast reroute is requested.  Note that a value of
       0 indicates that the configuration points at a tunnel
       head (as specified in RFC 3812).  This is typically how
       configuration of this feature is performed on devices
       where the actual protection LSP used is left up to the
       protecting tunnel.  However, in cases where static
       configuration is possible, any valid tunnel instance is
       permissible.  In these cases, it is recommended that the
       instance index follow the following convention so as
       to make identification of backup LSPs easier:

       - lower 16 bits : protected tunnel instance
       - higher 16 bits: must be all zeros"
    ::= { mplsFrrGeneralConstraintsEntry 3 }

 mplsFrrGeneralConstraintsProtectionType OBJECT-TYPE
    SYNTAX        INTEGER { linkProtection(1),
                            nodeProtection(2)
                          }
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates type of the resource protection:

       linkProtection(1) indicates that this tunnel is
       set up to protect a particular link's resources.

       nodeProtection(2) indicates that this tunnel is
       set up to protect an entire node from failure."
    REFERENCE
      "Section 3 of RFC 4090."
    DEFVAL { nodeProtection }
    ::= { mplsFrrGeneralConstraintsEntry 4 }

 mplsFrrGeneralConstraintsSetupPrio OBJECT-TYPE
    SYNTAX        Unsigned32 (0..7)
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates the setup priority of the detour LSP
       or bypass tunnel."
    REFERENCE
      "Section 4.7 of RFC 3209."
    DEFVAL { 7 }
    ::= { mplsFrrGeneralConstraintsEntry 5 }

 mplsFrrGeneralConstraintsHoldingPrio OBJECT-TYPE
    SYNTAX        Unsigned32 (0..7)
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates the holding priority for the detour LSP
       or bypass tunnel."
    REFERENCE
      "Section 4.7 of RFC 3209."
    DEFVAL { 0 }
    ::= { mplsFrrGeneralConstraintsEntry 6 }

 mplsFrrGeneralConstraintsInclAnyAffinity OBJECT-TYPE
    SYNTAX        MplsTunnelAffinity
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates the include-any link constraint for the
       detour LSP or bypass tunnel.  A link satisfies the
       include-any constraint if and only if the constraint
       is zero, or the link and the constraint have a
       resource class in common."
    REFERENCE
      "Section 4.7 of RFC 3209."
    DEFVAL { 0 }
    ::= { mplsFrrGeneralConstraintsEntry 7 }

 mplsFrrGeneralConstraintsInclAllAffinity OBJECT-TYPE
    SYNTAX        MplsTunnelAffinity
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates the include-all link constraint for the
       detour LSP or bypass tunnel.  A link satisfies the
       include-all constraint if and only if the link contains
       all of the administrative groups specified in the
       constraint."
    REFERENCE
      "Section 4.7 of RFC 3209."
    DEFVAL { 0 }
    ::= { mplsFrrGeneralConstraintsEntry 8 }

 mplsFrrGeneralConstraintsExclAnyAffinity OBJECT-TYPE
    SYNTAX        MplsTunnelAffinity
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "Indicates the exclude-any link constraint for the
       detour LSP or bypass tunnel.  A link satisfies the
       exclude-any constraint if and only if the link contains
       none of the administrative groups specified in the
       constraint."
    REFERENCE
      "Section 4.7 of RFC 3209."
    DEFVAL { 0 }
    ::= { mplsFrrGeneralConstraintsEntry 9 }

 mplsFrrGeneralConstraintsHopLimit OBJECT-TYPE
    SYNTAX        Unsigned32(0..255)
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "The maximum number of hops that the detour LSP or
       bypass tunnel may traverse."
    REFERENCE
      "Section 4.1 of RFC 4090."
    DEFVAL { 32 }
    ::= { mplsFrrGeneralConstraintsEntry 10 }

 mplsFrrGeneralConstraintsBandwidth OBJECT-TYPE
    SYNTAX        MplsBitRate
    UNITS         "kilobits per second"
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "The maximum bandwidth specifically reserved for a detour
       LSP or bypass tunnel, in units of thousands of bits
       per second (kbps).  Note that setting this value to 0
       indicates best-effort treatment."
    DEFVAL { 0 }
    ::= { mplsFrrGeneralConstraintsEntry 11 }

 mplsFrrGeneralConstraintsStorageType OBJECT-TYPE
    SYNTAX        StorageType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "The storage type for this configuration entry.
       Conceptual rows having the value 'permanent'
       need not allow write access to any columnar

       objects in the row."
    DEFVAL { volatile }
    ::= { mplsFrrGeneralConstraintsEntry 12 }

 mplsFrrGeneralConstraintsRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
      "This object is used to create, modify, and/or delete a row
       in this table.  When a row in this table is in active(1)
       state, no objects in that row can be modified
       except mplsFrrGeneralConstraintsRowStatus and
       mplsFrrGeneralConstraintsStorageType."
    ::= { mplsFrrGeneralConstraintsEntry 13 }

 -- MPLS Fast-Reroute Tunnel Actual Route Hop table

 mplsFrrGeneralTunnelARHopTable OBJECT-TYPE
    SYNTAX             SEQUENCE OF MplsFrrGeneralTunnelARHopEntry
    MAX-ACCESS         not-accessible
    STATUS             current
    DESCRIPTION
      "This table sparsely extends mplsTunnelARHopTable defined
       in the MPLS-TE-STD-MIB module with fast-reroute objects.
       These objects specify the status of local protection,
       including availability and active use, on a per-hop basis,
       of hops traversed by a protected tunnel."
    ::= {  mplsFrrGeneralObjects 4 }

 mplsFrrGeneralTunnelARHopEntry  OBJECT-TYPE
    SYNTAX             MplsFrrGeneralTunnelARHopEntry
    MAX-ACCESS         not-accessible
    STATUS             current
    DESCRIPTION
      "This entry contains fast-reroute protection status of a
       single protected tunnel hop."
    INDEX {
      mplsTunnelARHopListIndex,
      mplsTunnelARHopIndex
    }
    ::= { mplsFrrGeneralTunnelARHopTable 1 }

 MplsFrrGeneralTunnelARHopEntry    ::= SEQUENCE {
     mplsFrrGeneralTunnelARHopSessionAttributeFlags   BITS,
     mplsFrrGeneralTunnelARHopRROSubObjectFlags       BITS
 }

 mplsFrrGeneralTunnelARHopSessionAttributeFlags  OBJECT-TYPE
    SYNTAX            BITS { arHopSessionAttrFlagsUnsupported(0),
                             localProtectionDesired(1),
                             labelRecordingDesired(2),
                             sestyleDesired(3),
                             bandwidthProtectionDesired(4),
                             nodeProtectionDesired(5)
                           }
    MAX-ACCESS                   read-only
    STATUS                       current
    DESCRIPTION
      "This object indicates the desired values for the
       associated SESSION_ATTRIBUTE flags.  Note that since
       this object is a BITS type, the bits may be set to
       indicate various desired combinations of the
       SESSION_ATTRIBUTE flags.

       If SESSION_ATTRIBUTE flags are not supported, then this
       object contains the value of
       arHopSessionAttrFlagsUnsupported(0)."
    REFERENCE
      "See Section 4.3 of RFC 4090 for SESSION_ATTRIBUTE flags."
    ::= { mplsFrrGeneralTunnelARHopEntry 1 }

 mplsFrrGeneralTunnelARHopRROSubObjectFlags OBJECT-TYPE
    SYNTAX             BITS { arHopRROSubObjectFlagsUnsupported(0),
                              localProtectionAvailable(1),
                              localProtectionInUse(2),
                              bandwidthProtection(3),
                              nodeProtection(4)
                            }
    MAX-ACCESS                   read-only
    STATUS                       current
    DESCRIPTION
      "This object indicates the flags that are currently
       in use by the associated Record Route Object (RRO)
       sub-object.

       Note that since this object is a BITS type,
       the bits may be set to indicate various combinations of
       the flags.

       If the RRO sub-object is not supported, then this object
       contains the value of arHopRROSubObjectFlagsUnsupported(0)."
    REFERENCE
       "Section 4.4 of RFC 4090."
    ::= { mplsFrrGeneralTunnelARHopEntry 2 }

 -- Notifications

 -- Module Conformance Statement

 mplsFrrGeneralCompliances
    OBJECT IDENTIFIER ::= {mplsFrrGeneralConformance 1 }

 mplsFrrGeneralGroups
    OBJECT IDENTIFIER ::= {mplsFrrGeneralConformance 2 }

 mplsFrrGeneralModuleFullCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
      "Compliance statements for SNMP engines that support the
       MPLS-FRR-GENERAL-STD-MIB module."

   MODULE IF-MIB -- The Interfaces Group MIB module, RFC 2863.
      MANDATORY-GROUPS {
         ifGeneralInformationGroup,
         ifCounterDiscontinuityGroup
      }

   MODULE MPLS-TE-STD-MIB  -- The MPLS Traffic Engineering
                           -- MIB module, RFC 3812
      MANDATORY-GROUPS {
         mplsTunnelGroup,
         mplsTunnelScalarGroup
      }

    MODULE -- this module
        MANDATORY-GROUPS {
                          mplsFrrGeneralScalarGroup,
                          mplsFrrGeneralTunnelARHopGroup,
                          mplsFrrGeneralConstraintsGroup
                         }

    OBJECT       mplsFrrGeneralConstraintsRowStatus
    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."
    ::= { mplsFrrGeneralCompliances 1 }

 mplsFrrGeneralModuleReadOnlyCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
      "Compliance statements for SNMP engines that support the
       MPLS-FRR-GENERAL-STD-MIB module."
    MODULE

        MANDATORY-GROUPS {
                          mplsFrrGeneralScalarGroup,
                          mplsFrrGeneralTunnelARHopGroup,
                          mplsFrrGeneralConstraintsGroup
                         }

    -- Scalars

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

    -- mplsFrrGeneralConstraintsTable

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

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

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

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

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

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

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

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

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

    OBJECT        mplsFrrGeneralConstraintsRowStatus
    SYNTAX        RowStatus { active(1) }
    MIN-ACCESS    read-only
    DESCRIPTION
      "Write access is not required."
    ::= { mplsFrrGeneralCompliances 2 }

 -- Units of conformance

 mplsFrrGeneralScalarGroup OBJECT-GROUP
    OBJECTS {
             mplsFrrGeneralIngressTunnelInstances,
             mplsFrrGeneralProtectionMethod
            }
    STATUS        current
    DESCRIPTION
      "Objects that are required to display general fast-reroute
       information."
    ::= { mplsFrrGeneralGroups 1 }

 mplsFrrGeneralConstraintsGroup OBJECT-GROUP
    OBJECTS {
       mplsFrrGeneralConstraintsProtectionType,
       mplsFrrGeneralConstraintsSetupPrio,
       mplsFrrGeneralConstraintsHoldingPrio,
       mplsFrrGeneralConstraintsInclAnyAffinity,
       mplsFrrGeneralConstraintsInclAllAffinity,
       mplsFrrGeneralConstraintsExclAnyAffinity,
       mplsFrrGeneralConstraintsHopLimit,
       mplsFrrGeneralConstraintsBandwidth,
       mplsFrrGeneralConstraintsStorageType,
       mplsFrrGeneralConstraintsRowStatus
    }
    STATUS        current
    DESCRIPTION
      "Objects that are required to configure fast-reroute
       constraints at the ingress LSR of the tunnel that
       requires fast-reroute service."
    ::= { mplsFrrGeneralGroups 2 }

 mplsFrrGeneralTunnelARHopGroup         OBJECT-GROUP
    OBJECTS {
              mplsFrrGeneralTunnelARHopSessionAttributeFlags,
              mplsFrrGeneralTunnelARHopRROSubObjectFlags
            }
    STATUS        current
    DESCRIPTION
      "Objects that are required to present per-hop fast-reroute
       protection status."
    ::= { mplsFrrGeneralGroups 3}

END
