-- =============================================================================
-- Copyright (c) 2004-2015 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: The VXLAN(Virtual eXtensible Local Area Network) MIB
-- Reference:
-- Version: V1.1
-- History:
--   V1.0 2013-11-21 Initial version created by Neng Yan
--   V1.1 2015-02-11 Modified by Neng Yan.  Values 'unknown(0)', 'openflow(4)',
--                   and 'ovsdb(5)' were added for data type 'h3cVxlanMacType'
-- =============================================================================
H3C-VXLAN-MIB DEFINITIONS ::= BEGIN
IMPORTS
        RowStatus, TruthValue, MacAddress
    FROM SNMPv2-TC
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32, Counter64
    FROM SNMPv2-SMI
        InetAddressType,
        InetAddress
    FROM INET-ADDRESS-MIB
        h3cCommon
    FROM HUAWEI-3COM-OID-MIB;

-- =============================================================================
-- module identity part
-- =============================================================================
h3cVxlan MODULE-IDENTITY
    LAST-UPDATED
        "201502110900Z"        -- Feb 11, 2015 at 09:00 GMT
    ORGANIZATION
        "Hangzhou H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team Hangzhou H3C Technologies Co., Ltd.
         Hai-Dian District Beijing P.R. China
         http://www.h3c.com
         Zip:100085"
    DESCRIPTION
        "The overlay MIB."
    REVISION
        "201502110900Z"   -- Feb 11, 2015 at 09:00 GMT
    DESCRIPTION
        "Values 'unknown(0)', 'openflow(4)', and 'ovsdb(5)' were added
         for data type 'h3cVxlanMacType'."
    REVISION
        "201311210900Z"   -- Nov 21, 2013 at 09:00 GMT
    DESCRIPTION
        "Initial version."
    ::= { h3cCommon 150 }

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

h3cVxlanObjects      OBJECT IDENTIFIER ::= { h3cVxlan 1 }

h3cVxlanScalarGroup OBJECT IDENTIFIER ::= { h3cVxlanObjects 1 }

h3cVxlanLocalMacNotify    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Local MAC(Media Access Control) address report capability."
    DEFVAL { false }
    ::= { h3cVxlanScalarGroup 1 }

h3cVxlanRemoteMacLearn    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Remote MAC address self-learning capability."
    DEFVAL { true }
    ::= { h3cVxlanScalarGroup 2 }

h3cVxlanNextVxlanID    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Next available VXLAN ID(identifier), in the range of 0x0 to 0xFFFFFF.
        The invalid value 0xFFFFFFFF indicates that no ID can be set."
    ::= { h3cVxlanScalarGroup 3 }

h3cVxlanConfigured    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of currently configured VXLANs."
    ::= { h3cVxlanScalarGroup 4 }

-- =============================================================================
-- h3cVxlanTable Definition
-- =============================================================================
h3cVxlanTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cVxlanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for VXLAN parameters."
    ::= { h3cVxlanObjects 2 }

h3cVxlanEntry  OBJECT-TYPE
    SYNTAX      H3cVxlanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry represents the parameters of a VXLAN."
    INDEX
    {
        h3cVxlanID
    }
    ::= { h3cVxlanTable 1 }

H3cVxlanEntry ::=
    SEQUENCE
    {
        h3cVxlanID                 Unsigned32,
        h3cVxlanAddrType           InetAddressType,
        h3cVxlanGroupAddr          InetAddress,
        h3cVxlanSourceAddr         InetAddress,
        h3cVxlanVsiIndex           Unsigned32,
        h3cVxlanRemoteMacCount     Unsigned32,
        h3cVxlanRowStatus          RowStatus
    }

h3cVxlanID    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The VXLAN ID."
    ::= { h3cVxlanEntry 1 }

h3cVxlanAddrType    OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The type of multicast group address."
    ::= { h3cVxlanEntry 2 }

h3cVxlanGroupAddr    OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Group destination address."
    ::= { h3cVxlanEntry 3 }

h3cVxlanSourceAddr    OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Group source address."
    ::= { h3cVxlanEntry 4 }

h3cVxlanVsiIndex    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "VSI index.  A unique index for the conceptual row identifying
         a VSI in the h3cVsiTable."
    ::= { h3cVxlanEntry 5 }

h3cVxlanRemoteMacCount    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Remote MAC address count of this VXLAN."
    ::= { h3cVxlanEntry 6 }

h3cVxlanRowStatus     OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Operation status of this table entry.  When a row in this
         table is in active state, no objects in that row
         can be modified by the agent except
         h3cVxlanGroupAddr, h3cVxlanSourceAddr."
    ::= { h3cVxlanEntry 7 }

-- =============================================================================
-- End of h3cVxlanTable Definition
-- =============================================================================

-- =============================================================================
-- h3cVxlanTunnelTable Definition
-- =============================================================================
h3cVxlanTunnelTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cVxlanTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for VXLAN tunnel parameters."
    ::= { h3cVxlanObjects 3 }

h3cVxlanTunnelEntry  OBJECT-TYPE
    SYNTAX      H3cVxlanTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry represents the parameters of a VXLAN tunnel."
    INDEX
    {
        h3cVxlanID,
        h3cVxlanTunnelID
    }
    ::= { h3cVxlanTunnelTable 1 }

H3cVxlanTunnelEntry ::=
    SEQUENCE
    {
        h3cVxlanTunnelID             Unsigned32,
        h3cVxlanTunnelRowStatus      RowStatus,
        h3cVxlanTunnelOctets         Counter64,
        h3cVxlanTunnelPackets        Counter64
    }

h3cVxlanTunnelID    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique index for tunnel."
    ::= { h3cVxlanTunnelEntry 1 }

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

h3cVxlanTunnelOctets   OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of octets that have been forwarded over the tunnel.

        Discontinuities in the value of this counter can
        occur at re-initialization of the management system,
        and at other times."
    ::= { h3cVxlanTunnelEntry 3 }

h3cVxlanTunnelPackets  OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of packets that have been forwarded over the tunnel.

        Discontinuities in the value of this counter can
        occur at re-initialization of the management system
        and at other times."
    ::= { h3cVxlanTunnelEntry 4 }

-- =============================================================================
-- End of h3cVxlanTunnelTable Definition
-- =============================================================================

-- =============================================================================
-- h3cVxlanTunnelBoundTable Definition
-- =============================================================================
h3cVxlanTunnelBoundTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cVxlanTunnelBoundEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for the number of VXLANs to which the tunnel is bound."
    ::= { h3cVxlanObjects 4 }

h3cVxlanTunnelBoundEntry  OBJECT-TYPE
    SYNTAX      H3cVxlanTunnelBoundEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry represents the number of VXLANs to which a tunnel is bound."
    INDEX
    {
        h3cVxlanTunnelID
    }
    ::= { h3cVxlanTunnelBoundTable 1 }

H3cVxlanTunnelBoundEntry ::=
    SEQUENCE
    {
        h3cVxlanTunnelBoundVxlanNum  Unsigned32
    }

h3cVxlanTunnelBoundVxlanNum    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of VXLANs to which this tunnel is bound."
    ::= { h3cVxlanTunnelBoundEntry 1 }

-- =============================================================================
-- End of h3cVxlanTunnelBoundTable Definition
-- =============================================================================

-- =============================================================================
-- h3cVxlanMacTable Definition
-- =============================================================================
h3cVxlanMacTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cVxlanMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for VXLAN remote MAC addresses."
    ::= { h3cVxlanObjects 5 }

h3cVxlanMacEntry  OBJECT-TYPE
    SYNTAX      H3cVxlanMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A VXLAN remote MAC address."
    INDEX
    {
        h3cVxlanVsiIndex,
        h3cVxlanMacAddr
    }
    ::= { h3cVxlanMacTable 1 }

H3cVxlanMacEntry ::=
    SEQUENCE
    {
        h3cVxlanMacAddr            MacAddress,
        h3cVxlanMacTunnelID        Unsigned32,
        h3cVxlanMacType            INTEGER
    }

h3cVxlanMacAddr    OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "MAC address."
    ::= { h3cVxlanMacEntry 1 }

h3cVxlanMacTunnelID    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A unique index for tunnel."
    ::= { h3cVxlanMacEntry 2 }

h3cVxlanMacType    OBJECT-TYPE
    SYNTAX      INTEGER{
                 unknown (0),
                 selfLearned (1),
                 staticConfigured (2),
                 protocolLearned (3),
                 openflow (4),
                 ovsdb (5)
                 }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of an MAC address.

        selfLearned: Unicast address dynamically learned in the data plane.
        staticConfigured: Unicast address manually added.
        protocolLearned: Unicast address advertised through VXLAN IS-IS or BGP.
               Support for VXLAN IS-IS and BGP depends on the software version.
        openflow: Unicast address issued by a controller through OpenFlow.
        ovsdb: Unicast address issued by a controller through OVSDB."
    ::= { h3cVxlanMacEntry 3 }

-- =============================================================================
-- End of h3cVxlanMacTable Definition
-- =============================================================================

-- =============================================================================
-- h3cVxlanStaticMacTable Definition
-- =============================================================================
h3cVxlanStaticMacTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cVxlanStaticMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table for VXLAN static remote MAC addresses."
    ::= { h3cVxlanObjects 6 }

h3cVxlanStaticMacEntry  OBJECT-TYPE
    SYNTAX      H3cVxlanStaticMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A VXLAN static MAC address."
    INDEX
    {
        h3cVxlanVsiIndex,
        h3cVxlanStaticMacAddr
    }
    ::= { h3cVxlanStaticMacTable 1 }

H3cVxlanStaticMacEntry ::=
    SEQUENCE
    {
        h3cVxlanStaticMacAddr         MacAddress,
        h3cVxlanStaticMacTunnelID     Unsigned32,
        h3cVxlanStaticMacRowStatus    RowStatus
    }

h3cVxlanStaticMacAddr    OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Static MAC address."
    ::= { h3cVxlanStaticMacEntry 1 }

h3cVxlanStaticMacTunnelID    OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A unique index for tunnel."
    ::= { h3cVxlanStaticMacEntry 2 }

h3cVxlanStaticMacRowStatus     OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Operation status of this table entry.  When a row in this
         table is in active state, no objects in that row
         can be modified by the agent."
    ::= { h3cVxlanStaticMacEntry 3 }

-- =============================================================================
-- End of h3cVxlanStaticMacTable Definition
-- =============================================================================

END
