CUSTOMIF-STATS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    OBJECT-TYPE, enterprises,
    Counter32, Counter64, Integer32,
    NOTIFICATION-TYPE    FROM SNMPv2-SMI
    DisplayString,DateAndTime   FROM SNMPv2-TC
    ifIndex FROM IF-MIB
    ipi FROM OCNOS-IPI-MODULE-MIB;

customIfMib MODULE-IDENTITY
    LAST-UPDATED "201709181200Z"  -- Sep 30, 2017 11:30:00 GMT
    ORGANIZATION "IP Infusion"
    CONTACT-INFO "www.ipinfusion.com"
    DESCRIPTION
       "IPI QUEUE STATISTICS MIB. "
    ::= { ipi 103 }

customIfTable     OBJECT IDENTIFIER ::={ customIfMib 1}
cpuStatsObjects   OBJECT IDENTIFIER ::={ customIfMib 2}
customIfAlarmObjects   OBJECT IDENTIFIER ::={ customIfMib 3}

ifDropStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IFDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing drop statistics per interface
             given by the interface index."
    ::= { customIfTable 1 }

ifDropStatsEntry    OBJECT-TYPE
    SYNTAX      IFDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing drop statistics per interface
             given by the interface index."
    INDEX   { ifIndex }
    ::= { ifDropStatsTable 1 }

IFDropStatsEntry ::=
    SEQUENCE {
             ifRxBadCrcErrors                                Counter64,
             ifRxBadCrcLastIncrement                         Counter64,
             ifRxBadCrcLastIncrementTime                     DateAndTime,
             ifRxUndersizeErrors                             Counter64,
             ifRxUndersizeLastIncrement                      Counter64,
             ifRxUndersizeLastIncrementTime                  DateAndTime,
             ifRxOversizeErrors                              Counter64,
             ifRxOversizeLastIncrement                       Counter64,
             ifRxOversizeLastIncrementTime                   DateAndTime,
             ifRxFragmentErrors                              Counter64,
             ifRxFragmentLastIncrement                       Counter64,
             ifRxFragmentLastIncrementTime                   DateAndTime,
             ifRxJabberErrors                                Counter64,
             ifRxJabberLastIncrement                         Counter64,
             ifRxJabberLastIncrementTime                     DateAndTime,
             ifRxPortBlockDrops                              Counter64,
             ifRxPortBlockLastIncrement                      Counter64,
             ifRxPortBlockLastIncrementTime                  DateAndTime,
             ifRxVlanDiscards                                Counter64,
             ifRxVlanDiscardsLastIncrement                   Counter64,
             ifRxVlanDiscardsLastIncrementTime               DateAndTime,
             ifRxAclOrQosDrops                               Counter64,
             ifRxAclOrQosDropsLastIncrement                  Counter64,
             ifRxAclOrQosDropsLastIncrementTime              DateAndTime,
             ifRxPolicyDiscards                              Counter64,
             ifRxPolicyDiscardsLastIncrement                 Counter64,
             ifRxPolicyDiscardsLastIncrementTime             DateAndTime,
             ifRxEgrPortUnavail                              Counter64,
             ifRxEgrPortUnavailLastIncrement                 Counter64,
             ifRxEgrPortUnavailLastIncrementTime             DateAndTime,
             ifRxIBPDiscards                                 Counter64,
             ifRxIBPDiscardsLastIncrement                    Counter64,
             ifRxIBPDiscardsLastIncrementTime                DateAndTime,
             ifTxPortBlockDrops                              Counter64,
             ifTxPortBlockDropsLastIncrement                 Counter64,
             ifTxPortBlockDropsLastIncrementTime             DateAndTime,
             ifTxVlanDiscards                                Counter64,
             ifTxVlanDiscardsLastIncrement                   Counter64,
             ifTxVlanDiscardsLastIncrementTime               DateAndTime,
             ifTxTtlDiscards                                 Counter64,
             ifTxTtlDiscardsLastIncrement                    Counter64,
             ifTxTtlDiscardsLastIncrementTime                DateAndTime,
             ifTxUnknownDiscards                             Counter64,
             ifTxUnknownDiscardsLastIncrement                Counter64,
             ifTxUnknownDiscardsLastIncrementTime            DateAndTime,
             ifTxUcastQDrops                                 Counter64,
             ifTxUcastQDropsLastIncrement                    Counter64,
             ifTxUcastQDropsLastIncrementTime                DateAndTime,
             ifTxMcastQDrops                                 Counter64,
             ifTxMcastQDropsLastIncrement                    Counter64,
             ifTxMcastQDropsLastIncrementTime                DateAndTime,
             ifObmDrops                                      Counter64,
             ifObmDropsLastIncrement                         Counter64,
             ifObmDropsLastIncrementTime                     DateAndTime,
             ifObmDropsCntrSize                              INTEGER
            }

ifRxBadCrcErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets which are chosen to be discarded,
            since the packets have bad or no CRC."
    ::= { ifDropStatsEntry 1 }

ifRxBadCrcLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets which are chosen to be discarded,
            since the packets have bad or no CRC.
            This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 2 }

ifRxBadCrcLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Bad CRC packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 3 }

ifRxUndersizeErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a good FCS value."
    ::= { ifDropStatsEntry 4 }

ifRxUndersizeLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a good FCS value.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 5 }

ifRxUndersizeLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Undersize packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 6 }

ifRxOversizeErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of inbound packets whose size are more than maximum
            transmission unit size."
    ::= { ifDropStatsEntry 7 }

ifRxOversizeLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Last inbound packets whose size are more than maximum
            transmission unit size.
            This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 8 }

ifRxOversizeLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Oversize packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 9 }

ifRxFragmentErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a bad FCS value."
    ::= { ifDropStatsEntry 10 }

ifRxFragmentLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a bad FCS value.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 11 }

ifRxFragmentLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Fragment error packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 12 }

ifRxJabberErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of inbound packets whose size are more than maximum
            transmission unit size (which excludes framing bits, but include
            FCS) and have a bad FCS value."
    ::= { ifDropStatsEntry 13 }

ifRxJabberLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Last inbound packets whose size are more than maximum
            transmission unit size (which excludes framing bits, but include
            FCS) and have a bad FCS value.
            This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 14 }

ifRxJabberLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Jabber packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 15 }

ifRxPortBlockDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of packets received when the ingress interface is not in
          STP forwarding state."
    ::= { ifDropStatsEntry 16 }

ifRxPortBlockLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of packets received when the ingress interface is not in
          STP forwarding state.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 17 }

ifRxPortBlockLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of packets received when interface not in
             forwarding state.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 18 }

ifRxVlanDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of VLAN tagged packets received on a port which is not
           a member of the VLAN or untagged packets received on a trunk port."
    ::= { ifDropStatsEntry 19 }

ifRxVlanDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of VLAN tagged packets received on a port which is not
           a member of the VLAN or untagged packets received on a trunk port.
           This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 20 }

ifRxVlanDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of VLAN discarded packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 21 }

ifRxAclOrQosDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Incoming packets match a field processing entry with a drop or color
          drop action, such as:
           a) User-configured ACL that denies traffic
           b) Service policy with a police action that drops the traffic received
               at a rate higher than the configured limit."
    ::= { ifDropStatsEntry 22 }

ifRxAclOrQosDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number Incoming packets discarded due to Acl/Qos.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 23 }

ifRxAclOrQosDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Acl/QoS discarded packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 24 }

ifRxPolicyDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Inbound packets those are discarded for Device policies violation,
          such as a storm control rate violation."
    ::= { ifDropStatsEntry 25 }

ifRxPolicyDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Inbound packets those are discarded for Device policies violation,
          such as a storm control rate violation.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 26 }

ifRxPolicyDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Policy violation packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 27 }

ifRxEgrPortUnavail  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded since No output port can be determined for this packet.
          This counter increments along with other counter types in this table
          because it is a catchall for multiple types of discards such as,
            a) VLAN check failed
            b) MTU check failed
            c) ACL/QoS drops
            d) Policy discards
            e) Source MAC is null
            f) Destination IP/source IP address is null
            g) Source MAC and destination MAC address are the same
            h) Forwarding lookup failure."
    ::= { ifDropStatsEntry 28 }

ifRxEgrPortUnavailLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of packets discarded in EgrPortUnavail category.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 29 }

ifRxEgrPortUnavailLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Egress Port Unavailability packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 30 }

ifRxIBPDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Inbound packets that are chosen to be discarded with Ingress Back
           Pressure (ingress congestion) when the ingress packet buffer is
           full for an interface."
    ::= { ifDropStatsEntry 31 }

ifRxIBPDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last Inbound packets that are chosen to be discarded with Ingress Back
           Pressure (ingress congestion) when the ingress packet buffer is
           full for an interface.
           This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 32 }

ifRxIBPDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of IBP Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 33 }

ifTxPortBlockDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of packets discarded when the egress interface is not in
          STP forwarding state."
    ::= { ifDropStatsEntry 34 }

ifTxPortBlockDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of packets discarded when the egress interface is not in
          STP forwarding state.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 35 }

ifTxPortBlockDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Discards when egress interface is not in
             forwarding state.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 36 }

ifTxVlanDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded because an invalid VLAN tag is encountered at an
          egress interface."
    ::= { ifDropStatsEntry 37 }

ifTxVlanDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets discarded because of invalid VLAN tag in
          egress interface.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 38 }

ifTxVlanDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Vlan Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 39 }

ifTxTtlDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded because the Time-To Live (TTL) of the outgoing
          packet has passed."
    ::= { ifDropStatsEntry 40 }

ifTxTtlDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets discarded since TTL of the outgoing
          packet has passed.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 41 }

ifTxTtlDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx TTL Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 42 }

ifTxUnknownDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded for other possible reasons like ACL drop in egress
          or a policer drop in egress. Discards caused by congestion at queues
          and drops at queues are not counted under unknown discards."
    ::= { ifDropStatsEntry 43 }

ifTxUnknownDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Tx Packets discarded for other possible reasons like ACL drop in egress
          or a policer drop in egress. Discards caused by congestion at queues
          and drops at queues are not counted under unknown discards.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 44 }

ifTxUnknownDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Unknown Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 45 }

ifTxUcastQDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets dropped in the unicast queues because of congestion."
    ::= { ifDropStatsEntry 46 }

ifTxUcastQDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Packets dropped in the unicast queues because of congestion.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 47 }

ifTxUcastQDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Unicast queue Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 48 }

ifTxMcastQDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets dropped in the multicast queues because of congestion."
    ::= { ifDropStatsEntry 49 }

ifTxMcastQDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets dropped in the multicast queues because
          of congestion.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 50 }

ifTxMcastQDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Multicast queue Discards.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 51 }

ifObmDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets dropped because of over subscription.
         These are not included in total drops and reset on port flaps"
    ::= { ifDropStatsEntry 52 }

ifObmDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets dropped because of over subscription.
          This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 53 }

ifObmDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of OBM dropped packets.
             This is Updated at every 5sec interval."
    ::= { ifDropStatsEntry 54 }

ifObmDropsCntrSize  OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Size of over subscription counters in bytes."
    ::= { ifDropStatsEntry 55 }

ifQueueStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IFQueueStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing queue statistics per interface
             given by the interface index."
    ::= { customIfTable 2 }

ifQueueStatsEntry    OBJECT-TYPE
    SYNTAX      IFQueueStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing queue statistics per interface
             given by the interface index."
    INDEX   { ifIndex, queuetype, queueId }
    ::= { ifQueueStatsTable 1 }

IFQueueStatsEntry ::=
    SEQUENCE {
             queuetype                   INTEGER,
             queueId                     Integer32,
             queueName                   DisplayString,
             queueSize                   Counter64,
             ifQueueTxPkts               Counter64,
             ifQueueTxBytes              Counter64,
             ifQueueDropPkts             Counter64,
             ifQueueDropBytes            Counter64
             }

queuetype  OBJECT-TYPE
    SYNTAX      INTEGER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
          "The type of the queue in the interface either unicast/multicast/
          priority group. 1-unicast, 2-multicast, 3-priority group."
    ::= { ifQueueStatsEntry 1 }

queueId  OBJECT-TYPE
    SYNTAX      Integer32 ( 1 .. 8)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The queue Id which indexes the queue stats entry for unicast,
            multicast and priority group queues."
    ::= { ifQueueStatsEntry 2 }

queueName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Queue Name corresponding to the QueueId."
    ::= { ifQueueStatsEntry 3 }

queueSize  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The size of the queue, referred by the ifIndex and queueId."
    ::= { ifQueueStatsEntry 4 }

ifQueueTxPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of outbound packets that are transmitted through the
            queue on an interface."
    ::= { ifQueueStatsEntry 5 }

ifQueueTxBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of outbound bytes that are transmitted through the
            queue on an interface."
    ::= { ifQueueStatsEntry 6 }

ifQueueDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of tx packets that are dropped in the
            queue on an interface."
    ::= { ifQueueStatsEntry 7 }

ifQueueDropBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of tx bytes that are dropped in the
            queue on an interface."
    ::= { ifQueueStatsEntry 8 }


ifProtocolStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfProtocolStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing protocol statistics per interface
             given by the interface index."
    ::= { customIfTable 3 }

ifProtocolStatsEntry    OBJECT-TYPE
    SYNTAX      IfProtocolStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing protocol statistics per interface
             given by the interface index."
    INDEX   { ifIndex }
    ::= { ifProtocolStatsTable 1 }

IfProtocolStatsEntry ::=
    SEQUENCE {
             ifLacpProtocolPkts          Counter32,
             ifStpProtocolPkts           Counter32,
             ifLldpProtocolPkts          Counter32,
             ifBgpProtocolPkts           Counter32,
             ifRipProtocolPkts           Counter32,
             ifOspfProtocolPkts          Counter32,
             ifIsisProtocolPkts          Counter32,
             ifEfmProtocolPkts           Counter32,
             ifSlowProtocolPkts          Counter32,
             ifElmiProtocolPkts          Counter32,
             ifLdpOrRsvpProtocolPkts     Counter32,
             ifTrillProtocolPkts         Counter32,
             ifIcmp6ProtocolPkts         Counter32,
             ifArpProtocolPkts           Counter32,
             ifDhcpProtocolPkts          Counter32,
             ifVxLanProtocolPkts         Counter32,
             ifIgmpProtocolPkts          Counter32,
             ifVrrpProtocolPkts          Counter32,
             ifPimProtocolPkts           Counter32,
             ifEapolProtocolPkts         Counter32
             }

ifLacpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "LACP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 1 }

ifStpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "STP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 2 }

ifLldpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "LLDP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 3 }

ifBgpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "BGP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 4 }

ifRipProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "RIP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 5 }

ifOspfProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "OSPF Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 6 }

ifIsisProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "ISIS Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 7 }

ifEfmProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "EFM Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 8 }

ifSlowProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "SLOW Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 9 }

ifElmiProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "ELMI Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 10 }

ifLdpOrRsvpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "LDP/RSVP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 11 }

ifTrillProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "TRILL Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 12 }

ifIcmp6ProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "ICMP6 Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 13 }

ifArpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "ARP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 14 }

ifDhcpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "DHCP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 15 }

ifVxLanProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "VXLAN Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 16 }

ifIgmpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "IGMP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 17 }

ifVrrpProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "VRRP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 18 }

ifPimProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "PIM Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 19 }

ifEapolProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "EAPOL Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 20 }

ifRateStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfRateStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing Tx and Rx Rate per interface
             given by the interface index."
    ::= { customIfTable 4 }

ifRateStatsEntry    OBJECT-TYPE
    SYNTAX      IfRateStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing Tx and Rx Rate per interface
             given by the interface index."
    INDEX   { ifIndex }
    ::= { ifRateStatsTable 1 }

IfRateStatsEntry  ::=
    SEQUENCE {
             ifRxRateBps    Counter64,
             ifRxRatePps    Counter64,
             ifTxRateBps    Counter64,
             ifTxRatePps    Counter64
             }

ifRxRateBps  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Received bytes in bits/sec in the port referred by the index."
    ::= { ifRateStatsEntry 1 }

ifRxRatePps  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Received bytes in packets/sec in the port referred by the index."
    ::= { ifRateStatsEntry 2 }

ifTxRateBps  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Transmitted bytes in bits/sec in the port referred by the index."
    ::= { ifRateStatsEntry 3 }

ifTxRatePps  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Transmitted bytes in packets/sec in the port referred by the index."
    ::= { ifRateStatsEntry 4 }

ifFecStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfFecStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing FEC stats per interface
             given by the interface index."
    ::= { customIfTable 5 }

ifFecStatsEntry    OBJECT-TYPE
    SYNTAX      IfFecStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing Fec stats per interface
             given by the interface index."
    INDEX   { ifIndex }
    ::= { ifFecStatsTable 1 }

IfFecStatsEntry  ::=
    SEQUENCE {
             ifFecMode                INTEGER,
             ifFecCorrectedBlocks     Counter32,
             ifFecUncorrectedBlocks   Counter32
             }

ifFecMode OBJECT-TYPE
    SYNTAX  INTEGER {
            off(0),
            on(1),
            auto(2),
            unsupported(3)
    }
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
            "An object that defines the mode of the
             optional FEC sublayer and reflects its state."
    ::= { ifFecStatsEntry 1 }

ifFecCorrectedBlocks  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "It is a count of corrected FEC blocks."
    ::= { ifFecStatsEntry 2 }

ifFecUncorrectedBlocks  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "It is a count of uncorrectable FEC blocks."
    ::= { ifFecStatsEntry 3 }

--- ###CPU STATISTICS GROUP ####

cpuPortDropStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF CPUPortDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing drop statistics for CPU port
             given by the CPU port."
    ::= { cpuStatsObjects 1 }

cpuPortDropStatsEntry    OBJECT-TYPE
    SYNTAX      CPUPortDropStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing drop statistics for CPU port
             given by the CPU port."
    INDEX   { cpuId }
    ::= { cpuPortDropStatsTable 1 }

CPUPortDropStatsEntry ::=
    SEQUENCE {
             cpuId                                 Integer32,
             cpuRxBadCrcErrors                     Counter64,
             cpuRxBadCrcLastIncrement              Counter64,
             cpuRxBadCrcLastIncrementTime          DateAndTime,
             cpuRxUndersizeErrors                  Counter64,
             cpuRxUndersizeLastIncrement           Counter64,
             cpuRxUndersizeLastIncrementTime       DateAndTime,
             cpuRxOversizeErrors                   Counter64,
             cpuRxOversizeLastIncrement            Counter64,
             cpuRxOversizeLastIncrementTime        DateAndTime,
             cpuRxFragmentErrors                   Counter64,
             cpuRxFragmentLastIncrement            Counter64,
             cpuRxFragmentLastIncrementTime        DateAndTime,
             cpuRxJabberErrors                     Counter64,
             cpuRxJabberLastIncrement              Counter64,
             cpuRxJabberLastIncrementTime          DateAndTime,
             cpuRxPortBlockDrops                   Counter64,
             cpuRxPortBlockLastIncrement           Counter64,
             cpuRxPortBlockLastIncrementTime       DateAndTime,
             cpuRxVlanDiscards                     Counter64,
             cpuRxVlanDiscardsLastIncrement        Counter64,
             cpuRxVlanDiscardsLastIncrementTime    DateAndTime,
             cpuRxAclOrQosDrops                    Counter64,
             cpuRxAclOrQosDropsLastIncrement       Counter64,
             cpuRxAclOrQosDropsLastIncrementTime   DateAndTime,
             cpuRxPolicyDiscards                   Counter64,
             cpuRxPolicyDiscardsLastIncrement      Counter64,
             cpuRxPolicyDiscardsLastIncrementTime  DateAndTime,
             cpuRxEgrPortUnavail                   Counter64,
             cpuRxEgrPortUnavailLastIncrement      Counter64,
             cpuRxEgrPortUnavailLastIncrementTime  DateAndTime,
             cpuRxIBPDiscards                      Counter64,
             cpuRxIBPDiscardsLastIncrement         Counter64,
             cpuRxIBPDiscardsLastIncrementTime     DateAndTime,
             cpuTxPortBlockDrops                   Counter64,
             cpuTxPortBlockDropsLastIncrement      Counter64,
             cpuTxPortBlockDropsLastIncrementTime  DateAndTime,
             cpuTxVlanDiscards                     Counter64,
             cpuTxVlanDiscardsLastIncrement        Counter64,
             cpuTxVlanDiscardsLastIncrementTime    DateAndTime,
             cpuTxTtlDiscards                      Counter64,
             cpuTxTtlDiscardsLastIncrement         Counter64,
             cpuTxTtlDiscardsLastIncrementTime     DateAndTime,
             cpuTxUnknownDiscards                  Counter64,
             cpuTxUnknownDiscardsLastIncrement     Counter64,
             cpuTxUnknownDiscardsLastIncrementTime DateAndTime,
             cpuTxUcastQDrops                      Counter64,
             cpuTxUcastQDropsLastIncrement         Counter64,
             cpuTxUcastQDropsLastIncrementTime     DateAndTime,
             cpuTxMcastQDrops                      Counter64,
             cpuTxMcastQDropsLastIncrement         Counter64,
             cpuTxMcastQDropsLastIncrementTime     DateAndTime
            }

cpuId  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
           "cpuId is a unique number representing the CPU core."
    ::= { cpuPortDropStatsEntry 1 }

cpuRxBadCrcErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets which are chosen to be discarded,
            since the packets have bad or no CRC."
    ::= { cpuPortDropStatsEntry 2 }

cpuRxBadCrcLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets which are chosen to be discarded,
             since the packets have bad or no CRC.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 3 }

cpuRxBadCrcLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Bad CRC packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 4 }

cpuRxUndersizeErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a good FCS value."
    ::= { cpuPortDropStatsEntry 5 }

cpuRxUndersizeLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a good FCS value.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 6 }

cpuRxUndersizeLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Undersize packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 7 }

cpuRxOversizeErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of inbound packets whose size are more than maximum
            transmission unit size."
    ::= { cpuPortDropStatsEntry 8 }

cpuRxOversizeLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Last inbound packets whose size are more than maximum
            transmission unit size.
            This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 9 }

cpuRxOversizeLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Oversize packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 10 }

cpuRxFragmentErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a bad FCS value."
    ::= { cpuPortDropStatsEntry 11 }

cpuRxFragmentLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last inbound packets discarded whose size are less than
             64 octets (which exclude framing bits, but include the FCS)
             and have a bad FCS value.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 12 }

cpuRxFragmentLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Fragment error packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 13 }

cpuRxJabberErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of inbound packets whose size are more than maximum
            transmission unit size (which excludes framing bits, but include
            FCS) and have a bad FCS value."
    ::= { cpuPortDropStatsEntry 14 }

cpuRxJabberLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Last inbound packets whose size are more than maximum
            transmission unit size (which excludes framing bits, but include
            FCS) and have a bad FCS value.
            This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 15 }

cpuRxJabberLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Jabber packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 16 }

cpuRxPortBlockDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of packets received when the ingress interface is not in
          STP forwarding state."
    ::= { cpuPortDropStatsEntry 17 }

cpuRxPortBlockLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of packets received when the ingress interface is not in
           STP forwarding state.
           This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 18 }

cpuRxPortBlockLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of packets received when interface not in
             forwarding state.
             This is Updated at every 5sec interval."
    ::= {  cpuPortDropStatsEntry 19 }

cpuRxVlanDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of VLAN tagged packets received on a port which is not
           a member of the VLAN or untagged packets received on a trunk port."
    ::= { cpuPortDropStatsEntry 20 }

cpuRxVlanDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of VLAN tagged packets received on a port which is not
           a member of the VLAN or untagged packets received on a trunk port.
           This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 21 }

cpuRxVlanDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of VLAN discarded packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 22 }

cpuRxAclOrQosDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Incoming packets match a field processing entry with a drop or color
          drop action, such as:
           a) User-configured ACL that denies traffic
           b) Service policy with a police action that drops the traffic received
               at a rate higher than the configured limit."
    ::= { cpuPortDropStatsEntry 23 }

cpuRxAclOrQosDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number Incoming packets discarded due to Acl/Qos.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 24 }

cpuRxAclOrQosDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Acl/QoS discarded packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 25 }

cpuRxPolicyDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Inbound packets those are discarded for Device policies violation,
          such as a storm control rate violation."
    ::= { cpuPortDropStatsEntry 26 }

cpuRxPolicyDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Inbound packets those are discarded for Device policies violation,
          such as a storm control rate violation.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 27 }

cpuRxPolicyDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Policy violation packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 28 }

cpuRxEgrPortUnavail  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded since No output port can be determined for this packet.
          This counter increments along with other counter types in this table
          because it is a catchall for multiple types of discards such as,
            a) VLAN check failed
            b) MTU check failed
            c) ACL/QoS drops
            d) Policy discards
            e) Source MAC is null
            f) Destination IP/source IP address is null
            g) Source MAC and destination MAC address are the same
            h) Forwarding lookup failure."
    ::= { cpuPortDropStatsEntry 29 }

cpuRxEgrPortUnavailLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of packets discarded in EgrPortUnavail category.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 30 }

cpuRxEgrPortUnavailLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Egress Port Unavailability packets.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 31 }

cpuRxIBPDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Inbound packets that are chosen to be discarded with Ingress Back
           Pressure (ingress congestion) when the ingress packet buffer is
           full for an interface."
    ::= { cpuPortDropStatsEntry 32 }

cpuRxIBPDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last Inbound packets that are chosen to be discarded with Ingress Back
           Pressure (ingress congestion) when the ingress packet buffer is
           full for an interface.
           This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 33 }

cpuRxIBPDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of IBP Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 34 }

cpuTxPortBlockDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "The number of packets discarded when the egress interface is not in
          STP forwarding state."
    ::= { cpuPortDropStatsEntry 35 }

cpuTxPortBlockDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
          "Last number of packets discarded when the egress interface is not in
          STP forwarding state.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 36 }

cpuTxPortBlockDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Discards when egress interface is not in
             forwarding state.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 37 }

cpuTxVlanDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded because an invalid VLAN tag is encountered at an
          egress interface."
    ::= { cpuPortDropStatsEntry 38 }

cpuTxVlanDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets discarded because of invalid VLAN tag in
          egress interface.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 39 }

cpuTxVlanDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Vlan Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 40 }

cpuTxTtlDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded because the Time-To Live (TTL) of the outgoing
          packet has passed."
    ::= { cpuPortDropStatsEntry 41 }

cpuTxTtlDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets discarded since TTL of the outgoing
          packet has passed.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 42 }

cpuTxTtlDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx TTL Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 43 }

cpuTxUnknownDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets discarded for other possible reasons like ACL drop in egress
          or a policer drop in egress. Discards caused by congestion at queues
          and drops at queues are not counted under unknown discards."
    ::= { cpuPortDropStatsEntry 44 }

cpuTxUnknownDiscardsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Tx Packets discarded for other possible reasons like ACL drop in egress
          or a policer drop in egress. Discards caused by congestion at queues
          and drops at queues are not counted under unknown discards.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 45 }

cpuTxUnknownDiscardsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Unknown Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 46 }

cpuTxUcastQDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets dropped in the unicast queues because of congestion."
    ::= { cpuPortDropStatsEntry 47 }

cpuTxUcastQDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last Packets dropped in the unicast queues because of congestion.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 48 }

cpuTxUcastQDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Unicast queue Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 49 }

cpuTxMcastQDrops  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Packets dropped in the multicast queues because of congestion."
    ::= { cpuPortDropStatsEntry 50 }

cpuTxMcastQDropsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Last number of Packets dropped in the multicast queues because
          of congestion.
          This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 51 }

cpuTxMcastQDropsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Multicast queue Discards.
             This is Updated at every 5sec interval."
    ::= { cpuPortDropStatsEntry 52 }


cpuQStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF CpuQStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing drop statistics for CPU interface."
    ::= { cpuStatsObjects 2 }

cpuQStatsEntry    OBJECT-TYPE
    SYNTAX      CpuQStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing drop statistics for CPU interface."
    INDEX   { cpuId, cpuqueueId }
    ::= { cpuQStatsTable 1 }

CpuQStatsEntry ::=
    SEQUENCE {
             cpuqueueId                        Integer32,
             cpuQueueName                      DisplayString,
             cpuQueueSize                      Counter64,
             cpuTxPkts                         Counter64,
             cpuTxBytes                        Counter64,
             cpuTxDroppedPkts                  Counter64,
             cpuTxDroppedBytes                 Counter64,
             cpuTxDroppedPktsLastIncrement     Counter64,
             cpuTxDroppedPktsLastIncrementTime DateAndTime,
             cpuTxRatePercent                  Integer32,
             cpuTxBps                          Integer32,
             cpuTxPps                          Integer32
             }

cpuqueueId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
           "cpuqueueId is a unique number representing each queue in CPU."
    ::= { cpuQStatsEntry 1 }

cpuQueueName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "CPU Queue Name corresponding to the QueueId."
    ::= { cpuQStatsEntry 2 }

cpuQueueSize  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "CPU Queue Size corresponding to the QueueId."
    ::= { cpuQStatsEntry 3 }

cpuTxPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Tx Pkts transmitted from the corresponding CPU queue."
    ::= { cpuQStatsEntry 4 }

cpuTxBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Tx Bytes transmitted from the corresponding CPU queue."
    ::= { cpuQStatsEntry 5 }

cpuTxDroppedPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Dropped Pkts in the corresponding CPU queue."
    ::= { cpuQStatsEntry 6 }

cpuTxDroppedBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Dropped Bytes in the corresponding CPU queue."
    ::= { cpuQStatsEntry 7 }

cpuTxDroppedPktsLastIncrement  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Last Dropped Pkts in the corresponding CPU queue.
            This is Updated at every 5sec interval."
    ::= { cpuQStatsEntry 8 }

cpuTxDroppedPktsLastIncrementTime  OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "Last increment time of Tx Dropped Packets in CPU Queue.
             This is Updated at every 5sec interval."
    ::= { cpuQStatsEntry 9 }

cpuTxRatePercent  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Percentage of control packets transmitted in the CPU queue.
            Value of -1 indicates rate percentage is not applicable."
    ::= { cpuQStatsEntry 10 }

cpuTxBps  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Transmitted bytes in bits/sec in the corresponding CPU queue."
    ::= { cpuQStatsEntry 11 }

cpuTxPps  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Transmitted bytes in packets/sec in the corresponding CPU queue."
    ::= { cpuQStatsEntry 12 }

    --
    -- ## Notifications
    --

    customIfTraps             OBJECT IDENTIFIER ::= { customIfAlarmObjects 1 }
    cpuQueueNotifications     OBJECT IDENTIFIER ::= { customIfAlarmObjects 2 }

    --
    -- INTERFACE RELATED TRAPS
    --

    ifCRCErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxBadCrcLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for CRC error packets received on the
             interface."
        ::= { customIfTraps 1 }

    ifUndersizeErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxUndersizeLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for undersize error packets received on the
             interface."
        ::= { customIfTraps 2 }

    ifOversizeErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxOversizeLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for oversize error packets received on the
             interface."
        ::= { customIfTraps 3 }

    ifFragementErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxFragmentLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for fragment error packets received on the
             interface."
        ::= { customIfTraps 4 }

    ifJabberErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxJabberLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for jabber error packets received on the
             interface."
        ::= { customIfTraps 5 }

    cpuQueueFull     NOTIFICATION-TYPE
        OBJECTS      {
                      cpuQueueName,
                      cpuTxRatePercent,
                      cpuTxPps,
                      cpuTxDroppedPktsLastIncrement,
                      cpuTxDroppedPktsLastIncrementTime
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when CPU queue is full."
        ::= { cpuQueueNotifications 1 }

    cpuQueueHigh     NOTIFICATION-TYPE
        OBJECTS      {
                      cpuQueueName,
                      cpuTxRatePercent,
                      cpuTxPps
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when CPU queue is high crossing
            threshold of 90% ."
        ::= { cpuQueueNotifications 2 }

    cpuQueueRecovery     NOTIFICATION-TYPE
        OBJECTS      {
                      cpuQueueName,
                      cpuTxRatePercent
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when CPU queue is recovered from full/high."
        ::= { cpuQueueNotifications 3 }
END
