-- =====================================================================
-- Copyright (c) 2004-2013 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description:
--      This MIB module is for configuring and monitoring SAN (Storage Area
--      Network) aggregation group related entities.
-- Reference:
-- Version: V1.0
-- History:
--   V1.0 Initial version created by qiaoxinghua 2012-12-6
-- =====================================================================
H3C-SAN-AGG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    h3cSan
        FROM H3C-VSAN-MIB
    Integer32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    RowStatus, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    ifIndex, ifDescr
        FROM IF-MIB;

h3cSanAgg MODULE-IDENTITY
    LAST-UPDATED   "201302250940Z"
    ORGANIZATION
        "Hangzhou H3C Tech. Co., Ltd."
    CONTACT-INFO
        "Platform Team Hangzhou H3C Tech. Co., Ltd.
         Hai-Dian District Beijing P.R. China
         http://www.h3c.com
         Zip:100085
        "
    DESCRIPTION
        "This MIB module is for configuring and monitoring SAN (Storage
        Area Networks) aggregation group related MIB objects.

        This MIB can be used to add or delete a SAN aggregation group,
        and make one or more FC (Fiber Channel) ports join or leave the
        group, as well as show their states."
    REVISION       "201302250940Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { h3cSan 2 }


H3cMemberList ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "A list of values concerning the member ports in a SAN
        aggregation group.

        Each 4 octets within this value list specifies a member
        in a SAN aggregation group.
        A zero-length string value means this list has no member,
        and the maximum length of this string depends on the maximum
        number of members a SAN aggregation supports."
    SYNTAX       OCTET STRING
--
-- Node definitions
--
h3cSanAggMibObjects OBJECT IDENTIFIER ::= { h3cSanAgg 1 }

h3cSanAggMaxMemberNumber OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "This value specifies the maximum member number that a SAN
        aggregation group supports, and this restriction depends on
        product customization."
    ::= { h3cSanAggMibObjects 1 }

h3cSanAggGroupTable OBJECT-TYPE
    SYNTAX SEQUENCE OF H3cSanAggGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A table of SAN aggregation objects to be used in configuring
        and monitoring a SAN aggregation group and its members."
    ::= { h3cSanAgg 2 }

h3cSanAggGroupEntry OBJECT-TYPE
    SYNTAX H3cSanAggGroupEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "A group of SAN aggregation objects to be used in configuring
        and monitoring a SAN aggregation group and its members."
    INDEX { h3cSanAggGroupNumber }
    ::= { h3cSanAggGroupTable 1 }

H3cSanAggGroupEntry ::=
    SEQUENCE {
        h3cSanAggGroupNumber
            Integer32,
        h3cSanAggGroupIndex
            Integer32,
        h3cSanAggMemberList
            H3cMemberList,
        h3cSanAggMemberStateList
            H3cMemberList,
        h3cSanAggGroupRowStatus
            RowStatus
       }

h3cSanAggGroupNumber OBJECT-TYPE
    SYNTAX Integer32 (1..65535)
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The serial number of the current SAN aggregation group."
    ::= { h3cSanAggGroupEntry 1 }

h3cSanAggGroupIndex OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The ifIndex of the current SAN aggregation group."
    ::= { h3cSanAggGroupEntry 2 }

h3cSanAggMemberList OBJECT-TYPE
    SYNTAX H3cMemberList
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "List of member's ifIndex in the current SAN aggregation group.

        If there is no member in the SAN aggregation group, the list
        length should be zero.  Otherwise each member's ifIndex value
        occupies 4 octets.  The greatest length of this list depends
        on the maximum number of members a SAN aggregation group
        supports, which can be customized and therefore is not a fixed
        value.

        When getting the group members' ifIndexes, the result was sorted
        in ascending order of ifIndex values.  However, when setting the
        group members' ifIndexes, the sequence of ifIndex values is not
        required."
    ::= { h3cSanAggGroupEntry 3 }

h3cSanAggMemberStateList OBJECT-TYPE
    SYNTAX H3cMemberList
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "List of member's state in current SAN aggregation group, where the
         state value is sorted in ascending order of member's ifIndex, which
         is consistent with the 'get' result of 'h3cSanAggMemberList'.

         The explanation of this value's length is as same as the
         'h3cSanAggMemberList'.

         Each member's state value occupies 4 octets.  The value specifications
         are listed as follows:
         1: This member hasn't passed the link negotiation.
         2: This member has passed the link negotiation but has not been
            selected.
         3: This member has been selected."
    ::= { h3cSanAggGroupEntry 4 }

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

h3cSanAggObjForNotification OBJECT IDENTIFIER ::= { h3cSanAgg 3 }

h3cSanAggGroupPreviousSpeed OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "gigabit bps"
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The previous speed of the SAN aggregation group."
    ::= { h3cSanAggObjForNotification 1 }

h3cSanAggGroupCurrentSpeed OBJECT-TYPE
    SYNTAX Integer32
    UNITS  "gigabit bps"
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "The current speed of the SAN aggregation group."
    ::= { h3cSanAggObjForNotification 2 }

h3cSanAggNotifications OBJECT IDENTIFIER ::= { h3cSanAgg 4 }

h3cSanAggNotificationPrefix OBJECT IDENTIFIER ::= { h3cSanAggNotifications 0 }

h3cSanAggGroupSpeedChange NOTIFICATION-TYPE
    OBJECTS { h3cSanAggGroupNumber,
              h3cSanAggGroupPreviousSpeed,
              h3cSanAggGroupCurrentSpeed }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever a SAN
         aggregation group changes its speed."
    ::= { h3cSanAggNotificationPrefix 1 }


h3cSanAggMemberInactive NOTIFICATION-TYPE
    OBJECTS { h3cSanAggGroupNumber,
              ifIndex,
              ifDescr }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever any member
         in a SAN aggregation group is made inactive."
    ::= { h3cSanAggNotificationPrefix 2 }

h3cSanAggMemberActive NOTIFICATION-TYPE
    OBJECTS { h3cSanAggGroupNumber,
              ifIndex,
              ifDescr }
    STATUS current
    DESCRIPTION
        "This event will be triggered whenever any member
         in a SAN aggregation group is made active."
    ::= { h3cSanAggNotificationPrefix 3 }

END
