LUM-MEM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Integer32
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DisplayString, DateAndTime
        FROM SNMPv2-TC
    lumModules, lumMemMIB
        FROM LUM-REG
    MgmtNameString
        FROM LUM-TC;

lumMemMIBModule MODULE-IDENTITY
    LAST-UPDATED
        "201706150000Z" -- June 15th 2017
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.se"
    DESCRIPTION
        "Info about memory usage for different processes.

"
    REVISION
        "201706150000Z" -- June 15th 2017
    DESCRIPTION
        "Changes made for release r29.0:
         - Changed ORGANIZATION and CONTACT-INFO"
    REVISION
        "200301090000Z" -- Jan 9 2003
    DESCRIPTION
        "Added memControlMaxReportFiles."
    REVISION
        "200211260000Z" -- Nov 26 2002
    DESCRIPTION
        "The initial revision of this module."
    ::= { lumModules 22 }


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

lumMemConfs OBJECT IDENTIFIER ::= { lumMemMIB 1 }
lumMemGroups OBJECT IDENTIFIER ::= { lumMemConfs 1 }
lumMemCompl OBJECT IDENTIFIER ::= { lumMemConfs 2 }


-- ----------------------------------------------------
-- Root for objects in the mem MIB
-- ----------------------------------------------------

lumMemMIBObjects OBJECT IDENTIFIER ::= { lumMemMIB 2 }


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

memGeneral OBJECT IDENTIFIER ::= { lumMemMIBObjects 1 }
memProcessList OBJECT IDENTIFIER ::= { lumMemMIBObjects 2 }
memBoardList OBJECT IDENTIFIER ::= { lumMemMIBObjects 3 }
memControl OBJECT IDENTIFIER ::= { lumMemMIBObjects 4 }


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

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

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

"
    ::= { memGeneral 1 }

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

"
    ::= { memGeneral 2 }


-- ----------------------------------------------------
-- Process information
-- ----------------------------------------------------

memProcessTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF MemProcessEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The process list."
    ::= { memProcessList 1 }

memProcessEntry OBJECT-TYPE
    SYNTAX      MemProcessEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the process list.

"
    INDEX { memProcessIndex }
    ::= { memProcessTable 1 }

MemProcessEntry ::=
    SEQUENCE {
        memProcessIndex                         Unsigned32,
        memProcessName                          MgmtNameString,
        memProcessPid                           Unsigned32,
        memProcessCurSize                       Unsigned32,
        memProcessMaxSizeTotal                  Unsigned32,
        memProcessMinSizeTotal                  Unsigned32,
        memProcessStartSizePeriod               Unsigned32,
        memProcessMaxSizePeriod                 Unsigned32,
        memProcessMinSizePeriod                 Unsigned32,
        memProcessIncrSizePeriod                Unsigned32,
        memProcessStartTime                     DateAndTime,
        memProcessMaxTotalTime                  DateAndTime,
        memProcessStartPeriodTime               DateAndTime,
        memProcessMaxPeriodTime                 DateAndTime,
        memProcessResetPeriodAction             INTEGER,
        memProcessState                         INTEGER,
        memProcessHistory                       DisplayString,
        memProcessLatestSampleTime              DateAndTime }

memProcessIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An arbitrary index assigned to each process
        entry.

"
    ::= { memProcessEntry 1 }

memProcessName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the process.

"
    ::= { memProcessEntry 2 }

memProcessPid OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The process id.

"
    ::= { memProcessEntry 3 }

memProcessCurSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Current memory usage in kilo bytes.

"
    ::= { memProcessEntry 4 }

memProcessMaxSizeTotal OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Maximum memory usage in kilo bytes.

"
    ::= { memProcessEntry 5 }

memProcessMinSizeTotal OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Minimum memory usage in kilo bytes.

"
    ::= { memProcessEntry 6 }

memProcessStartSizePeriod OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Memory usage at start of the period in kilo bytes.

"
    ::= { memProcessEntry 7 }

memProcessMaxSizePeriod OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Maximum memory usage during period in kilo bytes.

"
    ::= { memProcessEntry 8 }

memProcessMinSizePeriod OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Minimum memory usage during period in kilo bytes.

"
    ::= { memProcessEntry 9 }

memProcessIncrSizePeriod OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Increase in memory size during period in
        kilo bytes.

"
    ::= { memProcessEntry 10 }

memProcessStartTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Time when the process reached its maximum size.

"
    ::= { memProcessEntry 11 }

memProcessMaxTotalTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Time when the process reached its maximum size.

"
    ::= { memProcessEntry 12 }

memProcessStartPeriodTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Time when the period started.

"
    ::= { memProcessEntry 13 }

memProcessMaxPeriodTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Time when the process reached its maximum size
        during the period.

"
    ::= { memProcessEntry 14 }

memProcessResetPeriodAction OBJECT-TYPE
    SYNTAX      INTEGER {
                         normal (1),
                         reset (2) }

    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Start a new period.

"
    DEFVAL { normal }
    ::= { memProcessEntry 15 }

memProcessState OBJECT-TYPE
    SYNTAX      INTEGER {
                         alive (1),
                         dead (2) }

    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "State of the process.

"
    ::= { memProcessEntry 16 }

memProcessHistory OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "History info about used memory (kilo bytes)

"
    ::= { memProcessEntry 17 }

memProcessLatestSampleTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Time when the latest sample was taken.

"
    ::= { memProcessEntry 18 }


-- ----------------------------------------------------
-- Board information
-- ----------------------------------------------------

memBoardTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF MemBoardEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The board list."
    ::= { memBoardList 1 }

memBoardEntry OBJECT-TYPE
    SYNTAX      MemBoardEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the board list.
        One entry for each slot.

"
    INDEX { memBoardIndex }
    ::= { memBoardTable 1 }

MemBoardEntry ::=
    SEQUENCE {
        memBoardIndex                   Unsigned32,
        memBoardName                    MgmtNameString,
        memBoardProcessSupervision      INTEGER,
        memBoardReportMode              INTEGER,
        memBoardResetPeriodAction       INTEGER,
        memBoardTotalMemUsed            Unsigned32,
        memBoardTotalMemFree            Unsigned32,
        memBoardTotalMemFreePercent     Unsigned32,
        memBoardHistory                 DisplayString }

memBoardIndex OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An arbitrary index assigned to each board entry.

"
    ::= { memBoardEntry 1 }

memBoardName OBJECT-TYPE
    SYNTAX      MgmtNameString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        ".
"
    ::= { memBoardEntry 2 }

memBoardProcessSupervision OBJECT-TYPE
    SYNTAX      INTEGER {
                        off (1),
                        on (2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Shall process memory usage on this board be
        measured on this board.

        off - do not measure

        on - measure at the interval specified in the
        control group.

"
    DEFVAL { off }
    ::= { memBoardEntry 3 }

memBoardReportMode OBJECT-TYPE
    SYNTAX      INTEGER {
                        off (1),
                        on (2) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Shall process memory usage on this board be
        'reported' periodically.

        off - do not report

        on - report at the period specified in the
        control group.

"
    DEFVAL { off }
    ::= { memBoardEntry 4 }

memBoardResetPeriodAction OBJECT-TYPE
    SYNTAX      INTEGER {
                         normal (1),
                         reset (2) }

    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Start a new period for all processes on the
        board.

"
    DEFVAL { normal }
    ::= { memBoardEntry 5 }

memBoardTotalMemUsed OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "In kilo bytes.

"
    ::= { memBoardEntry 6 }

memBoardTotalMemFree OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "In kilo bytes.

"
    ::= { memBoardEntry 7 }

memBoardTotalMemFreePercent OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "In percent of total memory.

"
    ::= { memBoardEntry 8 }

memBoardHistory OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "History info about used memory (kilo bytes).

"
    ::= { memBoardEntry 9 }


-- ----------------------------------------------------
-- Control group
-- ----------------------------------------------------

memControlSampleInterval OBJECT-TYPE
    SYNTAX      Unsigned32 (1..10000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The samle interval in minutes.

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

memControlReportInterval OBJECT-TYPE
    SYNTAX      Unsigned32 (1..10000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The report interval in minutes. A report file
        will be generated at the end of each interval.

"
    DEFVAL { 360 }
    ::= { memControl 2 }

memControlMaxReportFiles OBJECT-TYPE
    SYNTAX      Integer32 (-1..1000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The maximum number of report files stored.
        If the number is exceeded, the oldest files will
        be removed.

         Note: '-1' means no limit

"
    DEFVAL { 120 }
    ::= { memControl 3 }


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

memGeneralGroup OBJECT-GROUP
    OBJECTS {
        memGeneralLastChangeTime,
        memGeneralStateLastChangeTime }
    STATUS      current
    DESCRIPTION
        "The general objects."
    ::= { lumMemGroups 1 }

memProcessGroup OBJECT-GROUP
    OBJECTS {
        memProcessIndex,
        memProcessName,
        memProcessPid,
        memProcessCurSize,
        memProcessMaxSizeTotal,
        memProcessMinSizeTotal,
        memProcessStartSizePeriod,
        memProcessMaxSizePeriod,
        memProcessMinSizePeriod,
        memProcessIncrSizePeriod,
        memProcessStartTime,
        memProcessMaxTotalTime,
        memProcessStartPeriodTime,
        memProcessMaxPeriodTime,
        memProcessResetPeriodAction,
        memProcessState,
        memProcessHistory }
    STATUS      deprecated
    DESCRIPTION
        "The process  objects."
    ::= { lumMemGroups 2 }

memBoardGroup OBJECT-GROUP
    OBJECTS {
        memBoardIndex,
        memBoardName,
        memBoardProcessSupervision,
        memBoardReportMode,
        memBoardResetPeriodAction,
        memBoardTotalMemUsed,
        memBoardTotalMemFree,
        memBoardTotalMemFreePercent,
        memBoardHistory}

    STATUS      current
    DESCRIPTION
        "The board objects."
    ::= { lumMemGroups 3 }

memControlGroup OBJECT-GROUP
    OBJECTS {
        memControlSampleInterval,
        memControlReportInterval }
    STATUS      current
    DESCRIPTION
        "The control objects."
    ::= { lumMemGroups 4 }

memControlGroupV2 OBJECT-GROUP
    OBJECTS {
        memControlSampleInterval,
        memControlReportInterval,
        memControlMaxReportFiles }
    STATUS      current
    DESCRIPTION
        "The control objects."
    ::= { lumMemGroups 5 }

memProcessGroupV2 OBJECT-GROUP
    OBJECTS {
        memProcessIndex,
        memProcessName,
        memProcessPid,
        memProcessCurSize,
        memProcessMaxSizeTotal,
        memProcessMinSizeTotal,
        memProcessStartSizePeriod,
        memProcessMaxSizePeriod,
        memProcessMinSizePeriod,
        memProcessIncrSizePeriod,
        memProcessStartTime,
        memProcessMaxTotalTime,
        memProcessStartPeriodTime,
        memProcessMaxPeriodTime,
        memProcessResetPeriodAction,
        memProcessState,
        memProcessHistory,
        memProcessLatestSampleTime }
    STATUS      current
    DESCRIPTION
        "The process  objects."
    ::= { lumMemGroups 6 }

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

lumMemBasicComplV1 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the mem MIB."
    MODULE
        MANDATORY-GROUPS {
            memGeneralGroup,
            memProcessGroup,
            memBoardGroup,
            memControlGroup }
    ::= { lumMemCompl 1 }

lumMemBasicComplV2 MODULE-COMPLIANCE
    STATUS      deprecated
    DESCRIPTION
        "Basic implementation requirements for the mem MIB version V2."
    MODULE
        MANDATORY-GROUPS {
            memGeneralGroup,
            memProcessGroup,
            memBoardGroup,
            memControlGroupV2 }
    ::= { lumMemCompl 2 }

lumMemBasicComplV3 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the mem MIB version V3."
    MODULE
        MANDATORY-GROUPS {
            memGeneralGroup,
            memProcessGroupV2,
            memBoardGroup,
            memControlGroupV2 }
    ::= { lumMemCompl 3 }


END



