LUM-COMMLINK-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32, IpAddress
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DateAndTime
        FROM SNMPv2-TC
    lumModules, lumCommlinkMIB
        FROM LUM-REG
    SignalStatusWithNA, FaultStatusWithNA, MgmtNameString,
    Unsigned32WithNA
        FROM LUM-TC;

lumCommlinkMIBModule MODULE-IDENTITY
    LAST-UPDATED
        "201806200000Z" -- June 20th 2018
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.com"
    DESCRIPTION
        "This module describes a communication link.

        The tables contained in this MIB are:

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

        (2) Aggregated Link.

        (3) Component Link.

"
    REVISION
        "201806200000Z" -- June 20th 2018
    DESCRIPTION
        "The initial revision of this module."
    ::= { lumModules 72 }


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

lumCommlinkConfs OBJECT IDENTIFIER ::= { lumCommlinkMIB 1 }
lumCommlinkGroups OBJECT IDENTIFIER ::= { lumCommlinkConfs 1 }
lumCommlinkCompl OBJECT IDENTIFIER ::= { lumCommlinkConfs 2 }


-- ----------------------------------------------------
-- Root for objects in the COMMLINK MIB
-- ----------------------------------------------------

lumCommlinkMIBObjects OBJECT IDENTIFIER ::= { lumCommlinkMIB 2 }


-- ----------------------------------------------------
-- This MIB contains the following groups:
-- ----------------------------------------------------
commlinkGeneral OBJECT IDENTIFIER ::= { lumCommlinkMIBObjects 1 }
commlinkAggregatedLinkList OBJECT IDENTIFIER ::= { lumCommlinkMIBObjects 2 }
commlinkComponentLinkList OBJECT IDENTIFIER ::= { lumCommlinkMIBObjects 3 }


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

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

"
    ::= { commlinkGeneral 1 }

commlinkGeneralStateLastChangeTime 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.

"
    ::= { commlinkGeneral 2 }

commlinkGeneralCommlinkAggregatedLinkTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Size of table.

"
    ::= { commlinkGeneral 3 }

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

"
    ::= { commlinkGeneral 4 }

commlinkGeneralCommlinkAggregatedLinkStateLastChangeTime 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.

"
    ::= { commlinkGeneral 5 }

commlinkGeneralCommlinkComponentLinkTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Size of table.

"
    ::= { commlinkGeneral 6 }

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

"
    ::= { commlinkGeneral 7 }

commlinkGeneralCommlinkComponentLinkStateLastChangeTime 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.

"
    ::= { commlinkGeneral 8 }

-- ----------------------------------------------------
-- Commlink AggregatedLink group
-- ----------------------------------------------------

commlinkAggregatedLinkTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CommlinkAggregatedLinkEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The commlink aggregated link group contains information
         and configuration for the commlink aggregated link."

    ::= { commlinkAggregatedLinkList 1 }

commlinkAggregatedLinkEntry OBJECT-TYPE
    SYNTAX      CommlinkAggregatedLinkEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the commlink aggregated link list.

"
    INDEX { commlinkAggregatedLinkIndex }
    ::= { commlinkAggregatedLinkTable 1 }

CommlinkAggregatedLinkEntry ::=
    SEQUENCE {
        commlinkAggregatedLinkIndex                   Unsigned32,
        commlinkAggregatedLinkUId                     Unsigned32,
        commlinkAggregatedLinkName                    MgmtNameString,
        commlinkAggregatedLinkState                   INTEGER,
        commlinkAggregatedLinkStatus                  INTEGER,
        commlinkAggregatedLinkLocalAutoIP             IpAddress,
        commlinkAggregatedLinkPeerAutoIP              IpAddress,
        commlinkAggregatedLinkFailure				  FaultStatusWithNA }	


commlinkAggregatedLinkIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An index assigned to each entry.

"
    ::= { commlinkAggregatedLinkEntry 1 }

commlinkAggregatedLinkUId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A unique identifier assigned to each entry.

"
    ::= { commlinkAggregatedLinkEntry 2 }

commlinkAggregatedLinkName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the name of the aggregated link,
        in the format: 'aggrLink:subrack:slot:idNumber'.

"
    ::= { commlinkAggregatedLinkEntry 3 }

commlinkAggregatedLinkState OBJECT-TYPE
    SYNTAX      INTEGER {
        assigned    (1),
        unassigned  (2)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the state of the aggregated link association.

        assigned: Associated with atleast one component link.

        unassigned: Not associated with any component link.

"
    DEFVAL { 2 }
    ::= { commlinkAggregatedLinkEntry 4 }

commlinkAggregatedLinkStatus OBJECT-TYPE
    SYNTAX      INTEGER {
        up    (1),
        down  (2)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the status of the aggregated link.

        up: at least one associated component link status is up.

        down: none of the associated component links are up or IP level failure.

"
    DEFVAL { 2 }
    ::= { commlinkAggregatedLinkEntry 5 }

commlinkAggregatedLinkLocalAutoIP OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Denotes the local IP for the aggregated link.

"
    ::= { commlinkAggregatedLinkEntry 6 }

commlinkAggregatedLinkPeerAutoIP OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Denotes the Peer IP for the aggregated link.

"
    ::= { commlinkAggregatedLinkEntry 7 }

commlinkAggregatedLinkFailure OBJECT-TYPE
    SYNTAX      FaultStatusWithNA
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The IP connectivity lost with peers due to below reasons:

        	1. all component links are unavailable.
        	2. IP addresses could not be negotiated.

        alarm: Aggregated link failure.

        ok: Peer communication successfull.

"
    ::= { commlinkAggregatedLinkEntry 8 }


-- ----------------------------------------------------
-- Commlink ComponentLink group
-- ----------------------------------------------------

commlinkComponentLinkTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CommlinkComponentLinkEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The commlink component link group contains information
         and configuration for the commlink component link."

    ::= { commlinkComponentLinkList 1 }

commlinkComponentLinkEntry OBJECT-TYPE
    SYNTAX      CommlinkComponentLinkEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the commlink component link list.

"
    INDEX { commlinkComponentLinkIndex }
    ::= { commlinkComponentLinkTable 1 }

CommlinkComponentLinkEntry ::=
    SEQUENCE {
        commlinkComponentLinkIndex                   Unsigned32,
        commlinkComponentLinkUId                     Unsigned32,
        commlinkComponentLinkName                    MgmtNameString,
        commlinkComponentLinkGccSelection            INTEGER,
        commlinkComponentLinkStatus					 INTEGER,
        commlinkComponentLinkAdminStatus			 INTEGER,
        commlinkComponentLinkHostId		             MgmtNameString,
        commlinkComponentLinkExpectedHostId			 MgmtNameString,
		commlinkComponentLinkDiscoveredHostId		 MgmtNameString,
        commlinkComponentLinkAggrLinkId		         MgmtNameString,
        commlinkComponentLinkHostLinkId              MgmtNameString,
        commlinkComponentLinkExpectedPeerLinkId		 MgmtNameString,
        commlinkComponentLinkDiscoveredPeerLinkId	 MgmtNameString,
		commlinkComponentLinkPeerNotResponding	     FaultStatusWithNA,	
		commlinkComponentLinkPeerHostIdMismatch	     FaultStatusWithNA,	
		commlinkComponentLinkPeerLinkIdMismatch	     FaultStatusWithNA	}

commlinkComponentLinkIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An index assigned to each entry.

"
    ::= { commlinkComponentLinkEntry 1 }

commlinkComponentLinkUId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An unique identifier assigned to each entry.

"
    ::= { commlinkComponentLinkEntry 2 }

commlinkComponentLinkName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the name of the component link,
        in the format: 'compLink:subrack:slot:txPort-rxPort'.

"
    ::= { commlinkComponentLinkEntry 3 }

commlinkComponentLinkGccSelection OBJECT-TYPE
    SYNTAX      INTEGER {
        gcc1 (1),
        gcc2 (2),
        undefined (2147483647)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Denotes the gcc channel used for this link.

"
    DEFVAL { 2147483647 }
    ::= { commlinkComponentLinkEntry 4 }

commlinkComponentLinkStatus OBJECT-TYPE
    SYNTAX      INTEGER {
        up    (1),
        down  (2)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the status of the component link:

        Up: When discovered peer link id matches the expected peer link id
            and discovered host id matches the expected host id.

        Down: Mismatch in expected and discovered peer link ids / host ids.

"
    DEFVAL { 2 }
    ::= { commlinkComponentLinkEntry 5 }


commlinkComponentLinkAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
        up    	(1),
        service (2),
        down    (3)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The admin state of the Component Link.

        Up:	The interface will be activated when available. Alarms are not suppressed.

        Service: The component link interface is activated however alarms are suppressed.
                 Intended for use during service or re-configuration.
                 When service is concluded admin status should be set to 'up' again.

        Down: Component link interface is de-activated

"
    DEFVAL { 1 }
    ::= { commlinkComponentLinkEntry 6 }

commlinkComponentLinkAggrLinkId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes a reference to the corresponding aggregated link.

"
    ::= { commlinkComponentLinkEntry 7 }

commlinkComponentLinkHostId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes a unique local host identifier for this link.
		 Derived from IKE peer local identity.
		
"
    ::= { commlinkComponentLinkEntry 8 }

commlinkComponentLinkExpectedHostId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the expected unique peer host identifier for the component link.
         Same as IKE peer expected peer identity.

"
    ::= { commlinkComponentLinkEntry 9 }

commlinkComponentLinkDiscoveredHostId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the actual peer host identifier discovered by the system.

"
    ::= { commlinkComponentLinkEntry 10 }

commlinkComponentLinkHostLinkId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the associated Dataplane link local unique identifier

"
    ::= { commlinkComponentLinkEntry 11 }

commlinkComponentLinkExpectedPeerLinkId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the associated Dataplane link peer unique identifier.
         Same as dataplane encryption expected peer identity.

"
    ::= { commlinkComponentLinkEntry 13 }

commlinkComponentLinkDiscoveredPeerLinkId OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Denotes the actual peer link identifier discovered by the system.

"
    ::= { commlinkComponentLinkEntry 14 }

commlinkComponentLinkPeerNotResponding OBJECT-TYPE
    SYNTAX      FaultStatusWithNA
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Link peer entity is not responding to PDUs.

        alarm: link peer not responding.

        ok: peer communication successfull.

"
    ::= { commlinkComponentLinkEntry 15 }


commlinkComponentLinkPeerHostIdMismatch OBJECT-TYPE
    SYNTAX      FaultStatusWithNA
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
    	"Mismatch in expected and discovered host identity.

        alarm: peer host identity mismatch.

        ok: valid host identity.

"
    ::= { commlinkComponentLinkEntry 16 }


commlinkComponentLinkPeerLinkIdMismatch OBJECT-TYPE
    SYNTAX      FaultStatusWithNA
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Mismatch in expected and discovered link identity.

        alarm: peer link identity mismatch.

        ok: valid peer link identity.

"
    ::= { commlinkComponentLinkEntry 17 }


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


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


commlinkGeneralGroupV1 OBJECT-GROUP
    OBJECTS {
        commlinkGeneralConfigLastChangeTime,
        commlinkGeneralStateLastChangeTime,
        commlinkGeneralCommlinkAggregatedLinkTableSize,
        commlinkGeneralCommlinkAggregatedLinkConfigLastChangeTime,
        commlinkGeneralCommlinkAggregatedLinkStateLastChangeTime,
        commlinkGeneralCommlinkComponentLinkTableSize,
        commlinkGeneralCommlinkComponentLinkConfigLastChangeTime,
        commlinkGeneralCommlinkComponentLinkStateLastChangeTime }
    STATUS      current
    DESCRIPTION
        "The general objects."
    ::= { lumCommlinkGroups 1 }


commlinkAggregatedLinkGroupV1 OBJECT-GROUP
    OBJECTS {
        commlinkAggregatedLinkIndex,
        commlinkAggregatedLinkUId,
        commlinkAggregatedLinkName,
        commlinkAggregatedLinkState,
        commlinkAggregatedLinkStatus,
        commlinkAggregatedLinkLocalAutoIP,
        commlinkAggregatedLinkPeerAutoIP,
		commlinkAggregatedLinkFailure}


    STATUS      current
    DESCRIPTION
        "The commlink aggregated link objects."
    ::= { lumCommlinkGroups 2 }

commlinkComponentLinkGroupV1 OBJECT-GROUP
    OBJECTS {
        commlinkComponentLinkIndex,
        commlinkComponentLinkUId,
        commlinkComponentLinkName,
		commlinkComponentLinkGccSelection,
		commlinkComponentLinkStatus,
		commlinkComponentLinkAdminStatus,
		commlinkComponentLinkHostId,
		commlinkComponentLinkExpectedHostId,
		commlinkComponentLinkDiscoveredHostId,
        commlinkComponentLinkAggrLinkId,
        commlinkComponentLinkHostLinkId,
        commlinkComponentLinkExpectedPeerLinkId,
        commlinkComponentLinkDiscoveredPeerLinkId,
		commlinkComponentLinkPeerNotResponding,
        commlinkComponentLinkPeerHostIdMismatch,
        commlinkComponentLinkPeerLinkIdMismatch}


    STATUS      current
    DESCRIPTION
        "The commlink component link objects."
    ::= { lumCommlinkGroups 3 }

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

lumCommlinkComplV1 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the commlink MIB. (R31.0)"
    MODULE
        MANDATORY-GROUPS {
            commlinkGeneralGroupV1,
            commlinkAggregatedLinkGroupV1,
            commlinkComponentLinkGroupV1 }
    ::= { lumCommlinkCompl 1 }


END

