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

   
