LUM-IFMC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DateAndTime, DisplayString, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    lumModules, lumIfMcMIB
        FROM LUM-REG
    MgmtNameString, SubrackNumber, SlotNumber, PortNumber, FaultStatus, BoardOrInterfaceOperStatus, BoardOrInterfaceAdminStatus
        FROM LUM-TC;

lumIfMcMIBModule MODULE-IDENTITY
    LAST-UPDATED
        "201807090000Z" -- July 9th 2018
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.com"
    DESCRIPTION
        "The MIB module for management of flexible multi-fiber connection objects.

        The tables contained in this MIB are:

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

        (2) The Multi-fiber port table configuration module

"
    REVISION
        "201807090000Z" -- July 9th 2018
    DESCRIPTION
        "Changes made for release r31.1:
         - added attribute values for the codsf24mpo10104 filter"
    REVISION
        "201804130000Z" -- April 13th 2018
    DESCRIPTION
        "Changes made for release r31.1:
         - added the hdea1600 board"
    REVISION
        "201709010000Z" -- September 1st 2017
    DESCRIPTION
        "Changes made for release r30.0:
         - added the emxp440 board"
    REVISION
        "201706150000Z" -- June 15th 2017
    DESCRIPTION
        "Changes made for release r29.0:
         - Changed ORGANIZATION and CONTACT-INFO"
    REVISION
        "201503150000Z" -- March 15th 2015
    DESCRIPTION
        "The initial revision of this module."
    ::= { lumModules 64 }


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

lumIfMcConfs OBJECT IDENTIFIER ::= { lumIfMcMIB 1 }
lumIfMcGroups OBJECT IDENTIFIER ::= { lumIfMcConfs 1 }
lumIfMcCompl OBJECT IDENTIFIER ::= { lumIfMcConfs 2 }


-- ----------------------------------------------------
-- Root for objects in the IFMC MIB
-- ----------------------------------------------------

lumIfMcMIBObjects OBJECT IDENTIFIER ::= { lumIfMcMIB 2 }


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

ifMcGeneral OBJECT IDENTIFIER ::= { lumIfMcMIBObjects 1 }
ifMcPortList OBJECT IDENTIFIER ::= { lumIfMcMIBObjects 2 }


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


IfMcExpectedType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Device type connected to peer end of a MPO port.

        ethernet100gLanSR10 - Connected to a 100G SR10.
        ethernet12x10gLan - Connected to a 12x10G device.
        frontplane12x10g - Connected to a 12x10G PT-Fabric I/O Unit.
        frontplane100g - Connected to a 100G PT-Fabric I/O Unit."

    SYNTAX INTEGER {
        ethernet100gLanSR10 (1),
        ethernet12x10gLan (2),
        frontplane12x10g (3),
        frontplane100g (4),
        filter10x10g (5),
        notApplicable (6)
    }

IfMcMpoCableType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Cable type used to connect to the MPO port.

        straight - Bundled cable.
        completeFanout - 10 individual fibers.
        fanout2x5 - 5x10G in each one."

    SYNTAX INTEGER {
        straight (1),
        completeFanout (2),
        fanout2x5 (3),
        notApplicable(4)
    }


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

ifMcGeneralConfigLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the configuration of the MIB was
        last changed.

"
    ::= { ifMcGeneral 1 }

ifMcGeneralStateLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the state and/or configuration of
	the MIB was last changed.

"
    ::= { ifMcGeneral 2 }

ifMcGeneralIfMcPortTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Size of static Mc If port table.

"
    ::= { ifMcGeneral 3 }

ifMcGeneralIfMcPortConfigLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the configuration of the table was
        last changed.

"
    ::= { ifMcGeneral 4 }

ifMcGeneralIfMcPortStateLastChangeTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time when the state and/or configuration of
	    the table was last changed.

"
    ::= { ifMcGeneral 5 }


-- ----------------------------------------------------
-- If Multi-fiber Port table
-- ----------------------------------------------------

ifMcPortTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfMcPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The multi-fiber connection (ifMcPort) group contains information and
	 configuration for peripheral configuration"

    ::= { ifMcPortList 1 }

ifMcPortEntry OBJECT-TYPE
    SYNTAX      IfMcPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the ifMcPort list.

"
    INDEX { ifMcPortIndex }
    ::= { ifMcPortTable 1 }

IfMcPortEntry ::=
    SEQUENCE {
        ifMcPortName                         MgmtNameString,
        ifMcPortIndex                        Unsigned32,
        ifMcPortDescr                        DisplayString,
        ifMcPortExpectedType                 IfMcExpectedType,
        ifMcPortIdx                          Integer32,
        ifMcPortSubrack                      SubrackNumber,
        ifMcPortSlot                         SlotNumber,
        ifMcPortIfNo                         PortNumber,
        ifMcPortLossOfSignal                 FaultStatus,
        ifMcPortAdminStatus                  BoardOrInterfaceAdminStatus,
        ifMcPortOperStatus                   BoardOrInterfaceOperStatus,
        ifMcPortTrxClass                     DisplayString,
        ifMcPortReceivedPowerLow             FaultStatus,
        ifMcPortMpoCableType                 IfMcMpoCableType
        }


ifMcPortName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The management name of the object.

"
    ::= { ifMcPortEntry 1 }

ifMcPortIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An index assigned to each entry.

"
    ::= { ifMcPortEntry 2 }

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

"
    DEFVAL { "" }
    ::= { ifMcPortEntry 3 }

ifMcPortExpectedType OBJECT-TYPE
    SYNTAX      IfMcExpectedType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Device type connected to peer end of a MPO port.

        ethernet100gLanSR10 - Connected to a 100G SR10.
        ethernet12x10gLan - Connected to a 12x10G device.
        frontplane12x10g - Connected to a 12x10G PT-Fabric I/O Unit.
        frontplane100g - Connected to a 100G PT-Fabric I/O Unit.

"
    DEFVAL { ethernet100gLanSR10  }
    ::= { ifMcPortEntry 4 }


ifMcPortIdx OBJECT-TYPE
    SYNTAX      Integer32   (-1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Internal object reference

"
    DEFVAL { -1  }
    ::= { ifMcPortEntry 5 }

ifMcPortSubrack OBJECT-TYPE
    SYNTAX      SubrackNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The subrack of the physical port that this interface is bound to.

"
    ::= { ifMcPortEntry 6 }

ifMcPortSlot OBJECT-TYPE
    SYNTAX      SlotNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The slot of the physical port that this interface is bound to.

"
    ::= { ifMcPortEntry 7 }

ifMcPortIfNo OBJECT-TYPE
    SYNTAX      PortNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The physical interface number.

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


ifMcPortLossOfSignal OBJECT-TYPE
    SYNTAX      FaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Loss of signal.
        Applicable for all signal formats.

        A(ctivation): Active loss of signal HW
        indication.

        D(e-activation): Inactive loss of signal HW
        indication.

"
    ::= { ifMcPortEntry 9 }

ifMcPortAdminStatus OBJECT-TYPE
    SYNTAX      BoardOrInterfaceAdminStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The administrative state for the interface.

        down - The interface is de-activated.

        service - The interface is activated but alarms are
        suppressed. Intended for use during service or
        re-configuration. When service is concluded
        adminStatus should be set to 'up' again.

        up - The interface will be activated when
        available. Alarms are not suppressed.

        This attribute can be written via SNMP.
"
    DEFVAL { up }
    ::= { ifMcPortEntry 10 }

ifMcPortOperStatus OBJECT-TYPE
    SYNTAX      BoardOrInterfaceOperStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The operational state for the interface.

        notPresent - The physical resources are not
        available.

        service - The alarms are suppressed.

        up - The interface is operational.

"
    DEFVAL { notPresent }
    ::= { ifMcPortEntry 11 }


ifMcPortTrxClass OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "String that describes the transceiver class.
"
    DEFVAL { "" }
    ::= { ifMcPortEntry 12 }

ifMcPortReceivedPowerLow OBJECT-TYPE
    SYNTAX      FaultStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Received power level low threshold exceeded.
        Applicable for all signal formats.

        A: The received power level is below the
        associated threshold.

        D: The received power level is 0.5 dB above the
        threshold.

"
    ::= { ifMcPortEntry 13 }

ifMcPortMpoCableType OBJECT-TYPE
    SYNTAX      IfMcMpoCableType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Type of MPO cable used.
"
    DEFVAL { notApplicable }
    ::= { ifMcPortEntry 14 }

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


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

ifMcGeneralGroupV1 OBJECT-GROUP
    OBJECTS {
        ifMcGeneralConfigLastChangeTime,
        ifMcGeneralStateLastChangeTime,
        ifMcGeneralIfMcPortTableSize,
        ifMcGeneralIfMcPortConfigLastChangeTime,
        ifMcGeneralIfMcPortStateLastChangeTime}
    STATUS      current
    DESCRIPTION
        "The general objects."
    ::= { lumIfMcGroups 1 }

ifMcPortGroupV1 OBJECT-GROUP
    OBJECTS {
        ifMcPortName,
        ifMcPortIndex,
        ifMcPortDescr,
        ifMcPortExpectedType,
        ifMcPortIdx,
        ifMcPortSubrack,
        ifMcPortSlot,
        ifMcPortIfNo
        }
    STATUS      deprecated
    DESCRIPTION
        "The ifMcPort objects (R26.0)."
    ::= { lumIfMcGroups 2 }


ifMcPortGroupV2 OBJECT-GROUP
    OBJECTS {
        ifMcPortName,
        ifMcPortIndex,
        ifMcPortDescr,
        ifMcPortExpectedType,
        ifMcPortIdx,
        ifMcPortSubrack,
        ifMcPortSlot,
        ifMcPortIfNo,
        ifMcPortLossOfSignal
        }
    STATUS      deprecated
    DESCRIPTION
        "The ifMcPort objects (R27.0)."
    ::= { lumIfMcGroups 3 }


ifMcPortGroupV3 OBJECT-GROUP
    OBJECTS {
        ifMcPortName,
        ifMcPortIndex,
        ifMcPortDescr,
        ifMcPortExpectedType,
        ifMcPortIdx,
        ifMcPortSubrack,
        ifMcPortSlot,
        ifMcPortIfNo,
        ifMcPortLossOfSignal,
        ifMcPortAdminStatus,
        ifMcPortOperStatus,
        ifMcPortTrxClass
        }
    STATUS      deprecated
    DESCRIPTION
        "The ifMcPort objects (R28.0)."
    ::= { lumIfMcGroups 4 }

 ifMcPortGroupV4 OBJECT-GROUP
     OBJECTS {
         ifMcPortName,
         ifMcPortIndex,
         ifMcPortDescr,
         ifMcPortExpectedType,
         ifMcPortIdx,
         ifMcPortSubrack,
         ifMcPortSlot,
         ifMcPortIfNo,
         ifMcPortLossOfSignal,
         ifMcPortAdminStatus,
         ifMcPortOperStatus,
         ifMcPortTrxClass,
         ifMcPortReceivedPowerLow
         }
     STATUS      deprecated
     DESCRIPTION
         "The ifMcPort objects (R29.0)."
     ::= { lumIfMcGroups 5 }

 ifMcPortGroupV5 OBJECT-GROUP
     OBJECTS {
         ifMcPortName,
         ifMcPortIndex,
         ifMcPortDescr,
         ifMcPortExpectedType,
         ifMcPortIdx,
         ifMcPortSubrack,
         ifMcPortSlot,
         ifMcPortIfNo,
         ifMcPortLossOfSignal,
         ifMcPortAdminStatus,
         ifMcPortOperStatus,
         ifMcPortTrxClass,
         ifMcPortReceivedPowerLow,
         ifMcPortMpoCableType
         }
     STATUS      current
     DESCRIPTION
         "The ifMcPort objects (R31.1)."
     ::= { lumIfMcGroups 6 }

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

lumIfMcComplV1 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the ifMc MIB. (R26.0)"
    MODULE
        MANDATORY-GROUPS {
            ifMcGeneralGroupV1,
            ifMcPortGroupV1 }
    ::= { lumIfMcCompl 1 }

lumIfMcComplV2 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the ifMc MIB. (R27.0)"
    MODULE
        MANDATORY-GROUPS {
            ifMcGeneralGroupV1,
            ifMcPortGroupV2 }
    ::= { lumIfMcCompl 2 }

lumIfMcComplV3 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the ifMc MIB. (R28.0)"
    MODULE
        MANDATORY-GROUPS {
            ifMcGeneralGroupV1,
            ifMcPortGroupV3 }
    ::= { lumIfMcCompl 3 }

lumIfMcComplV4 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the ifMc MIB. (R29.0)"
    MODULE
        MANDATORY-GROUPS {
            ifMcGeneralGroupV1,
            ifMcPortGroupV4 }
    ::= { lumIfMcCompl 4 }

lumIfMcComplV5 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the ifMc MIB. (R31.1)"
    MODULE
        MANDATORY-GROUPS {
            ifMcGeneralGroupV1,
            ifMcPortGroupV5 }
    ::= { lumIfMcCompl 5 }
END

