--  =======================================================================
--  File        : osResources
--  Description : Private MIB to desrcibe device hardware resources 
--  By          : Pavel

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

OS-RESOURCES-MIB DEFINITIONS ::= BEGIN

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

osResources  MODULE-IDENTITY
  LAST-UPDATED "201912110000Z" -- 11 Dec, 2019
  ORGANIZATION "ADVA"
  CONTACT-INFO
  "Pavel Fridland
  ADVA Optical Networking, Inc
  http://www.adva.com
  Email:  pfridland@advaoptical.com"
  DESCRIPTION
    "Support Hardware Resources statistics."
  REVISION     "201912110000Z" -- 11 Dec, 2019
  DESCRIPTION
    "Initial edition."
  ::= { oaOptiSwitch 41 }

-- ************************************************************
-- MIB place Definition
-- ************************************************************
osResourcesGen                   OBJECT IDENTIFIER ::= { osResources 1 }
osResourcesTables                OBJECT IDENTIFIER ::= { osResources 2 }
osResourcesMac                   OBJECT IDENTIFIER ::= { osResources 3 }
osResourcesConformance           OBJECT IDENTIFIER ::= { osResources 100 }
osResourcesMIBCompliances        OBJECT IDENTIFIER ::= { osResourcesConformance 1 }
osResourcesMIBGroups             OBJECT IDENTIFIER ::= { osResourcesConformance 2 }

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

-- ************************************************************
-- The osResourceTcamTable Table
-- ************************************************************
osResourceTcamTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF OsResourceTcamEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Tcam features statistics. Corresponds to CLI command 'show hardware resources'."
    REFERENCE
       "."
    ::= { osResourcesTables 1 }

osResourceTcamEntry   OBJECT-TYPE
    SYNTAX       OsResourceTcamEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "Contains an entry of the table."
    INDEX { osResourceTcamId }
    ::= { osResourceTcamTable 1 }

OsResourceTcamEntry ::= SEQUENCE {
      osResourceTcamId                  INTEGER,
      osResourceTcamRulesSize           Unsigned32,
      osResourceTcamRulesGuaranteed     Unsigned32,
      osResourceTcamRulesUsed           Unsigned32,
      osResourceTcamRulesFreeGuaranteed Unsigned32,
      osResourceTcamRulesFreeOptional   Unsigned32
}

osResourceTcamId     OBJECT-TYPE
    SYNTAX       INTEGER {
                   tunneling         (1),
                   ingressOam        (2),
                   ingressAcl        (3),
                   egressAclOam      (4),
                   ingressBfd        (5)
                 }
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Feature ID"
    ::= { osResourceTcamEntry 1 }

osResourceTcamRulesSize     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Size of rule (bytes) in specific entity."
    ::= { osResourceTcamEntry 3 }


osResourceTcamRulesGuaranteed     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Total number of guaranteed rules dedicated to
         specific entity (ingressOam, egressOam, etc...)."
    ::= { osResourceTcamEntry 4 }


osResourceTcamRulesUsed         OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of rules used in the specific
         entity (ingressOam, egressOam, etc...)."
    ::= { osResourceTcamEntry 5 }


osResourceTcamRulesFreeGuaranteed OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of unused guaranteed rules in the
         specific entity (ingressOam, egressOam, etc...)."
    ::= { osResourceTcamEntry 6 }


osResourceTcamRulesFreeOptional OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of additional (optional) rules in the
         specific entity (ingressOam, egressOam, etc...)."
    ::= { osResourceTcamEntry 7 }

-- ************************************************************
-- The osResourcePolicerTable Table
-- ************************************************************
osResourcePolicerTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF OsResourcePolicerEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Policer features statistics. Corresponds to CLI command 'show hardware resources'."
    REFERENCE
       "."
    ::= { osResourcesTables 2 }

osResourcePolicerEntry   OBJECT-TYPE
    SYNTAX       OsResourcePolicerEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "Contains an entry of the table."
    INDEX { osResourcePolicerType }
    ::= { osResourcePolicerTable 1 }

OsResourcePolicerEntry ::= SEQUENCE {
      osResourcePolicerType          INTEGER,
      osResourcePolicerEntriesTotal  Unsigned32,
      osResourcePolicerEntriesUsed   Unsigned32,
      osResourcePolicerEntriesFree   Unsigned32
}

osResourcePolicerType     OBJECT-TYPE
    SYNTAX       INTEGER {
                   ingressAcl     (1),
                   egressAcl      (2)
                 }
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Type of policer/meter entry."
    ::= { osResourcePolicerEntry 1 }

osResourcePolicerEntriesTotal     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The total number of policer entries,
         dedicated for specific type."
    ::= { osResourcePolicerEntry 3 }

osResourcePolicerEntriesUsed     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of using (allocated) policer 
         entries, of the specific type."
    ::= { osResourcePolicerEntry 4 }

osResourcePolicerEntriesFree     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of free policer entries,
	 of the specific type."
    ::= { osResourcePolicerEntry 5 }


-- ************************************************************
-- The osResourcesMac statistics 
-- ************************************************************

osResourceMacEntriesTotal     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The total number of MAC (FDB) entries,
         dedicated for specific device."
    ::= { osResourcesMac 1 }

osResourceMacEntriesUsed      OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of using MAC (FDB) entries."
    ::= { osResourcesMac 2 }

osResourceMacEntriesFree      OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of free MAC (FDB) entries."
    ::= { osResourcesMac 3 }


-- ************************************************************
-- The osResourceTxSdma Table
-- ************************************************************
osResourceTxSdmaTable  OBJECT-TYPE
    SYNTAX       SEQUENCE OF OsResourceTxSdmaEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "TX SDMA Queues statistics. Corresponds to CLI command 'show hardware resources'."
    REFERENCE
       "."
    ::= { osResourcesTables 3 }

osResourceTxSdmaEntry   OBJECT-TYPE
    SYNTAX       OsResourceTxSdmaEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "Contains an entry of the table."
    INDEX { osResourceTxSdmaId }
    ::= { osResourceTxSdmaTable 1 }

OsResourceTxSdmaEntry ::= SEQUENCE {
      osResourceTxSdmaId                  Unsigned32,
      osResourceTxSdmaMode                INTEGER,
      osResourceTxSdmaInterval            Unsigned32,
      osResourceTxSdmaUsers               Unsigned32
}

osResourceTxSdmaId     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "TX SDMA entry index."
    ::= { osResourceTxSdmaEntry 1 }

osResourceTxSdmaMode     OBJECT-TYPE
    SYNTAX       INTEGER {
                   free            (1),
                   periodic        (2),
                   rate            (3)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "TX SDMA mode/status: 
         free     - free for using; 
         periodic - used for sending with specific interval;
         rate     - used for sending specific rate traffic."
    ::= { osResourceTxSdmaEntry 2 }

osResourceTxSdmaInterval     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Interval between packets (in microsec) configured for specific TX SDMA."
    ::= { osResourceTxSdmaEntry 3 }

osResourceTxSdmaUsers     OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Number of clients which used specific TX SDMA with configured interval."
    ::= { osResourceTxSdmaEntry 4 }

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

osResourceMIBCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The core compliance statement for all the osResource MIB implementations."
    MODULE -- this module 
    MANDATORY-GROUPS { 
        osResourceMandatoryGroup
    }
    GROUP osResourceOptGroup
    DESCRIPTION 
        "Optional objects for the osResource MIB."

    ::= { osResourcesMIBCompliances 1 }

-- ...................................................................
-- Conformance Groups 
-- ................................................................... 
 
osResourceMandatoryGroup  OBJECT-GROUP
    OBJECTS {
        osResourcesSupport
    }
    STATUS current 
    DESCRIPTION 
        "Mandatory Conformance group."
    ::= { osResourcesMIBGroups 1 }

osResourceOptGroup  OBJECT-GROUP 
    OBJECTS  { 
        osResourcesSupport,
        osResourceTcamRulesSize,
        osResourceTcamRulesGuaranteed,
        osResourceTcamRulesUsed,
        osResourceTcamRulesFreeGuaranteed,
        osResourceTcamRulesFreeOptional,
	osResourcePolicerEntriesTotal,
	osResourcePolicerEntriesUsed,
	osResourcePolicerEntriesFree,
	osResourceMacEntriesTotal,
	osResourceMacEntriesUsed,
	osResourceMacEntriesFree,
	osResourceTxSdmaMode,
	osResourceTxSdmaInterval,
	osResourceTxSdmaUsers
    } 
    STATUS current 
    DESCRIPTION 
        "Optional objects for the osResource MIB."
    ::= { osResourcesMIBGroups 2 } 

END


