-- =============================================================================
-- Copyright (c) 2004-2015 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description:
--      This MIB module is for configuring and monitoring Fibre Channel
--      over Ethernet (FCoE) related entities.
-- Reference:
-- Version: V1.2
-- History:
--      V1.0 created by h06247
--      V1.1 Added h3cFCoEFIPSnoopingTable by zhangchangjun 02876.
--           Modified the range of h3cFCoECfgDATov by wangyuqiang 08530.
--      V1.2 Added h3cFCoEVlanCfgTable by chengzhipeng 04378 2014-05-09
--           Modified the range of h3cFCoECfgDATov by chengzhipeng 04378.
--           Added h3cFCoEFIPSnoopingFCFTable, h3cFCoEFIPSnoopingENodeTable,
--           h3cFCoEFIPSnoopingVNTable and h3cFCoEFIPSnoopingIfCfgTable by
--           h06247 2014-11-12
-- =============================================================================
H3C-FCOE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    h3cCommon                   FROM HUAWEI-3COM-OID-MIB
    MODULE-IDENTITY, OBJECT-TYPE,
    Unsigned32                  FROM SNMPv2-SMI         -- [RFC2578]
    RowStatus, TimeStamp,
    TruthValue, MacAddress,
    TEXTUAL-CONVENTION          FROM SNMPv2-TC          -- [RFC2578]
    SnmpAdminString             FROM SNMP-FRAMEWORK-MIB -- [RFC3411]
    InterfaceIndex,
    InterfaceIndexOrZero        FROM IF-MIB             -- [RFC2863]
    VlanIndex                   FROM Q-BRIDGE-MIB       -- [RFC4363]
    T11FabricIndex              FROM T11-TC-MIB         -- [RFC4439]
    fcmInstanceIndex            FROM FC-MGMT-MIB        -- [RFC4044]
    H3cFcNameId                FROM H3C-FC-TC-MIB;

h3cFCoE MODULE-IDENTITY
    LAST-UPDATED    "201411120000Z"
    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
        "This MIB module is for configuring and monitoring Fibre Channel
        over Ethernet (FCoE) related entities.  This MIB defines a
        Virtual FC (VFC) Interface as an object that represents either
        a VF_Port or a VE_Port on an FCoE Forwarder (FCF).  VFC
        interfaces can be created either statically (by management
        request) or dynamically (at the time of FIP based FLOGI or ELP
        request).
        Other terminologies used in this MIB are defined by the
        H3c FCoE standard, as defined in the FC-BB-5 specification.
        This MIB also supports configuration of the following objects:
        - Mapping of FCoE VLAN-ID used to carry traffic for a Fabric
        - FC-MAP value used by the FCF operating in FPMA mode
        - FIP snooping related objects"
    REVISION        "201411120000Z"
    DESCRIPTION
        "Added h3cFCoEFIPSnoopingFCFTable, h3cFCoEFIPSnoopingENodeTable
        h3cFCoEFIPSnoopingVNTable and h3cFCoEFIPSnoopingIfCfgTable."
    REVISION        "201203280000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { h3cCommon 120 }

h3cFCoEObjects  OBJECT  IDENTIFIER
    ::= { h3cFCoE 1 }
h3cFCoEConfig   OBJECT  IDENTIFIER
    ::= { h3cFCoEObjects 1 }

H3cFCoEVfcBindType ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Defines the different methods to identify (or bind to)
            - the ENode associated with a particular VF_Port VFC
            - the remote-FCF associated with a particular VE_Port VFC
            interfaceIndex(1) - This type is used only when an ENode
                or remote-FCF is directly connected to the local FCF
                via one of the local Ethernet interfaces, in which
                case the value contains the ifIndex of said Ethernet
                interface.
            macAddress(2) - This type is used when an ENode or
                remote-FCF is reachable from the local FCF over a
                (Layer-2) Ethernet network.  A FIP frame from an
                ENode or remote-FCF is associated to a VFC only if
                the frame's source MAC address is the same as the
                MAC Address bound on that VFC."
    SYNTAX INTEGER  {
                        interfaceIndex(1),
                        macAddress(2)
                    }
--
-- FCoE Globals per Switch in a Fibre Channel Management Instance
-- Fibre Channel Management instance is defined in [RFC4044] as a
-- separable managed instance of Fibre Channel functionality.
-- Fibre Channel functionality may be grouped into Fibre
-- Channel management instances in whatever way is most
-- convenient for the implementation(s).
--
-- RFC4044 also defines the fcmSwitchTable as a table of
-- information about Fibre Channel switches which are managed
-- by Fibre Channel management instances.  Each Fibre Channel
-- management instance can manage one or more Fibre Channel
-- switches.  The Switch Index, fcmSwitchIndex, is
-- IMPORTed from the FC-MGMT-MIB as the index value
-- to uniquely identify a Fibre Channel switch amongst
-- those (one or more) managed by the same Fibre
-- Channel management instance.
-- In this MIB, the same fcmSwitchIndex is used to
-- identify each FCF and to distinguish it from other
-- FCFs and from other Fibre Channel switches.
--
--

h3cFCoECfgTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoECfgEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table facilitates configuration of FCoE parameters
        on a per Fibre Channel management instance."
    ::= { h3cFCoEConfig 1 }

h3cFCoECfgEntry OBJECT-TYPE
    SYNTAX          H3cFCoECfgEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "There is one entry in this table for each
        Fibre Channel management instance."
    INDEX           {
                        fcmInstanceIndex
                    }
    ::= { h3cFCoECfgTable 1 }

H3cFCoECfgEntry ::= SEQUENCE {
    h3cFCoECfgFcmap                    OCTET STRING,
    h3cFCoECfgDynamicVfcCreation       TruthValue,
    h3cFCoECfgDefaultFCFPriority       Unsigned32,
    h3cFCoECfgDATov                    Unsigned32,
    h3cFCoECfgAddressingMode           INTEGER
}

h3cFCoECfgFcmap OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE (3))
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object configures the FC-MAP value used by the FCF
        when operating in FPMA mode.  The default value is 0EFC00h,
        as written in the standard."
    REFERENCE
        "Fibre Channel - Backbone - 5 (FC-BB-5),
        section 7.6 and table 47"
    DEFVAL { '0EFC00'h }
    ::= { h3cFCoECfgEntry 1 }

h3cFCoECfgDynamicVfcCreation OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object is set to 'true' to enable, or 'false' to
        disable, the dynamic creation of VFC interfaces on this FCF.
        When set to 'true', VFC interfaces are dynamically created
        as and when a FIP-based FLOGI or ELP request is received."
    DEFVAL { false }
    ::= { h3cFCoECfgEntry 2 }

h3cFCoECfgDefaultFCFPriority OBJECT-TYPE
    SYNTAX          Unsigned32 (0..255)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The FIP priority value advertised by the FCF to ENodes by
        default.  h3cFCoEStaticVfcFCFPriority configured for a VFC
        interface overrides this setting for the ENode associated
        with the VFC."
    DEFVAL { 128 }
    ::= { h3cFCoECfgEntry 3 }

h3cFCoECfgDATov OBJECT-TYPE
    SYNTAX          Unsigned32 (4..600)
    UNITS           "seconds"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The Discovery_Advertisement_Timeout value configured for
        the FCF.  This is used as the timeout value in seconds by
        the FCF to send periodic Discovery Advertisements."
    DEFVAL { 8 }
    ::= { h3cFCoECfgEntry 4 }

h3cFCoECfgAddressingMode OBJECT-TYPE
    SYNTAX          INTEGER {
                        fpma(1),
                        spma(2),
                        fpmaAndSpma(3)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Addressing mode(s) supported by the FCF.  Implementations
        should fail SetRequests for unsupported modes."
    ::= { h3cFCoECfgEntry 5 }

h3cFCoEVLANTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEVLANEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "In fabrics in which VLANs are deployed, this table facilitates
        configuration of VLAN and Virtual Fabric associations in an
        FCoE network.  In such fabrics, FCoE forwarding for a fabric
        is over a VLAN in a (Layer-2) Ethernet network.  That is,
        reachability between the ENode/remote-FCF and an FCF for a
        given fabric is determined by the reachability provided by the
        Ethernet network on the corresponding VLAN.
        An active entry in this table indicates which VLAN is used
        to transport FCoE traffic for a particular Virtual Fabric.
        If VLANs are not deployed or not enabled, entries in this table
        are ignored by the bridge.
        Some implementations may allow traffic from only one Virtual
        Fabric to be transported over a given VLAN.  Such
        implementations should prevent multiple entries with the same
        VLAN-ID from being created in this table.
        Modifying existing VLAN-Virtual Fabric associations is not
        possible.  The specific row must first be deleted and then
        a new one created."
    ::= { h3cFCoEConfig 2 }

h3cFCoEVLANEntry OBJECT-TYPE
    SYNTAX          H3cFCoEVLANEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "There is one entry in this table for each VLAN that is
        designated to transport FCoE traffic for a given Virtual
        Fabric."
    INDEX           {
                        fcmInstanceIndex,
                        h3cFCoEVLANIndex,
                        h3cFCoEFabricIndex
                    }
    ::= { h3cFCoEVLANTable 1 }

H3cFCoEVLANEntry ::= SEQUENCE {
        h3cFCoEVLANIndex               VlanIndex,
        h3cFCoEFabricIndex             T11FabricIndex,
        h3cFCoEVLANOperState           INTEGER,
        h3cFCoEVLANRowStatus           RowStatus
}

h3cFCoEVLANIndex OBJECT-TYPE
    SYNTAX          VlanIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the VLAN-ID that the FCoE FCF function
        is being enabled for."
    ::= { h3cFCoEVLANEntry 1 }

h3cFCoEFabricIndex OBJECT-TYPE
    SYNTAX          T11FabricIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the Fabric Index of the Virtual Fabric
        traffic which is to be transported over the VLAN identified
        by h3cFCoEVLANIndex."
    ::= { h3cFCoEVLANEntry 2 }

h3cFCoEVLANOperState OBJECT-TYPE
    SYNTAX          INTEGER {
                        up(1),
                        down(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Operational state of this VLAN-Virtual Fabric association
        entry.  The 'up' state is achieved when both the Virtual
        Fabric and VLAN are valid."
    ::= { h3cFCoEVLANEntry 3 }

h3cFCoEVLANRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.  The RowStatus becomes active
        on successful creation of an entry."
    ::= { h3cFCoEVLANEntry 4 }

h3cFCoEStaticVfcTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEStaticVfcEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table facilitates the creation and deletion of static
        VFC interfaces.  While VFCs can be dynamically created based on
        FIP FLOGI/ELP requests, operators may want to associate certain
        pre-configured policy for a particular ENode or a remote-FCF.
        In such cases static VFC creation becomes necessary.  In addition
        to being creating, a static VFC also needs to be associated to
        an ENode or remote-FCF.  The VFC binding provides such an
        association.  The binding does not need to be specified when
        the row for a VFC is created, but may be specified later."
    ::= { h3cFCoEConfig 3 }

h3cFCoEStaticVfcEntry OBJECT-TYPE
    SYNTAX          H3cFCoEStaticVfcEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "There is one entry in this table for each statically created
        VFC Interface."
    INDEX           {
                        fcmInstanceIndex,
                        h3cFCoEStaticVfcIndex
                    }
    ::= { h3cFCoEStaticVfcTable 1 }

H3cFCoEStaticVfcEntry ::= SEQUENCE {
        h3cFCoEStaticVfcIndex              Unsigned32,
        h3cFCoEStaticVfcFCFPriority        Unsigned32,
        h3cFCoEStaticVfcBindType           H3cFCoEVfcBindType,
        h3cFCoEStaticVfcBindIfIndex        InterfaceIndexOrZero,
        h3cFCoEStaticVfcBindMACAddress     MacAddress,
        h3cFCoEStaticVfcIfIndex            InterfaceIndex,
        h3cFCoEStaticVfcCreationTime       TimeStamp,
        h3cFCoEStaticVfcFailureCause       SnmpAdminString,
        h3cFCoEStaticVfcRowStatus          RowStatus
}

h3cFCoEStaticVfcIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (1..65535)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies a static VFC entry in this
        table."
    ::= { h3cFCoEStaticVfcEntry 1 }

h3cFCoEStaticVfcFCFPriority OBJECT-TYPE
    SYNTAX          Unsigned32 (0..255)
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "If this VFC is for a VF_Port this object is used to configure
        FCF priority to be advertised to the ENode associated with the
        VFC."
    DEFVAL { 128 }
    ::= { h3cFCoEStaticVfcEntry 2 }

h3cFCoEStaticVfcBindType OBJECT-TYPE
    SYNTAX          H3cFCoEVfcBindType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The mechanism to identify the ENode associated with this VFC
        if it is of type VF_Port or to identify the remote-FCF
        associated with this VFC if it is of type VE_Port."
    ::= { h3cFCoEStaticVfcEntry 3 }

h3cFCoEStaticVfcBindIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndexOrZero
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is applicable only when the local FCF is
        directly connected to an ENode or remote-FCF over a
        specific Ethernet interface, in which case this object
        contains the ifIndex of said Ethernet interface.
        If the ENode or remote-FCF is not directly connected
        to the FCF, this value of this object is zero."
    ::= { h3cFCoEStaticVfcEntry 4 }

h3cFCoEStaticVfcBindMACAddress OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is applicable when the ENode or remote-FCF to
        which the local FCF is connected is identified by a MAC
        address.  A FIP frame from an ENode or remote-FCF is
        associated with this VFC only if the source MAC address
        in the frame is the same as the value of this object."
    ::= { h3cFCoEStaticVfcEntry 5 }

h3cFCoEStaticVfcIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The ifIndex of this Virtual FC interface."
    ::= { h3cFCoEStaticVfcEntry 6 }

h3cFCoEStaticVfcCreationTime OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The timestamp of this entry's creation time."
    ::= { h3cFCoEStaticVfcEntry 7 }

h3cFCoEStaticVfcFailureCause OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The cause of failure for the last bind operation.  This
        object will be zero length if and only if the bind is
        successful."
    ::= { h3cFCoEStaticVfcEntry 8 }

h3cFCoEStaticVfcRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.  The RowStatus becomes
        active on successful creation of a VFC.  The VFC does not
        need to be bound for the row to be active, but the VFC must
        be bound before becoming operational."
    ::= { h3cFCoEStaticVfcEntry 9 }

--
-- FIP Snooping related objects used to configure FIP Snooping
-- on a (FIP-aware) Ethernet Bridge
--

h3cFCoEFIPSnoopingTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEFIPSnoopingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "FCoE provides increased flexibility, but with this flexibility
        new challenges arise in assuring highly robust Fabrics.  The FCF
        does not have the complete control that a Fibre Channel switch
        has.
        Ethernet bridges commonly provide a feature called Access Control
        Lists (ACLs).  Properly configured ACLs may emulate a point-to-point
        link by providing the traffic enforcement previously discussed.
        Furthermore, the FIP protocol has been designed to enable Ethernet
        bridges to efficiently monitor FIP frames passing through them.  This
        data facilitates the automatic configuration of these ACLs.  In
        addition, the automatic configuration is possible independent of
        any other ACLs that may be in use in the network for other
        applications.  And FIP Snooping is to maintain these ACLs."
    ::= { h3cFCoEConfig 4 }

h3cFCoEFIPSnoopingEntry OBJECT-TYPE
    SYNTAX          H3cFCoEFIPSnoopingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "There is one entry in this table for each VLAN that is
        designated to ensure that only valid FCoE traffic is allowed."
    INDEX           {
                        fcmInstanceIndex,
                        h3cFCoEFIPSnoopingVLANIndex
                    }
    ::= { h3cFCoEFIPSnoopingTable 1 }

H3cFCoEFIPSnoopingEntry ::= SEQUENCE {
    h3cFCoEFIPSnoopingVLANIndex    VlanIndex,
    h3cFCoEFIPSnoopingEnable       TruthValue,
    h3cFCoEFIPSnoopingFcmap        OCTET STRING
}

h3cFCoEFIPSnoopingVLANIndex OBJECT-TYPE
    SYNTAX          VlanIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the VLAN-ID that the FIP Snooping function
        is being enabled for."
    ::= { h3cFCoEFIPSnoopingEntry 1 }

h3cFCoEFIPSnoopingEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object is used to enable or disable FIP Snooping on an
        Ethernet Bridge."
    DEFVAL { false }
    ::= { h3cFCoEFIPSnoopingEntry 2 }

h3cFCoEFIPSnoopingFcmap OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE (3))
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object configures the FC-MAP value associated with the
        FIP snooping Ethernet Bridge."
    DEFVAL { '0EFC00'h }
    ::= { h3cFCoEFIPSnoopingEntry 3 }

-- VLAN FCoE Configuration
h3cFCoEVlanCfgTable     OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cFCoEVlanCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table contains FCoE related configurations and information of VLANs.
         An entry in this table is created when the corresponding VLAN
         is created and FCoE is enabled for the VLAN, as well as deleted when
         the VLAN is deleted or FCoE is disabled for the VLAN.
         If the switch mode is not FCF-NPV mode, all the operations
         on any object in this table result in errors."
    ::= { h3cFCoEConfig 5 }

h3cFCoEVlanCfgEntry  OBJECT-TYPE
    SYNTAX      H3cFCoEVlanCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry used for managing the FCoE related configurations of a VLAN."
    INDEX { h3cFCoEVLANIndex }
    ::= { h3cFCoEVlanCfgTable 1}

H3cFCoEVlanCfgEntry ::= SEQUENCE {
    h3cFCoEVlanCfgFcmap                    OCTET STRING,
    h3cFCoEVlanCfgFCFPriority              Unsigned32,
    h3cFCoEVlanCfgDATov                    Unsigned32,
    h3cFCoEVlanCfgRowStatus                RowStatus
}

h3cFCoEVlanCfgFcmap OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE (3))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object configures the FC-MAP value used by the FCF in a VLAN
        when operating in FPMA mode.
        If this object is not configured, the default value is 0EFC00h."
    DEFVAL { '0EFC00'h }
    ::= { h3cFCoEVlanCfgEntry 1 }

h3cFCoEVlanCfgFCFPriority OBJECT-TYPE
    SYNTAX          Unsigned32 (0..255)
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The FIP priority value advertised by the FCF in a VLAN to ENodes by
        default.
        If this object is not configured, the default value is 128."
    DEFVAL { 128 }
    ::= { h3cFCoEVlanCfgEntry 2 }

h3cFCoEVlanCfgDATov OBJECT-TYPE
    SYNTAX          Unsigned32 (4..600)
    UNITS           "seconds"
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The Discovery_Advertisement_Timeout value configured for
        the FCF in a VLAN.
        This is used as the timeout value in seconds by
        the FCF in a VLAN to send periodic Discovery Advertisements.
        If this object is not configured, the default value is 8."
    DEFVAL { 8 }
    ::= { h3cFCoEVlanCfgEntry 3 }

h3cFCoEVlanCfgRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Now only three states are supported:
         createAndGo, active, and destroy."
    ::= { h3cFCoEVlanCfgEntry 4 }

-- FIP Snooping FCF information
h3cFCoEFIPSnoopingFCFTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEFIPSnoopingFCFEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table contains the remote FCF information on device."
    ::= { h3cFCoEConfig 6 }

h3cFCoEFIPSnoopingFCFEntry OBJECT-TYPE
    SYNTAX          H3cFCoEFIPSnoopingFCFEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each entry contains information about a FCF for a VLAN."
    INDEX           {
                      fcmInstanceIndex,
                      h3cFCoEFIPSnoopingFCFVLANIndex,
                      h3cFCoEFIPSnoopingFCFIfIndex,
                      h3cFCoEFIPSnoopingFCFMAC
                    }
    ::= { h3cFCoEFIPSnoopingFCFTable 1 }

H3cFCoEFIPSnoopingFCFEntry ::= SEQUENCE {
    h3cFCoEFIPSnoopingFCFVLANIndex     VlanIndex,
    h3cFCoEFIPSnoopingFCFIfIndex       InterfaceIndex,
    h3cFCoEFIPSnoopingFCFMAC           MacAddress,
    h3cFCoEFIPSnoopingFCFSwitchName    H3cFcNameId,
    h3cFCoEFIPSnoopingFCFFabricName    H3cFcNameId,
    h3cFCoEFIPSnoopingFCFENodeCount    Unsigned32
}

h3cFCoEFIPSnoopingFCFVLANIndex OBJECT-TYPE
    SYNTAX          VlanIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the VLAN-ID whose FIP Snooping function
        gets ready on the FCF."
    ::= { h3cFCoEFIPSnoopingFCFEntry 1 }

h3cFCoEFIPSnoopingFCFIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies an Ethernet interface that connects
        to the FCF."
    ::= { h3cFCoEFIPSnoopingFCFEntry 2 }

h3cFCoEFIPSnoopingFCFMAC OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The MAC address of the Ethernet interface on the FCF directly
        connected to the local device."
    ::= { h3cFCoEFIPSnoopingFCFEntry 3 }

h3cFCoEFIPSnoopingFCFSwitchName OBJECT-TYPE
    SYNTAX          H3cFcNameId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The switch name of the FCF."
    ::= { h3cFCoEFIPSnoopingFCFEntry 4 }

h3cFCoEFIPSnoopingFCFFabricName OBJECT-TYPE
    SYNTAX          H3cFcNameId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The fabric name of the FCF."
    ::= { h3cFCoEFIPSnoopingFCFEntry 5 }

h3cFCoEFIPSnoopingFCFENodeCount OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The total number of ENodes that log in through this Ethernet port."
    ::= { h3cFCoEFIPSnoopingFCFEntry 6 }

-- FIP Snooping ENode information
h3cFCoEFIPSnoopingENodeTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEFIPSnoopingENodeEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table contains the ENode information on the local device."
    ::= { h3cFCoEConfig 7 }

h3cFCoEFIPSnoopingENodeEntry OBJECT-TYPE
    SYNTAX          H3cFCoEFIPSnoopingENodeEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each entry contains information about an ENode for a VLAN."
    INDEX           {
                      fcmInstanceIndex,
                      h3cFCoEFIPSnoopingENodeVLANIndex,
                      h3cFCoEFIPSnoopingENodeIfIndex,
                      h3cFCoEFIPSnoopingENodeMAC
                    }
    ::= { h3cFCoEFIPSnoopingENodeTable 1 }

H3cFCoEFIPSnoopingENodeEntry ::= SEQUENCE {
    h3cFCoEFIPSnoopingENodeVLANIndex     VlanIndex,
    h3cFCoEFIPSnoopingENodeIfIndex       InterfaceIndex,
    h3cFCoEFIPSnoopingENodeMAC           MacAddress,
    h3cFCoEFIPSnoopingENodeName          H3cFcNameId
}

h3cFCoEFIPSnoopingENodeVLANIndex OBJECT-TYPE
    SYNTAX          VlanIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the VLAN-ID whose FIP Snooping function
        gets ready on the ENode."
    ::= { h3cFCoEFIPSnoopingENodeEntry 1 }

h3cFCoEFIPSnoopingENodeIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies an Ethernet interface that connects
        to the ENode."
    ::= { h3cFCoEFIPSnoopingENodeEntry 2 }

h3cFCoEFIPSnoopingENodeMAC OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The MAC address of the ENode."
    ::= { h3cFCoEFIPSnoopingENodeEntry 3 }

h3cFCoEFIPSnoopingENodeName OBJECT-TYPE
    SYNTAX          H3cFcNameId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The node name of the ENode."
    ::= { h3cFCoEFIPSnoopingENodeEntry 4 }

-- FIP Snooping VN information
h3cFCoEFIPSnoopingVNTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEFIPSnoopingVNEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table contains the virtual N_Port information on the local device."
    ::= { h3cFCoEConfig 8 }

h3cFCoEFIPSnoopingVNEntry OBJECT-TYPE
    SYNTAX          H3cFCoEFIPSnoopingVNEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each entry contains information about a virtual N_Port."
    INDEX           {
                      fcmInstanceIndex,
                      h3cFCoEFIPSnoopingVNVLANIndex,
                      h3cFCoEFIPSnoopingVNENodeIfIndex,
                      h3cFCoEFIPSnoopingVNENodeMAC,
                      h3cFCoEFIPSnoopingVNFCFMAC,
                      h3cFCoEFIPSnoopingVNMAC
                    }
    ::= { h3cFCoEFIPSnoopingVNTable 1 }

H3cFCoEFIPSnoopingVNEntry ::= SEQUENCE {
    h3cFCoEFIPSnoopingVNVLANIndex     VlanIndex,
    h3cFCoEFIPSnoopingVNENodeIfIndex  InterfaceIndex,
    h3cFCoEFIPSnoopingVNENodeMAC      MacAddress,
    h3cFCoEFIPSnoopingVNFCFMAC        MacAddress,
    h3cFCoEFIPSnoopingVNMAC           MacAddress,
    h3cFCoEFIPSnoopingVNName          H3cFcNameId,
    h3cFCoEFIPSnoopingVNFCFIfIndex    InterfaceIndex
}

h3cFCoEFIPSnoopingVNVLANIndex OBJECT-TYPE
    SYNTAX          VlanIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object identifies the VLAN-ID through which a virtual N_Port
        logs in to the FCF."
    ::= { h3cFCoEFIPSnoopingVNEntry 1 }

h3cFCoEFIPSnoopingVNENodeIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies an Ethernet interface that connects
        to the ENode."
    ::= { h3cFCoEFIPSnoopingVNEntry 2 }

h3cFCoEFIPSnoopingVNENodeMAC OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The MAC address of the ENode."
    ::= { h3cFCoEFIPSnoopingVNEntry 3 }

h3cFCoEFIPSnoopingVNFCFMAC OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The MAC address of the FCF."
    ::= { h3cFCoEFIPSnoopingVNEntry 4 }

h3cFCoEFIPSnoopingVNMAC OBJECT-TYPE
    SYNTAX          MacAddress
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The MAC address of the virtual N_Port."
    ::= { h3cFCoEFIPSnoopingVNEntry 5 }

h3cFCoEFIPSnoopingVNName OBJECT-TYPE
    SYNTAX          H3cFcNameId
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The port name of the virtual N_Port."
    ::= { h3cFCoEFIPSnoopingVNEntry 6 }

h3cFCoEFIPSnoopingVNFCFIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies an Ethernet interface that connects
        to the FCF."
    ::= { h3cFCoEFIPSnoopingVNEntry 7 }

-- FIP Snooping Config type of Ethernet
h3cFCoEFIPSnoopingIfCfgTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF H3cFCoEFIPSnoopingIfCfgEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table is used to configure FIP Snooping working mode of the Ethernet
        interface on the localdevice."
    ::= { h3cFCoEConfig 9 }

h3cFCoEFIPSnoopingIfCfgEntry OBJECT-TYPE
    SYNTAX          H3cFCoEFIPSnoopingIfCfgEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each entry contains information about FIP Snooping working mode of the
        Ethernet interface."
    INDEX           {
                      fcmInstanceIndex,
                      h3cFCoEFIPSnoopingIfCfgIfIndex
                    }
    ::= { h3cFCoEFIPSnoopingIfCfgTable 1 }

H3cFCoEFIPSnoopingIfCfgEntry ::= SEQUENCE {
    h3cFCoEFIPSnoopingIfCfgIfIndex       InterfaceIndex,
    h3cFCoEFIPSnoopingIfCfgPortType      INTEGER
}

h3cFCoEFIPSnoopingIfCfgIfIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This index uniquely identifies an Ethernet interface."
    ::= { h3cFCoEFIPSnoopingIfCfgEntry 1 }

h3cFCoEFIPSnoopingIfCfgPortType OBJECT-TYPE
    SYNTAX          INTEGER {
                             fcf(1),
                             enode(2)
                            }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The FIP Snooping working mode of an Ethernet interface on the local
        device.  The FCF mode means that the Ethernet interface must connect
        to an FCF.  The ENode mode means that the Ethernet interface must
        connect to an ENode."
    ::= { h3cFCoEFIPSnoopingIfCfgEntry 2 }

END
