-- =============================================================================
-- Copyright (c) 2004-2012 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.0
-- History:
--      V1.0 created by h06247
-- =============================================================================
A3COM-HUAWEI-FCOE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    h3cCommon                   FROM A3COM-HUAWEI-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]

h3cFCoE MODULE-IDENTITY
    LAST-UPDATED    "201203280000Z"
    ORGANIZATION
        "Hangzhou H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team 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 a 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.
        See www.h3c.com for more information.
        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        "201203280000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { h3cCommon 120 }

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

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 (1..60)
    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 { 5 }
    ::= { 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 implmentations 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
        associaton.  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 a 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 }

END
