LUM-MCLAG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION, DisplayString, DateAndTime
        FROM SNMPv2-TC
    lumModules, lumMclagMIB
        FROM LUM-REG
    MgmtNameString, FaultStatus
        FROM LUM-TC;

lumMclagMIBModule MODULE-IDENTITY
    LAST-UPDATED
        "201706150000Z" -- June 15th 2017
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.com"
    DESCRIPTION
        "The MIB module for management of MCLAG.

        The tables contained in this MIB are:

        (1) The General group contains some general attributes as time stamps
            and tables sizes.

        (2) The MCLAG table contains information and configuration for all
            interfaces available for MCLAG.

"
    REVISION
        "201706150000Z" -- June 15th 2017
    DESCRIPTION
        "Changes made for release r29.0:
         - Changed ORGANIZATION and CONTACT-INFO
        Changes made for release r30.0:
         - Added emxp440 board"
    REVISION
        "201501140000Z" -- Jan 2015
    DESCRIPTION
        "Added emxp240iie board."
    REVISION
        "201411050000Z" -- Nov 2014
    DESCRIPTION
        "The initial revision of this module."
    ::= { lumModules 62 }


-- ----------------------------------------------------
-- Conformance area, containing groups and compliance
-- specifications.
-- ----------------------------------------------------

lumMclagConfs OBJECT IDENTIFIER ::= { lumMclagMIB 1 }
lumMclagGroups OBJECT IDENTIFIER ::= { lumMclagConfs 1 }
lumMclagCompl OBJECT IDENTIFIER ::= { lumMclagConfs 2 }


-- ----------------------------------------------------
-- Root for objects in the MCLAG MIB
-- ----------------------------------------------------

lumMclagMIBObjects OBJECT IDENTIFIER ::= { lumMclagMIB 2 }


-- ----------------------------------------------------
-- This MIB contains the following groups:
-- ----------------------------------------------------

mclagGeneral OBJECT IDENTIFIER ::= { lumMclagMIBObjects 1 }
mclagList OBJECT IDENTIFIER ::= { lumMclagMIBObjects 2 }

-- ----------------------------------------------------
-- Textual Conventions
-- ----------------------------------------------------

MclagLabel ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "MCLAG label with actual label range 16-1048575, 0-15 is reserved."
    SYNTAX Unsigned32 (0..1048575)

MclagIdentifier ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS current
    DESCRIPTION
        "MCLAG identifier type, 16-bit integer."
    SYNTAX Unsigned32 (0..65535)


-- ----------------------------------------------------
-- General group
-- ----------------------------------------------------

mclagGeneralLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the configuration of the MIB was
        last changed.
"
    ::= { mclagGeneral 1 }

mclagGeneralStateLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the state of the MIB was last
        changed.
"
    ::= { mclagGeneral 2 }

mclagGeneralMclagTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Size of mclag table
"
    ::= { mclagGeneral 3 }

-- ----------------------------------------------------
-- Rg table
-- ----------------------------------------------------

mclagTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF MclagEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The MC-LAG RG list."
    ::= { mclagList 1 }

mclagEntry OBJECT-TYPE
    SYNTAX      MclagEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the MC-LAG RG list.
"
    INDEX { mclagIndex }
    ::= { mclagTable 1 }

MclagEntry ::=
SEQUENCE {
        mclagIndex                        Unsigned32,
        mclagName                         MgmtNameString,
        mclagDescr                        DisplayString,
        mclagNodeId                       Unsigned32,
        mclagRgId                         Unsigned32,
        mclagSynchronizationStatus        INTEGER,
        mclagControlledLag                DisplayString,
        mclagLagAdminSystemPrio           Unsigned32,
        mclagLagOperSystemPrio            Unsigned32,
        mclagLagAdminPortPrio             Unsigned32,
        mclagLagOperPortPrio              Unsigned32,
        mclagLagStatus                    INTEGER,
        mclagProtectionStateFailure       FaultStatus,
        mclagProtectionStateDegraded      FaultStatus,
        mclagInternalReference            Unsigned32 }


mclagIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An arbitrary index assigned to each entry.
"
    ::= { mclagEntry 1 }

mclagName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The management name of the MC-LAG, for example
        'mcLag:1:2:TM-LAG' (mcLag:[subrack]:[slot]:[LAG identifier])

"
    ::= { mclagEntry 2 }

mclagDescr OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "User configurable label.

"
    DEFVAL { "" }
    ::= { mclagEntry 3 }

mclagNodeId OBJECT-TYPE
    SYNTAX      Unsigned32 (0..7)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Used to ensure that the LACP Port Numbers are unique across all PE:s in a Redundancy Group.

"
    DEFVAL { 0 }
    ::= { mclagEntry 4 }

mclagRgId OBJECT-TYPE
    SYNTAX      Unsigned32 (1..8)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Redundancy Group ID of the ICCP channel being used.

"
    DEFVAL { 1 }
    ::= { mclagEntry 5 }

mclagSynchronizationStatus OBJECT-TYPE
    SYNTAX     INTEGER {
           unSynchronized (1),
           synchronized (2),
           undefined (3)
	}
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
       "synchronized - The MC-LAG has received the configuration TLVs from its peer.
        unSynchronized - The MC-LAG has not yet received the configuration TLVs from its peer or the information in
        the received TLVs prevents the MC-LAG to synchronize.

"
    DEFVAL { undefined }
    ::= { mclagEntry 6 }

mclagControlledLag OBJECT-TYPE
    SYNTAX      DisplayString
   MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The identifier of the controlled LAG.
"
    DEFVAL { "" }
    ::= { mclagEntry 7 }

mclagLagAdminSystemPrio OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Administrative System Priority is used in the initial negotiation with the other PE in the Redundancy Group.
        It is necessary for all PE:s in a Redundancy Group to agree upon the System MAC Address and System Priority values to be used ubiquitously.
        65535 is reserved for internal use.

        Note! A change of the Administrative System Priority may cause a traffic disturbance.

        This attribute can be written via SNMP.

"
    DEFVAL { 0 }
    ::= { mclagEntry 8 }

mclagLagOperSystemPrio OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Operational System Priority is the result of the initial negotiation. Every PE use the values for System MAC Address and System Priority that are supplied
        by the PE with the numerically lowest value (among RG members) of System Aggregation Priority.

        This attribute can be written via SNMP.

"
    DEFVAL { 0 }
    ::= { mclagEntry 9 }

mclagLagAdminPortPrio OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Administrative Port Priority is used on all LACP ports in the controlled LAG.

        Note! A change of the Administrative Port Priority may cause a traffic disturbance.

        This attribute can be written via SNMP.

"
    DEFVAL { 0 }
    ::= { mclagEntry 10 }

mclagLagOperPortPrio OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Operational Port Priority is used on all LACP ports in the controlled LAG.

        This attribute can be written via SNMP.

"
    DEFVAL { 0 }
    ::= { mclagEntry 11 }

mclagLagStatus OBJECT-TYPE
    SYNTAX     INTEGER {
        standby (1),
        active (2) }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "active - The LACP selection logic of the controlled LAG has determined that a local port has a higher Port Aggregation Priority.
        standby - The LACP selection logic of the controlled LAG has determined that a remote port has a higher Port Aggregation Priority.

"
    DEFVAL { standby }
    ::= { mclagEntry 12 }

 mclagProtectionStateFailure OBJECT-TYPE
    SYNTAX      FaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "alarm - The ICCP RG does not have the Communication Failure alarm set and both the local and remote LAG has the LAG failure alarm active.

         ok - One of the members in the RG is active or the ICCP RG has the Communication Failure alarm set, preventing the information
         transfer necessary to set the Protection State Failure alarm.

"
    ::= { mclagEntry 13 }


mclagProtectionStateDegraded OBJECT-TYPE
    SYNTAX      FaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "alarm - The ICCP RG has the Communication Failure alarm active, or either the local or remote LAG has the LAG failure alarm active.

         ok - The ICCP RG does not have the Communication Failure alarm set and no LAG in the RG has the LAG failure alarm active.

"
    ::= { mclagEntry 14 }

mclagInternalReference OBJECT-TYPE
    SYNTAX      Unsigned32 (0..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "For internal use only.

"
   DEFVAL { 0 }
   ::= { mclagEntry 15 }


-- ----------------------------------------------------
-- Notifications
-- ----------------------------------------------------


-- ----------------------------------------------------
-- Object and event groups
-- ----------------------------------------------------

mclagGeneralGroupV1 OBJECT-GROUP
    OBJECTS {
        mclagGeneralLastChangeTime,
        mclagGeneralStateLastChangeTime,
        mclagGeneralMclagTableSize}
    STATUS      current
    DESCRIPTION
        "The general objects."
    ::= { lumMclagGroups 1 }

mclagGroupV1 OBJECT-GROUP
    OBJECTS {
        mclagIndex,
        mclagName,
        mclagDescr,
        mclagNodeId,
        mclagRgId,
        mclagSynchronizationStatus,
        mclagControlledLag,
        mclagLagAdminSystemPrio,
        mclagLagOperSystemPrio,
        mclagLagAdminPortPrio,
        mclagLagOperPortPrio,
        mclagLagStatus,
        mclagProtectionStateFailure,
        mclagProtectionStateDegraded,
        mclagInternalReference }
    STATUS      current
    DESCRIPTION
        "The MCLAG Node objects (R24.0)."
    ::= { lumMclagGroups 2 }

-- ----------------------------------------------------
-- Compliance
-- ----------------------------------------------------

lumMclagBasicComplV1 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the MC-LAG MIB. (R24.0)"
    MODULE
        MANDATORY-GROUPS {
        mclagGroupV1 }
    ::= { lumMclagCompl 1 }

END


