-- ============================================================================
-- Copyright (c) 2004-2023 New H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: The purpose of this MIB file is to provide the definition of
--              the Neighbor Discovery general configuration.
-- Reference:
-- Version: V1.2
-- History:
-- V1.0 2022-01-06
--   Initial version, created by qiankangkang
-- V1.1 2022-06-01
--   Added hh3cNDTrapRatelimitOverspeed by shaojunjun
-- V1.2 2023-04-20
--   Added hh3cNDTrapPktQueThresholdAlarm, hh3cNDTrapPktQueThresholdResume and
--   hh3cNDTrapPktQueueObjects by yuanyuchen
-- ============================================================================

HH3C-ND-TRAP-MIB DEFINITIONS ::= BEGIN

IMPORTS
        hh3cCommon
    FROM HH3C-OID-MIB
        Unsigned32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
    FROM SNMPv2-SMI
        DisplayString
    FROM SNMPv2-TC;

-- Node definitions
hh3cNDTrap MODULE-IDENTITY
    LAST-UPDATED "202304201730Z"        -- ARP 20, 2023 at 17:30 GMT
    ORGANIZATION
        "New H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team New H3C Technologies Co., Ltd.
         Hai-Dian District Beijing P.R. China
         http://www.h3c.com
         Zip: 100085"
    DESCRIPTION
        "Added hh3cNDTrapRatelimitOverspeed."
    REVISION "202304201730Z"        -- ARP 20, 2023 at 17:30 GMT
    DESCRIPTION
        "Add hh3cNDTrapPktQueThresholdAlarm, hh3cNDTrapPktQueThresholdResume
         and hh3cNDTrapPktQueueObjects."
    REVISION "202206011700Z"        -- JUN 01, 2022 at 17:00 GMT
    DESCRIPTION
        "This MIB file defines the ND warning feature only."
    REVISION "202201061800Z"
    DESCRIPTION
        "The initial version of this MIB file."
    ::= { hh3cCommon 218}


hh3cNDTrapEntry OBJECT IDENTIFIER ::= { hh3cNDTrap 1 }

hh3cNDTrapEntrys OBJECT IDENTIFIER  ::= { hh3cNDTrapEntry 0 }

-- hh3cNDTrapEntrys
hh3cNDTrapAllThresholdExceed NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum,
            hh3cNDTrapEntryStaticNum,
            hh3cNDTrapEntryOtherNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries exceeded the threshold."
    ::= { hh3cNDTrapEntrys 1 }

hh3cNDTrapAllThresholdResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum,
            hh3cNDTrapEntryStaticNum,
            hh3cNDTrapEntryOtherNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries was restored to the threshold."
    ::= { hh3cNDTrapEntrys 2 }

hh3cNDTrapSlotThresholdExceed NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryChassis,
            hh3cNDTrapEntrySlot,
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries exceeded the threshold of slot."
    ::= { hh3cNDTrapEntrys 3 }

hh3cNDTrapSlotThresholdResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryChassis,
            hh3cNDTrapEntrySlot,
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries was restored to the threshold of slot."
    ::= { hh3cNDTrapEntrys 4 }

hh3cNDTrapIfThresholdExceed NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryIfName,
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries exceeded the threshold of interface."
    ::= { hh3cNDTrapEntrys 5 }

hh3cNDTrapIfThresholdResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryIfName,
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntryDynamicNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND entries was restored to the threshold of interface."
    ::= { hh3cNDTrapEntrys 6 }

hh3cNDTrapSuppThresholdExceed NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntrySuppNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND suppression entries exceeded the threshold."
    ::= { hh3cNDTrapEntrys 7 }

hh3cNDTrapSuppThresholdResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapEntryThreshold,
            hh3cNDTrapEntrySuppNum
        }
    STATUS      current
    DESCRIPTION
        "The number of ND suppression entries was restored to the threshold."
    ::= { hh3cNDTrapEntrys 8 }

hh3cNDTrapEntryObjects OBJECT IDENTIFIER  ::= { hh3cNDTrapEntry 1 }

-- hh3cNDTrapEntryObjects
hh3cNDTrapEntryChassis OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of chassis. If the value is 65535, the device is not
        a stacked device."
    ::= { hh3cNDTrapEntryObjects 1 }

hh3cNDTrapEntrySlot OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of slot."
    ::= { hh3cNDTrapEntryObjects 2 }

hh3cNDTrapEntryIfName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE (0..255))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The name of interface."
    ::= { hh3cNDTrapEntryObjects 3 }

hh3cNDTrapEntryThreshold OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of ND entries threshold."
    ::= { hh3cNDTrapEntryObjects 4 }

hh3cNDTrapEntryDynamicNum OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of dynamic ND entries."
    ::= { hh3cNDTrapEntryObjects 5 }

hh3cNDTrapEntryStaticNum OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of static ND entries."
    ::= { hh3cNDTrapEntryObjects 6 }

hh3cNDTrapEntryOtherNum OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of other ND entries."
    ::= { hh3cNDTrapEntryObjects 7 }

hh3cNDTrapEntrySuppNum OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of ND suppression entries."
    ::= { hh3cNDTrapEntryObjects 8 }

hh3cNDTrapPkt OBJECT IDENTIFIER  ::= { hh3cNDTrap 2 }

-- hh3cNDTrapPkt
hh3cNDTrapPkts OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 0 }

-- hh3cNDTrapPkts
hh3cNDTrapPktSpeedAlarm NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapPktSpeedChassis,
            hh3cNDTrapPktSpeedSlot,
            hh3cNDTrapPktSpeedSupValue,
            hh3cNDTrapPktSpeedCurValue,
            hh3cNDTrapPktSpeedSupType
        }
    STATUS      current
    DESCRIPTION
        "Send ND packets speed exceeds the limit."
    ::= { hh3cNDTrapPkts 1 }

hh3cNDTrapPktSpeedAlarmResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapPktSpeedChassis,
            hh3cNDTrapPktSpeedSlot,
            hh3cNDTrapPktSpeedSupValue,
            hh3cNDTrapPktSpeedCurValue,
            hh3cNDTrapPktSpeedSupType
        }
    STATUS      current
    DESCRIPTION
        "The speed of sending nd packets is restored to the limit."
    ::= { hh3cNDTrapPkts 2 }

hh3cNDTrapHostIPConflict NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapHostIPCftLocalIPv6,
            hh3cNDTrapHostIPCftLocalMAC,
            hh3cNDTrapHostIPCftLocalIf,
            hh3cNDTrapHostIPCftLocalPevid,
            hh3cNDTrapHostIPCftLocalCevid,
            hh3cNDTrapHostIPCftRemoteIPv6,
            hh3cNDTrapHostIPCftRemoteMAC,
            hh3cNDTrapHostIPCftRemotePevid,
            hh3cNDTrapHostIPCftRemoteCevid
        }
    STATUS      current
    DESCRIPTION
        "ND packets Host IPv6 address conflict."
    ::= { hh3cNDTrapPkts 3 }

hh3cNDTrapHostIPConflictResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapHostIPCftLocalIPv6,
            hh3cNDTrapHostIPCftLocalMAC,
            hh3cNDTrapHostIPCftLocalIf,
            hh3cNDTrapHostIPCftLocalPevid,
            hh3cNDTrapHostIPCftLocalCevid,
            hh3cNDTrapHostIPCftRemoteIPv6,
            hh3cNDTrapHostIPCftRemoteMAC,
            hh3cNDTrapHostIPCftRemotePevid,
            hh3cNDTrapHostIPCftRemoteCevid
        }
    STATUS      current
    DESCRIPTION
        "ND packets host IPv6 address conflict resolution."
    ::= { hh3cNDTrapPkts 4 }

hh3cNDTrapDuplicateIPv6 NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapDupIPv6NewMac,
            hh3cNDTrapDupIPv6NewSevid,
            hh3cNDTrapDupIPv6NewCevid,
            hh3cNDTrapDupIPv6NewIFName,
            hh3cNDTrapDupIPv6OldMac,
            hh3cNDTrapDupIPv6OldSevid,
            hh3cNDTrapDupIPv6OldCevid,
            hh3cNDTrapDupIPv6OldIFName,
            hh3cNDTrapDupIPv6DupAddr
        }
    STATUS      current
    DESCRIPTION
        "Received a conflict packet with a duplicate ipv6 address."
    ::= { hh3cNDTrapPkts 5 }

-- hh3cNDTrapPktSpeedObjects
hh3cNDTrapPktSpeedObjects OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 1 }

hh3cNDTrapPktSpeedChassis OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The chassis id of nd packets. If the value is 65535, the device is not
        a stacked device."
    ::= { hh3cNDTrapPktSpeedObjects 1 }

hh3cNDTrapPktSpeedSlot OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The slot id of nd packets."
    ::= { hh3cNDTrapPktSpeedObjects 2 }

hh3cNDTrapPktSpeedSupValue OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The limit speed of nd packets."
    ::= { hh3cNDTrapPktSpeedObjects 3 }

hh3cNDTrapPktSpeedCurValue OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The current speed of nd packets."
    ::= { hh3cNDTrapPktSpeedObjects 4 }

hh3cNDTrapPktSpeedSupType OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The speed limit type of nd packets."
    ::= { hh3cNDTrapPktSpeedObjects 5 }

-- hh3cNDTrapHostIPConflictObjs
hh3cNDTrapHostIPConflictObjs OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 2 }

hh3cNDTrapHostIPCftLocalIPv6 OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The ipv6 address of local device."
    ::= { hh3cNDTrapHostIPConflictObjs 1 }

hh3cNDTrapHostIPCftLocalMAC OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The mac address of local device."
    ::= { hh3cNDTrapHostIPConflictObjs 2 }

hh3cNDTrapHostIPCftLocalIf OBJECT-TYPE
    SYNTAX      DisplayString(SIZE (0..255))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface name of local device."
    ::= { hh3cNDTrapHostIPConflictObjs 3 }

hh3cNDTrapHostIPCftLocalPevid OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface outer layer vlan id of local device."
    ::= { hh3cNDTrapHostIPConflictObjs 4 }

hh3cNDTrapHostIPCftLocalCevid OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface inner layer vlan id of local device."
    ::= { hh3cNDTrapHostIPConflictObjs 5 }

hh3cNDTrapHostIPCftRemoteIPv6 OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The ipv6 address of remote device."
    ::= { hh3cNDTrapHostIPConflictObjs 6 }

hh3cNDTrapHostIPCftRemoteMAC OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The mac address of remote device."
    ::= { hh3cNDTrapHostIPConflictObjs 7 }

hh3cNDTrapHostIPCftRemotePevid OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface outer layer vlan id of remote device."
    ::= { hh3cNDTrapHostIPConflictObjs 8 }

hh3cNDTrapHostIPCftRemoteCevid OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface inner layer vlan id of remote device."
    ::= { hh3cNDTrapHostIPConflictObjs 9 }


-- hh3cNDTrapDuplicateIPv6Objs
hh3cNDTrapDuplicateIPv6Objs OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 3 }

hh3cNDTrapDupIPv6NewMac OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The mac address of new user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 1 }

hh3cNDTrapDupIPv6NewSevid OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The outer layer vlan id of new user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 2 }

hh3cNDTrapDupIPv6NewCevid OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The inner layer vlan id of new user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 3 }

hh3cNDTrapDupIPv6NewIFName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE (0..255))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface name of new user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 4 }

hh3cNDTrapDupIPv6OldMac OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The mac address of old user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 5 }

hh3cNDTrapDupIPv6OldSevid OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The outer layer vlan id of old user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 6 }

hh3cNDTrapDupIPv6OldCevid OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The inner layer vlan id of old user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 7 }

hh3cNDTrapDupIPv6OldIFName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE (0..255))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The interface name of old user."
    ::= { hh3cNDTrapDuplicateIPv6Objs 8 }

hh3cNDTrapDupIPv6DupAddr OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..48))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The duplicate ipv6 address."
    ::= { hh3cNDTrapDuplicateIPv6Objs 9 }

-- hh3cNDTrapRatelimitOverspeed
hh3cNDTrapRatelimitOverspeed NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapRatelimitVer,
            hh3cNDTrapRatelimitCount,
            hh3cNDTrapRatelimitMsg
        }
    STATUS      current
    DESCRIPTION
        "If the rate of ND packets delivered to the CPU on a device
        exceeds the threshold, a trap message is generated and sent
        to the remote monitoring device."
    ::= { hh3cNDTrapPkts 6 }

-- hh3cNDTrapRatelimitObjects
hh3cNDTrapRatelimitObjects OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 4 }

hh3cNDTrapRatelimitVer OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The version of trap information."
    ::= { hh3cNDTrapRatelimitObjects 1 }

hh3cNDTrapRatelimitCount OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "Number of cells in the trap message.  A trap message may contain
        multiple cells, each of which indicates that the rate information of
        ND packets exceeds the threshold."
    ::= { hh3cNDTrapRatelimitObjects 2 }

hh3cNDTrapRatelimitMsg OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..254))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object is the cell section in a trap message sent from a
        monitored device.  This object can contain multiple cells.
        This object is in the format of '<cell1><cell2>...'.  Each cell
        consists of 17 octets in the format of
        '<TrapOrigin><IfIndex><OverSpeedValue><Threshold><Interval>'.

        <TrapOrigin> indicates the source of the trap message and has
        size of 1 octet.  It only supports the following values.
        1 - Global.
        2 - Interface.

        <IfIndex> is the index of the interface where the rate of ND packet
        exceeds the threshold and has size of 4 octets.  It is 0xFFFFFFFF
        when <TrapOrigin> is 1(Global).

        <OverSpeedValue> indicates the rate that ND packets are actually
        delivered and has size of 4 octets.

        <Threshold> indicates the threshold that ND packets can be delivered
        to CPU and has size of 4 octets.

        <Interval> indicates the interval that a trap message is sent out
        and has size of 4 octets."

    ::= { hh3cNDTrapRatelimitObjects 3 }

-- hh3cNDTrapPktQueThreshold
hh3cNDTrapPktQueThresholdAlarm NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapPktQueChassis,
            hh3cNDTrapPktQueSlot,
            hh3cNDTrapPktQueNum
        }
    STATUS      current
    DESCRIPTION
        "The current size of the ND_PKT queue exceeds the threshold."
    ::= { hh3cNDTrapPkts 7 }

hh3cNDTrapPktQueThresholdResume NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cNDTrapPktQueChassis,
            hh3cNDTrapPktQueSlot,
            hh3cNDTrapPktQueNum
        }
    STATUS      current
    DESCRIPTION
        "The current size of the ND_PKT queue drops below the threshold."
    ::= { hh3cNDTrapPkts 8 }

-- hh3cNDTrapPktQueueObjects
hh3cNDTrapPktQueueObjects OBJECT IDENTIFIER ::= { hh3cNDTrapPkt 5 }

hh3cNDTrapPktQueChassis OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The information of chassis ID. If the value is 65535, the device is
         not a stacked device."
    ::= { hh3cNDTrapPktQueueObjects 1 }

hh3cNDTrapPktQueSlot OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The information of slot."
    ::= { hh3cNDTrapPktQueueObjects 2 }

hh3cNDTrapPktQueNum OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The number of packets in the ND_PKT queue."
    ::= { hh3cNDTrapPktQueueObjects 3 }

END

