-- /* Copyright (C) 2001-2024 IP Infusion, Inc. All Rights Reserved. */

IPI-CUSTOMIF-STATS-MIB DEFINITIONS ::= BEGIN

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

customIfMib MODULE-IDENTITY
    LAST-UPDATED "202008210000Z"  -- Aug 21, 2020 12:00:00 GMT
    ORGANIZATION "IP Infusion"
    CONTACT-INFO "support@ipinfusion.com"
    DESCRIPTION
       "IPI QUEUE STATISTICS MIB. "
    REVISION     "202008210000Z"
    DESCRIPTION
       "Deprecate ifProtocolStatsTable. Fix compilation issues."
    ::= { ipi 103 }

customIfTable     OBJECT IDENTIFIER ::={ customIfMib 1}
cpuStatsObjects   OBJECT IDENTIFIER ::={ customIfMib 2}
customIfAlarmObjects   OBJECT IDENTIFIER ::={ customIfMib 3}
customIfGlobalObjects   OBJECT IDENTIFIER ::={ customIfMib 4}
ifCustomMib     OBJECT IDENTIFIER ::={ customIfMib 5}
ifXCustomMib     OBJECT IDENTIFIER ::={ customIfMib 6}

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,
             ifQueueGreenTxPkts          Counter64,
             ifQueueYellowTxPkts         Counter64,
             ifQueueGreenDropPkts        Counter64,
             ifQueueYellowDropPkts       Counter64,
             ifQueueRedDropPkts          Counter64,
             ifQueueNonRedDropPkts       Counter64
             }

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

queueId  OBJECT-TYPE
    SYNTAX      Integer32 ( 1 .. 8)
    MAX-ACCESS  read-only
    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 }

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

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

ifQueueGreenDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Green packets that are dropped through the
            queue on an interface."
    ::= { ifQueueStatsEntry 11 }

ifQueueYellowDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Yellow packets that are dropped through the
            queue on an interface."
    ::= { ifQueueStatsEntry 12 }

ifQueueRedDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Red packets that are dropped through the
            queue on an interface."
    ::= { ifQueueStatsEntry 13 }

ifQueueNonRedDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Non Red packets that are dropped through the
            queue on an interface."
    ::= { ifQueueStatsEntry 14 }


ifProtocolStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfProtocolStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      deprecated
    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      deprecated
    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      deprecated
    DESCRIPTION
            "LACP Protocol Packets received on the interface."
    ::= { ifProtocolStatsEntry 1 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ifEapolProtocolPkts  OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      deprecated
    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,
             ifRxAvgRatePercent  Integer32,
             ifTxAvgRatePercent  Integer32
             }

ifRxRateBps  OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "bps"
    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
    UNITS       "bps"
    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 }

ifRxAvgRatePercent  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Average received traffic rate percentage on the port referred by
            the index. Value of -1 indicates rate percentage is not applicable."
    ::= { ifRateStatsEntry 5 }

ifTxAvgRatePercent  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Average transmitted traffic rate percentage on the port referred by
            the index. Value of -1 indicates rate percentage is not applicable."
    ::= { ifRateStatsEntry 6 }

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     Counter64,
             ifFecUncorrectedBlocks   Counter64
             }

ifFecMode OBJECT-TYPE
    SYNTAX  INTEGER {
            off(0),
            on(1),
            auto(2),
            unsupported(3),
            cl74(4),
            cl91(5),
            cl108(6)
    }
    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      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "It is a count of corrected FEC blocks."
    ::= { ifFecStatsEntry 2 }

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


--- ##Avg Speed Stats Table####

ifSpeedStatsTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfSpeedStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table object containing information about current average transmit
             and receive speed and the speed threshold values on the interface."
    ::= { customIfTable 6 }

ifSpeedStatsEntry    OBJECT-TYPE
    SYNTAX      IfSpeedStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry with information about current average transmit and receive
             speed and the speed threshold values on the interface.Average speed
             is calculated by including preamble and inter-frame gap."
    INDEX   { ifIndex }
    ::= { ifSpeedStatsTable 1 }

IfSpeedStatsEntry ::=
    SEQUENCE {
             ifRxCurrentAvgSpeed          Counter64,
             ifRxCurrentAvgSpeedPercent   Integer32,
             ifTxCurrentAvgSpeed          Counter64,
             ifTxCurrentAvgSpeedPercent   Integer32,
             ifSpeedWarningThreshold      Integer32,
             ifSpeedRecoveryThreshold     Integer32
             }

ifRxCurrentAvgSpeed  OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "bps"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Current average receive speed on the interface calculated over the
            load interval of the interface."
    ::= { ifSpeedStatsEntry 1 }

ifRxCurrentAvgSpeedPercent  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Current average receive speed in percentage on the interface calculated
            over the load interval of the interface. Value of -1 indicates rate
            percentage is not applicable."
    ::= { ifSpeedStatsEntry 2 }

ifTxCurrentAvgSpeed  OBJECT-TYPE
    SYNTAX      Counter64
    UNITS       "bps"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Current average transmit speed on the interface calculated over the load
            interval of the interface."
    ::= { ifSpeedStatsEntry 3 }

ifTxCurrentAvgSpeedPercent  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Current average transmit speed in percentage on the interface calculated
            over the load interval of the interface. Value of -1 indicates rate
            percentage is not applicable."
    ::= { ifSpeedStatsEntry 4 }

ifSpeedWarningThreshold  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Threshold for receive speed in percentage for the interface referred by index.
            Applicable only for physical interfaces. value of -1 indicates not applicable."
    ::= { ifSpeedStatsEntry 5 }

ifSpeedRecoveryThreshold  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Recovery threshold for receive speed in percentage for the interface referred by index.
            Applicable only for physical interfaces. value of -1 indicates not applicable."
    ::= { ifSpeedStatsEntry 6 }

ifStormCtrlTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfStormCtrlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing storm control rate configuration along
             with storm discard statistics."
    ::= { customIfTable 7 }

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

IfStormCtrlEntry  ::=
    SEQUENCE {
             ifStormCtrlBcastEnable        TruthValue,
             ifStormCtrlBcastRate          Integer32,
             ifStormCtrlBcastFraction      Integer32,
             ifStormCtrlBcastRateType      INTEGER,
             ifStormCtrlBcastBurst         Integer32,
             ifStormCtrlMcastEnable        TruthValue,
             ifStormCtrlMcastRate          Integer32,
             ifStormCtrlMcastFraction      Integer32,
             ifStormCtrlMcastRateType      INTEGER,
             ifStormCtrlMcastBurst         Integer32,
             ifStormCtrlDLFEnable          TruthValue,
             ifStormCtrlDLFRate            Integer32,
             ifStormCtrlDLFFraction        Integer32,
             ifStormCtrlDLFRateType        INTEGER,
             ifStormCtrlDLFBurst           Integer32,
             ifStormCtrlBcastDiscards      Counter64,
             ifStormCtrlMcastDiscards      Counter64,
             ifStormCtrlDLFDiscards        Counter64,
             ifStormCtrlTotalDiscards      Counter64
             }

ifStormCtrlBcastEnable    OBJECT-TYPE
    SYNTAX      TruthValue {  false(0),
                              true(1)
                           }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlBcastEnable defines whether broadcast storm control
            is enabled or disabled.
            0 - broadcast storm control is enabled
            1 - broadcast storm control is disabled"
    ::= { ifStormCtrlEntry 1 }

ifStormCtrlBcastRate  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Stormcontrol Broadcast rate limit configuration. Units are based on
            ifStormCtrlBcastRateType object. Units are percentage/Gbps/Mbps/Kbps
            /Fps."
    ::= { ifStormCtrlEntry 2 }

ifStormCtrlBcastFraction   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Fraction part if rate-limit is defined as percentage value.
            Fraction value will be used along with ifStormCtrlBcastRate."
    ::= { ifStormCtrlEntry 3 }

ifStormCtrlBcastRateType    OBJECT-TYPE
    SYNTAX      INTEGER {
                       percent(0),
                       kbps(1),
                       mbps(2),
                       gbps(3),
                       fps(4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlBcastRateType defines the storm control rate limit units."
    ::= { ifStormCtrlEntry 4 }

ifStormCtrlBcastBurst   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control Broadcast burst size.
            If burst value is not configured by user then 5ms of bandwidth
            rate is programmed internally. Not supported with FPS option"
    ::= { ifStormCtrlEntry 5 }

ifStormCtrlMcastEnable    OBJECT-TYPE
    SYNTAX      TruthValue {  false(0),
                              true(1)
                           }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlMcastEnable defines whether multicast storm control
            is enabled or disabled.
            0 - multicast storm control is enabled
            1 - multicast storm control is disabled"
    ::= { ifStormCtrlEntry 6 }

ifStormCtrlMcastRate  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Stormcontrol Multicast rate limit configuration. Units are based on
            ifStormCtrlMcastRateType object. Units are percentage/Gbps/Mbps/Kbps
            /Fps."
    ::= { ifStormCtrlEntry 7 }

ifStormCtrlMcastFraction   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Fraction part if rate-limit is defined as percentage value.
            Fraction value will be used along with ifStormCtrlMcastRate."
    ::= { ifStormCtrlEntry 8 }

ifStormCtrlMcastRateType    OBJECT-TYPE
    SYNTAX      INTEGER {
                       percent(0),
                       kbps(1),
                       mbps(2),
                       gbps(3),
                       fps(3)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlMcastRateType defines the storm control rate limit units."
    ::= { ifStormCtrlEntry 9 }

ifStormCtrlMcastBurst   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control Multicast burst size.
            If burst value is not configured by user then 5ms of bandwidth
            rate is programmed internally.  Not supported with FPS option"
    ::= { ifStormCtrlEntry 10 }

ifStormCtrlDLFEnable    OBJECT-TYPE
    SYNTAX      TruthValue {  false(0),
                              true(1)
                           }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlDLFEnable defines wthether DLF storm control
            is enabled or disabled.
            0 - DLF storm control is enabled
            1 - DLF storm control is disabled"
    ::= { ifStormCtrlEntry 11 }

ifStormCtrlDLFRate  OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Stormcontrol DLF rate limit configuration. Units are based on
            ifStormCtrlDLFRateType object. Units are percentage/Gbps/Mbps/Kbps
            /Fps."
    ::= { ifStormCtrlEntry 12 }

ifStormCtrlDLFFraction   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Fraction part if rate-limit is defined as percentage value.
            Fraction value will be used along with ifStormCtrlDLFRate."
    ::= { ifStormCtrlEntry 13 }

ifStormCtrlDLFRateType    OBJECT-TYPE
    SYNTAX      INTEGER {
                       percent(0),
                       kbps(1),
                       mbps(2),
                       gbps(3),
                       fps(4)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "ifStormCtrlDLFRateType defines the storm control rate limit units."
    ::= { ifStormCtrlEntry 14 }

ifStormCtrlDLFBurst   OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control DLF burst size.
            If burst value is not configured by user then 5ms of bandwidth
            rate is programmed internally.  Not supported with FPS option"
    ::= { ifStormCtrlEntry 15 }

ifStormCtrlBcastDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control Broadcast Discard packets count."
    ::= { ifStormCtrlEntry 16 }

ifStormCtrlMcastDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control Multicast Discard packets count."
    ::= { ifStormCtrlEntry 17 }

ifStormCtrlDLFDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control DLF Discard packets count."
    ::= { ifStormCtrlEntry 18 }

ifStormCtrlTotalDiscards  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Storm control DLF Discard packets count."
    ::= { ifStormCtrlEntry 19 }


--- ##Link Bonding Table####

ifLbgTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfLbgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing Link Bonding details"
    ::= { customIfTable 8 }

ifLbgEntry    OBJECT-TYPE
    SYNTAX      IfLbgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing Link Bonding details"
    INDEX   { ifIndex }
    ::= { ifLbgTable 1 }

IfLbgEntry ::=
    SEQUENCE {
              ifLbgInErrors                     Counter64
             }

ifLbgInErrors  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "LBG dropped segment count."
    ::= { ifLbgEntry 1 }


--- ##Link Bonding Modem Table####

ifLbModemTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfLbModemEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing Link bonding Modem details"
    ::= { customIfTable 9 }

ifLbModemEntry    OBJECT-TYPE
    SYNTAX      IfLbModemEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing Link Bonding and Modem Statistics"
    INDEX   { ifIndex }
    ::= { ifLbModemTable 1 }

IfLbModemEntry ::=
    SEQUENCE {
              ifModemOutSegments                Counter64,
              ifModemOutSegmentBytes            Counter64,
              ifModemInSegments                 Counter64,
              ifModemInSegmentBytes             Counter64
             }

ifModemOutSegments  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Modem transmitted segment count"
    ::= { ifLbModemEntry 1 }

ifModemOutSegmentBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Modem transmitted Segment byte count."
    ::= { ifLbModemEntry 2 }

ifModemInSegments  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Modem received segment count."
    ::= { ifLbModemEntry 3 }

ifModemInSegmentBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Modem received segment byte count."
    ::= { ifLbModemEntry 4 }


--- ## Custom State Table####

ifCustomStateTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfCustomStateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing custom interface state information"
    ::= { customIfTable 10 }

ifCustomStateEntry    OBJECT-TYPE
    SYNTAX      IfCustomStateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing custom interface state"
    INDEX   { ifIndex }
    ::= { ifCustomStateTable 1 }

IfCustomStateEntry ::=
    SEQUENCE {
              ifCurBandwidth                 Integer32
             }

ifCurBandwidth OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Interface current bandwidth."
    ::= { ifCustomStateEntry 1 }


--- ###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 (1..2147483647)
    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 }

cpuQInfoTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF CpuQInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
             "A Table object containing information about Queues on CPU interface."
    ::= { cpuStatsObjects 2 }

cpuQInfoEntry    OBJECT-TYPE
    SYNTAX      CpuQInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing information about a CPU Queue."
    INDEX   { cpuId, cpuqueueId }
    ::= { cpuQInfoTable 1 }

CpuQInfoEntry ::=
    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,
             cpuQueueConfRate                  Integer32,
             cpuQueueLossy                     TruthValue,
             cpuQueueMonitor                   TruthValue
             }

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

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

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

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

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

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

cpuTxDroppedBytes  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "The number of Dropped Bytes in the corresponding CPU queue."
    ::= { cpuQInfoEntry 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."
    ::= { cpuQInfoEntry 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."
    ::= { cpuQInfoEntry 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."
    ::= { cpuQInfoEntry 10 }

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

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

cpuQueueConfRate    OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "pps"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "CPU queue configured uplift rate."
    ::= { cpuQInfoEntry 13 }

cpuQueueLossy    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "CPU queue lossy mode.
            If this object is set to true (1) then the queue is in lossy mode,
            else lossless."
    ::= { cpuQInfoEntry 14 }

cpuQueueMonitor    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "CPU queue monitor state.
            If this object is set to true (1) then the queue monitor is enabled,
            else disabled."
    ::= { cpuQInfoEntry 15 }

    --
    -- ## Notifications
    --

    customIfTraps             OBJECT IDENTIFIER ::= { customIfAlarmObjects 1 }
    cpuQueueNotifications     OBJECT IDENTIFIER ::= { customIfAlarmObjects 2 }
    customIfSpeedUtilTraps    OBJECT IDENTIFIER ::= { customIfAlarmObjects 3 }
    customIfStormNotification OBJECT IDENTIFIER ::= { customIfAlarmObjects 4 }
    customIfStateNotification OBJECT IDENTIFIER ::= { customIfAlarmObjects 5 }

    --
    -- 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 }

    ifQueueDrop            NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      queueId,
                      ifQueueDropPkts
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information containing drop statistics per interface
             per queue."
        ::= { customIfTraps 6 }

    cpuCRCErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      cpuRxBadCrcLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for CRC error packets received on the
             CPU."
        ::= { customIfTraps 7 }

    cpuUndersizeErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      cpuRxUndersizeLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for undersize error packets received on the
             CPU."
        ::= { customIfTraps 8 }

    cpuOversizeErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      cpuRxOversizeLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for oversize error packets received on the
             CPU."
        ::= { customIfTraps 9 }

    cpuFragementErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      cpuRxFragmentLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for fragment error packets received on the
             CPU."
        ::= { customIfTraps 10 }

    cpuJabberErrorPktsTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      cpuRxJabberLastIncrement
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information for jabber error packets received on the
             interface."
        ::= { customIfTraps 11 }

    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 }

    ifRxSpeedMax         NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxCurrentAvgSpeed
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when current average Rx speed on
             the interface reached maximum."
        ::= { customIfSpeedUtilTraps 1 }

    ifRxSpeedHigh     NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifRxAvgRatePercent,
                      ifRxCurrentAvgSpeed
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when current average Rx speed on the
             interface crossed speed warning threshold."
        ::= { customIfSpeedUtilTraps 2 }

    ifRxSpeedRecovery     NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when Rx speed utilization is recovered
             from full/high speed utilization threshold"
        ::= { customIfSpeedUtilTraps 3 }

    ifTxSpeedMax     NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifTxCurrentAvgSpeed
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when current average Tx speed on
             the interface reached maximum."
        ::= { customIfSpeedUtilTraps 4 }

    ifTxSpeedHigh     NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifTxAvgRatePercent,
                      ifTxCurrentAvgSpeed
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when current average Tx speed on the
             interface crossed speed warning threshold."
        ::= { customIfSpeedUtilTraps 5 }

    ifTxSpeedRecovery     NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send information when Tx speed utilization is recovered
             from full/high speed utilization threshold."
        ::= { customIfSpeedUtilTraps 6 }

    ifStormControlDiscardStartTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifStormCtrlBcastEnable,
                      ifStormCtrlMcastEnable,
                      ifStormCtrlDLFEnable,
                      ifStormCtrlTotalDiscards
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send Storm control rate-limit discards start notification on
             interface."
        ::= { customIfStormNotification 1 }

    ifStormControlDiscardStopTrap   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifStormCtrlBcastEnable,
                      ifStormCtrlMcastEnable,
                      ifStormCtrlDLFEnable,
                      ifStormCtrlTotalDiscards
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send Storm control rate-limit discards stop notification
             on interface."
        ::= { customIfStormNotification 2 }

    ifBandwidthStartNotification   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifCurBandwidth
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send when interface shaper is open"
        ::= { customIfStateNotification 1 }

    ifBandwidthUpgradeNotification   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifCurBandwidth
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send when interface bandwidth is upgraded"
        ::= { customIfStateNotification 2 }

    ifBandwidthDowngradeNofitication   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifCurBandwidth
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send when interface bandwidth is downgraded"
        ::= { customIfStateNotification 3 }

    ifBandwidthCloseAlarm   NOTIFICATION-TYPE
        OBJECTS      {
                      ifIndex,
                      ifCurBandwidth
                     }
        STATUS       current
        DESCRIPTION
            "Trap to send when interface bandwidth is 0"
        ::= { customIfStateNotification 4 }

--- ##Link Bonding Global Table####

ifLbGlobalTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF IfLbGlobalEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A Table object containing Link bonding Global details"
    ::= { customIfGlobalObjects 1 }

ifLbGlobalEntry    OBJECT-TYPE
    SYNTAX      IfLbGlobalEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry containing Link Bonding Global details"
    INDEX { ifLbUnit }
    ::= { ifLbGlobalTable 1 }

IfLbGlobalEntry ::=
    SEQUENCE {
              ifLbUnit                          Integer32,
              ifGlobalInSegmentsDrop            Counter64,
              ifGlobalInPackets                 Counter64,
              ifGlobalInBypassPackets           Counter64,
              ifGlobalOutErrorPackets           Counter64,
              ifGlobalOutControlPackets         Counter64,
              ifGlobalOutControlBytes           Counter64
             }

ifLbUnit    OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The unique stack unit number."
    ::= { ifLbGlobalEntry 1 }

ifGlobalInSegmentsDrop      OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for LBG RX segment Drops"
    ::= { ifLbGlobalEntry 2 }

ifGlobalInPackets           OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for LBG RX Packets"
    ::= { ifLbGlobalEntry 3 }

ifGlobalInBypassPackets     OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for LBG RX which are not LBG packets "
    ::= { ifLbGlobalEntry 4 }


ifGlobalOutErrorPackets     OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for LBG TX error packets"
    ::= { ifLbGlobalEntry 5 }


ifGlobalOutControlPackets   OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for TX Control packets"
    ::= { ifLbGlobalEntry 6 }

ifGlobalOutControlBytes     OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
           "Global counter for TX Control Bytes"
    ::= { ifLbGlobalEntry 7 }

END
