--  =======================================================================
--  File        : osTm.mib
--  Description : Private MIB supports MRV Traffic Manager on Marvell® basedf devices
--  By          : alex

-- Copyright (c) 2016 MRV.  All Rights Reserved.
--
--
-- Reproduction of this document is authorized on condition that this
-- copyright notice is included.  This MRV SNMP MIB Specification
-- embodies MRV's proprietary intellectual property.  MRV
-- retains all title and ownership in the specification, including any
-- revisions.
--
-- It is MRV's intent to encourage the widespread use of this
-- specification in connection with the management of MRV's
-- products. MRV grants vendor, end-users, and other interested
-- parties a non-exclusive license to use this specification in
-- connection with the management of MRV's products.
--
-- This specification is supplied "AS IS," and MRV makes no
-- warranty, either express or implied, as to the use, operation,
-- condition, or performance of the specification.
--
-- Copyright text courtesy of MRV
--
-- If you have any questions about this MIB, please call MRV
-- Technical Support Center at 1-800-858-7815 from inside USA or
-- 1-818-773-0900 from outside USA.
--
--
-- MRV retains the right to change this MIB without notification.

OS-TM-MIB DEFINITIONS ::= BEGIN

        IMPORTS
                MODULE-IDENTITY, OBJECT-TYPE, enterprises,
                Counter64, Unsigned32                         FROM SNMPv2-SMI
                TEXTUAL-CONVENTION,
                TruthValue                                    FROM SNMPv2-TC
                oaOptiSwitch                                  FROM OS-COMMON-TC-MIB
                MODULE-COMPLIANCE, OBJECT-GROUP               FROM SNMPv2-CONF;

osTm       MODULE-IDENTITY
                LAST-UPDATED "201611060000Z" -- 6 Dec. 2016
                ORGANIZATION "MRV Communications, Inc."
                CONTACT-INFO
                   "Alex Ruzin
                    MRV Communication, Inc
                    http://www.mrv.com
                    Email:  arozin@mrv.com"
                DESCRIPTION
                    "Support for MRV Traffic Manager on Marvell based devices."

                REVISION     "201611060000Z" -- 6 Dec. 2016
                DESCRIPTION
                    "Initial edition."
                ::= { oaOptiSwitch 38 }

-- ************************************************************
-- MIB place Definition
-- ************************************************************
osTmCapabilities   OBJECT IDENTIFIER ::= { osTm 1 }
osTmConformance    OBJECT IDENTIFIER ::= { osTm 100 }
osTmMIBCompliances OBJECT IDENTIFIER ::= { osTmConformance 1 }
osTmMIBGroups      OBJECT IDENTIFIER ::= { osTmConformance 2 }

-- ************************************************************
-- Textual conventions
-- ************************************************************

TmPortIndex       ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "d"
   STATUS       current
   DESCRIPTION
      "A unique value, greater than zero, for each Port or
       in the managed system."
   SYNTAX       Unsigned32 (1..2147483647)

TmNodeId          ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "d"
   STATUS       current
   DESCRIPTION
      "Traffic manager Node identifier."
   SYNTAX       Unsigned32 (1..2147483647)

TmSlQueueId ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION
      "Traffic manager Service Level queue identifier."
    SYNTAX      Unsigned32 (1..8)


-- ************************************************************
-- Support and Status
-- ************************************************************

osTmSupport   OBJECT-TYPE
   SYNTAX     INTEGER { notSupported(1), supported(2) }
   MAX-ACCESS read-only
   STATUS     current
   DESCRIPTION
      "Indicates that this MIB is supported."
   ::= { osTmCapabilities 1 }

-- ***********************************************************
--    Traffic manager counters
-- *************************************************************
osTmCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF OsTmCountEntry
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
     "This table show TM counters."
    REFERENCE
      "CLI commands:
          show tm-counters port PORT-GROUP ({service-node (NODELIST|all|summary)|sl-queue (QUEUELIST|all|summary)}|)"
    ::= { osTm 20 }

osTmCountEntry OBJECT-TYPE
    SYNTAX      OsTmCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "Contains an entry of the osTmCountTable table."
    INDEX { osTmCountPort, osTmCountServNode, osTmCountBNode, osTmCountCNode, osTmCountSlQueue }
    ::= { osTmCountTable 1 }

OsTmCountEntry ::= SEQUENCE {
    osTmCountPort           TmPortIndex,
    osTmCountServNode       TmNodeId,
    osTmCountBNode          TmNodeId,
    osTmCountCNode          TmNodeId,
    osTmCountSlQueue        TmSlQueueId,
    osTmCountClear          TruthValue,
    osTmCountPacketsPassed  Counter64,
    osTmCountPacketsDropped Counter64,
    osTmCountBytesPassed    Counter64,
    osTmCountBytesDropped   Counter64 
}

osTmCountPort      OBJECT-TYPE
    SYNTAX         TmPortIndex
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "The TM port number."
    ::= { osTmCountEntry 1 }

osTmCountServNode  OBJECT-TYPE
    SYNTAX         TmNodeId
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "The Serice Node TM level (aka a-node)."
    ::= { osTmCountEntry 2 }

osTmCountBNode     OBJECT-TYPE
    SYNTAX         TmNodeId
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "The B-Node TM level."
    ::= { osTmCountEntry 3 }

osTmCountCNode     OBJECT-TYPE
    SYNTAX         TmNodeId
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "The C-Node TM level."
    ::= { osTmCountEntry 4 }

osTmCountSlQueue   OBJECT-TYPE
    SYNTAX         TmSlQueueId
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "Service level Queue."
    ::= { osTmCountEntry 5 }

osTmCountClear     OBJECT-TYPE
    SYNTAX         TruthValue
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
        "This object when written 'true' clears the relevant TM counters.
        When read the value always returns 'false'. "
    ::= { osTmCountEntry 6 }


osTmCountPacketsPassed OBJECT-TYPE
    SYNTAX         Counter64
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
        "The counter."
    ::= { osTmCountEntry 8 }

osTmCountPacketsDropped OBJECT-TYPE
    SYNTAX         Counter64
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
        "The counter."
    ::= { osTmCountEntry 9 }

osTmCountBytesPassed OBJECT-TYPE
    SYNTAX         Counter64
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
        "The counter."
    ::= { osTmCountEntry 10 }

osTmCountBytesDropped OBJECT-TYPE
    SYNTAX         Counter64
    MAX-ACCESS     read-only
    STATUS         current
    DESCRIPTION
        "The counter."
    ::= { osTmCountEntry 11 }

-- *******************************************************************
--  Conformance Information 
-- ******************************************************************* 

osTmMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The core compliance statement for all the osTm MIB implementations."
    MODULE -- this module 
    MANDATORY-GROUPS { 
        osTmMandatoryGroup
    }
    GROUP osTmOptGroup
    DESCRIPTION 
        "Optional objects for the osTm MIB."

    ::= { osTmMIBCompliances 1 }

-- ...................................................................
-- Conformance Groups 
-- ................................................................... 
 
osTmMandatoryGroup  OBJECT-GROUP
    OBJECTS {
        osTmSupport
    }
    STATUS current 
    DESCRIPTION 
        "Mandatory Conformance group."
    ::= { osTmMIBGroups 1 }

osTmOptGroup  OBJECT-GROUP 
    OBJECTS  { 
       osTmCountClear, osTmCountPacketsPassed, osTmCountPacketsDropped, osTmCountBytesPassed, osTmCountBytesDropped
    } 
    STATUS current 
    DESCRIPTION 
        "Optional objects for the osTm MIB."
    ::= { osTmMIBGroups 2 } 

END
