-- =================================================================
-- Copyright (c) 2004-2023 New H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: L3VPN (Layer 3 Virtual Private Network) MIB
-- Reference:
-- Version: V1.1
-- History:
--   V1.0 2022-06-02 Created by zhangyao
--     Initial version
--   V1.1 2023-04-11 Updated by meihaitao
--     Add the hh3cL3vpnStatisticsTable
-- =================================================================
HH3C-L3VPN-MIB DEFINITIONS ::= BEGIN

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

hh3cL3vpn MODULE-IDENTITY
    LAST-UPDATED "202304101002Z"
    ORGANIZATION
        "New H3C Tech. Co., Ltd."
    CONTACT-INFO
        "Platform Team New H3C Tech. Co., Ltd.
        Hai-Dian District Beijing P.R. China
        http://www.h3c.com
        Zip:100085"
    DESCRIPTION
        "This MIB file provides information about L3VPN."
    REVISION "202304101002Z"
    DESCRIPTION
        "Add the hh3cL3vpnStatisticsTable."

    REVISION "202205311002Z"
    DESCRIPTION
        "The initial version of this MIB file."
    ::= { hh3cCommon 228 }

hh3cL3vpnNotifications        OBJECT IDENTIFIER ::= { hh3cL3vpn 0 }
hh3cL3vpnNotificationObjects  OBJECT IDENTIFIER ::= { hh3cL3vpn 1 }
hh3cL3vpnStatMibObjects       OBJECT IDENTIFIER ::= { hh3cL3vpn 2 }

hh3cL3vpnVrfName OBJECT-TYPE
    SYNTAX OCTET STRING (SIZE (0..31))
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "Name of the VRF (Virtual Routing and Forwarding)."
    ::= { hh3cL3vpnNotificationObjects 1 }

hh3cL3vpnIfName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (1..255))
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "Name of the interface associated with the VRF."
    ::= { hh3cL3vpnNotificationObjects 2 }

hh3cL3vpnVrfV6Up NOTIFICATION-TYPE
    OBJECTS {
        hh3cL3vpnVrfName,
        hh3cL3vpnIfName
    }
    STATUS current
    DESCRIPTION
        "This notification is generated when:
         a. No interface is associated with this VRF, and the first
            (and only first) interface associated with it has its
            IPv6 status change to up.
         b. One interface is associated with this VRF, and the IPv6
            status of this interface changes to up.
         c. Multiple interfaces are associated with this VRF, and
            the IPv6 status of all interfaces is down, and the first
            of those interfaces has its IPv6 status change to up."
    ::= { hh3cL3vpnNotifications 1 }

hh3cL3vpnVrfV6Down NOTIFICATION-TYPE
    OBJECTS {
        hh3cL3vpnVrfName,
        hh3cL3vpnIfName
    }
    STATUS current
    DESCRIPTION
        "This notification is generated when:
         a. One interface is associated with this VRF, and the IPv6
            status of this interface changes from up to down.
         b. Multiple interfaces are associated with this VRF, and
            the IPv6 status of all except one of these interfaces is
            equal to up, and the IPv6 status of that interface
            changes from up to down.
         c. The last interface with IPv6 status equal to up is
            disassociated from a VRF."
    ::= { hh3cL3vpnNotifications 2 }


-- The L3VPN Statistics Table
--
hh3cL3vpnStatisticsTable OBJECT-TYPE
    SYNTAX SEQUENCE OF Hh3cL3vpnStatisticsEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "This table contains traffic statistics about a VRF."
    ::= { hh3cL3vpnStatMibObjects 1 }

hh3cL3vpnStatisticsEntry OBJECT-TYPE
    SYNTAX Hh3cL3vpnStatisticsEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Provides traffic statistics about a VRF."
    INDEX { hh3cL3vpnStatVrfName }
    ::= { hh3cL3vpnStatisticsTable 1 }

Hh3cL3vpnStatisticsEntry ::=
    SEQUENCE {
        hh3cL3vpnStatVrfName
            DisplayString,
        hh3cL3vpnStatEnable
            TruthValue,
        hh3cL3vpnStatVrfIndex
            Unsigned32,
        hh3cL3vpnStatInBytes
            CounterBasedGauge64,
        hh3cL3vpnStatOutBytes
            CounterBasedGauge64,
        hh3cL3vpnStatInPackets
            CounterBasedGauge64,
        hh3cL3vpnStatOutPackets
            CounterBasedGauge64,
        hh3cL3vpnStatInUnicastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatOutUnicastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatInMulticastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatOutMulticastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatInBroadcastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatOutBroadcastPackets
            CounterBasedGauge64,
        hh3cL3vpnStatResetTime
            DateAndTime,
        hh3cL3vpnStatResetStatistic
            INTEGER
     }

hh3cL3vpnStatVrfName OBJECT-TYPE
    SYNTAX DisplayString (SIZE (1..31))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This object indicates the name of a VRF."
    ::= { hh3cL3vpnStatisticsEntry 1 }

hh3cL3vpnStatEnable OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "This object indicates the enable flag of the VRF's traffic statistics."
    DEFVAL { false }
    ::= { hh3cL3vpnStatisticsEntry 2 }

hh3cL3vpnStatVrfIndex OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This object indicates the VRF's index."
    ::= { hh3cL3vpnStatisticsEntry 3 }

hh3cL3vpnStatInBytes OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of bytes received."
    ::= { hh3cL3vpnStatisticsEntry 4 }

hh3cL3vpnStatOutBytes OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of bytes transmitted."
    ::= { hh3cL3vpnStatisticsEntry 5 }

hh3cL3vpnStatInPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of packets received."
    ::= { hh3cL3vpnStatisticsEntry 6 }

hh3cL3vpnStatOutPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of packets transmitted."
    ::= { hh3cL3vpnStatisticsEntry 7 }

hh3cL3vpnStatInUnicastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of unicast packets received."
    ::= { hh3cL3vpnStatisticsEntry 8 }

hh3cL3vpnStatOutUnicastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of unicast packets transmitted."
    ::= { hh3cL3vpnStatisticsEntry 9 }

hh3cL3vpnStatInMulticastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of multicast packets received."
    ::= { hh3cL3vpnStatisticsEntry 10 }

hh3cL3vpnStatOutMulticastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of multicast packets transmitted."
    ::= { hh3cL3vpnStatisticsEntry 11 }

hh3cL3vpnStatInBroadcastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of broadcast packets received."
    ::= { hh3cL3vpnStatisticsEntry 12 }

hh3cL3vpnStatOutBroadcastPackets OBJECT-TYPE
    SYNTAX CounterBasedGauge64
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The total number of broadcast packets transmitted."
    ::= { hh3cL3vpnStatisticsEntry 13 }

hh3cL3vpnStatResetTime OBJECT-TYPE
    SYNTAX DateAndTime (SIZE (8))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Last time when the statistics were cleared."
    ::= { hh3cL3vpnStatisticsEntry 14 }

hh3cL3vpnStatResetStatistic OBJECT-TYPE
    SYNTAX INTEGER
    {
        statistic(0),
        resetStatistic(1)
    }
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Resets the VRF's traffic statistics."
    ::= { hh3cL3vpnStatisticsEntry 15 }

END
