-- =================================================================
-- Copyright (c) 2004-2012 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: stack mib
-- Reference: STACK-MIB
-- Version: V1.1
-- History:
--   V1.0 created by ranbin
--     Initial version 2008-04-30
--   V1.1 Modified by zhengwei
--     Change the range of link-delay to 0-30000ms
-- =================================================================
HH3C-STACK-MIB DEFINITIONS ::= BEGIN

IMPORTS
        hh3cCommon
    FROM HH3C-OID-MIB
        entPhysicalIndex
    FROM ENTITY-MIB
        Integer32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
    FROM SNMPv2-SMI;

hh3cStack MODULE-IDENTITY
    LAST-UPDATED "200804301650Z"        -- 30th April, 2007 at 16:50 GMT
    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 is used to manage STM (Stack Topology Management)
         information for IRF (Intelligent Resilient Framework) device.
         This MIB is applicable to products which support IRF. Some objects in
         this MIB may be used only for some specific products, so users should
         refer to the related documents to acquire more detailed information."
    REVISION "200804301650Z"             -- 30th April, 2007 at 16:50 GMT
    DESCRIPTION
        "The initial revision of this MIB module."
    ::= { hh3cCommon 91 }


-- Scalar MIB objects, which are considered as global variables
-- Global Level Configuration

hh3cStackGlobalConfig OBJECT IDENTIFIER ::= { hh3cStack 1 }

hh3cStackMaxMember OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of members in a stack."
    ::= { hh3cStackGlobalConfig 1 }

hh3cStackMemberNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of members currently in a stack."
    ::= { hh3cStackGlobalConfig 2 }

hh3cStackMaxConfigPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The highest priority that can be configured for a member in a stack."
    ::= { hh3cStackGlobalConfig 3 }

hh3cStackAutoUpdate OBJECT-TYPE
    SYNTAX      INTEGER
        {
            disabled(1),
            enabled(2)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The function for automatically updating the image from master to
         slave. When a new device tries to join a stack, the image version is
         checked. When this function is enabled, if the image version of the
         new device is different from that of the master, the image of the new
         device will be updated to be consistent with that of the master.
         When this function is disabled, the new device can not join the stack
         if the image version of the new device is different from that of the
         master.

        disabled: disable auto update function
        enabled: enable auto update function"
    ::= { hh3cStackGlobalConfig 4 }

hh3cStackMacPersistence OBJECT-TYPE
    SYNTAX      INTEGER
        {
            notPersist(1),
            persistForSixMin(2),
            persistForever(3)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mode of bridge MAC address persistence. When a stack starts, the
         bridge MAC address of master board will be used as that of the stack.
         If the master board leaves the stack, the bridge MAC address of the
         stack will change based on the mode of bridge MAC address persistence.

        notPersist: The bridge MAC address of the new master board will be used
         as that of the stack immediately.
        persistForSixMin: The bridge MAC address will be reserved for six
         minutes. In this period, if the master board which has left the stack
         rejoins the stack, the bridge MAC address of the stack will not change.
         Otherwise, the bridge MAC address of the new master board will be used
         as that of the stack.
        persistForever: Whether the master leaves or not, the bridge MAC address
         of the stack will never change."
    ::= { hh3cStackGlobalConfig 5 }

hh3cStackLinkDelayInterval OBJECT-TYPE
    SYNTAX      Integer32 (0..30000)
    UNITS       "millisecond"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The delay time for a device in a stack to report the change of stack
         port link status.
         If the delay time is configured, a device in a stack will not report
         the change immediately when the stack port link status changes to down.
         During the delay period, if the stack port link status is resumed, the
         device will ignore the current change of the stack port link status.
         If the stack port link status is not resumed after the delay time,
         the device will report the change.
         0 means no delay, namely, the device will report the change as soon as
         the stack port link status changes to down.

        0: no delay
        1-30000(ms): delay time"
    ::= { hh3cStackGlobalConfig 6 }

hh3cStackTopology OBJECT-TYPE
    SYNTAX      INTEGER
        {
            chainConn(1),
            ringConn(2)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The topology of the stack.

        chainConn: chain connection
        ringConn: ring connection"
    ::= { hh3cStackGlobalConfig 7 }


-- Device Level Configuration
hh3cStackDeviceConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cStackDeviceConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage device information in a stack."
    ::= { hh3cStack 2 }

hh3cStackDeviceConfigEntry OBJECT-TYPE
    SYNTAX      Hh3cStackDeviceConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage device information in a stack."
    INDEX
        {
            entPhysicalIndex
        }
    ::= { hh3cStackDeviceConfigTable 1 }

Hh3cStackDeviceConfigEntry ::= SEQUENCE
    {
        hh3cStackMemberID          Integer32,
        hh3cStackConfigMemberID    Integer32,
        hh3cStackPriority          Integer32,
        hh3cStackPortNum           Integer32,
        hh3cStackPortMaxNum        Integer32
    }

hh3cStackMemberID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The member ID of the device in a stack."
    ::= { hh3cStackDeviceConfigEntry 1 }

hh3cStackConfigMemberID OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The configured member ID of the device. The valid value ranges from 1
         to the value of hh3cStackMaxMember. After the member ID is configured
         for a device, if this ID is not the same with that of another device,
         the ID will be used as the member ID of the device when the device
         reboots. If a same ID exists, the member ID of the device will be set
         as another exclusive ID automatically."
    ::= { hh3cStackDeviceConfigEntry 2 }

hh3cStackPriority OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The priority of a device in a stack. The valid value ranges from 1 to
         the value of hh3cStackMaxConfigPriority."
    ::= { hh3cStackDeviceConfigEntry 3 }

hh3cStackPortNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of stack ports which is enabled in a device."
    ::= { hh3cStackDeviceConfigEntry 4 }

hh3cStackPortMaxNum OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of stack ports in a device."
    ::= { hh3cStackDeviceConfigEntry 5 }


-- Board Level Configuration
hh3cStackBoardConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cStackBoardConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage board information of the device
         in a stack."
    ::= { hh3cStack 3 }

hh3cStackBoardConfigEntry OBJECT-TYPE
    SYNTAX      Hh3cStackBoardConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage board information of the device
         in a stack."
    INDEX
        {
            entPhysicalIndex
        }
    ::= { hh3cStackBoardConfigTable 1 }

Hh3cStackBoardConfigEntry ::= SEQUENCE
    {
        hh3cStackBoardRole              INTEGER,
        hh3cStackBoardBelongtoMember    Integer32
    }

hh3cStackBoardRole OBJECT-TYPE
    SYNTAX      INTEGER
        {
            slave(1),
            master(2),
            loading(3),
            other(4)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The role of the board in a stack.

        slave: slave board
        master: master board
        loading: slave board whose image version is different from that of the
         master board.
        other: other"
    ::= { hh3cStackBoardConfigEntry 1 }

hh3cStackBoardBelongtoMember OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The member ID of the device where the current board resides in a
         stack."
    ::= { hh3cStackBoardConfigEntry 2 }


-- stack port Information
hh3cStackPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cStackPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage stack port information of a
         device in a stack."
    ::= { hh3cStack 4 }

hh3cStackPortInfoEntry OBJECT-TYPE
    SYNTAX      Hh3cStackPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage stack port information of a
         device in a stack."
    INDEX
        {
            hh3cStackMemberID,
            hh3cStackPortIndex
        }
    ::= { hh3cStackPortInfoTable 1 }

Hh3cStackPortInfoEntry ::= SEQUENCE
    {
        hh3cStackPortIndex     Integer32,
        hh3cStackPortEnable    INTEGER,
        hh3cStackPortStatus    INTEGER,
        hh3cStackNeighbor      Integer32
    }

hh3cStackPortIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "The index of a stack port of the device in a stack."
    ::= { hh3cStackPortInfoEntry 1 }

hh3cStackPortEnable OBJECT-TYPE
    SYNTAX      INTEGER
        {
            disabled(1),
            enabled(2)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The status of the stack port of the device in a stack. If no physical
         port is added to the stack port, its status is 'disabled'; otherwise,
         its status is 'enabled'.

        disabled: The stack port is disabled.
        enabled: The stack port is enabled."
    ::= { hh3cStackPortInfoEntry 2 }

hh3cStackPortStatus OBJECT-TYPE
    SYNTAX      INTEGER
        {
            up(1),
            down(2),
            silent(3),
            disabled(4)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The link status of the stack port of the device in a stack.

        up: The link status of a stack port with reasonable physical connection
         is up.
        down: The link status of a stack port without physical connection is
         down.
        silent: The link status of a stack port which can not be used normally
         is silent.
        disabled: The link status of a stack port in disabled status is
         disabled."
    ::= { hh3cStackPortInfoEntry 3 }

hh3cStackNeighbor OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The member ID of the stack port's neighbor in a stack. 0 means no
         neighbor exists."
    ::= { hh3cStackPortInfoEntry 4 }


-- Physical port Information
hh3cStackPhyPortInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cStackPhyPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage the information for physical
         ports which can be used for physical connection of stack port in a
         stack."
    ::= { hh3cStack 5 }

hh3cStackPhyPortInfoEntry OBJECT-TYPE
    SYNTAX      Hh3cStackPhyPortInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects to manage the information for physical
         ports which can be used for physical connection of stack port in a
         stack."
    INDEX
        {
            entPhysicalIndex
        }
    ::= { hh3cStackPhyPortInfoTable 1 }

Hh3cStackPhyPortInfoEntry ::= SEQUENCE
    {
        hh3cStackBelongtoPort    Integer32
    }

hh3cStackBelongtoPort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The index of the stack port to which the physical port is added. 0
         means the physical port is not added to any stack port. The value will
         be valid after the device in the stack reboots."
    ::= { hh3cStackPhyPortInfoEntry 1 }

--
-- Notification definitions
--
-- =================================================================
-- Traps are defined below.
hh3cStackTrap OBJECT IDENTIFIER ::= { hh3cStack 6 }

-- All objects used for TRAP only are defined here.
hh3cStackTrapOjbects OBJECT IDENTIFIER ::= { hh3cStackTrap 0 }

hh3cStackPortLinkStatusChange  NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cStackMemberID,
            hh3cStackPortIndex,
            hh3cStackPortStatus
        }

    STATUS      current
    DESCRIPTION
        "The hh3cStackPortLinkStatusChange trap indicates that the link status
         of the stack port has changed."
    ::= { hh3cStackTrapOjbects 1 }

hh3cStackTopologyChange  NOTIFICATION-TYPE
    OBJECTS
        {
            hh3cStackTopology
        }
    STATUS      current
    DESCRIPTION
        "The hh3cStackTopologyChange trap indicates that the topology type of
         the stack has changed."
    ::= { hh3cStackTrapOjbects 2 }

END
