TROPIC-GMPLS-NE-MIB DEFINITIONS ::= BEGIN

-- (c) Copyright 2019 Nokia Networks.  All rights reserved.
-- This software is the confidential and proprietary property of
-- Nokia and may only be used in accordance with the terms of the
-- license agreement provided with this software.

IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE,
      Unsigned32, Integer32                   FROM SNMPv2-SMI
      MODULE-COMPLIANCE, OBJECT-GROUP         FROM SNMPv2-CONF
      RowStatus, DisplayString                FROM SNMPv2-TC
      InetAddressType, InetAddress,
      InetAddressIPv4                         FROM INET-ADDRESS-MIB
      tnGmplsMIBModules, tnGmplsObjs          FROM TROPIC-GLOBAL-REG;

  tnGmplsNeMibModule MODULE-IDENTITY
      LAST-UPDATED    "201802231200Z"
      ORGANIZATION    "Nokia"
      CONTACT-INFO    "Nokia
                       Attn: Jeff Donnelly
                       600 Mountain Avenue
                       New Providence, NJ 07974

                       Phone: +1 732 221 6408
                       Email: jeff.donnelly@nokia.com"

      DESCRIPTION "GMPLS Network Element MIB types."

      REVISION    "201802231200Z"
      DESCRIPTION "Updated the contact info."

      REVISION    "201707071200Z"
      DESCRIPTION "Fixed MIB compile issues."

      REVISION    "201611161200Z"
      DESCRIPTION "Updated the contact info."

      REVISION    "201306271200Z"
      DESCRIPTION "Initial version."

      ::= { tnGmplsMIBModules 4 }

---------------------------------------------------------------------------
-- Top Level Components of This MIB
---------------------------------------------------------------------------
  tnGmplsNeMIB            OBJECT IDENTIFIER ::= { tnGmplsObjs 4 }

-- tables, scalars
  tnGmplsNeObjs           OBJECT IDENTIFIER ::= { tnGmplsNeMIB 1 }

-- traps
--  tnGmplsNeNotifications  OBJECT IDENTIFIER ::= { tnGmplsNeMIB 2 }
--  tnGmplsNeNotifyPrefix   OBJECT IDENTIFIER ::= { tnGmplsNeNotifications 0 }

  tnGmplsNeConf           OBJECT IDENTIFIER ::= { tnGmplsNeMIB 3 }
  tnGmplsNeGroups         OBJECT IDENTIFIER ::= { tnGmplsNeConf 1 }
  tnGmplsNeCompliances    OBJECT IDENTIFIER ::= { tnGmplsNeConf 2 }

--------------------------------------------------------------------------------
-- GMPLS NE Scalar
--------------------------------------------------------------------------------
    tnGmplsNeAttributeTotal OBJECT-TYPE
        SYNTAX         Integer32
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Total number of attributes in this MIB file."
        ::= { tnGmplsNeObjs 1 }

---------------------------------------------------------------------------
-- GMPLS Network Element Table.
---------------------------------------------------------------------------
    tnGmplsNeTable OBJECT-TYPE
        SYNTAX         SEQUENCE OF TnGmplsNeEntry
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "The GMPLS Network Element Table."
        ::= { tnGmplsNeObjs 2 }

    tnGmplsNeEntry OBJECT-TYPE
        SYNTAX         TnGmplsNeEntry
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "An entry in this table represents an GMPLS Node.
                        There is only one entry in this table because
                        only one GMPLS instance per NE allowed.  The
                        creation of a second entry shall be denied."
        REFERENCE      "?"
        INDEX          { tnGmplsNeIndex }
        ::= { tnGmplsNeTable 1 }

    TnGmplsNeEntry ::= SEQUENCE {
        tnGmplsNeIndex                     Unsigned32,
        tnGmplsNeCPNodeId                  InetAddressIPv4,
        tnGmplsNeNodeAddrType              InetAddressType,
        tnGmplsNeNodeAddr                  InetAddress,
        tnGmplsNeNotifyAddrType            InetAddressType,
        tnGmplsNeNotifyAddr                InetAddress,
        tnGmplsNeNodeName                  DisplayString,
        tnGmplsNeDcnOspfArea               InetAddressIPv4,
        tnGmplsNeRestorationMode           INTEGER,
        tnGmplsNeAutomode                  INTEGER,
        tnGmplsNeActiveNWVersion           DisplayString,
        tnGmplsNeInstalledNWVersion        DisplayString,
        tnGmplsNeAdminStatus               INTEGER,
        tnGmplsNeOperationalState          INTEGER,
        tnGmplsNeColocatedNodeAddrType     InetAddressType,
        tnGmplsNeColocatedNode             InetAddress,
        tnGmplsNeRowStatus                 RowStatus
    }

    tnGmplsNeIndex OBJECT-TYPE
        SYNTAX         Unsigned32
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "Uniquely identifies this row.  There is only one
                        entry in this table."
        ::= { tnGmplsNeEntry 1 }

    tnGmplsNeCPNodeId OBJECT-TYPE
        SYNTAX         InetAddressIPv4
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "CP Node ID. Uniquely identifies a row."
        ::= { tnGmplsNeEntry 2 }

    tnGmplsNeNodeAddrType OBJECT-TYPE
        SYNTAX         InetAddressType
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Only IPv4 is supported."
        ::= { tnGmplsNeEntry 3 }

    tnGmplsNeNodeAddr OBJECT-TYPE
        SYNTAX         InetAddress
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Node Addr in IPv4."
        ::= { tnGmplsNeEntry 4 }

    tnGmplsNeNotifyAddrType OBJECT-TYPE
        SYNTAX         InetAddressType
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Only IPv4 is supported."
        ::= { tnGmplsNeEntry 5 }

    tnGmplsNeNotifyAddr OBJECT-TYPE
        SYNTAX         InetAddress
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "RSVP Notify address in IPv4."
        ::= { tnGmplsNeEntry 6 }

    tnGmplsNeNodeName OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "User friendly name"
        ::= { tnGmplsNeEntry 7 }

    tnGmplsNeDcnOspfArea OBJECT-TYPE
        SYNTAX         InetAddressIPv4
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Area Id for the DCN OSPF.  Can only be set if
                        AdminState is down.  Else the Agent will deny
                        the modification."
        ::= { tnGmplsNeEntry 8 }

    tnGmplsNeRestorationMode OBJECT-TYPE
        SYNTAX         INTEGER {
                         automatic(1),
                         manual(2),
                         prio2(3),
                         prio3(4),
                         prio4(5),
                         prio5(6)
                       }
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Manual restoration for maintenance."
        DEFVAL         { automatic }
        ::= { tnGmplsNeEntry 9 }

    tnGmplsNeAutomode OBJECT-TYPE
        SYNTAX         INTEGER {
                         manual(1),
                         managed(2),
                         full(3)
                       }
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Autodiscovery and Management Mode for NMS interworking."
        DEFVAL         { managed }
        ::= { tnGmplsNeEntry 10 }

    tnGmplsNeActiveNWVersion OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Current active SW Release number in x.y, with
                        x = major release, y = sub release.  A change
                        is possible at max to the Installed NWVersion.
                        All GMPLS Nodes in the network must support this
                        release."
        ::= { tnGmplsNeEntry 11 }

    tnGmplsNeInstalledNWVersion OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Current installed SW Release number in x.y, with
                        x = major release, y = sub release."
        ::= { tnGmplsNeEntry 12 }

    tnGmplsNeAdminStatus OBJECT-TYPE
        SYNTAX         INTEGER {
                         down(1),
                         up(2)
                       }
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Administrative state.  Only transition from down
                        to up allowed."
        ::= { tnGmplsNeEntry 13 }

    tnGmplsNeOperationalState OBJECT-TYPE
        SYNTAX         INTEGER {
                         down(1),
                         degraded(2),
                         up(3)
                       }
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "Operational state of the node."
        ::= { tnGmplsNeEntry 14 }

    tnGmplsNeColocatedNodeAddrType OBJECT-TYPE
        SYNTAX         InetAddressType
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "IP addr type of GMPLS of the colocated WDM compound.
                        Currently on IPv4 is supported."
        ::= { tnGmplsNeEntry 15 }

    tnGmplsNeColocatedNode OBJECT-TYPE
        SYNTAX         InetAddress
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "IP addr of GMPLS of the colocated WDM compound.
                        This is empty or 0.0.0.0 if no colocated node
                        exists"
        ::= { tnGmplsNeEntry 16 }

    tnGmplsNeRowStatus OBJECT-TYPE
        SYNTAX         RowStatus
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "This variable is used to modify a row in this
                        table.  Supported values for this table are:
                          active       => activate new node config
                          notInService => configuration not active
                          notReady     => mandatory parameters missing

                        Creation or deletion of row entries is not allowed."
        ::= { tnGmplsNeEntry 17 }

---------------------------------------------------------------------------
-- GMPLS Network Element SubNode Table.
---------------------------------------------------------------------------
    tnGmplsNeSubnodeTable OBJECT-TYPE
        SYNTAX         SEQUENCE OF TnGmplsNeSubnodeEntry
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "The GMPLS Network Element Subnode Table."
        ::= { tnGmplsNeObjs 3 }

    tnGmplsNeSubnodeEntry OBJECT-TYPE
        SYNTAX         TnGmplsNeSubnodeEntry
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "An entry in this table represents an GMPLS Subnode
                        (logical node)."
        REFERENCE      "?"
        INDEX          { tnGmplsNeSubnodeIndex }
        ::= { tnGmplsNeSubnodeTable 1 }

    TnGmplsNeSubnodeEntry ::= SEQUENCE {
        tnGmplsNeSubnodeIndex           Unsigned32,
        tnGmplsNeSubnodeId              Unsigned32,
        tnGmplsNeSubnodeAdminStatus     INTEGER,
        tnGmplsNeSubnodeRowStatus       RowStatus
    }

    tnGmplsNeSubnodeIndex OBJECT-TYPE
        SYNTAX         Unsigned32
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION    "Uniquely identifies this row.  Refers to SubNode
                        IFIndex at GMPLS CLI."
        ::= { tnGmplsNeSubnodeEntry 1 }

    tnGmplsNeSubnodeId OBJECT-TYPE
        SYNTAX         Unsigned32
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Uniquely identifies this row.  Refers to
                        localDPNodeId at CLI.  Only modifiable while
                        AdminStatus is down."
        ::= { tnGmplsNeSubnodeEntry 2 }

    tnGmplsNeSubnodeAdminStatus OBJECT-TYPE
        SYNTAX         INTEGER {
                         down(1),
                         up(2)
                       }
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "Administrative state.  Only transition from down
                        to up allowed."
        ::= { tnGmplsNeSubnodeEntry 3 }

    tnGmplsNeSubnodeRowStatus OBJECT-TYPE
        SYNTAX         RowStatus
        MAX-ACCESS     read-create
        STATUS         current
        DESCRIPTION    "This variable is used to create, modify, and/or
                        delete a row in this table.  Supported values
                        for this table are:
                          active       => activate new node config
                          notInService => configuration not active
                          notReady     => mandatory parameters missing
                          createAndGo  => create and activate a new entry
                          destroy => delete a entry."
        ::= { tnGmplsNeSubnodeEntry 4 }

---------------------------------------------------------------------------
-- Conformance Group Definitions
---------------------------------------------------------------------------
    tnGmplsNeObjsGroup OBJECT-GROUP
        OBJECTS {
            tnGmplsNeAttributeTotal
        }
        STATUS         current
        DESCRIPTION    "."
        ::= { tnGmplsNeGroups 1 }

    tnGmplsNeGroup OBJECT-GROUP
        OBJECTS {
            tnGmplsNeCPNodeId,
            tnGmplsNeNodeAddrType,
            tnGmplsNeNodeAddr,
            tnGmplsNeNotifyAddrType,
            tnGmplsNeNotifyAddr,
            tnGmplsNeNodeName,
            tnGmplsNeDcnOspfArea,
            tnGmplsNeRestorationMode,
            tnGmplsNeAutomode,
            tnGmplsNeActiveNWVersion,
            tnGmplsNeInstalledNWVersion,
            tnGmplsNeAdminStatus,
            tnGmplsNeOperationalState,
            tnGmplsNeColocatedNodeAddrType,
            tnGmplsNeColocatedNode,
            tnGmplsNeRowStatus
        }
        STATUS         current
        DESCRIPTION    "The GMPLS NE group of objects providing for management
                        of GMPLS NE entities."
        ::= { tnGmplsNeGroups 2 }

    tnGmplsNeSubnodeGroup OBJECT-GROUP
        OBJECTS {
            tnGmplsNeSubnodeId,
            tnGmplsNeSubnodeAdminStatus,
            tnGmplsNeSubnodeRowStatus
        }
        STATUS         current
        DESCRIPTION    "The GMPLS NE subnode group of objects providing
                        for management of GMPLS NE entities."
        ::= { tnGmplsNeGroups 3 }

--    tnGmplsNeNotificationGroup NOTIFICATION-GROUP
--        NOTIFICATIONS {
--            tnGmplsNeAdminStatusChange,
--            tnGmplsNeOpStateChange
--        }
--        STATUS         current
--        DESCRIPTION    "Set of notifications implemented in this module.
--                        None is mandatory."
--        ::= { tnGmplsNeGroups 4 }

---------------------------------------------------------------------------
-- Compliance Statements (mandatory)
---------------------------------------------------------------------------
    tnGmplsNeCompliance MODULE-COMPLIANCE
        STATUS         current
        DESCRIPTION    "The compliance statement for SNMPv2 entities
                        which implement GMPLS NE."
        MODULE         -- this module
        MANDATORY-GROUPS {
            tnGmplsNeObjsGroup,
            tnGmplsNeGroup,
            tnGmplsNeSubnodeGroup
--            tnGmplsNeNotificationGroup
        }
        ::= { tnGmplsNeCompliances 1 }

END -- DEFINITION OF TROPIC-GMPLS-NE-MIB
