-- =============================================================================
-- Copyright (c) 2004-2022 New H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: The EVPN(Ethernet VPN) MIB
-- Reference:
-- Version: V1.1
-- History:
-- V1.1 2022-05-23 Modified by Lei Gao
--    Add hh3cEvpnRouteMobilityTable and Added nodes hh3cEvpnMacMobilitySup
--    hh3cEvpnMacMobilitySupClear
-- V1.0 2017-10-21 Initial version Created by Jian Chen
-- =============================================================================
HH3C-EVPN-MIB DEFINITIONS ::= BEGIN
IMPORTS
        RowStatus, TruthValue, DisplayString
    FROM SNMPv2-TC
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32,
        NOTIFICATION-TYPE
    FROM SNMPv2-SMI
        InetAddressType,
        InetAddress
    FROM INET-ADDRESS-MIB
        hh3cCommon
    FROM HH3C-OID-MIB
        InterfaceIndex
    FROM IF-MIB;


-- =============================================================================
-- module identity part
-- =============================================================================
hh3cEvpn MODULE-IDENTITY
    LAST-UPDATED
        "202205230900Z"        -- May 23, 2022 at 09:00 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
        "Add hh3cEvpnRouteMobilityTable and Added nodes hh3cEvpnMacMobilitySup
         hh3cEvpnMacMobilitySupClear"
    REVISION
        "202205230900Z"   -- May 23, 2022 at 09:00 GMT
    DESCRIPTION
        "The EVPN MIB."
    REVISION
        "201710210900Z"   -- Oct 21, 2017 at 09:00 GMT
    DESCRIPTION
        "Initial version."
    ::= { hh3cCommon 173 }

-- =============================================================================
-- =================== hh3cEvpnMacMobilityNotifications definition =============
-- =============================================================================

hh3cEvpnMacMobilityNotifications OBJECT IDENTIFIER ::= { hh3cEvpn 0 }

-- =============================================================================
-- object definition begin
-- =============================================================================

hh3cEvpnObjects      OBJECT IDENTIFIER ::= { hh3cEvpn 1 }

-- =============================================================================
-- hh3cEvpnESTable Definition
-- =============================================================================
hh3cEvpnESTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cEvpnESEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for EVPN ES parameters."
    ::= { hh3cEvpnObjects 1 }

hh3cEvpnESEntry  OBJECT-TYPE
    SYNTAX      Hh3cEvpnESEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry represents the parameters of a EVPN ES."
    INDEX
    {
        hh3cEvpnESESI
    }
    ::= { hh3cEvpnESTable 1 }

Hh3cEvpnESEntry ::=
    SEQUENCE
    {
        hh3cEvpnESESI               OCTET STRING,
        hh3cEvpnESIfIndex           InterfaceIndex,
        hh3cEvpnESIfName            DisplayString,
        hh3cEvpnESMode              Unsigned32
    }

hh3cEvpnESESI   OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..10))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The Ethernet Segment Identifier."
    ::= { hh3cEvpnESEntry 1 }

hh3cEvpnESIfIndex    OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ES interface index."
    ::= { hh3cEvpnESEntry 2 }

hh3cEvpnESIfName    OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of ES interface."
    ::= { hh3cEvpnESEntry 3 }

hh3cEvpnESMode    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Redundancy mode of ES."
    ::= { hh3cEvpnESEntry 4 }

-- =============================================================================
-- End of hh3cEvpnESTable Definition
-- =============================================================================

-- =============================================================================
-- hh3cEvpnESMemberTable Definition
-- =============================================================================
hh3cEvpnESMemberTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cEvpnESMemberEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for EVPN ES member information."
    ::= { hh3cEvpnObjects 2 }

hh3cEvpnESMemberEntry  OBJECT-TYPE
    SYNTAX      Hh3cEvpnESMemberEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry contain the parameters of an ES member."
    INDEX
    {
        hh3cEvpnESESI,
        hh3cEvpnESMemberIPType,
        hh3cEvpnESMemberIP
    }
    ::= { hh3cEvpnESMemberTable 1 }

Hh3cEvpnESMemberEntry ::=
    SEQUENCE
    {
        hh3cEvpnESMemberIPType        InetAddressType,
        hh3cEvpnESMemberIP            InetAddress,
        hh3cEvpnESMemberIsSelf        TruthValue
    }

hh3cEvpnESMemberIPType     OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "ES member IP address type."
    ::= { hh3cEvpnESMemberEntry 1 }

hh3cEvpnESMemberIP   OBJECT-TYPE
    SYNTAX       InetAddress
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "ES member IP address."
    ::= { hh3cEvpnESMemberEntry 2 }

hh3cEvpnESMemberIsSelf  OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Whether the member is local."
    ::= { hh3cEvpnESMemberEntry 3 }

-- =============================================================================
-- End of hh3cEvpnESMemberTable Definition
-- =============================================================================

-- =============================================================================
-- hh3cEvpnESDFTable Definition
-- =============================================================================
hh3cEvpnESDFTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cEvpnESDFEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for the ES DF information."
    ::= { hh3cEvpnObjects 3 }

hh3cEvpnESDFEntry  OBJECT-TYPE
    SYNTAX      Hh3cEvpnESDFEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry represents an (ES, VLAN) group."
    INDEX
    {
        hh3cEvpnESESI,
        hh3cEvpnESDFVLANID
    }
    ::= { hh3cEvpnESDFTable 1 }

Hh3cEvpnESDFEntry ::=
    SEQUENCE
    {
        hh3cEvpnESDFVLANID            Unsigned32,
        hh3cEvpnESDFAcIfIndex         InterfaceIndex,
        hh3cEvpnESDFACEvcSrvInstId    Unsigned32,
        hh3cEvpnESDFMode              Unsigned32,
        hh3cEvpnESDFRouterIPType      InetAddressType,
        hh3cEvpnESDFRouterIP          InetAddress
    }

hh3cEvpnESDFVLANID     OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "VLAN assigned to an ES."
    ::= { hh3cEvpnESDFEntry 1 }

hh3cEvpnESDFAcIfIndex    OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index of an interface that hosts an Ethernet service instance for an ES."
    ::= { hh3cEvpnESDFEntry 2 }

hh3cEvpnESDFACEvcSrvInstId    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Ethernet service instance ID."
    ::= { hh3cEvpnESDFEntry 3 }

hh3cEvpnESDFMode    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ES redundancy mode."
    ::= { hh3cEvpnESDFEntry 4 }

hh3cEvpnESDFRouterIPType    OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The designated forwarder IP address type."
    ::= { hh3cEvpnESDFEntry 5 }

hh3cEvpnESDFRouterIP    OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The designated forwarder IP address."
    ::= { hh3cEvpnESDFEntry 6 }

-- =============================================================================
-- End of hh3cEvpnESDFTable Definition
-- =============================================================================

-- =============================================================================
-- hh3cEvpnRouteMobilityTable Definition
-- =============================================================================
hh3cEvpnRouteMobilityTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cEvpnRouteMobilityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for the EVPN route mobility suppression information."
    ::= { hh3cEvpnObjects 4 }

hh3cEvpnRouteMobilityEntry  OBJECT-TYPE
    SYNTAX      Hh3cEvpnRouteMobilityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Provides information about an EVPN route mobility entry."
    INDEX
    {
        hh3cEvpnVsiName,
        hh3cEvpnInstanceName
    }
    ::= { hh3cEvpnRouteMobilityTable 1 }

Hh3cEvpnRouteMobilityEntry ::=
    SEQUENCE
    {
        hh3cEvpnVsiName            OCTET STRING,
        hh3cEvpnInstanceName       OCTET STRING,
        hh3cEvpnRouteRowStatus     RowStatus
    }

hh3cEvpnVsiName    OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..31))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "VSI name. The maximum length of a VSI
         is 31 characters."
    ::= { hh3cEvpnRouteMobilityEntry 1 }

hh3cEvpnInstanceName    OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..31))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "EVPN instance name. The maximum length of an EVPN instance
         is 31 characters."
    ::= { hh3cEvpnRouteMobilityEntry 2 }

hh3cEvpnRouteRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Operation status of this table entry."
    ::= { hh3cEvpnRouteMobilityEntry 3 }

-- =============================================================================
-- End of hh3cEvpnRouteMobilityTable Definition
-- =============================================================================

-- ==================================================================
-- hh3cEvpnMacMobilityNotifications Definition
-- ==================================================================
hh3cEvpnMacMobilitySup NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cEvpnVsiName,
            hh3cEvpnInstanceName
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the move count for one or more MAC
         addresses crosses the threshold for the EVPN instance."
    ::= { hh3cEvpnMacMobilityNotifications 1 }

hh3cEvpnMacMobilitySupClear NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cEvpnVsiName,
            hh3cEvpnInstanceName
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the move count for all MAC
         addresses drops below the threshold for the EVPN instance."
    ::= { hh3cEvpnMacMobilityNotifications 2 }
-- =============================================================================
-- End of hh3cEvpnRouteMacMobilityNotifications Definition
-- =============================================================================

END
