-- ============================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description: The EVB MIB module for managing devices that support Ethernet
--              Virtual Bridging (EVB).
-- Reference: IEEE Std 802.1Qbg
-- Version: V1.0
-- History:
-- V1.0 2012-12-21 created by Guo Xiangbin.
-- ============================================================================
HPN-ICF-EVB-MIB DEFINITIONS ::= BEGIN

IMPORTS
    Integer32, OBJECT-TYPE, MODULE-IDENTITY, Unsigned32
        FROM SNMPv2-SMI
    RowStatus, TruthValue, MacAddress
        FROM SNMPv2-TC
    hpnicfCommon
        FROM  HPN-ICF-OID-MIB
    IEEE8021BridgePortNumber
        FROM IEEE8021-TC-MIB
    VlanIndex
        FROM Q-BRIDGE-MIB
    InterfaceIndexOrZero
        FROM IF-MIB;

hpnicfEvb MODULE-IDENTITY
    LAST-UPDATED "201212211200Z"
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "EVB management information base for managing devices that support
         Ethernet Virtual Bridging.  This MIB is an extension of
         IEEE8021-EVB-MIB."
    REVISION "201212211200Z"
    DESCRIPTION
        "Created by Guo Xiangbin."
    ::= { hpnicfCommon 134 }

-- =============================================================
-- Subtrees in the EVB MIB
-- =============================================================

hpnicfEvbSysObjects
    OBJECT IDENTIFIER ::= { hpnicfEvb 1 }

hpnicfEvbPortObjects
    OBJECT IDENTIFIER ::= { hpnicfEvb 2 }

hpnicfFlex10Objects
    OBJECT IDENTIFIER ::= { hpnicfEvb 3 }

hpnicfEvbSetResult OBJECT-TYPE
    SYNTAX INTEGER
    {
        unknown(1),
        processing(2),
        success(3),
        failed(4)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "If a set operation on EVB-MIB-tables returns success, this object
         indicates the actual result of this operation.  Otherwise, it is
         meaningless.
         unknown: The set operation on the node has been completed, but the
                  result could only be got from the table which the set
                  operation happended.
         processing: The set operation is in process.  Another set operation
                     cannot be performed at this time.
         success: The set operation has succeeded.
         failed: The set operation has failed."
    ::= { hpnicfEvbSysObjects 1}

--  =========================
--  VSI default manager table
--  =========================

hpnicfEvbDefaultManagerTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfEvbDefaultManagerEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for the default
         Virtual Station Interface (VSI) manager."
    ::= { hpnicfEvbSysObjects 2 }

hpnicfEvbDefaultManagerEntry OBJECT-TYPE
    SYNTAX HpnicfEvbDefaultManagerEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the default VSI manager."
    INDEX { hpnicfEvbManagerIndex }
    ::= { hpnicfEvbDefaultManagerTable 1 }

HpnicfEvbDefaultManagerEntry ::=
    SEQUENCE
    {
        hpnicfEvbManagerIndex
            Unsigned32,
        hpnicfEvbManagerType
            INTEGER,
        hpnicfEvbManagerID
            OCTET STRING,
        hpnicfEvbManagerPort
            Unsigned32,
        hpnicfEvbManagerRowStatus
            RowStatus
    }

hpnicfEvbManagerIndex OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Index of the default manager table."
    ::= { hpnicfEvbDefaultManagerEntry 1 }

hpnicfEvbManagerType OBJECT-TYPE
    SYNTAX INTEGER
    {
        ipv4(1),
        ipv6(2),
        name(3),
        local(4)
    }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Type of the default VSI manager.
         ipv4: Specifies the IPv4 address of the default VSI manager.
         ipv6: Specifies the IPv6 address of the default VSI manager.
         name: Specifies the name of the default VSI manager, a
               case-insensitive string of 1 to 127 characters.
         local: Specifies the device as the default VSI manager."
    ::= { hpnicfEvbDefaultManagerEntry 2 }

hpnicfEvbManagerID OBJECT-TYPE
    SYNTAX OCTET STRING (SIZE(0..127))
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Default VSI manager.
         The value is zero-length string when the VSI manager type is 'local'."
    ::= { hpnicfEvbDefaultManagerEntry 3 }

hpnicfEvbManagerPort OBJECT-TYPE
    SYNTAX Unsigned32 (0..65535)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Port number of the default VSI manager.
         Optional when the VSI manager type is not 'local'.
         If the VSI manager type is 'local', it returns zero."
    DEFVAL { 8080 }
    ::= { hpnicfEvbDefaultManagerEntry 4 }

hpnicfEvbManagerRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Row status: CreateAndGo, Active, or Destroy."
    ::= { hpnicfEvbDefaultManagerEntry 5 }

--  =====================
--  EVB bridge port table
--  =====================

hpnicfEvbPortConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfEvbPortConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for the EVB bridge
         port."
    ::= { hpnicfEvbPortObjects 1 }

hpnicfEvbPortConfigEntry OBJECT-TYPE
    SYNTAX HpnicfEvbPortConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the EVB bridge port."
    INDEX { hpnicfEvbPortNumber }
    ::= { hpnicfEvbPortConfigTable 1 }

HpnicfEvbPortConfigEntry ::=
    SEQUENCE
    {
        hpnicfEvbPortNumber
            IEEE8021BridgePortNumber,
        hpnicfEvbRWD
            Unsigned32,
        hpnicfEvbRKA
            Unsigned32
    }

hpnicfEvbPortNumber OBJECT-TYPE
    SYNTAX IEEE8021BridgePortNumber
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Port number."
    ::= { hpnicfEvbPortConfigEntry 1 }

hpnicfEvbRWD OBJECT-TYPE
    SYNTAX Unsigned32 (15..31)
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "VDP resource wait delay exponent."
    DEFVAL { 20 }
    ::= { hpnicfEvbPortConfigEntry 2 }

hpnicfEvbRKA OBJECT-TYPE
    SYNTAX Unsigned32 (14..31)
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "VDP keepalive exponent."
    DEFVAL { 20 }
    ::= { hpnicfEvbPortConfigEntry 3 }

--  ======================
--  S-channel config table
--  ======================

hpnicfEvbSchannelConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfEvbSchannelConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for the S-channel."
    ::= { hpnicfEvbPortObjects 2 }

hpnicfEvbSchannelConfigEntry OBJECT-TYPE
    SYNTAX HpnicfEvbSchannelConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the S-channel."
    INDEX { hpnicfEvbPortNumber,
            hpnicfEvbSchannelID }
    ::= { hpnicfEvbSchannelConfigTable 1 }

HpnicfEvbSchannelConfigEntry ::=
    SEQUENCE
    {
        hpnicfEvbSchannelID
            Unsigned32,
        hpnicfEvbSchannelSVLAN
            Unsigned32,
        hpnicfEvbMacLearningStatus
            TruthValue,
        hpnicfEvbRRStatus
            TruthValue,
        hpnicfEvbSchannelRowStatus
            RowStatus
    }

hpnicfEvbSchannelID OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "S-channel ID."
    ::= { hpnicfEvbSchannelConfigEntry 1 }

hpnicfEvbSchannelSVLAN OBJECT-TYPE
    SYNTAX Unsigned32 (0..4094)
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "S-VLAN ID. 0 means that the S-channel is not bound to any S-VLAN.
         1 represents the SVID for the default S-channel S-channel 1."
    DEFVAL { 0 }
    ::= { hpnicfEvbSchannelConfigEntry 2 }

hpnicfEvbMacLearningStatus OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The MAC address learning function is enabled or not."
    DEFVAL { true }
    ::= { hpnicfEvbSchannelConfigEntry 3 }

hpnicfEvbRRStatus OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The RR mode for the S-channel is enabled or not."
    DEFVAL { false }
    ::= { hpnicfEvbSchannelConfigEntry 4 }


hpnicfEvbSchannelRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Row status: CreateAndGo, Active, or Destroy."
    ::= { hpnicfEvbSchannelConfigEntry 5 }

--  ================
--  VSI config table
--  ================

hpnicfEvbVSIConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfEvbVSIConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for the VSI."
    ::= { hpnicfEvbPortObjects 3 }

hpnicfEvbVSIConfigEntry OBJECT-TYPE
    SYNTAX HpnicfEvbVSIConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the VSI."
    INDEX { hpnicfEvbSBPPortNumber,
            hpnicfEvbVSILocalID }
    ::= { hpnicfEvbVSIConfigTable 1 }

HpnicfEvbVSIConfigEntry ::=
    SEQUENCE
    {
        hpnicfEvbSBPPortNumber
            IEEE8021BridgePortNumber,
        hpnicfEvbVSILocalID
            Unsigned32,
        hpnicfEvbVSICommand
            INTEGER,
        hpnicfEvbVSIIfIndex
            InterfaceIndexOrZero,
        hpnicfEvbVSIIsActive
            TruthValue,
        hpnicfEvbVSIRowStatus
            RowStatus
    }

hpnicfEvbSBPPortNumber OBJECT-TYPE
    SYNTAX IEEE8021BridgePortNumber
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The Station-facing Bridge Port (SBP) port number."
    ::= { hpnicfEvbVSIConfigEntry 1 }

hpnicfEvbVSILocalID OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "VSI local ID."
    ::= { hpnicfEvbVSIConfigEntry 2 }

hpnicfEvbVSICommand OBJECT-TYPE
    SYNTAX INTEGER
    {
        preAssociate (1),
        preAssociateWithRsrcReservation (2),
        associate (3),
        deAssociate (4)
    }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "This object indicates the association or pre-associate property of the
         VSI."
    ::= { hpnicfEvbVSIConfigEntry 3 }

hpnicfEvbVSIIfIndex OBJECT-TYPE
    SYNTAX InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "VSI interface index."
    ::= { hpnicfEvbVSIConfigEntry 4 }

hpnicfEvbVSIIsActive OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The VSI is activated or not.  Activate a VSI after configuring a VSI
         filter, and deactivate a VSI before removing a VSI filter."
    DEFVAL { false }
    ::= { hpnicfEvbVSIConfigEntry 5 }


hpnicfEvbVSIRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Row status: CreateAndGo, Active, or Destroy."
    ::= { hpnicfEvbVSIConfigEntry 6 }

--  =======================
--  VSI filter config table
--  =======================

hpnicfEvbVSIFilterConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfEvbVSIFilterConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for filters of the
         VSI."
    ::= { hpnicfEvbPortObjects 4 }

hpnicfEvbVSIFilterConfigEntry OBJECT-TYPE
    SYNTAX HpnicfEvbVSIFilterConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for filters of the VSI."
    INDEX { hpnicfEvbSBPPortNumber,
            hpnicfEvbVSILocalID,
            hpnicfEvbGroupID,
            hpnicfEvbVSIMac,
            hpnicfEvbVSIVlanId }
    ::= { hpnicfEvbVSIFilterConfigTable 1 }

HpnicfEvbVSIFilterConfigEntry ::=
    SEQUENCE
    {
        hpnicfEvbGroupID
            Unsigned32,
        hpnicfEvbVSIMac
            MacAddress,
        hpnicfEvbVSIVlanId
            VlanIndex,
        hpnicfEvbVSIFilterRowStatus
            RowStatus
    }

hpnicfEvbGroupID OBJECT-TYPE
    SYNTAX Unsigned32
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Group ID."
    ::= { hpnicfEvbVSIFilterConfigEntry 1 }

hpnicfEvbVSIMac OBJECT-TYPE
    SYNTAX MacAddress
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The MAC address part of the MAC/VLANs for a VSI."
    ::= { hpnicfEvbVSIFilterConfigEntry 2 }

hpnicfEvbVSIVlanId OBJECT-TYPE
    SYNTAX VlanIndex
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The VLAN ID part of the MAC/VLANs for a VSI."
    ::= { hpnicfEvbVSIFilterConfigEntry 3 }

hpnicfEvbVSIFilterRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "Row status: CreateAndGo, Active, or Destroy."
    ::= { hpnicfEvbVSIFilterConfigEntry 4 }

--  ========================
--  Flex10 port config table
--  ========================

hpnicfFlex10PortConfigTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfFlex10PortConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains configuration information for the flex10 bridge
         port."
    ::= { hpnicfFlex10Objects 1 }

hpnicfFlex10PortConfigEntry OBJECT-TYPE
    SYNTAX HpnicfFlex10PortConfigEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the flex10 bridge port."
    INDEX { hpnicfFlex10PortNumber }
    ::= { hpnicfFlex10PortConfigTable 1 }

HpnicfFlex10PortConfigEntry ::=
    SEQUENCE
    {
        hpnicfFlex10PortNumber
            IEEE8021BridgePortNumber,
        hpnicfFlex10PortEnableStatus
            TruthValue
    }

hpnicfFlex10PortNumber OBJECT-TYPE
    SYNTAX IEEE8021BridgePortNumber
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Port number."
    ::= { hpnicfFlex10PortConfigEntry 1 }

hpnicfFlex10PortEnableStatus OBJECT-TYPE
    SYNTAX TruthValue
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The flex10 function is enabled or not."
    DEFVAL { false }
    ::= { hpnicfFlex10PortConfigEntry 2 }

--  =============================
--  Flex10 remote S-channel table
--  =============================

hpnicfFlex10RemoteSchannelTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfFlex10RemoteSchannelEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains remote S-channel details."
    ::= { hpnicfFlex10Objects 2 }

hpnicfFlex10RemoteSchannelEntry OBJECT-TYPE
    SYNTAX HpnicfFlex10RemoteSchannelEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects describing remote S-channels."
    INDEX { hpnicfFlex10PortNumber,
            hpnicfEvbSchannelID }
    ::= { hpnicfFlex10RemoteSchannelTable 1 }

HpnicfFlex10RemoteSchannelEntry ::=
    SEQUENCE
    {
        hpnicfFlex10RemSchDesFormat
            BITS,
        hpnicfFlex10RemSchTerminationType
            Integer32,
        hpnicfFlex10RemSchTerminationCap
            BITS,
        hpnicfFlex10RemSchTrafficClass
            BITS,
        hpnicfFlex10RemSchCir
            Integer32,
        hpnicfFlex10RemSchPir
            Integer32,
        hpnicfFlex10RemSchConnectionID
            OCTET STRING
    }

hpnicfFlex10RemSchDesFormat OBJECT-TYPE
    SYNTAX BITS
    {
        format0 (0),
        format1 (1)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Description format of the remote S-channel."
    ::= { hpnicfFlex10RemoteSchannelEntry 1 }

hpnicfFlex10RemSchTerminationType OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Termination type of the remote S-channel.
         0: PCI Physical Function (Primary).
         1: SRIOV Virtual Function.
         2: PCI Physical Function (Secondary).
         3: Virtual Switch Port.
         4: NCSI Port.
         2147483647: This value means a Description TLV with format 0 has not
                     been received.
         other: Unknown termination type."
    ::= { hpnicfFlex10RemoteSchannelEntry 2 }

hpnicfFlex10RemSchTerminationCap OBJECT-TYPE
    SYNTAX BITS
    {
        ethernet (0),
        fCOE (1),
        iSCSI (2),
        roCEE (3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Termination capabilities of the remote S-channel.  If a Description
         TLV with format 0 has not been received, it returns all zeros."
    ::= { hpnicfFlex10RemoteSchannelEntry 3 }

hpnicfFlex10RemSchTrafficClass OBJECT-TYPE
    SYNTAX BITS
    {
        class0 (0),
        class1 (1),
        class2 (2),
        class3 (3),
        class4 (4),
        class5 (5),
        class6 (6),
        class7 (7)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Traffic classes of the remote S-channel.  If a Description TLV with
         format 0 has not been received, it returns all zeros."
    ::= { hpnicfFlex10RemoteSchannelEntry 4 }

hpnicfFlex10RemSchCir OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "mbps"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Committed Information Rate (CIR) of the remote S-channel.  If a
         Description TLV with format 0 has not been received, it returns 0."
    ::= { hpnicfFlex10RemoteSchannelEntry 5 }

hpnicfFlex10RemSchPir OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "mbps"
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Peak Information Rate (PIR) of the remote S-channel.  If a Description
         TLV with format 0 has not been received, it returns 0."
    ::= { hpnicfFlex10RemoteSchannelEntry 6 }

hpnicfFlex10RemSchConnectionID OBJECT-TYPE
    SYNTAX OCTET STRING (SIZE (0..16))
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Connection instance ID of the remote S-channel.
         The value is a zero-length string if a Description TLV with format 1
         has not been received.  Otherwise it returns a string with length 16."
    ::= { hpnicfFlex10RemoteSchannelEntry 7 }

--  ===================================
--  Flex10 S-channel link control table
--  ===================================

hpnicfFlex10SchannelLinkCtlTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpnicfFlex10SchannelLinkCtlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table that contains link status information for the S-channel."
    ::= { hpnicfFlex10Objects 3 }

hpnicfFlex10SchannelLinkCtlEntry OBJECT-TYPE
    SYNTAX HpnicfFlex10SchannelLinkCtlEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A list of objects containing information for the S-channel."
    INDEX { hpnicfFlex10PortNumber,
            hpnicfEvbSchannelID }
    ::= { hpnicfFlex10SchannelLinkCtlTable 1 }

HpnicfFlex10SchannelLinkCtlEntry ::=
    SEQUENCE
    {
        hpnicfFlex10SchannelSVID
            VlanIndex,
        hpnicfFlex10SchannelLocalStatus
            INTEGER,
        hpnicfFlex10SchannelRemoteStatus
            INTEGER
    }

hpnicfFlex10SchannelSVID OBJECT-TYPE
    SYNTAX VlanIndex
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "S-VLAN ID for the S-channel."
    ::= { hpnicfFlex10SchannelLinkCtlEntry 1 }

hpnicfFlex10SchannelLocalStatus OBJECT-TYPE
    SYNTAX INTEGER
    {
        unknown (1),
        disabled (2),
        enabled (3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Link status of the local S-channel."
    ::= { hpnicfFlex10SchannelLinkCtlEntry 2 }

hpnicfFlex10SchannelRemoteStatus OBJECT-TYPE
    SYNTAX INTEGER
    {
        unknown (1),
        disabled (2),
        enabled (3)
    }
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "Link status of the remote S-channel."
    ::= { hpnicfFlex10SchannelLinkCtlEntry 3 }

END
