LUM-IFOTDR-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Unsigned32, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    OBJECT-GROUP, MODULE-COMPLIANCE
        FROM SNMPv2-CONF
    DateAndTime, DisplayString
        FROM SNMPv2-TC
    lumModules, lumIfOtdrMIB
        FROM LUM-REG
    AdminStatusWithNA, OperStatusWithNA, EnabledDisabledWithNA, Unsigned32WithNA,
    FaultStatusWithNA, MgmtNameString, CommandString, SubrackNumber, SlotNumber, PortNumber, DisplayStringWithNA
        FROM LUM-TC;

ifOtdrMIBModule MODULE-IDENTITY
    LAST-UPDATED
        "201806150000Z" -- June 15th 2018
    ORGANIZATION
        "Infinera Corporation"
    CONTACT-INFO
        "techsupport@infinera.com"
    DESCRIPTION
        "The MIB module for management, information and configuration of
        OTDR (Optical Time-Domain Reflectometer) boards.

        The tables contained in this MIB are:

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

        (2) The Fiber Span group contains information and configuration for the
            monitored fiber spans.

        (3) (monitor settings)

        (4) (conected ports)

        (5) (datasets)

        (Needs a rewrite? Inspiration taken from IfXcFlex mib)
        (Other info that could be important)

"

    REVISION
        "201806150000Z" -- June 15th 2018
    DESCRIPTION
        " Initial revision of this module."

    ::= { lumModules 72 }



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

lumIfOtdrConfs OBJECT IDENTIFIER ::= { lumIfOtdrMIB 1 }
lumIfOtdrGroups OBJECT IDENTIFIER ::= { lumIfOtdrConfs 1 }
lumIfOtdrCompl OBJECT IDENTIFIER ::= { lumIfOtdrConfs 2 }


-- ----------------------------------------------------
-- Root for objects in the OTDR MIB
-- ----------------------------------------------------

lumIfOtdrMIBObjects OBJECT IDENTIFIER ::= { lumIfOtdrMIB 2 }


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

ifOtdrGeneral OBJECT IDENTIFIER ::= { lumIfOtdrMIBObjects 1 }
ifOtdrFiberSpanList OBJECT IDENTIFIER ::= { lumIfOtdrMIBObjects 2 }


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

-- N/A

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


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

"
    ::= { ifOtdrGeneral 1 }

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

"
    ::= { ifOtdrGeneral 2 }

ifOtdrGeneralFiberSpanTableSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Size of Fiber Span table

"
    ::= { ifOtdrGeneral 3 }


-- ----------------------------------------------------
-- Otdr Fiber Span table
-- ----------------------------------------------------

ifOtdrFiberSpanTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfOtdrFiberSpanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "<description of table goes here>"

    ::= { ifOtdrFiberSpanList 1 }

ifOtdrFiberSpanEntry OBJECT-TYPE
    SYNTAX      IfOtdrFiberSpanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in the ifOtdrFiberSpan list.

"
    INDEX { ifOtdrFiberSpanIndex }
    ::= { ifOtdrFiberSpanTable 1 }

IfOtdrFiberSpanEntry ::=
    SEQUENCE {
         ifOtdrFiberSpanIndex                     Unsigned32,
         ifOtdrFiberSpanName                      MgmtNameString,
         ifOtdrFiberSpanFiberId                   DisplayString,
         ifOtdrFiberSpanSessionType               INTEGER,
         ifOtdrFiberSpanStartMeasurementCommand   CommandString,

-- the following attributes are non standard attributes added for ENM housekeeping

         ifOtdrFiberSpanConnIfBasicIfIndex        Unsigned32WithNA,
         ifOtdrFiberSpanSubrack                   SubrackNumber,
         ifOtdrFiberSpanSlot                      SlotNumber,
         ifOtdrFiberSpanPortNr                    PortNumber,
         ifOtdrFiberSpanState                     INTEGER}


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

"
    ::= { ifOtdrFiberSpanEntry 1 }

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

"
    ::= { ifOtdrFiberSpanEntry 2 }

ifOtdrFiberSpanFiberId OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The fiber span ID. Only accepts alphanumeric input.

        On otdr8p the fiber span ID can be up to 16 characters long.

"
    DEFVAL { "" }
    ::= { ifOtdrFiberSpanEntry 3 }

ifOtdrFiberSpanSessionType OBJECT-TYPE
    SYNTAX      INTEGER {nearField (1),
                         farField (2)}
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Depending on choice of session type, measurements will be performed
        with different parameters.

        nearField - High resolution but limited range. Max range 5 km.

        farField - Low resolution but long range. Min range 4 km, max range 125 km.

"
    DEFVAL { farField }
    ::= { ifOtdrFiberSpanEntry 4 }

ifOtdrFiberSpanStartMeasurementCommand OBJECT-TYPE
    SYNTAX      CommandString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Start a measurement.

        The result of the measurement is stored in a file under /tftpboot/otdr/,
        using the following syntax: otdr-[subrack]-[slot]-[interfaceNumber]-[fiberSpanId]-yymmdd-hhmmss.sor

        The average time for a measurement to be completed is 35 seconds.

        Note! A maximum of two files per interface are stored,
        the oldest file will be removed when a new measurement is performed.

        Note! The actual time for a measurement to be completed can deviate from the average.

"
    ::= { ifOtdrFiberSpanEntry 5 }

ifOtdrFiberSpanConnIfBasicIfIndex OBJECT-TYPE
    SYNTAX      Unsigned32WithNA
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "An index that describes to which index in ifBasicIf table
        this object is related.

"
    ::= { ifOtdrFiberSpanEntry 6 }

ifOtdrFiberSpanSubrack OBJECT-TYPE
    SYNTAX      SubrackNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of the subrack where the OTDR board is located.

"
    ::= { ifOtdrFiberSpanEntry 7 }

ifOtdrFiberSpanSlot OBJECT-TYPE
    SYNTAX      SlotNumber
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of the slot where the OTDR board is located.

"
    ::= { ifOtdrFiberSpanEntry 8 }

ifOtdrFiberSpanPortNr OBJECT-TYPE
    SYNTAX      PortNumber
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of the OTDR port.

"
    ::= { ifOtdrFiberSpanEntry 9 }

ifOtdrFiberSpanState OBJECT-TYPE
    SYNTAX      INTEGER {
                    inactive (0),
                    measuring (1)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the measurement status of the interface

        Inactive 	- No measurement is ongoing on this interface.

        Measuring 	- A measurement is ongoing on this interface.

"
     	DEFVAL { inactive }
    ::= { ifOtdrFiberSpanEntry 10 }

-- ----------------------------------------------------
-- Otdr Monitor Settings table
-- ----------------------------------------------------

-- ----------------------------------------------------
-- Otdr Connected Port table
-- ----------------------------------------------------

-- ----------------------------------------------------
-- Otdr Session table
-- ----------------------------------------------------

-- ----------------------------------------------------
-- Otdr Dataset table
-- ----------------------------------------------------


-- ----------------------------------------------------
-- Information of OTDR
-- ----------------------------------------------------
-- ----------------------------------------------------
-- Notifications
-- ----------------------------------------------------

-- N/A

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

ifOtdrGeneralGroupV1 OBJECT-GROUP
    OBJECTS {
        ifOtdrGeneralConfigLastChangeTime,
        ifOtdrGeneralStateLastChangeTime}
    STATUS      current
    DESCRIPTION
        "The general objects."
    ::= { lumIfOtdrGroups 1 }

ifOtdrFiberSpanGroupV1 OBJECT-GROUP
    OBJECTS {
        ifOtdrFiberSpanIndex,
        ifOtdrFiberSpanName,
        ifOtdrFiberSpanFiberId,
	    ifOtdrFiberSpanSessionType,
        ifOtdrFiberSpanStartMeasurementCommand,

-- the following attributes are non standard attributes added for ENM housekeeping

        ifOtdrFiberSpanConnIfBasicIfIndex,
        ifOtdrFiberSpanSubrack,
        ifOtdrFiberSpanSlot,
        ifOtdrFiberSpanPortNr,
        ifOtdrFiberSpanState
        }
    STATUS      current
    DESCRIPTION
        "The ifOtdrFiberSpan objects (R31.0)."
    ::= { lumIfOtdrGroups 2 }

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

lumIfOtdrComplV1 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "Basic implementation requirements for the OTDR MIB. (R31.0)"
    MODULE
        MANDATORY-GROUPS {
            ifOtdrGeneralGroupV1,
            ifOtdrFiberSpanGroupV1
            }
    ::= { lumIfOtdrCompl 1 }

END

