-- *********************************************************************
-- **
-- ** BATM Advanced Communications.
-- **
-- *********************************************************************
-- ** Filename:   MPLS-LSR-MIB.mib
-- ** Project:    T-Metro Switches.
-- ** Purpose:    Private MIB
-- *********************************************************************
-- (c) Copyright, 2006, BATM Advanced Communications.  All rights reserved.
--                             WARNING:
--
-- BY UTILIZING THIS FILE, YOU AGREE TO THE FOLLOWING:
--
-- This file is the property of BATM Advanced Communications and contains
-- proprietary and confidential information.  This file is made
-- available to authorized BATM customers on the express
-- condition that neither it, nor any of the information contained
-- therein, shall be disclosed to third parties or be used for any
-- purpose other than to replace, modify or upgrade firmware and/or
-- software components of BATM manufactured equipment within the
-- authorized customer's network, and that such transfer be
-- completed in accordance with the instructions provided by
-- BATM.  Any other use is strictly prohibited.
--
-- EXCEPT AS RESTRICTED BY LAW, OR AS PROVIDED IN BATM'S LIMITED
-- WARRANTY, THE SOFTWARE PROGRAMS CONTAINED IN THIS FILE ARE
-- PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES
-- OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
--
-- IN NO EVENT SHALL BATM BE LIABLE FOR ANY DAMAGES WHATSOEVER
-- INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS
-- PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION OR
-- OTHER CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY
-- TO USE, THE SOFTWARE CONTAINED IN THIS FILE.
--
-- ----------------------------------------------------------------------------
--

MPLS-LSR-MIB DEFINITIONS ::= BEGIN

IMPORTS
   MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
   Integer32, Unsigned32, zeroDotZero
      FROM SNMPv2-SMI                                    -- [RFC2578]
   MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
      FROM SNMPv2-CONF                                   -- [RFC2580]
   TruthValue, RowStatus, StorageType, RowPointer,
   TEXTUAL-CONVENTION
      FROM SNMPv2-TC                                     -- [RFC2579]
   InterfaceIndexOrZero, ifGeneralInformationGroup,
   ifCounterDiscontinuityGroup
      FROM IF-MIB                                        -- [RFC2863]
   mplsStdMIB, MplsLSPID, MplsLabel, MplsBitRate,
   MplsOwner, MplsBurstSize
      FROM MPLS-TC-PRIV-STDEXT-MIB                               -- [RFC3811]
   AddressFamilyNumbers
      FROM IANA-ADDRESS-FAMILY-NUMBERS-MIB               -- [IANAFamily]
   InetAddress, InetAddressType
      FROM INET-ADDRESS-MIB                              -- [RFC3291]
   prvtlmgrLsrEntityLsrIndex
      FROM PRVT-LMGR-MIB
   mpls				 		FROM PRVT-CR-LDP-MIB;


mplsLsrMIB MODULE-IDENTITY
   LAST-UPDATED "200712060000Z" 
      ORGANIZATION "BATM Advanced Communication"
      CONTACT-INFO
                   " BATM/Telco Systems Support team
					Email: 
				For North America: techsupport@telco.com
				For North Europe: support@batm.de, info@batm.de
				For the rest of the world: techsupport@telco.com"

   DESCRIPTION
       "This MIB module contains managed object definitions for
        the Multiprotocol Label Switching (MPLS) Router as
        defined in: Rosen, E., Viswanathan, A., and R.
        Callon, Multiprotocol Label Switching Architecture,
        RFC 3031, January 2001.

        Copyright (C) The Internet Society (2004). The
        initial version of this MIB module was published
        in RFC 3812. For full legal notices see the RFC
        itself or see:
        http://www.ietf.org/copyrights/ianamib.html"

   -- Revision history.
    REVISION
       "200712060000Z"    
   DESCRIPTION
       "Update the mib with new functionality and optimisations"
     ::= { mpls 5 }


-- Textual Conventions.

MplsIndexType ::= TEXTUAL-CONVENTION
   STATUS        current
   DESCRIPTION
       "This is an octet string that can be used as a table
        index in cases where a large addressable space is
        required such as on an LSR where many applications
        may be provisioning labels.

        Note that the string containing the single octet with
        the value 0x00 is a reserved value used to represent
        special cases. When this TEXTUAL-CONVENTION is used
        as the SYNTAX of an object, the DESCRIPTION clause
        MUST specify if this special value is valid and if so
        what the special meaning is.

        In systems that provide write access to the MPLS-LSR-STD
        MIB, mplsIndexType SHOULD be used as a simple multi-digit
        integer encoded as an octet string.
        No further overloading of the meaning of an index SHOULD
        be made.

        In systems that do not offer write access to the MPLS-LSR-STD
        MIB, the mplsIndexType may contain implicit formatting that is
        specific to the implementation to convey additional
        information such as interface index, physical card or
        device, or application id. The interpretation of this
        additional formatting is implementation dependent and
        not covered in this document. Such formatting MUST
        NOT impact the basic functionality of read-only access
        to the MPLS-LSR-STD MIB by management applications that are
        not aware of the formatting rules.

        The MIB is implemented in PRVT-LMGR with write-access.
        As specified above, PRVT-LMGR treats the index values of this type
        as simple integer types.

        In order to reduce the effort required to upgrade from earlier
        versions of the MIB, and to simplify management of static LSPs,
        this type is mapped on to an Integer32 in this implementation."
   SYNTAX  Integer32 (0..2147483647)

MplsIndexNextType ::= TEXTUAL-CONVENTION
   STATUS      current
   DESCRIPTION
       "When a MIB module is used for configuration, an object with
        this SYNTAX always contains a legal value (a non-zero-length
        string) for an index that is not currently used in the relevant
        table. The Command Generator (Network Management Application)
        reads this variable and uses the (non-zero-length string)
        value read when creating a new row with an SNMP SET.

        When the SET is performed, the Command Responder (agent) must
        determine whether the value is indeed still unused; Two Network
        Management Applications may attempt to create a row
        (configuration entry) simultaneously and use the same value. If
        it is currently unused, the SET succeeds and the Command
        Responder (agent) changes the value of this object, according
        to an implementation-specific algorithm.  If the value is in
        use, however, the SET fails.  The Network Management
        Application must then re-read this variable to obtain a new
        usable value.

        Note that the string containing the single octet with
        the value 0x00 is a reserved value used to represent
        the special case where no additional indexes can be
        provisioned, or in systems that do not offer
        write access, objects defined using this TEXTUAL-CONVENTION
        MUST return the string containing the single
        octet with the value 0x00.

        The MplsIndexType is an Integer32 in this version of the MIB.
        Accordingly, the MplsIndexNextType is also an Integer32, with
        the special value of 0 indicating that no further index
        values are available."
   SYNTAX              Integer32 (0..2147483647)
-- Top level components of this MIB.

-- Tables, Scalars
mplsLsrObjects       OBJECT IDENTIFIER ::= { mplsLsrMIB 1 }

-- Notifications
mplsLsrNotifications OBJECT IDENTIFIER ::= { mplsLsrMIB 2 }
mplsLsrNotifyPrefix OBJECT IDENTIFIER ::= { mplsLsrNotifications 0 }


-- Conformance
mplsLsrConformance   OBJECT IDENTIFIER ::= { mplsLsrMIB 3 }

-- MPLS Interface Table.
mplsInterfaceTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInterfaceEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table is created by an LSR for
        every interface capable of supporting MPLS. The
        entry with index 0 represents the per-platform label
        space and contains parameters that apply to all
        interfaces that participate in the per-platform
        label space. Other entries defined in this table
        represent additional MPLS interfaces that may
        participate in either the per-platform or
        per-interface label spaces, or both. Additional
        information about label space participation of an
        interface is provided in the description clause of
        mplsInterfaceLabelParticipType."
   ::= { mplsLsrObjects 1 }

mplsInterfaceEntry OBJECT-TYPE
   SYNTAX        MplsInterfaceEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "A conceptual row in this table is created
        automatically by an LSR for every interface capable
        of supporting MPLS and which is configured to do so.
        A conceptual row in this table will exist if and only if
        a corresponding entry in ifTable exists with ifType =
        mpls(166). If this associated entry in ifTable is
        operationally disabled (thus removing MPLS
        capabilities on that interface), the corresponding
        entry in this table MUST be deleted shortly thereafter.
        An conceptual row with index 0 is created if the LSR
        supports per-platform labels. This conceptual row
        represents the per-platform label space and contains
        parameters that apply to all interfaces that participate
        in the per-platform label space. Other conceptual rows
        in this table represent MPLS interfaces that may
        participate in either the per-platform or per-
        interface label spaces, or both.  Implementations
        that either only support per-platform labels,
        or have only them configured, may choose to return
        just the mplsInterfaceEntry of 0 and not return
        the other rows. This will greatly reduce the number
        of objects returned. Further information about label
        space participation of an interface is provided in
        the DESCRIPTION clause of
        mplsInterfaceLabelParticipType.

        Private EXTENSION. This MIB table is also
        indexed by the PRVT-LMGR product index."
   INDEX       { prvtlmgrLsrEntityLsrIndex, mplsInterfaceIndex }
      ::= { mplsInterfaceTable 1 }

MplsInterfaceEntry ::= SEQUENCE {
  mplsInterfaceIndex                  InterfaceIndexOrZero,
  mplsInterfaceLabelMinIn             MplsLabel,
  mplsInterfaceLabelMaxIn             MplsLabel,
  mplsInterfaceLabelMinOut            MplsLabel,
  mplsInterfaceLabelMaxOut            MplsLabel,
  mplsInterfaceTotalBandwidth         MplsBitRate,
  mplsInterfaceAvailableBandwidth     MplsBitRate,
  mplsInterfaceLabelParticipType BITS,
  mplsInterfaceSwitchMngedLblSpace TruthValue
}

mplsInterfaceIndex OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This is a unique index for an entry in the
        MplsInterfaceTable.  A non-zero index for an
        entry indicates the ifIndex for the corresponding
        interface entry of the MPLS-layer in the ifTable.
        The entry with index 0 represents the per-platform
        label space and contains parameters that apply to all
        interfaces that participate in the per-platform label
        space. Other entries defined in this table represent
        additional MPLS interfaces that may participate in either
        the per-platform or per-interface label spaces, or both."
   REFERENCE
       "RFC 2863 - The Interfaces Group MIB, McCloghrie, K.,
        and F. Kastenholtz, June 2000"
   ::= { mplsInterfaceEntry 2 }

mplsInterfaceLabelMinIn OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is the minimum value of an MPLS label that this
        LSR is willing to receive on this interface."
   ::= { mplsInterfaceEntry 3 }

mplsInterfaceLabelMaxIn OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is the maximum value of an MPLS label that this
        LSR is willing to receive on this interface."
   ::= { mplsInterfaceEntry 4 }

mplsInterfaceLabelMinOut OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is the minimum value of an MPLS label that this
        LSR is willing to send on this interface."
   ::= { mplsInterfaceEntry 5 }

mplsInterfaceLabelMaxOut OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This is the maximum value of an MPLS label that this
        LSR is willing to send on this interface."
   ::= { mplsInterfaceEntry 6 }

mplsInterfaceTotalBandwidth        OBJECT-TYPE
   SYNTAX        MplsBitRate
   UNITS         "kilobits per second"
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This value indicates the total amount of usable
        bandwidth on this interface and is specified in
        kilobits per second (Kbps).  This variable is not
        applicable when applied to the interface with index
        0. When this value cannot be measured, this value
        should contain the nominal bandwidth."
::= { mplsInterfaceEntry 7 }

mplsInterfaceAvailableBandwidth       OBJECT-TYPE
   SYNTAX        MplsBitRate
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This value indicates the total amount of available
        bandwidth available on this interface and is
        specified in kilobits per second (Kbps).  This value
        is calculated as the difference between the amount
        of bandwidth currently in use and that specified in
        mplsInterfaceTotalBandwidth.  This variable is not
        applicable when applied to the interface with index
        0. When this value cannot be measured, this value
        should contain the nominal bandwidth."
::= { mplsInterfaceEntry 8 }

mplsInterfaceLabelParticipType OBJECT-TYPE
   SYNTAX  BITS {
                perPlatform (0),
                perInterface (1)
              }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "If the value of the mplsInterfaceIndex for this
        entry is zero, then this entry corresponds to the
        per-platform label space for all interfaces configured
        to use that label space. In this case the perPlatform(0)
        bit MUST be set; the perInterface(1) bit is meaningless
        and MUST be ignored.

        The remainder of this description applies to entries
        with a non-zero value of mplsInterfaceIndex.

        If the perInterface(1) bit is set then the value of
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut for this entry reflect the
        label ranges for this interface.

        If only the perPlatform(0) bit is set, then the value of
        mplsInterfaceLabelMinIn, mplsInterfaceLabelMaxIn,
        mplsInterfaceLabelMinOut, and
        mplsInterfaceLabelMaxOut for this entry MUST be
        identical to the instance of these objects with
        index 0.These objects may only vary from the entry
        with index 0 if both the perPlatform(0) and perInterface(1)
        bits are set.

        In all cases, at a minimum one of the perPlatform(0) or
        perInterface(1) bits MUST be set to indicate that
        at least one label space is in use by this interface. In
        all cases, agents MUST ensure that label ranges are
        specified consistently and MUST return an
        inconsistentValue error when they do not."
   REFERENCE
       "Rosen, E., Viswanathan, A., and R. Callon,
        Multiprotocol Label Switching Architecture, RFC
        3031, January 2001."
::= { mplsInterfaceEntry 9 }

mplsInterfaceSwitchMngedLblSpace OBJECT-TYPE
   SYNTAX        TruthValue
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This value indicates whether or not the label space
        for this interface is managed by the switch itself,
        rather than by the Label Manager."
::= { mplsInterfaceEntry 10 }

-- End of mplsInterfaceTable

-- In-segment Index next table.

mplsInSegmentIndexNextTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInSegmentIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains the next appropriate value to be used
        for mplsInSegmentIndex when creating entries in the
        mplsInSegmentTable. If the number of unassigned entries is
        exhausted, the mplsInSegmentIndexNext object will take the
        value of 0."
   ::= { mplsLsrObjects 3 }

mplsInSegmentIndexNextEntry OBJECT-TYPE
   SYNTAX        MplsInSegmentIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the next available
        mplsInSegmentIndex for a specific Label Manager entity.
        This MIB table is indexed by the PRVT-LMGR entity Index."
   INDEX { prvtlmgrLsrEntityLsrIndex }
       ::= { mplsInSegmentIndexNextTable 1 }

MplsInSegmentIndexNextEntry ::= SEQUENCE {
  mplsInSegmentIndexNext            MplsIndexNextType
}

mplsInSegmentIndexNext OBJECT-TYPE
   SYNTAX        MplsIndexNextType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains the next available value to
        be used for mplsInSegmentIndex when creating entries
        in the mplsInSegmentTable.

        The special value of 0 indicates that no new entries
        can be created in this table.

        Agents not allowing managers to create entries
        in this table MUST set this object to this special
        value."
      ::= { mplsInSegmentIndexNextEntry 2 }

-- End of mplsInSegmentIndexNextTable


-- in-segment table.
mplsInSegmentTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInSegmentEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains a description of the incoming MPLS
        segments (labels) to an LSR and their associated parameters.
        The index for this table is mplsInSegmentIndex.
        The index structure of this table is specifically designed
        to handle many different MPLS implementations that manage
        their labels both in a distributed and centralized manner.
        The table is also designed to handle existing MPLS labels
        as defined in RFC3031 as well as longer ones that may
        be necessary in the future.

        In cases where the label cannot fit into the
        mplsInSegmentLabel object, the mplsInSegmentLabelPtr
        will indicate this by being set to the first accessible
        column in the appropriate extension table's row.
        In this case an additional table MUST
        be provided and MUST be indexed by at least the indexes
        used by this table. In all other cases when the label is
        represented within the mplsInSegmentLabel object, the
        mplsInSegmentLabelPtr MUST be set to 0.0. Due to the
        fact that MPLS labels may not exceed 24 bits, the
        mplsInSegmentLabelPtr object is only a provision for
        future-proofing the MIB module. Thus, the definition
        of any extension tables is beyond the scope of this
        MIB module.

        Entries in the table cannot be created by management for
        incoming MPLS segments associated with interfaces using the
        Switch Managed Label Space (SMLS); that is when
        mplsInterfaceSwitchMngedLblSpace is set to true for the
        interface."
   ::= { mplsLsrObjects 4 }

mplsInSegmentEntry  OBJECT-TYPE
   SYNTAX        MplsInSegmentEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents one incoming
        segment as is represented in an LSR's LFIB.
        An entry can be created by a network
        administrator or an SNMP agent, or an MPLS signaling
        protocol.  The creator of the entry is denoted by
        mplsInSegmentOwner.  An entry in this table is
        indexed by the ifIndex of the incoming interface and
        the (top) label.

        The value of mplsInSegmentRowStatus cannot be active(1)
        unless the ifTable entry corresponding to
        mplsInSegmentInterface exists.  An entry in this table
        must match any incoming packets, and indicates an
        instance of mplsXCEntry based on which forwarding
        and/or switching actions are taken.

        Private EXTENSION. This MIB table is also
        indexed by the LMGR product Index."
   INDEX         { prvtlmgrLsrEntityLsrIndex, 
                   mplsInSegmentIndex }
   ::= { mplsInSegmentTable 1 }

MplsInSegmentEntry ::= SEQUENCE {
  mplsInSegmentIndex                MplsIndexType,
  mplsInSegmentInterface            InterfaceIndexOrZero,
  mplsInSegmentLabel                MplsLabel,
  mplsInSegmentLabelPtr             RowPointer,
  mplsInSegmentNPop                 Integer32,
  mplsInSegmentAddrFamily           AddressFamilyNumbers,
  mplsInSegmentXCIndex              MplsIndexType,
  mplsInSegmentOwner                MplsOwner,
  mplsInSegmentTrafficParamPtr      RowPointer,
  mplsInSegmentRowStatus            RowStatus,
  mplsInSegmentStorageType          StorageType
}

mplsInSegmentIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "The index for this in-segment.
       The value 0 MUST not be used as an index."

   ::= { mplsInSegmentEntry 2 }

mplsInSegmentInterface OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This object represents the
        interface index for the incoming MPLS interface.  A
        value of zero represents all interfaces participating in
        the per-platform label space.  This may only be used
        in cases where the incoming interface and label
        are associated with the same mplsXCEntry. Specifically,
        given a label and any incoming interface pair from the
        per-platform label space, the outgoing label/interface
        mapping remains the same. If this is not the case,
        then individual entries MUST exist that
        can then be mapped to unique mplsXCEntries."
   ::= { mplsInSegmentEntry 3 }

mplsInSegmentLabel OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
     "If the corresponding instance of mplsInSegmentLabelPtr is
      zeroDotZero then this object MUST contain the incoming label
      associated with this in-segment. If not this object SHOULD
      be zero and MUST be ignored."
   ::= { mplsInSegmentEntry 4 }

mplsInSegmentLabelPtr OBJECT-TYPE
   SYNTAX        RowPointer
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "If the label for this segment cannot be represented
        fully within the mplsInSegmentLabel object,
        this object MUST point to the first accessible
        column of a conceptual row in an external table containing
        the label.  In this case, the mplsInSegmentTopLabel
        object SHOULD be set to 0 and ignored. This object MUST
        be set to zeroDotZero otherwise.

        In the this implementation, this object points at an entry in
        the gmplsLabelTable.  Configuration of static LSPs using big
        labels is not currently supported by PRVT-LMGR, and so the
        gmplsLabelTable and this object are read-only."
   DEFVAL { zeroDotZero }
   ::= { mplsInSegmentEntry 5 }

mplsInSegmentNPop OBJECT-TYPE
   SYNTAX        Integer32 (1..2147483647)
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The number of labels to pop from the incoming
        packet.  Normally only the top label is popped from
        the packet and used for all switching decisions for
        that packet.  This is indicated by setting this
        object to the default value of 1. If an LSR supports
        popping of more than one label, this object MUST
        be set to that number. This object cannot be modified
        if mplsInSegmentRowStatus is active(1)."
   DEFVAL        { 1 }
   ::= { mplsInSegmentEntry 6 }

mplsInSegmentAddrFamily OBJECT-TYPE
   SYNTAX        AddressFamilyNumbers
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The IANA address family [IANAFamily] of packets
        received on this segment, which is used at an egress
        LSR to deliver them to the appropriate layer 3 entity.
        A value of other(0) indicates that the family type is
        either unknown or undefined; this SHOULD NOT be used
        at an egress LSR. This object cannot be
        modified if mplsInSegmentRowStatus is active(1)."
   REFERENCE
       "Internet Assigned Numbers Authority (IANA), ADDRESS
        FAMILY NUMBERS, (http://www.iana.org/assignments/
        address-family-numbers), for MIB see:
        http://www.iana.org/assignments/
        ianaaddressfamilynumbers-mib"
   DEFVAL        { other }
   ::= { mplsInSegmentEntry 7 }

mplsInSegmentXCIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Index into the mplsXCTable which identifies which
        cross-connect entry this segment is part of.

        The value 0 indicates that this entry is not referred
        to by any cross-connect entry.

        When a cross-connect entry is created which this
        in-segment is a part of, this object is automatically
        updated to reflect the value of mplsXCIndex of that
        cross-connect entry."
   ::= { mplsInSegmentEntry 8 }

mplsInSegmentOwner OBJECT-TYPE
   SYNTAX        MplsOwner
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Denotes the entity that created and is responsible
        for managing this segment."
   ::= { mplsInSegmentEntry 9 }

mplsInSegmentTrafficParamPtr OBJECT-TYPE
   SYNTAX            RowPointer
   MAX-ACCESS        read-create
   STATUS            current
   DESCRIPTION
     "This variable represents a pointer to the traffic
      parameter specification for this in-segment.  This
      value may point at an entry in the
      mplsTrafficParamTable to indicate which
      mplsTrafficParamEntry is to be assigned to this
      segment.  This value may optionally point at an
      externally defined traffic parameter specification
      table.  A value of zeroDotZero indicates best-effort
      treatment.  By having the same value of this object,
      two or more segments can indicate resource sharing
      of such things as LSP queue space, etc.

      This object cannot be modified if mplsInSegmentRowStatus
      is active(1).  For entries in this table that
      are preserved after a re-boot, the agent MUST ensure
      that their integrity be preserved, or this object should
      be set to 0.0 if it cannot.
      In this implementation, the object must point at an
      entry in the mplsTrafficParamTable."
   DEFVAL { zeroDotZero }
   ::= { mplsInSegmentEntry 10 }

mplsInSegmentRowStatus 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
        mplsInSegmentRowStatus and mplsInSegmentStorageType."
   ::= { mplsInSegmentEntry 11 }

mplsInSegmentStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable indicates the storage type for this
        object. The agent MUST ensure that this object's
        value remains consistent with the associated
        mplsXCEntry. Conceptual rows having the value
        'permanent' need not allow write-access to any
        columnar objects in the row."
   REFERENCE
        "See RFC2579."
   DEFVAL        { volatile }
   ::= { mplsInSegmentEntry 12 }

-- End of mplsInSegmentTable

-- Out-segment table.

-- Private EXTENSION.  The mplsOutSegmentIndexNext object is
-- implemented as a row in a table to allow for multiple instances of
-- PRVT-LMGR entities within a managed node.

mplsOutSegmentIndexNextTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsOutSegmentIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains the next appropriate value to be used
        for mplsOutSegmentIndex when creating entries in the
        mplsOutSegmentTable. If the number of unassigned entries is
        exhausted, this object will take on the value of 0. To obtain
        the mplsOutSegmentIndex value for a new entry, the manager
        must first issue a management protocol retrieval operation to
        obtain the current value of this object. The agent should
        modify the value to reflect the next unassigned index after
        each retrieval operation. After a manager retrieves a value
        the agent will determine through its local policy when this
        index value will be made available for reuse."
   ::= { mplsLsrObjects 6 }

mplsOutSegmentIndexNextEntry  OBJECT-TYPE
   SYNTAX        MplsOutSegmentIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the next available
        mplsOutSegmentIndex for a specific Label Manager entity.
        This MIB table is indexed by the PRVT-LMGR entity Index."

   INDEX   { prvtlmgrLsrEntityLsrIndex }
      ::= { mplsOutSegmentIndexNextTable 1 }

MplsOutSegmentIndexNextEntry ::= SEQUENCE {
      mplsOutSegmentIndexNext                   Integer32
    }

mplsOutSegmentIndexNext OBJECT-TYPE
   SYNTAX        Integer32 (0..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains the next available value to
        be used for mplsOutSegmentIndex when creating entries
        in the mplsOutSegmentTable.

        The special value of 0 indicates that no new entries
        can be created in this table.

        Agents not allowing managers to create entries
        in this table MUST set this object to this special
        value."
   ::= { mplsOutSegmentIndexNextEntry 2 }

-- End of mplsOutSegmentIndexNextTable

-- out-segment table.

mplsOutSegmentTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsOutSegmentEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains a representation of the outgoing
        segments from an LSR.  An entry in this table represents
        one outgoing segment. An entry can be created by a network
        administrator or an SNMP agent, or an MPLS signaling
        protocol. The object mplsOutSegmentOwner indicates the
        creator of this entry."
   ::= { mplsLsrObjects 7 }

mplsOutSegmentEntry  OBJECT-TYPE
   SYNTAX        MplsOutSegmentEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents one outgoing
        segment.  An entry can be created by a network
        administrator, an SNMP agent, or an MPLS signaling
        protocol.  The object mplsOutSegmentOwner indicates
        the creator of this entry.The value of
        mplsOutSegmentRowStatus cannot be active(1) unless
        the ifTable entry corresponding to
        mplsOutSegmentInterface exists.

        Note that the indexing of this table uses a single,
        arbitrary index (mplsOutSegmentIndex) to indicate
        which out-segment (i.e.: label) is being switched to
        from which in-segment (i.e: label) or in-segments.
        This is necessary because it is possible to have an
        equal-cost multi-path situation where two identical
        out-going labels are assigned to the same
        cross-connect (i.e.: they go to two different neighboring
        LSRs); thus, requiring two out-segments. In order to
        preserve the uniqueness of the references
        by the mplsXCEntry, an arbitrary integer must be used as
        the index for this table.

        PRIVATE EXTENSION. This MIB table is also
        indexed by the PRVT-LMGR product index."
   INDEX         { prvtlmgrLsrEntityLsrIndex, 
                   mplsOutSegmentIndex }
   ::= { mplsOutSegmentTable 1 }

MplsOutSegmentEntry ::= SEQUENCE {
  mplsOutSegmentIndex                MplsIndexType,
  mplsOutSegmentInterface            InterfaceIndexOrZero,
  mplsOutSegmentPushTopLabel         TruthValue,
  mplsOutSegmentTopLabel             MplsLabel,
  mplsOutSegmentTopLabelPtr          RowPointer,
  mplsOutSegmentNextHopAddrType      InetAddressType,
  mplsOutSegmentNextHopAddr          InetAddress,
  mplsOutSegmentXCIndex              MplsIndexType,
  mplsOutSegmentOwner                MplsOwner,
  mplsOutSegmentTrafficParamPtr      RowPointer,
  mplsOutSegmentRowStatus            RowStatus,
  mplsOutSegmentStorageType          StorageType
}

mplsOutSegmentIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This value contains a unique index for this row.
        While a value of 0 is not valid as an index for entries
        in this table, it can be supplied as a valid value
        to index the mplsXCTable to represent entries for
        which no out-segment has been configured or
        exists."
   ::= { mplsOutSegmentEntry 2 }

mplsOutSegmentInterface OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This value must contain the interface index of the
        outgoing interface. This object cannot be modified
        if mplsOutSegmentRowStatus is active(1). The
        mplsOutSegmentRowStatus cannot be set to active(1)
        until this object is set to a value corresponding to
        a valid ifEntry."
   ::= { mplsOutSegmentEntry 3 }

mplsOutSegmentPushTopLabel OBJECT-TYPE
   SYNTAX        TruthValue
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This value indicates whether or not a top label
        should be pushed onto the outgoing packet's label
        stack.  The value of this variable MUST be set to
        true(1) if the outgoing interface does not support
        pop-and-go (and no label stack remains). For example,
        on ATM interface, or if the segment represents a
        tunnel origination.  Note that it is considered
        an error in the case that mplsOutSegmentPushTopLabel
        is set to false, but the cross-connect entry which
        refers to this out-segment has a non-zero
        mplsLabelStackIndex.  The LSR MUST ensure that this
        situation does not happen. This object cannot be
        modified if mplsOutSegmentRowStatus is active(1)."
   DEFVAL { true }
   ::= { mplsOutSegmentEntry 4 }

mplsOutSegmentTopLabel OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "If mplsOutSegmentPushTopLabel is true then this
        represents the label that should be pushed onto the
        top of the outgoing packet's label stack. Otherwise
        this value SHOULD be set to 0 by the management
        station and MUST be ignored by the agent. This
        object cannot be modified if mplsOutSegmentRowStatus
        is active(1)."
   DEFVAL { 0 }
   ::= { mplsOutSegmentEntry 5 }

mplsOutSegmentTopLabelPtr OBJECT-TYPE
   SYNTAX        RowPointer
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "If the label for this segment cannot be represented
        fully within the mplsOutSegmentLabel object,
        this object MUST point to the first accessible
        column of a conceptual row in an external table containing
        the label.  In this case, the mplsOutSegmentTopLabel
        object SHOULD be set to 0 and ignored. This object
        MUST be set to zeroDotZero otherwise.

        In the this implementation, this object points at an entry in
        the gmplsLabelTable.  Configuration of static LSPs using big
        labels is not currently supported by PRVT-LMGR, and so the
        gmplsLabelTable and this object are read-only."
   DEFVAL { zeroDotZero }
   ::= { mplsOutSegmentEntry 6 }

mplsOutSegmentNextHopAddrType OBJECT-TYPE
   SYNTAX        InetAddressType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Indicates the next hop Internet address type.
        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.
        If any other unsupported values are attempted in a set
        operation, the agent MUST return an inconsistentValue
        error."
   REFERENCE
       "See RFC3291."
   ::= { mplsOutSegmentEntry 7 }

mplsOutSegmentNextHopAddr OBJECT-TYPE
   SYNTAX        InetAddress
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The internet address of the next hop. The type of
        this address is determined by the value of the
        mplslOutSegmentNextHopAddrType object.

        This object cannot be modified if
        mplsOutSegmentRowStatus is active(1)."
   ::= { mplsOutSegmentEntry 8 }

mplsOutSegmentXCIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Index into mplsXCTable which identifies which cross-
        connect entry this segment is part of.  A value of
        zero indicates that this entry is not referred to by
        any cross-connect entry.  When a cross-connect entry
        is created which this out-segment is a part of, this
        object is automatically updated to reflect the value
        of mplsXCIndex of that cross-connect entry."
   DEFVAL        { 0 }
   ::= { mplsOutSegmentEntry 9 }

mplsOutSegmentOwner OBJECT-TYPE
   SYNTAX        MplsOwner
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Denotes the entity which created and is responsible
        for managing this segment."
   ::= { mplsOutSegmentEntry 10 }

mplsOutSegmentTrafficParamPtr OBJECT-TYPE
   SYNTAX        RowPointer
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
     "This variable represents a pointer to the traffic
      parameter specification for this out-segment.  This
      value may point at an entry in the
      mplsTrafficParamTable to indicate which
      mplsTrafficParamEntry is to be assigned to this
      segment.  This value may optionally point at an
      externally defined traffic parameter specification
      table.  A value of zeroDotZero indicates best-effort
      treatment.  By having the same value of this object,
      two or more segments can indicate resource sharing
      of such things as LSP queue space, etc.

      This object cannot be modified if
      mplsOutSegmentRowStatus is active(1).
      For entries in this table that
      are preserved after a re-boot, the agent MUST ensure
      that their integrity be preserved, or this object should
      be set to 0.0 if it cannot.

      In this implementation, the object must point at an
      entry in the mplsTrafficParamTable."
   DEFVAL { zeroDotZero }
   ::= { mplsOutSegmentEntry 11 }

mplsOutSegmentRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row.
        When a row in this table has a row in the active(1)
        state, no objects in this row can be modified
        except the mplsOutSegmentRowStatus or
        mplsOutSegmentStorageType."
   ::= { mplsOutSegmentEntry 12 }

mplsOutSegmentStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable indicates the storage type for this
        object. The agent MUST ensure that this object's value
        remains consistent with the associated mplsXCEntry.
        Conceptual rows having the value 'permanent'
        need not allow write-access to any columnar
        objects in the row."
   DEFVAL        { volatile }
   ::= { mplsOutSegmentEntry 13 }


-- End of mplsOutSegmentTable

-- Cross-connect table.

-- Private EXTENSION.  The mplsXcIndexNext object is
-- implemented as a row in a table to allow for multiple instances of
-- PRVT-LMGR entities within a managed node.

mplsXCIndexNextTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsXCIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains the next appropriate value to be used
        for mplsXCIndex when creating entries in the mplsXCTable.
        If the number of unassigned entries is exhausted, this
        object will take on the value of 0. To obtain the mplsXCIndex
        value for a new entry, the manager must first issue a
        management protocol retrieval operation to obtain the
        current value of this object. The agent should modify the
        value to reflect the next unassigned index after each
        retrieval operation. After a manager retrieves a value the
        agent will determine through its local policy when this
        index value will be made available for reuse."
   ::= { mplsLsrObjects 9 }

mplsXCIndexNextEntry  OBJECT-TYPE
   SYNTAX        MplsXCIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the next available
        mplsXcIndex for a specific Label Manager entity.
        This MIB table is indexed by the PRVT-LMGR entity Index."

   INDEX   { prvtlmgrLsrEntityLsrIndex }
      ::= { mplsXCIndexNextTable 1 }

MplsXCIndexNextEntry ::= SEQUENCE {
      mplsXCIndexNext                   Integer32
    }

mplsXCIndexNext OBJECT-TYPE
   SYNTAX        Integer32 (0..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains the next available value to
        be used for mplsXCIndex when creating entries in
        the mplsXCTable. A special value of the zero length
        string indicates that no more new entries can be created
        in the relevant table.  Agents not allowing managers
        to create entries in this table MUST set this value
        to the zero length string."
   ::= { mplsXCIndexNextEntry 2 }

-- Cross-connect table.

mplsXCTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsXCEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies information for switching
        between LSP segments.  It supports point-to-point,
        point-to-multipoint and multipoint-to-point
        connections.  mplsLabelStackTable specifies the
        label stack information for a cross-connect LSR and
        is referred to from mplsXCTable."
   ::= { mplsLsrObjects 10 }

mplsXCEntry  OBJECT-TYPE
   SYNTAX        MplsXCEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "A row in this table represents one cross-connect
        entry.  It is indexed by the following objects:

        - cross-connect index mplsXCIndex that uniquely
          identifies a group of cross-connect entries

        - in-segment index, mplsXCInSegmentIndex

        - out-segment index, mplsXCOutSegmentIndex.

       LSPs originating at this LSR:
        These are represented by using the special
        value of mplsXCInSegmentIndex set to the
        value 0. In this case the mplsXCOutSegmentIndex
        MUST not the value 0.

       LSPs terminating at this LSR:
       These are represented by using the special value
        mplsXCOutSegmentIndex set to the value 0.

        An entry can be created by a network administrator
        or by an SNMP agent as instructed by an MPLS
        signaling protocol.

        PRIVATE EXTENSION. This MIB table is also
        indexed by the PRVT-LMGR product index."
   INDEX  { prvtlmgrLsrEntityLsrIndex, 
            mplsXCIndex,
            mplsXCInSegmentIndex,
            mplsXCOutSegmentIndex }

      ::= { mplsXCTable 1 }

MplsXCEntry ::= SEQUENCE {
      mplsXCIndex                  MplsIndexType,
      mplsXCInSegmentIndex         MplsIndexType,
      mplsXCOutSegmentIndex        MplsIndexType,
      mplsXCLspId                 MplsLSPID,
      mplsXCLabelStackIndex        MplsIndexType,
      mplsXCOwner                 MplsOwner,
      mplsXCRowStatus             RowStatus,
      mplsXCStorageType           StorageType,
      mplsXCAdminStatus           INTEGER,
      mplsXCOperStatus            INTEGER,
      mplsXCUserData              OCTET STRING
   }

mplsXCIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Primary index for the conceptual row identifying a
        group of cross-connect segments.

        The value 0 is an invalid index."
   ::= { mplsXCEntry 2 }

mplsXCInSegmentIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Incoming label index.

        If this object is set to the value 0, this indicates
        a special case outlined in the table's description above.

        In this case no corresponding mplsInSegmentEntry
        shall exist."
   ::= { mplsXCEntry 3 }

mplsXCOutSegmentIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Index of out-segment for LSPs not terminating on
        this LSR if not set to the value 0.  If the segment
        identified by this entry is terminating, then this
        object MUST be set to the value 0 to indicate
        that no corresponding mplsOutSegmentEntry shall exist."
   ::= { mplsXCEntry 4 }

mplsXCLspId OBJECT-TYPE
   SYNTAX        MplsLSPID
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This value identifies the label switched path that
        this cross-connect entry belongs to. This object
        cannot be modified if mplsXCRowStatus is active(1)
        except for this object."
   ::= { mplsXCEntry 5 }

mplsXCLabelStackIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Primary index into mplsLabelStackTable identifying a
        stack of labels to be pushed beneath the top label.
        Note that the top label identified by the out-
        segment ensures that all the components of a
        multipoint-to-point connection have the same
        outgoing label.  A value of 0 indicates that no
        labels are to be stacked beneath the top label.
        This object cannot be modified if mplsXCRowStatus is
        active(1)."
   ::= { mplsXCEntry 6 }

mplsXCOwner OBJECT-TYPE
   SYNTAX    MplsOwner
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "Denotes the entity that created and is responsible
        for managing this cross-connect."
   ::= { mplsXCEntry 7 }

mplsXCRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row.
        When a row in this table has a row in the active(1)
        state, no objects in this row except this object
        and the mplsXCStorageType can be modified. "
   ::= { mplsXCEntry 8 }

mplsXCStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable indicates the storage type for this
        object. The agent MUST ensure that the associated in
        and out segments also have the same StorageType value
        and are restored consistently upon system restart.
        This value SHOULD be set to permanent(4) if created
        as a result of a static LSP configuration.

        Conceptual rows having the value 'permanent'
        need not allow write-access to any columnar
        objects in the row."
   DEFVAL        { volatile }
   ::= { mplsXCEntry 9 }

mplsXCAdminStatus OBJECT-TYPE
   SYNTAX   INTEGER {
                up(1),     -- ready to pass packets
                down(2),
                testing(3) -- in some test mode
                }
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The desired operational status of this segment."
   DEFVAL { up }
   ::= { mplsXCEntry 10 }

mplsXCOperStatus OBJECT-TYPE
   SYNTAX   INTEGER {
         up(1),            -- ready to pass packets
         down(2),
         testing(3),       -- in some test mode
         unknown(4),       -- status cannot be determined
                           -- for some reason.
         dormant(5),
         notPresent(6),    -- some component is missing
         lowerLayerDown(7) -- down due to the state of
                           -- lower layer interfaces
      }
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The actual operational status of this cross-connect."
   ::= { mplsXCEntry 11 }

mplsXCUserData OBJECT-TYPE
   SYNTAX        OCTET STRING (SIZE (0..16))
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "User defined information for this cross-connect. This
        information will be passed over the LSI on the
        ATG_LSI_CONNECT_LSP_XC request from Label Manager as
        xc_user_data. Note that if any user data is specified here, its
        length must not be greater than the xc_user_data_size that was
        specified on the ATG_LSI_REGISTER response to Label Manager."
   ::= { mplsXCEntry 12 }

-- End of mplsXCTable


-- Label stack table.

-- Private EXTENSION.  The mplsLabelStackIndexNext object is
-- implemented as a row in a table to allow for multiple instances of
-- PRVT-LMGR entities within a managed node.

mplsLabelStackIndexNextTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsLabelStackIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains the next appropriate value to be used
        for mplsLabelStackIndex when creating entries in the
        mplsLabelStackTable. If the number of unassigned entries is
        exhausted, this object will take on the value of 0. To obtain
        the mplsLabelStackIndex value for a new entry, the manager
        must first issue a management protocol retrieval operation to
        obtain the current value of this object. The agent should
        modify the value to reflect the next unassigned index after
        each retrieval operation. After a manager retrieves a value
        the agent will determine through its local policy when this
        index value will be made available for reuse."
   ::= { mplsLsrObjects 11 }

mplsLabelStackIndexNextEntry  OBJECT-TYPE
   SYNTAX        MplsLabelStackIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the next available
        mplsLabelStackIndex for a specific Label Manager entity.
        This MIB table is indexed by the PRVT-LMGR entity Index."

   INDEX   { prvtlmgrLsrEntityLsrIndex }
      ::= { mplsLabelStackIndexNextTable 1 }

MplsLabelStackIndexNextEntry ::= SEQUENCE {
      mplsLabelStackIndexNext              Integer32
    }

mplsLabelStackIndexNext  OBJECT-TYPE
   SYNTAX        Integer32 (0..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "This object contains the next available value to
        be used for mplsLabelStackIndex when creating entries
        in the mplsLabelStackTable.
        The special value 0 indicates that no more new
        entries can be created in the relevant table.  Agents
        not allowing managers to create entries in this table
        MUST set this value to 0."
::= { mplsLabelStackIndexNextEntry 2 }

mplsLabelStackTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsLabelStackEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the label stack to be pushed
        onto a packet, beneath the top label.  Entries into
        this table are referred to from mplsXCTable.  An entry in
        this table represents one label which is to be pushed onto
        an outgoing packet, beneath the top label. An entry can be
        created by a network administrator or by an SNMP agent as
        instructed by an MPLS signaling protocol."
   ::= { mplsLsrObjects 13 }

mplsLabelStackEntry OBJECT-TYPE
   SYNTAX        MplsLabelStackEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents one label which is
        to be pushed onto an outgoing packet, beneath the
        top label.  An entry can be created by a network
        administrator or by an SNMP agent as instructed by
        an MPLS signaling protocol.

        PRIVATE EXTENSION. This MIB table is also
        indexed by the PRVT-LMGR product index."
   INDEX         { prvtlmgrLsrEntityLsrIndex, 
                    mplsLabelStackIndex,
                    mplsLabelStackLabelIndex }
      ::= { mplsLabelStackTable 1 }

MplsLabelStackEntry ::= SEQUENCE {
      mplsLabelStackIndex             MplsIndexType,
      mplsLabelStackLabelIndex        Unsigned32,
      mplsLabelStackLabel             MplsLabel,
      mplsLabelStackLabelPtr          RowPointer,
      mplsLabelStackRowStatus         RowStatus,
      mplsLabelStackStorageType       StorageType
   }

mplsLabelStackIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Primary index for this row identifying a stack of
        labels to be pushed on an outgoing packet, beneath
        the top label.

        An index of 0 MUST not be used."
   ::= { mplsLabelStackEntry 2 }

mplsLabelStackLabelIndex OBJECT-TYPE
   SYNTAX        Unsigned32 (1..2147483647)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Secondary index for this row identifying one label
        of the stack.  Note that an entry with a smaller
        mplsLabelStackLabelIndex would refer to a label
        higher up the label stack and would be popped at a
        downstream LSR before a label represented by a
        higher mplsLabelStackLabelIndex at a downstream
        LSR."
   ::= { mplsLabelStackEntry 3 }

mplsLabelStackLabel OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The label to pushed."
   ::= { mplsLabelStackEntry 4 }

mplsLabelStackLabelPtr OBJECT-TYPE
   SYNTAX        RowPointer
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "If the label for this segment cannot be represented
        fully within the mplsLabelStackLabel object,
        this object MUST point to the first accessible
        column of a conceptual row in an external table containing
        the label.  In this case, the mplsLabelStackLabel
        object SHOULD be set to 0 and ignored. This object
        MUST be set to zeroDotZero otherwise.

        In the this implementation, the object points at an entry in
        the gmplsLabelTable.  Configuration of static LSPs using big
        labels is not currently supported by PRVT-LMGR, and so the
        gmplsLabelTable and this object are read-only."
   DEFVAL { zeroDotZero }
   ::= { mplsLabelStackEntry 5 }

mplsLabelStackRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row.
        When a row in this table has a row in the active(1)
        state, no objects in this row except this object
        and the mplsLabelStackStorageType can be modified."
   ::= { mplsLabelStackEntry 6 }

mplsLabelStackStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "This variable indicates the storage type for this
        object. This object cannot be modified if
        mplsLabelStackRowStatus is active(1).
        No objects are required to be writable for
        rows in this table with this object set to
        permanent(4).

        The agent MUST ensure that all related entries
        in this table retain the same value for this
        object.  Agents MUST ensure that the storage type
        for all entries related to a particular mplsXCEntry
        retain the same value for this object as the
        mplsXCEntry's StorageType."
   DEFVAL { volatile }
   ::= { mplsLabelStackEntry 7 }

-- End of mplsLabelStackTable

-- Traffic Parameter table.

-- Private EXTENSION.  The mplsTrafficParamIndexNext object is
-- implemented as a row in a table to allow for multiple instances of
-- PRVT-LMGR entities within a managed node.

mplsTrafficParamIndexNextTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsTrafficParamIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table contains the next appropriate value to be used for
        mplsTrafficParamIndex when creating entries in the
        mplsTrafficParamTable. If the number of unassigned entries is
        exhausted, this object will take on the value of 0. To obtain
        the mplsTrafficParamIndex value for a new entry, the manager
        must first issue a management protocol retrieval operation to
        obtain the current value of this object. The agent should
        modify the value to reflect the next unassigned index after
        each retrieval operation. After a manager retrieves a value
        the agent will determine through its local policy when this
        index value will be made available for reuse."
   ::= { mplsLsrObjects 16 }

mplsTrafficParamIndexNextEntry  OBJECT-TYPE
   SYNTAX        MplsTrafficParamIndexNextEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the next available
        mplsTrafficParamIndex for a specific Label Manager entity.
        This MIB table is indexed by the PRVT-LMGR entity Index."

   INDEX   { prvtlmgrLsrEntityLsrIndex }
      ::= { mplsTrafficParamIndexNextTable 1 }

MplsTrafficParamIndexNextEntry ::= SEQUENCE {
      mplsTrafficParamIndexNext              Integer32
    }

mplsTrafficParamIndexNext OBJECT-TYPE
   SYNTAX        Integer32 (0..2147483647)
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The next available index value for the
        mplsTrafficParamTable."
   ::= { mplsTrafficParamIndexNextEntry 2 }

mplsTrafficParamTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsTrafficParamEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the Traffic Parameter objects
        for in and out-segments.  An entry in this table
        represents the TrafficParam objects for one or more
        in or out segments. A single entry can be pointed to
        by multiple segments indicating resource sharing."
   ::= { mplsLsrObjects 17 }

mplsTrafficParamEntry OBJECT-TYPE
   SYNTAX        MplsTrafficParamEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents the TrafficParam
        objects for one or more in or out segments.  A
        single entry can be pointed to by multiple segments
        indicating resource sharing.

        PRIVATE EXTENSION. This MIB table is also
        indexed by the PRVT-LMGR product index."
   INDEX         { prvtlmgrLsrEntityLsrIndex, mplsTrafficParamIndex }
      ::= { mplsTrafficParamTable 1 }

MplsTrafficParamEntry ::= SEQUENCE {
      mplsTrafficParamIndex           Integer32,
      mplsTrafficParamMaxRate         MplsBitRate,
      mplsTrafficParamMeanRate        MplsBitRate,
      mplsTrafficParamMaxBurstSize    MplsBurstSize,
      mplsTrafficParamRowStatus       RowStatus,
      mplsTrafficParamStorageType     StorageType
   }

mplsTrafficParamIndex OBJECT-TYPE
   SYNTAX        Integer32 (1..2147483647)
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "Uniquely identifies this row of the table.  Note
        that zero represents an invalid index."
   ::= { mplsTrafficParamEntry 2 }

mplsTrafficParamMaxRate OBJECT-TYPE
   SYNTAX        MplsBitRate
   UNITS         "kilobits per second"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Maximum rate in kilobits/second."
   ::= { mplsTrafficParamEntry 3 }

mplsTrafficParamMeanRate OBJECT-TYPE
   SYNTAX        MplsBitRate
   UNITS         "kilobits per second"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Mean rate in kilobits/second."
   ::= { mplsTrafficParamEntry 4 }

mplsTrafficParamMaxBurstSize OBJECT-TYPE
   SYNTAX        MplsBurstSize
   UNITS         "bytes"
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "Maximum burst size in bytes."
   ::= { mplsTrafficParamEntry 5 }

mplsTrafficParamRowStatus OBJECT-TYPE
   SYNTAX        RowStatus
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "For creating, modifying, and deleting this row."
   ::= { mplsTrafficParamEntry 6 }

mplsTrafficParamStorageType OBJECT-TYPE
   SYNTAX        StorageType
   MAX-ACCESS    read-create
   STATUS        current
   DESCRIPTION
       "The storage type for this object."
   DEFVAL { volatile }
   ::= { mplsTrafficParamEntry 7 }

-- End of mplsTrafficParamTable

-- Begin mplsInSegmentMapTable

mplsInSegmentMapTable OBJECT-TYPE
   SYNTAX        SEQUENCE OF MplsInSegmentMapEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This table specifies the mapping from the
        mplsInSegmentIndex to the corresponding
        mplsInSegmentInterface and mplsInSegmentLabel
        objects. The purpose of this table is to
        provide the manager with an alternative
        means by which to locate in-segments."
   ::= { mplsLsrObjects 14 }

mplsInSegmentMapEntry OBJECT-TYPE
   SYNTAX        MplsInSegmentMapEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "An entry in this table represents one interface
        and incoming label pair.

        In cases where the label cannot fit into the
        mplsInSegmentLabel object, the mplsInSegmentLabelPtr
        will indicate this by being set to the first accessible
        column in the appropriate extension table's row,
        and the mplsInSegmentLabel SHOULD be set to 0.
        In all other cases when the label is
        represented within the mplsInSegmentLabel object, the
        mplsInSegmentLabelPtr MUST be 0.0.

        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 { prvtlmgrLsrEntityLsrIndex,
           mplsInSegmentMapInterface,
           mplsInSegmentMapLabel,
           mplsInSegmentMapLabelPtrIndex }
   ::= { mplsInSegmentMapTable 1 }

MplsInSegmentMapEntry ::= SEQUENCE {
      mplsInSegmentMapInterface      InterfaceIndexOrZero,
      mplsInSegmentMapLabel          MplsLabel,
      mplsInSegmentMapLabelPtrIndex  RowPointer,
      mplsInSegmentMapIndex          MplsIndexType
   }

mplsInSegmentMapInterface OBJECT-TYPE
   SYNTAX        InterfaceIndexOrZero
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This index contains the same value as the
        mplsInSegmentIndex in the mplsInSegmentTable."
   ::= { mplsInSegmentMapEntry 2 }

mplsInSegmentMapLabel OBJECT-TYPE
   SYNTAX        MplsLabel
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This index contains the same value as the
        mplsInSegmentLabel in the mplsInSegmentTable."
   ::= { mplsInSegmentMapEntry 3 }

mplsInSegmentMapLabelPtrIndex OBJECT-TYPE
   SYNTAX        RowPointer
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "This index contains the same value as the
        mplsInSegmentLabelPtr.

        If the label for the InSegment cannot be represented
        fully within the mplsInSegmentLabel object,
        this index MUST point to the first accessible
        column of a conceptual row in an external table containing
        the label.  In this case, the mplsInSegmentTopLabel
        object SHOULD be set to 0 and ignored. This object MUST
        be set to zeroDotZero otherwise.

        In the this implementation, the object points at an entry in
        the gmplsLabelTable."
   ::= { mplsInSegmentMapEntry 4 }

mplsInSegmentMapIndex OBJECT-TYPE
   SYNTAX        MplsIndexType
   MAX-ACCESS    read-only
   STATUS        current
   DESCRIPTION
       "The mplsInSegmentIndex that corresponds
        to the mplsInSegmentInterface and
        mplsInSegmentLabel, or the mplsInSegmentInterface
        and mplsInSegmentLabelPtr, if applicable.

        The value 0 MUST not be returned."
   ::= { mplsInSegmentMapEntry 5 }

-- End mplsInSegmentMapTable

-- Notification Configuration

-- mplsNotificationEnableTable

prvtlmgrTrapEnableTable  OBJECT-TYPE
   SYNTAX        SEQUENCE OF PrvtlmgrTrapEnableEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "The mplsXCTrapEnable Scalar allows a manager to
        enable or disable TRAPs."
   ::= { mplsLsrObjects 15 }

prvtlmgrTrapEnableEntry  OBJECT-TYPE
   SYNTAX        PrvtlmgrTrapEnableEntry
   MAX-ACCESS    not-accessible
   STATUS        current
   DESCRIPTION
       "The mplsXCTrapEnable Scalar allows a manager to
        enable or disable TRAPs.

        PRIVATE EXTENSION. This MIB table is also
        indexed by the LMGR product Index."
   INDEX         { prvtlmgrLsrEntityLsrIndex }
   ::= { prvtlmgrTrapEnableTable 1 }

PrvtlmgrTrapEnableEntry ::= SEQUENCE {
  mplsXCTrapEnable                  TruthValue
}

mplsXCTrapEnable 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 mplsXCUp and mplsXCDown
        notifications; otherwise these notifications are not
        emitted."
   REFERENCE
       "See also RFC3413 for explanation that
        notifications are under the ultimate control of the
        MIB module in this document."
   DEFVAL { false }
   ::= { prvtlmgrTrapEnableEntry 2 }

-- End of prvtlmgrTrapEnableTable

-- Cross-connect.

mplsXCUp NOTIFICATION-TYPE
   OBJECTS     { mplsXCOperStatus,  -- start of range
                 mplsXCOperStatus   -- end of range
   }
   STATUS      current
   DESCRIPTION
       "This notification is generated when the
        mplsXCOperStatus object for one or more contiguous
        entries in mplsXCTable are about to enter the up(1)
        state from some other state. The included values of
        mplsXCOperStatus MUST both be set equal to this
        new state (i.e: up(1)).  The two instances of
        mplsXCOperStatus 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 cross-connects
        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 cross-connect entry, then
        the instance identifier (and values) of the two
        mplsXCOperStatus objects MUST be the identical."
   ::= { mplsLsrNotifyPrefix 1 }

mplsXCDown NOTIFICATION-TYPE
   OBJECTS     {
      mplsXCOperStatus,  -- start of range
      mplsXCOperStatus   -- end of range
   }
   STATUS      current
   DESCRIPTION
       "This notification is generated when the
        mplsXCOperStatus object for one or more contiguous
        entries in mplsXCTable are about to enter the
        down(2) state from some other state. The included values
        of mplsXCOperStatus MUST both be set equal to this
        down(2) state.  The two instances of mplsXCOperStatus
        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 cross-connects
        have transitioned into the down(2) 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 cross-connect entry, then
        the instance identifier (and values) of the two
        mplsXCOperStatus objects MUST be identical."
   ::= { mplsLsrNotifyPrefix 2 }

-- End of notifications.

-- Module compliance.

mplsLsrGroups
   OBJECT IDENTIFIER ::= { mplsLsrConformance 1 }

mplsLsrCompliances
   OBJECT IDENTIFIER ::= { mplsLsrConformance 2 }

-- Compliance requirement for fully compliant implementations.

mplsLsrModuleFullCompliance MODULE-COMPLIANCE
  STATUS  current
   DESCRIPTION "Compliance statement for agents that provide full
                support for MPLS-LSR-MIB. Such devices can
                then be monitored and also be configured using
                this MIB module."

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

   MODULE -- This module.
   MANDATORY-GROUPS {
         mplsInterfaceGroup,
         mplsInSegmentGroup,
         mplsOutSegmentGroup,
         mplsXCGroup,
         mplsLsrTrafficParamGroup
   }

   GROUP        mplsLabelStackGroup
   DESCRIPTION "This group is only mandatory for LSRs that wish to
                support the modification of LSP label stacks.
               "

   GROUP        mplsLsrNotificationGroup
   DESCRIPTION "This group is only mandatory for those implementations
                which can efficiently implement the notifications
                contained in this group."

   OBJECT       mplsInSegmentRowStatus
   SYNTAX       RowStatus { active(1), notInService(2) }
   WRITE-SYNTAX RowStatus { active(1), notInService(2),
                            createAndGo(4), destroy(6)
                          }
   DESCRIPTION "Support for createAndWait and notReady is
                not required."

   OBJECT       mplsOutSegmentNextHopAddrType
   SYNTAX       InetAddressType { unknown(0), ipv4(1), ipv6(2) }
   DESCRIPTION "Only unknown(0), ipv4(1) and ipv6(2) support
                is required."

   OBJECT       mplsOutSegmentNextHopAddr
   SYNTAX       InetAddress (SIZE(0|4|16))
   DESCRIPTION "An implementation is only required to support
                unknown(0), ipv4(1) and ipv6(2) sizes."

   OBJECT       mplsOutSegmentRowStatus
   SYNTAX       RowStatus { active(1), notInService(2) }
   WRITE-SYNTAX RowStatus { active(1), notInService(2),
                            createAndGo(4), destroy(6)
                          }
   DESCRIPTION "Support for createAndWait and notReady is not
                required."

   OBJECT       mplsLabelStackRowStatus
   SYNTAX       RowStatus { active(1), notInService(2) }
   WRITE-SYNTAX RowStatus { active(1), notInService(2),
                            createAndGo(4), destroy(6)
                          }
   DESCRIPTION "Support for createAndWait and notReady is not
                required."

   OBJECT       mplsXCRowStatus
   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."

   ::= { mplsLsrCompliances 1 }

-- Compliance requirement for read-only implementations.

mplsLsrModuleReadOnlyCompliance MODULE-COMPLIANCE
   STATUS       current
   DESCRIPTION "Compliance requirement for implementations that only
                provide read-only support for MPLS-LSR-MIB. Such
                devices can then be monitored but cannot be configured
                using this MIB module.
               "

   MODULE IF-MIB -- The interfaces Group MIB, RFC 2863
   MANDATORY-GROUPS {
      ifGeneralInformationGroup,
      ifCounterDiscontinuityGroup
   }

   MODULE -- This module
   MANDATORY-GROUPS {
         mplsInterfaceGroup,
         mplsInSegmentGroup,
         mplsOutSegmentGroup,
         mplsXCGroup,
         mplsLsrTrafficParamGroup
     }

   GROUP        mplsLabelStackGroup
   DESCRIPTION "This group is only mandatory for LSRs that wish to
                support the modification of LSP label stacks.
               "

  GROUP mplsLsrNotificationGroup
   DESCRIPTION "This group is only mandatory for those implementations
                which can efficiently implement the notifications
                contained in this group.
               "

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

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

   OBJECT       mplsInSegmentNPop
   SYNTAX       Integer32 (1..1)
   MIN-ACCESS   read-only
   DESCRIPTION "Write access is not required.  This object
                SHOULD be set to 1 if it is read-only.
               "

   OBJECT       mplsInSegmentAddrFamily
   MIN-ACCESS   read-only
   DESCRIPTION "Write access is not required.  A value of other(0)
                should be supported because there may be cases where
                the agent may not know about or support any address
                types.
               "

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

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

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

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

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

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

   OBJECT       mplsOutSegmentNextHopAddrType
   SYNTAX       InetAddressType { unknown(0), ipv4(1), ipv6(2) }
   MIN-ACCESS   read-only
   DESCRIPTION "Write access is not required.  Only unknown(0),
                ipv4(1) and ipv6(2) support is required.
               "

   OBJECT       mplsOutSegmentNextHopAddr
   SYNTAX       InetAddress (SIZE(0|4|16))
   MIN-ACCESS   read-only
   DESCRIPTION "Write access is not required. An implementation is
                only required to support unknown(0), ipv4(1) and
                ipv6(2) sizes."

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

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

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

   OBJECT       mplsXCAdminStatus
   MIN-ACCESS   read-only
   DESCRIPTION "Read only support is required."

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

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

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

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

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

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

   ::= { mplsLsrCompliances 2 }

-- Units of conformance.

mplsInterfaceGroup OBJECT-GROUP
   OBJECTS {
      mplsInterfaceLabelMinIn,
      mplsInterfaceLabelMaxIn,
      mplsInterfaceLabelMinOut,
      mplsInterfaceLabelMaxOut,
      mplsInterfaceTotalBandwidth,
      mplsInterfaceAvailableBandwidth,
      mplsInterfaceLabelParticipType,
      mplsInterfaceSwitchMngedLblSpace
   }
    STATUS  current
    DESCRIPTION
          "Collection of objects needed for MPLS interface
           and interface performance information."
   ::= { mplsLsrGroups 1 }

mplsInSegmentGroup  OBJECT-GROUP
   OBJECTS {
      mplsInSegmentIndexNext,
      mplsInSegmentInterface,
      mplsInSegmentLabel,
      mplsInSegmentLabelPtr,
      mplsInSegmentNPop,
      mplsInSegmentAddrFamily,
      mplsInSegmentXCIndex,
      mplsInSegmentOwner,
      mplsInSegmentRowStatus,
      mplsInSegmentStorageType,
      mplsInSegmentTrafficParamPtr,
      mplsInSegmentMapIndex
   }
    STATUS  current
    DESCRIPTION
          "Collection of objects needed to implement an in-
           segment."
   ::= { mplsLsrGroups 2 }

mplsOutSegmentGroup  OBJECT-GROUP
   OBJECTS {
      mplsOutSegmentIndexNext,
      mplsOutSegmentInterface,
      mplsOutSegmentPushTopLabel,
      mplsOutSegmentTopLabel,
      mplsOutSegmentTopLabelPtr,
      mplsOutSegmentNextHopAddrType,
      mplsOutSegmentNextHopAddr,
      mplsOutSegmentXCIndex,
      mplsOutSegmentOwner,
      mplsOutSegmentRowStatus,
      mplsOutSegmentStorageType,
      mplsOutSegmentTrafficParamPtr
   }
    STATUS  current
    DESCRIPTION
          "Collection of objects needed to implement an out-
           segment."
    ::= { mplsLsrGroups 3 }

mplsXCGroup  OBJECT-GROUP
   OBJECTS {
      mplsXCIndexNext,
      mplsXCLspId,
      mplsXCLabelStackIndex,
      mplsXCOwner,
      mplsXCStorageType,
      mplsXCAdminStatus,
      mplsXCOperStatus,
      mplsXCRowStatus,
      mplsXCTrapEnable,
      mplsXCUserData
   }
    STATUS  current
    DESCRIPTION
          "Collection of objects needed to implement a
           cross-connect entry."
   ::= { mplsLsrGroups 4 }

mplsLabelStackGroup OBJECT-GROUP
   OBJECTS {
      mplsLabelStackLabel,
      mplsLabelStackLabelPtr,
      mplsLabelStackRowStatus,
      mplsLabelStackStorageType,
      mplsLabelStackIndexNext
   }
    STATUS  current
    DESCRIPTION
          "Objects needed to support label stacking."
      ::= { mplsLsrGroups 8 }

mplsLsrNotificationGroup NOTIFICATION-GROUP
   NOTIFICATIONS {
      mplsXCUp,
      mplsXCDown
   }
    STATUS  current
    DESCRIPTION
          "Set of notifications implemented in this
           module."
   ::= { mplsLsrGroups 9 }

mplsLsrTrafficParamGroup OBJECT-GROUP
   OBJECTS {
      mplsTrafficParamIndexNext,
      mplsTrafficParamMaxRate,
      mplsTrafficParamMeanRate,
      mplsTrafficParamMaxBurstSize,
      mplsTrafficParamRowStatus,
      mplsTrafficParamStorageType
    }
    STATUS  current
    DESCRIPTION
           "Optional Traffic Param table objects."
    ::= { mplsLsrGroups 10 }


-- End of MPLS-LSR-MIB
END
