-- =============================================================================
-- Copyright (c) 2010-2014 Hewlett-Packard Development Company, L.P.
--
-- Description: The VXLAN(Virtual eXtended Local Area Network) MIB
-- Reference:
-- Version: V1.0
-- History:
--   V1.0 2013-11-21 Initial version Created by Neng Yan
-- =============================================================================
HPN-ICF-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
        hpnicfCommon
    FROM HPN-ICF-OID-MIB;

-- =============================================================================
-- module identity part
-- =============================================================================
hpnicfVxlan MODULE-IDENTITY
    LAST-UPDATED
        "201311210900Z"        -- Nov 21, 2013 at 09:00 GMT
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "The overlay MIB."
    REVISION
        "201311210900Z"   -- Nov 21, 2013 at 09:00 GMT
    DESCRIPTION
        "Initial version."
    ::= { hpnicfCommon 150 }

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

hpnicfVxlanObjects      OBJECT IDENTIFIER ::= { hpnicfVxlan 1 }

hpnicfVxlanScalarGroup OBJECT IDENTIFIER ::= { hpnicfVxlanObjects 1 }

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

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

hpnicfVxlanNextVxlanID    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."
    ::= { hpnicfVxlanScalarGroup 3 }

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

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

hpnicfVxlanEntry  OBJECT-TYPE
    SYNTAX      HpnicfVxlanEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry represents the parameters of a VXLAN."
    INDEX
    {
        hpnicfVxlanID
    }
    ::= { hpnicfVxlanTable 1 }

HpnicfVxlanEntry ::=
    SEQUENCE
    {
        hpnicfVxlanID                 Unsigned32,
        hpnicfVxlanAddrType           InetAddressType,
        hpnicfVxlanGroupAddr          InetAddress,
        hpnicfVxlanSourceAddr         InetAddress,
        hpnicfVxlanVsiIndex           Unsigned32,
        hpnicfVxlanRemoteMacCount     Unsigned32,
        hpnicfVxlanRowStatus          RowStatus
    }

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

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

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

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

hpnicfVxlanVsiIndex    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 hpnicfVsiTable."
    ::= { hpnicfVxlanEntry 5 }

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

hpnicfVxlanRowStatus     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
         hpnicfVxlanGroupAddr, hpnicfVxlanSourceAddr."
    ::= { hpnicfVxlanEntry 7 }

-- =============================================================================
-- End of hpnicfVxlanTable Definition
-- =============================================================================

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

hpnicfVxlanTunnelEntry  OBJECT-TYPE
    SYNTAX      HpnicfVxlanTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Each entry represents the parameters of a VXLAN tunnel."
    INDEX
    {
        hpnicfVxlanID,
        hpnicfVxlanTunnelID
    }
    ::= { hpnicfVxlanTunnelTable 1 }

HpnicfVxlanTunnelEntry ::=
    SEQUENCE
    {
        hpnicfVxlanTunnelID             Unsigned32,
        hpnicfVxlanTunnelRowStatus      RowStatus,
        hpnicfVxlanTunnelOctets         Counter64,
        hpnicfVxlanTunnelPackets        Counter64
    }

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

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

hpnicfVxlanTunnelOctets   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."
    ::= { hpnicfVxlanTunnelEntry 3 }

hpnicfVxlanTunnelPackets  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."
    ::= { hpnicfVxlanTunnelEntry 4 }

-- =============================================================================
-- End of hpnicfVxlanTunnelTable Definition
-- =============================================================================

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

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

HpnicfVxlanTunnelBoundEntry ::=
    SEQUENCE
    {
        hpnicfVxlanTunnelBoundVxlanNum  Unsigned32
    }

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

-- =============================================================================
-- End of hpnicfVxlanTunnelBoundTable Definition
-- =============================================================================

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

hpnicfVxlanMacEntry  OBJECT-TYPE
    SYNTAX      HpnicfVxlanMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A VXLAN remote MAC address."
    INDEX
    {
        hpnicfVxlanVsiIndex,
        hpnicfVxlanMacAddr
    }
    ::= { hpnicfVxlanMacTable 1 }

HpnicfVxlanMacEntry ::=
    SEQUENCE
    {
        hpnicfVxlanMacAddr            MacAddress,
        hpnicfVxlanMacTunnelID        Unsigned32,
        hpnicfVxlanMacType            INTEGER
    }

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

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

hpnicfVxlanMacType    OBJECT-TYPE
    SYNTAX      INTEGER{
                 selfLearned (1),
                 staticConfigured (2),
                 protocolLearned (3)
                 }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of an MAC address."
    ::= { hpnicfVxlanMacEntry 3 }

-- =============================================================================
-- End of hpnicfVxlanMacTable Definition
-- =============================================================================

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

hpnicfVxlanStaticMacEntry  OBJECT-TYPE
    SYNTAX      HpnicfVxlanStaticMacEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A VXLAN static MAC address."
    INDEX
    {
        hpnicfVxlanVsiIndex,
        hpnicfVxlanStaticMacAddr
    }
    ::= { hpnicfVxlanStaticMacTable 1 }

HpnicfVxlanStaticMacEntry ::=
    SEQUENCE
    {
        hpnicfVxlanStaticMacAddr         MacAddress,
        hpnicfVxlanStaticMacTunnelID     Unsigned32,
        hpnicfVxlanStaticMacRowStatus    RowStatus
    }

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

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

hpnicfVxlanStaticMacRowStatus     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."
    ::= { hpnicfVxlanStaticMacEntry 3 }

-- =============================================================================
-- End of hpnicfVxlanStaticMacTable Definition
-- =============================================================================

END
