CUMULUS-COUNTERS-MIB DEFINITIONS ::= BEGIN

--
-- System specific counters of the Cumulus enterprise MIB tree
--

IMPORTS
    OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
    enterprises, Counter32	        FROM SNMPv2-SMI
    InterfaceIndex, ifIndex	        FROM IF-MIB
    DateAndTime, DisplayString,
    cumulusMib                          FROM CUMULUS-SNMP-MIB
    TEXTUAL-CONVENTION 			FROM SNMPv2-TC;

sysSpecificCounters MODULE-IDENTITY
    LAST-UPDATED "201510310000Z"
    ORGANIZATION "Cumulus Networks"
    CONTACT-INFO
         "postal:   Cumulus Networks
                    185 E. Dana Street,
                    Mountain View, CA 94041

          web:      http://www.cumulusnetworks.com"
    DESCRIPTION
        "Cumulus Ethtool Interface Counters Table of the Cumulus enterprise MIB
	 tree. These table values come from Ethtool hardware interface statistics
         counters."
    REVISION     "201510310000Z"
    DESCRIPTION
        "Second version which adds multicast, broadcast, and other counters."
    REVISION     "201207230000Z"
    DESCRIPTION
        "Initial version containing portName, l3V4InDiscards,
         bufferOverflowDiscards, l3AclDiscards, l3v4BlackholeDiscards,
         and egressQOverflowDiscards, and egressNonQDiscards."
    ::= { cumulusMib 2 }


-- The discardCounters group lists certain selected detailed discard
-- counters, counters that are not called out in standard MIBs.

discardCounters		OBJECT IDENTIFIER ::= {sysSpecificCounters 1}

discardCountersTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DiscardCountersEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"This table breaks out ingress packet discards into more
	reason-specific discard counters."
    ::= { discardCounters 1 }

discardCountersEntry OBJECT-TYPE
    SYNTAX      DiscardCountersEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"Reason-specific ingress discard counters indexed by ifIndex"
    INDEX { ifIndex }
    ::= { discardCountersTable 1 }

--
-- The counters are all Counter32 instead of Counter64 because of
-- limitations in the pass persist protocol.
--

DiscardCountersEntry ::=
	SEQUENCE {
		portName                DisplayString,
		l3v4InDiscards		Counter32,
		bufferOverflowDiscards	Counter32,
		l3AclDiscards		Counter32,
		l3v4BlackholeDiscards	Counter32,
		egressQOverflowDiscards Counter32,
		egressNonQDiscards      Counter32
	}

	portName OBJECT-TYPE
	    SYNTAX      DisplayString
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Port name"
	    ::= { discardCountersEntry 1 }


	l3v4InDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Number of inbound IPv4 packets discarded
		by the routing engine."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 2 }

	bufferOverflowDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Number of inbound packets discarded due to
		ingress buffer overflow."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 3 }

	l3AclDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Number of inbound IPv4 packets discarded
		due to ingress ACL table."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 4 }

	l3v4BlackholeDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Number of inbound packets discarded due to
		match on a blackhole route.  This is currently unsupported."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 5 }

	egressQOverflowDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Number of packets discarded due to egress queue overflow."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 6 }

	egressNonQDiscards OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"Total number of packets discarded on egress due to reasons
                reasons other than queue overflow. With IF MIB's ifOutDiscards
                not accounting for certain specific drops, this one accounts
	        for drops seen in the egress pipeline of the system that were
                not because of egress queue overflow drops."
	    DEFVAL { 0 }
	    ::= { discardCountersEntry 7 }


interfaceCounters		OBJECT IDENTIFIER ::= {sysSpecificCounters 2}

interfaceCountersTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF InterfaceCountersEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"This table shows interface counters."
    ::= { interfaceCounters 1 }

interfaceCountersEntry OBJECT-TYPE
    SYNTAX      InterfaceCountersEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"Interface counters indexed by ifIndex"
    INDEX { ifIndex }
    ::= { interfaceCountersTable 1 }

--
-- The counters are all Counter32 instead of Counter64 because of
-- limitations in the pass persist protocol.
--

InterfaceCountersEntry ::=
	SEQUENCE {
		portName          DisplayString,
		intInOctets	  Counter32,
		intInUcastPkts	  Counter32,
		intInBcastPkts	  Counter32,
		intInMcastPkts	  Counter32,
		intOutOctets	  Counter32,
		intOutUcastPkts	  Counter32,
		intOutBcastPkts	  Counter32,
		intOutMcastPkts	  Counter32
	}

	portName OBJECT-TYPE
	    SYNTAX      DisplayString
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The port name"
	    ::= { interfaceCountersEntry 1 }

	intInOctets OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of input octets on the interface."
	    ::= { interfaceCountersEntry 2 }

	intInUcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of input unicast packets on the interface."
	    ::= { interfaceCountersEntry 3 }

	intInBcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of input broadcast packets on the interface."
	    ::= { interfaceCountersEntry 4 }

	intInMcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of input multicast packets on the interface."
	    ::= { interfaceCountersEntry 5 }

	intOutOctets OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of output octets on the interface."
	    ::= { interfaceCountersEntry 6 }

	intOutUcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of output unicast packets on the interface."
	    ::= { interfaceCountersEntry 7 }

	intOutBcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of output broadcast packets on the interface."
	    ::= { interfaceCountersEntry 8 }

	intOutMcastPkts  OBJECT-TYPE
	    SYNTAX      Counter32
	    MAX-ACCESS  read-only
	    STATUS      current
	    DESCRIPTION
		"The number of output multicast packets on the interface."
	    ::= { interfaceCountersEntry 9 }

END
