-- Copyright (c) 2013 Arista Networks, Inc.  All rights reserved.
ARISTA-PFC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Counter64, 
    Integer32                                FROM SNMPv2-SMI
    TEXTUAL-CONVENTION                       FROM SNMPv2-TC
    InterfaceIndex                           FROM IF-MIB
    MODULE-COMPLIANCE,
    OBJECT-GROUP                             FROM SNMPv2-CONF   -- [RFC2580]
    aristaMibs                               FROM ARISTA-SMI-MIB;

aristaPfcMIB MODULE-IDENTITY
    LAST-UPDATED "201302280000Z"    -- 02/28/2013 00:00GMT
    ORGANIZATION "Arista Networks, Inc."
    CONTACT-INFO
        "Arista Networks, Inc.

         Postal: 5470 Great America Parkway
                 Santa Clara, CA 95054

         Tel: +1 408 547-5500

         E-mail: snmp@aristanetworks.com"
    DESCRIPTION
    "Extensions for managing IEEE 802.1Qbb Priority-based Flow Control on
     Arista devices.  This module extends IEEE8021-PFC-MIB by providing 
     per class-of-service information for the supported Arista platforms."
    REVISION       "201302280000Z"    -- 02/28/2013 00:00GMT
    DESCRIPTION    "Initial version."
    ::= { aristaMibs 11 }

aristaPfc OBJECT IDENTIFIER ::= { aristaPfcMIB 1 }
aristaPfcConformance OBJECT IDENTIFIER ::= { aristaPfcMIB 2 }

--
-- Textual Conventions
--
AristaPfcCOSIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION
        "A unique value for each Ethernet class-of-service priority"
    SYNTAX      Integer32 (0..7)

---
--- Per-priority PFC Table
---
aristaPfcPriorityTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AristaPfcPriorityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains the per class-of-service priority-flow-control
        information of an interface."
    ::= { aristaPfc 1 }

aristaPfcPriorityEntry OBJECT-TYPE
    SYNTAX      AristaPfcPriorityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"A list of attributes of each ingress class-of-service of an interface."
    INDEX   { aristaPfcIfIndex, aristaPfcPriorityIndex }
    ::= { aristaPfcPriorityTable 1 }

AristaPfcPriorityEntry ::= SEQUENCE {
    aristaPfcIfIndex             InterfaceIndex,
    aristaPfcPriorityIndex       AristaPfcCOSIndex,
    aristaPfcPriorityRequests    Counter64,
    aristaPfcPriorityIndications Counter64 
}

aristaPfcIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"The interface identified by a particular value of
         this index is the same interface as identified
         by the same value of ifIndex."
    ::= { aristaPfcPriorityEntry 1 }

aristaPfcPriorityIndex OBJECT-TYPE
    SYNTAX      AristaPfcCOSIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The Ethernet class-of-service index for accessing 
        the per-priority information of an interface."
    ::= { aristaPfcPriorityEntry 2 }

aristaPfcPriorityRequests OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "Requests"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A count of the invoked PFC M_CONTROL.request primitives with
         this priority class asserted.

         Discontinuities in the value of this counter can occur at
         re-initialization of the management system, and at other
         times as indicated by the value of
         ifCounterDiscontinuityTime."
    ::= { aristaPfcPriorityEntry 3 }

aristaPfcPriorityIndications OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "Indications"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A count of the received PFC M_CONTROL.indication primitives
         with this priority class asserted.

         Discontinuities in the value of this counter can occur at
         re-initialization of the management system, and at other
         times as indicated by the value of
         ifCounterDiscontinuityTime."
    ::= { aristaPfcPriorityEntry 4 }

aristaPfcCompliances OBJECT IDENTIFIER ::= { aristaPfcConformance 1 }
aristaPfcGroups OBJECT IDENTIFIER ::= { aristaPfcConformance 2 }

aristaPfcCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION
        "The compliance statement for Arista switches that support
        Priority Flow Control (PFC)."
    MODULE -- this module
    MANDATORY-GROUPS { aristaPfcGroup }

    ::= { aristaPfcCompliances 1 }

aristaPfcGroup OBJECT-GROUP
    OBJECTS {
            aristaPfcPriorityRequests,
            aristaPfcPriorityIndications
    }
    STATUS        current
    DESCRIPTION
        "The group of required PFC objects."
    ::= { aristaPfcGroups 1 }

END
