MPLS-LDP-FRAME-RELAY-STD-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE,
    MODULE-IDENTITY,
    Unsigned32
        FROM SNMPv2-SMI                                 --  [RFC2578]
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF                                --  [RFC2580]

    RowStatus,
    StorageType

        FROM SNMPv2-TC                                  --  [RFC2579]

    DLCI
        FROM FRAME-RELAY-DTE-MIB                        --  [RFC2115]

    InterfaceIndexOrZero
        FROM IF-MIB                                     --  [RFC2020]

    mplsStdMIB
        FROM MPLS-TC-STD-MIB                            --  [RFC3811]

    mplsLdpEntityLdpId,
    mplsLdpEntityIndex,
    mplsLdpPeerLdpId
        FROM MPLS-LDP-STD-MIB                           --  [RFC3813]
    ;

mplsLdpFrameRelayStdMIB MODULE-IDENTITY
    LAST-UPDATED "200406030000Z"  -- June 3, 2004
    ORGANIZATION "Multiprotocol Label Switching (mpls)
                  Working Group"
    CONTACT-INFO
        "Joan Cucchiara (jcucchiara@mindspring.com)
         Marconi Communications, Inc.

         Hans Sjostrand (hans@ipunplugged.com)
         ipUnplugged

         James V. Luciani (james_luciani@mindspring.com)
         Marconi Communications, Inc.

         Working Group Chairs:
         George Swallow,   email: swallow@cisco.com
         Loa Andersson,    email: loa@pi.se

         MPLS Working Group, email: mpls@uu.net
    "
    DESCRIPTION
        "Copyright (C) The Internet Society (year). The
        initial version of this MIB module was published
        in RFC 3815. For full legal notices see the RFC
        itself or see:
        http://www.ietf.org/copyrights/ianamib.html

        This MIB contains managed object definitions for
        configuring and monitoring the Multiprotocol Label
        Switching (MPLS), Label Distribution Protocol (LDP),
        utilizing Frame Relay as the Layer 2 media."

    REVISION "200406030000Z"  -- June 6, 2004
    DESCRIPTION
        "Initial version published as part of RFC 3815."
    ::= { mplsStdMIB 6 }

--****************************************************************

mplsLdpFrameRelayObjects  OBJECT IDENTIFIER
                           ::= { mplsLdpFrameRelayStdMIB 1 }

mplsLdpFrameRelayConformance   OBJECT IDENTIFIER
                           ::= { mplsLdpFrameRelayStdMIB 2 }

--****************************************************************
-- MPLS LDP Frame Relay Objects
--****************************************************************

--
-- Ldp Entity Objects for Frame Relay
--

mplsLdpEntityFrameRelayObjects OBJECT IDENTIFIER ::=
                                    { mplsLdpFrameRelayObjects 1 }

mplsLdpEntityFrameRelayTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLdpEntityFrameRelayEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains Frame Relay specific
        information which could be used in the
        'Optional Parameters' and other Frame Relay
        specific information.

        This table 'sparse augments' the mplsLdpEntityTable
        when Frame Relay is the Layer 2 medium."
    ::= { mplsLdpEntityFrameRelayObjects 1 }

mplsLdpEntityFrameRelayEntry OBJECT-TYPE
    SYNTAX      MplsLdpEntityFrameRelayEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table represents the Frame Relay
        optional parameters associated with the LDP entity."
    INDEX       {  mplsLdpEntityLdpId,
                   mplsLdpEntityIndex

                }
    ::= { mplsLdpEntityFrameRelayTable 1 }

MplsLdpEntityFrameRelayEntry ::= SEQUENCE {
    mplsLdpEntityFrameRelayIfIndexOrZero        InterfaceIndexOrZero,
    mplsLdpEntityFrameRelayMergeCap             INTEGER,
    mplsLdpEntityFrameRelayLRComponents         Unsigned32,
    mplsLdpEntityFrameRelayVcDirectionality     INTEGER,
    mplsLdpEntityFrameRelayStorageType          StorageType,
    mplsLdpEntityFrameRelayRowStatus            RowStatus
}

mplsLdpEntityFrameRelayIfIndexOrZero OBJECT-TYPE
    SYNTAX      InterfaceIndexOrZero
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "This value represents either the InterfaceIndex of
       the 'ifLayer' where the Frame Relay Labels 'owned' by this
       entry were created, or 0 (zero).  The value of zero
       means that the InterfaceIndex is not known.  For example,
       if the InterfaceIndex is created subsequent to the
       Frame Relay Label's creation, then it would not be known.
       However, if the InterfaceIndex is known, then it must
       be represented by this value.

       If an InterfaceIndex becomes known, then the
       network management entity (e.g., SNMP agent) responsible
       for this object MUST change the value from 0 (zero) to the
       value of the InterfaceIndex.  If an Frame Relay Label is
       being used in forwarding data, then the value of this
       object MUST be the InterfaceIndex."
    ::= { mplsLdpEntityFrameRelayEntry 1 }

mplsLdpEntityFrameRelayMergeCap OBJECT-TYPE
    SYNTAX      INTEGER {
                    notSupported(0),
                    supported(1)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This represents whether or not the Frame Relay merge
        capability is supported.  This is the EXACT value for the
        Frame Relay Session Parameter, field M (for Frame Relay
        Merge Capabilities).  The Frame Relay Session Parameter
        is an optional parameter in the Initialization Message.

        The description from rfc3036.txt is:
        'M, Frame Relay Merge Capabilities
           Specifies the merge capabilities of a Frame
           Relay switch.  The following values are
           supported in this version of the
           specification:

                  Value          Meaning

                    0            Merge not supported
                    1            Merge supported

           Non-merge and merge Frame Relay LSRs may
           freely interoperate.'

           Please refer to the following reference for a
           complete description of this feature."
     REFERENCE
        "RFC3036, LDP Specification, Section 3.5.3
        Initialization Message."
    ::= { mplsLdpEntityFrameRelayEntry 2 }

mplsLdpEntityFrameRelayLRComponents OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of Label Range Components in the Initialization
        message.  This also represents the number of entries
        in the mplsLdpEntityFrameRelayLRTable which correspond
        to this entry.

        This is the EXACT value for the Frame Relay Session
        Parameter, field N (for Number of label range
        components).  The Frame Relay Session Parameter
        is an optional parameter in the Initialization
        Message.

        The description from rfc3036.txt is:

        'N, Number of label range components
            Specifies the number of Frame Relay Label
            Range Components included in the TLV.'

         Please refer to the following reference for a
         complete description of this feature."
     REFERENCE
        "RFC3036, LDP Specification, Section 3.5.3

        Initialization Message."
    ::= { mplsLdpEntityFrameRelayEntry 3 }

mplsLdpEntityFrameRelayVcDirectionality OBJECT-TYPE
    SYNTAX      INTEGER {
                          bidirectional(0),
                          unidirection(1)
                        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "If the value of this object is 'bidirectional(0)', then
        the LSR supports the use of a given DLCI as a label for
        both directions independently.  If the value of
        this object is 'unidirectional(1)', then the LSR
        uses the given DLCI as a label in only one direction.

        This is the EXACT value for the Frame Relay Session
        Parameter, field D (for VC Directionality).  The
        Frame Relay Session Parameter is an optional
        parameter in the Initialization Message.

        The description from rfc3036.txt is:

        'D, VC Directionality
           A value of 0 specifies bidirectional VC capability,
           meaning the LSR can support the use of a given
           DLCI as a label for both link directions
           independently.  A value of 1 specifies
           unidirectional VC capability, meaning a given
           DLCI may appear in a label mapping for one
           direction on the link only.  When either or both
           of the peers specifies unidirectional VC
           capability, both LSRs use unidirectional VC
           label assignment for the link as follows.  The
           LSRs compare their LDP Identifiers as unsigned
           integers.  The LSR with the larger LDP
           Identifier may assign only odd-numbered DLCIs
           in the range as labels.  The system with the
           smaller LDP Identifier may assign only
           even-numbered DLCIs in the range as labels.'

           Please refer to the following reference for a
           complete description of this feature."
     REFERENCE
        "RFC3036, LDP Specification, Section 3.5.3
        Initialization Message."
    ::= { mplsLdpEntityFrameRelayEntry 4 }

mplsLdpEntityFrameRelayStorageType  OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type for this conceptual row.
        Conceptual rows having the value 'permanent(4)'
        need not allow write-access to any columnar
        objects in the row."
    DEFVAL { nonVolatile }
    ::= { mplsLdpEntityFrameRelayEntry 5 }

mplsLdpEntityFrameRelayRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this conceptual row.  All writable
         objects in this row may be modified at any time,
         however, as described in detail in the section
         entitled, 'Changing Values After Session
         Establishment', and again described in the
         DESCRIPTION clause of the
         mplsLdpEntityAdminStatus object,
         if a session has been initiated with a Peer,
         changing objects in this table will
         wreak havoc with the session and interrupt
         traffic.  To repeat again:
         the recommended procedure is to set the
         mplsLdpEntityAdminStatus to
         down, thereby explicitly causing a
         session to be torn down. Then,
         change objects in this entry, then set
         the mplsLdpEntityAdminStatus
         to enable which enables a new session
         to be initiated."
    ::= { mplsLdpEntityFrameRelayEntry 6 }

--
-- Frame Relay Label Range Components
--

mplsLdpEntityFrameRelayLRTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLdpEntityFrameRelayLREntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains information about the

        Optional Parameters for the Frame Relay Session
        in the LDP Initialization Message, specifically
        it contains information about the Frame Relay
        Label Range Components.

        If the value of the object
        'mplsLdpEntityOptionalParameters' contains the
        value of 'frameRelaySessionParameters(3)' then
        there must be at least one corresponding entry
        in this table."
    ::= { mplsLdpEntityFrameRelayObjects 2 }

mplsLdpEntityFrameRelayLREntry OBJECT-TYPE
    SYNTAX      MplsLdpEntityFrameRelayLREntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table represents the Frame Relay
        Label Range Component associated with the LDP entity."
    INDEX       {  mplsLdpEntityLdpId,
                   mplsLdpEntityIndex,
                   mplsLdpEntityFrameRelayLRMinDlci
                }
    ::= { mplsLdpEntityFrameRelayLRTable 1 }

MplsLdpEntityFrameRelayLREntry ::= SEQUENCE {
    mplsLdpEntityFrameRelayLRMinDlci              DLCI,
    mplsLdpEntityFrameRelayLRMaxDlci              DLCI,
    mplsLdpEntityFrameRelayLRLen                  INTEGER,
    mplsLdpEntityFrameRelayLRStorageType          StorageType,
    mplsLdpEntityFrameRelayLRRowStatus            RowStatus
}

mplsLdpEntityFrameRelayLRMinDlci OBJECT-TYPE
    SYNTAX      DLCI
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The lower bound which is supported.  This value
        should be the same as that in the Frame Relay Label
        Range Component's Minimum DLCI field.  The value
        of zero is valid for the minimum DLCI field of
        the label."
    REFERENCE
        "RFC3034, Use of Label Switching on Frame Relay
        Networks Specification."
    ::= { mplsLdpEntityFrameRelayLREntry 1 }

mplsLdpEntityFrameRelayLRMaxDlci OBJECT-TYPE
    SYNTAX      DLCI
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The upper bound which is supported.  This value
        should be the same as that in the Frame Relay Label
        Range Component's Maximum DLCI field."
    ::= { mplsLdpEntityFrameRelayLREntry 2 }

mplsLdpEntityFrameRelayLRLen OBJECT-TYPE
    SYNTAX      INTEGER {
                    tenDlciBits(0),
                    twentyThreeDlciBits(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object specifies the length of the DLCI bits.

        This is the EXACT value for the Len field of the
        Frame Relay Label Range Component.

        The description from rfc3036.txt is:

        'Len
            This field specifies the number of bits of the DLCI.
            The following values are supported:

                 Len    DLCI bits

                 0       10
                 2       23

            Len values 1 and 3 are reserved.'

         Please refer to the following reference for a complete
         description of this feature."
     REFERENCE
        "RFC3036, LDP Specification, Section 3.5.3
        Initialization Message."
    ::= { mplsLdpEntityFrameRelayLREntry 3 }

mplsLdpEntityFrameRelayLRStorageType  OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type for this conceptual row.
        Conceptual rows having the value 'permanent(4)'
        need not allow write-access to any columnar
        objects in the row."
    DEFVAL { nonVolatile }
    ::= { mplsLdpEntityFrameRelayLREntry 4 }

mplsLdpEntityFrameRelayLRRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this conceptual row.  All writable
         objects in this row may be modified at any time,
         however, as described in detail in the section
         entitled, 'Changing Values After Session
         Establishment', and again described in the
         DESCRIPTION clause of the
         mplsLdpEntityAdminStatus object,
         if a session has been initiated with a Peer,
         changing objects in this table will
         wreak havoc with the session and interrupt
         traffic.  To repeat again:
         the recommended procedure is to set the
         mplsLdpEntityAdminStatus to down, thereby
         explicitly causing a session to be torn down. Then,
         change objects in this entry, then set the
         mplsLdpEntityAdminStatus to enable which enables
         a new session to be initiated."
    ::= { mplsLdpEntityFrameRelayLREntry 5 }

--
-- MPLS LDP Frame Relay Session Information
--

mplsLdpFrameRelaySessionObjects  OBJECT IDENTIFIER ::=
                           { mplsLdpFrameRelayObjects  2 }

mplsLdpFrameRelaySessionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MplsLdpFrameRelaySessionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of Frame Relay label range intersections
        between the LDP Entities and LDP Peers.
        Each row represents a single label range intersection.

        NOTE:  this table cannot use the 'AUGMENTS'

        clause because there is not necessarily a one-to-one
        mapping between this table and the
        mplsLdpSessionTable."
    ::= { mplsLdpFrameRelaySessionObjects 1 }

mplsLdpFrameRelaySessionEntry OBJECT-TYPE
    SYNTAX      MplsLdpFrameRelaySessionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table represents information on a
        single label range intersection between an
        LDP Entity and LDP Peer.

        The information contained in a row is read-only."
    INDEX       { mplsLdpEntityLdpId,
                  mplsLdpEntityIndex,
                  mplsLdpPeerLdpId,
                  mplsLdpFrameRelaySessionMinDlci
                }
    ::= { mplsLdpFrameRelaySessionTable 1 }

MplsLdpFrameRelaySessionEntry ::= SEQUENCE {
    mplsLdpFrameRelaySessionMinDlci    DLCI,
    mplsLdpFrameRelaySessionMaxDlci    DLCI,
    mplsLdpFrameRelaySessionLen        INTEGER
}

mplsLdpFrameRelaySessionMinDlci OBJECT-TYPE
    SYNTAX      DLCI
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The lower bound of DLCIs which are supported.
        The value of zero is a valid value for the
        minimum DLCI field of the label."
    REFERENCE
        "RFC3034, Use of Label Switching on Frame Relay
        Networks Specification."
    ::= { mplsLdpFrameRelaySessionEntry 1 }

mplsLdpFrameRelaySessionMaxDlci OBJECT-TYPE
    SYNTAX      DLCI
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The upper bound of DLCIs which are supported."
    ::= { mplsLdpFrameRelaySessionEntry 2 }

mplsLdpFrameRelaySessionLen OBJECT-TYPE
    SYNTAX      INTEGER {
                    tenDlciBits(0),
                    twentyThreeDlciBits(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object specifies the DLCI bits."
    ::= { mplsLdpFrameRelaySessionEntry 3 }

--****************************************************************
-- Module Conformance Statement
--****************************************************************

mplsLdpFrameRelayGroups
    OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 1 }

mplsLdpFrameRelayCompliances
    OBJECT IDENTIFIER ::= { mplsLdpFrameRelayConformance 2 }

--
-- Full Compliance
--

mplsLdpFrameRelayModuleFullCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The Module is implemented with support for
        read-create and read-write.  In other words,
        both monitoring and configuration
        are available when using this MODULE-COMPLIANCE."
    MODULE -- this module
        MANDATORY-GROUPS    {
                               mplsLdpFrameRelayGroup
                            }

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

    OBJECT       mplsLdpEntityFrameRelayLRRowStatus
    SYNTAX       RowStatus { active(1) }
    WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
    DESCRIPTION
       "Support for createAndWait and notInService is not required."
    ::= { mplsLdpFrameRelayCompliances 1 }

--
-- Read-Only Compliance
--

mplsLdpFrameRelayModuleReadOnlyCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The Module is implemented with support for
        read-only.  In other words, only monitoring
        is available by implementing this MODULE-COMPLIANCE."
    MODULE -- this module
        MANDATORY-GROUPS    {
                               mplsLdpFrameRelayGroup
                            }

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

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

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

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

    OBJECT       mplsLdpEntityFrameRelayRowStatus
    SYNTAX       RowStatus { active(1) }
    MIN-ACCESS   read-only
    DESCRIPTION
       "Write access is not required, and active is the
       only status that needs to be supported."

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

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

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

    OBJECT       mplsLdpEntityFrameRelayLRRowStatus
    SYNTAX       RowStatus { active(1) }
    MIN-ACCESS   read-only
    DESCRIPTION
       "Write access is not required, and active is the
       only status that needs to be supported."
    ::= { mplsLdpFrameRelayCompliances 2 }

--
-- units of conformance
--

mplsLdpFrameRelayGroup OBJECT-GROUP
    OBJECTS {
    mplsLdpEntityFrameRelayIfIndexOrZero,
    mplsLdpEntityFrameRelayMergeCap,
    mplsLdpEntityFrameRelayLRComponents,
    mplsLdpEntityFrameRelayVcDirectionality,
    mplsLdpEntityFrameRelayStorageType,
    mplsLdpEntityFrameRelayRowStatus,
    mplsLdpEntityFrameRelayLRMaxDlci,
    mplsLdpEntityFrameRelayLRLen,
    mplsLdpEntityFrameRelayLRStorageType,
    mplsLdpEntityFrameRelayLRRowStatus,
    mplsLdpFrameRelaySessionMaxDlci,
    mplsLdpFrameRelaySessionLen
    }
    STATUS    current
    DESCRIPTION
        "Objects that apply to all MPLS LDP implementations
        using Frame Relay as the Layer 2."
    ::= { mplsLdpFrameRelayGroups 1 }

END
