-- ARISTA-ASIC-COUNTERS-MIB: Arista counters information
-- Copyright (c) 2021 Arista Networks, Inc.  All rights reserved.

ARISTA-ASIC-COUNTERS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Counter64                          FROM SNMPv2-SMI
    CounterBasedGauge64                FROM HCNUM-TC
    DisplayString, TimeStamp           FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
    aristaMibs                         FROM ARISTA-SMI-MIB;

aristaAsicCountersMIB MODULE-IDENTITY
    LAST-UPDATED "202102030000Z"
    ORGANIZATION "Arista Networks, Inc."
    CONTACT-INFO
        "Arista Networks, Inc.

         Postal: 5453 Great America Parkway
                 Santa Clara, CA 95054

         Tel: +1 408 547-5500

         E-mail: snmp@arista.com"
    DESCRIPTION
            "The MIB module for various counters on Arista devices."
    REVISION    "202102030000Z"
    DESCRIPTION "Initial version."
    ::= { aristaMibs 29 }

aristaAsicCountersMibNotifications OBJECT IDENTIFIER
    ::= { aristaAsicCountersMIB 0 }

aristaAsicCountersMibObjects OBJECT IDENTIFIER
    ::= { aristaAsicCountersMIB 1 }

aristaAsicCountersMibConformance OBJECT IDENTIFIER
    ::= { aristaAsicCountersMIB 2 }

-- Notifications --

-- Objects --

-- Hardware drop counters --

aristaAsicInternalDropStatsRatesSupported OBJECT-TYPE
    SYNTAX BITS {
        last1Min(0),
        last10Min(1),
        last1Hr(2),
        last1Day(3),
        last1Week(4)
    }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Bitmap representing which rate objects from the
        aristaAsicInternalDropStatsTable are supported. The values defined
        here correspond to the objects
        aristaAsicInternalDropStats{1Min,10Min,1Hr,1Day,1Week}
        respectively. For every value in the bitmap, if it is set, then the
        value of the corresponding object in the
        aristaAsicInternalDropStatsTable is valid; otherwise, the value of
        the object has no meaning and should be ignored."
    ::= { aristaAsicCountersMibObjects 1 }

aristaAsicInternalDropStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AristaAsicInternalDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
                "This table contains statistics for internal drop events."
    ::= { aristaAsicCountersMibObjects 2 }

aristaAsicInternalDropStatsEntry OBJECT-TYPE
    SYNTAX      AristaAsicInternalDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
                "A single conceptual row providing internal drop event
                statistics."
    INDEX       { aristaAsicInternalDropStatsChipName,
                  aristaAsicInternalDropStatsCounterName }
    ::= { aristaAsicInternalDropStatsTable 1 }

AristaAsicInternalDropStatsEntry ::= SEQUENCE {
    aristaAsicInternalDropStatsChipName         DisplayString,
    aristaAsicInternalDropStatsCounterName      DisplayString,
    aristaAsicInternalDropStatsCount            Counter64,
    aristaAsicInternalDropStats1Min             CounterBasedGauge64,
    aristaAsicInternalDropStats10Min            CounterBasedGauge64,
    aristaAsicInternalDropStats1Hr              CounterBasedGauge64,
    aristaAsicInternalDropStats1Day             CounterBasedGauge64,
    aristaAsicInternalDropStats1Week            CounterBasedGauge64,
    aristaAsicInternalDropStatsFirstTime        TimeStamp,
    aristaAsicInternalDropStatsLastTime         TimeStamp 
}

aristaAsicInternalDropStatsChipName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "Identifier that represents the chip associated with this drop
         event."
    ::= { aristaAsicInternalDropStatsEntry 1 }

aristaAsicInternalDropStatsCounterName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..64))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
         "Identifier that represents the name of this drop event."
    ::= { aristaAsicInternalDropStatsEntry 2 }

aristaAsicInternalDropStatsCount OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The current count for this drop event."
    ::= { aristaAsicInternalDropStatsEntry 3 }

aristaAsicInternalDropStats1Min OBJECT-TYPE
    SYNTAX      CounterBasedGauge64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The number of drop events of this type that have happened within
         the last 1 minute."
    ::= { aristaAsicInternalDropStatsEntry 4 }

aristaAsicInternalDropStats10Min OBJECT-TYPE
    SYNTAX      CounterBasedGauge64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The number of drop events of this type that have happened within
         the last 10 minutes."
    ::= { aristaAsicInternalDropStatsEntry 5 }

aristaAsicInternalDropStats1Hr OBJECT-TYPE
    SYNTAX      CounterBasedGauge64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The number of drop events of this type that have happened within
         the last hour."
    ::= { aristaAsicInternalDropStatsEntry 6 }

aristaAsicInternalDropStats1Day OBJECT-TYPE
    SYNTAX      CounterBasedGauge64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The number of drop events of this type that have happened within
         the last day."
    ::= { aristaAsicInternalDropStatsEntry 7 }

aristaAsicInternalDropStats1Week OBJECT-TYPE
    SYNTAX      CounterBasedGauge64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The number of drop events of this type that have happened within
         the last week."
    ::= { aristaAsicInternalDropStatsEntry 8 }

aristaAsicInternalDropStatsFirstTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The time of the first occurence of this drop event."
    ::= { aristaAsicInternalDropStatsEntry 9 }

aristaAsicInternalDropStatsLastTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "The time of the latest occurence of this drop event."
    ::= { aristaAsicInternalDropStatsEntry 10 }

-- Conformance and Compliance --

aristaAsicCountersMibCompliances OBJECT IDENTIFIER
    ::= { aristaAsicCountersMibConformance 1 }

aristaAsicCountersMibGroups OBJECT IDENTIFIER
    ::= { aristaAsicCountersMibConformance 2 }

aristaAsicCountersMibCompliance MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for Arista switches that implement
        the ARISTA-ASIC-COUNTERS-MIB."
    MODULE     -- this module
    MANDATORY-GROUPS {
        aristaAsicCountersMibDropScalarGroup,
        aristaAsicCountersMibDropTableGroup
    }
    ::= { aristaAsicCountersMibCompliances 1 }

aristaAsicCountersMibDropScalarGroup OBJECT-GROUP
    OBJECTS {
        aristaAsicInternalDropStatsRatesSupported
    }
    STATUS      current
    DESCRIPTION
        "The collection of scalar objects that provide internal drop
        statistics."
    ::= { aristaAsicCountersMibGroups 1 }

aristaAsicCountersMibDropTableGroup OBJECT-GROUP
    OBJECTS {
        aristaAsicInternalDropStatsCount,
        aristaAsicInternalDropStats1Min,
        aristaAsicInternalDropStats10Min,
        aristaAsicInternalDropStats1Hr,
        aristaAsicInternalDropStats1Day,
        aristaAsicInternalDropStats1Week,
        aristaAsicInternalDropStatsFirstTime,
        aristaAsicInternalDropStatsLastTime
    }
    STATUS      current
    DESCRIPTION
        "The collection of tabular objects that provide internal drop
        statistics."
    ::= { aristaAsicCountersMibGroups 2 }

END
