-- =====================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description: LACP extend MIB
-- Reference:
-- Version: V1.7
-- History:
--   V1.0 Initial version
--   V1.1 2004-10-12 updated by gaolong
--        Remove OID comments.
--        Change MAX-ACCESS clause value of hpnicfAggLinkNumber to accessible-for-notify
--        because this index object is used when sending notification.
--        Fix a default value error of hpnicfAggResourceAllocationValue.
--   V1.2 2004-10-25 updated by fuzhenyu
--        Change the range of hpnicfAggLinkNumber from (1..256) to (1..728)
--        Change the size of hpnicfAggPortNotAttachedString from (1..50) to (1..255)
--   V1.3 2006-03-05 updated by zhangjian
--        Edit the description of hpnicfAggPortNotAttachedReason.
--        Change value range of hpnicfAggLinkNumber.
--   V1.4 2006-11-15 updated by zhangjian
--        Change MAX-ACCESS clause of hpnicfAggPortIndex to accessible-for-notify.
--        Add hpnicfAggPortInactiveNotification2 and hpnicfAggPortActiveNotification.
--   V1.5 2009-10-09 updated by songjianyong
--        Change value range of hpnicfAggPortNotAttachedReason.
--   V1.6 2010-03-26 updated by songjianyong
--        Change value range of hpnicfAggPortNotAttachedReason.
--   V1.7 2011-10-12 updated by liyugang
--        Change some descriptions.
-- =====================================================================
HPN-ICF-LAG-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
            FROM SNMPv2-CONF
        Integer32, Gauge32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
            FROM SNMPv2-SMI
        DisplayString, RowStatus,TruthValue,TEXTUAL-CONVENTION
            FROM SNMPv2-TC
        hpnicfRhw
            FROM HPN-ICF-OID-MIB
        PortList
            FROM Q-BRIDGE-MIB;

    hpnicfLAG MODULE-IDENTITY
        LAST-UPDATED "200310091942Z"    -- October 09, 2003 at 19:42 GMT
        ORGANIZATION
            ""
        CONTACT-INFO
            ""
        DESCRIPTION
            "LACP extend MIB."
        ::= { hpnicfRhw 25 }

--
-- Node definitions
--

    hpnicfLAGMibObjects OBJECT IDENTIFIER ::= { hpnicfLAG 1 }


    hpnicfAggLinkTable OBJECT-TYPE
        SYNTAX SEQUENCE OF HpnicfAggLinkEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A table of aggregate link objects."
        ::= { hpnicfLAGMibObjects 1 }


    hpnicfAggLinkEntry OBJECT-TYPE
        SYNTAX HpnicfAggLinkEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Entry of table."
        INDEX { hpnicfAggLinkNumber }
        ::= { hpnicfAggLinkTable 1 }


    HpnicfAggLinkEntry ::=
        SEQUENCE {
            hpnicfAggLinkNumber
                Integer32,
            hpnicfAggLinkName
                DisplayString,
            hpnicfAggLinkMode
                INTEGER,
            hpnicfAggLinkPortList
                PortList,
            hpnicfAggLinkState
                RowStatus,
            hpnicfAggPortListSelectedPorts
                PortList,
            hpnicfAggPortListSamePartnerPorts
                PortList
         }

    hpnicfAggLinkNumber OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "The serial number of aggregation group."
        ::= { hpnicfAggLinkEntry 1 }


    hpnicfAggLinkName OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..32))
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Aggregation name."
        ::= { hpnicfAggLinkEntry 2 }


    hpnicfAggLinkMode OBJECT-TYPE
        SYNTAX INTEGER
            {
            manual(1),
            static(2),
            dynamic(3)
            }
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "Type of aggregation.
             manual: Manual aggregation, no LACP.
             static: Membership specified by user, LACP is
                     used to validate.
             dynamic: Completely dynamic aggregation detected
                      by LACP."
        ::= { hpnicfAggLinkEntry 3 }


    hpnicfAggLinkPortList OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "List of ports in this link aggregation group, by bridge port
             number. If the mode of the link aggregation group is manual
             or static, you can update this list to your
             hearts content. However, if the link aggregation group is
             dynamic, the system will maintain it. You are not
             permitted to set the value of this to
             all zeroes."
        ::= { hpnicfAggLinkEntry 4 }


    hpnicfAggLinkState OBJECT-TYPE
        SYNTAX RowStatus
        MAX-ACCESS read-create
        STATUS current
        DESCRIPTION
            "RowStatus, now support three states:
            createAndGo, active, destroy."
        ::= { hpnicfAggLinkEntry 5 }


    hpnicfAggPortListSelectedPorts OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "A PortList of physical ports that have been
             selected but not attached to this aggregator.
             When the bit is set to 1,it means the
             corresponding port is in the portlist."
        ::= { hpnicfAggLinkEntry 6 }


    hpnicfAggPortListSamePartnerPorts OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "PortList of physical ports that have the
             same Actor SystemID and partner systemID as
             this aggregator, but have different actor
             and partner keys of aggregator."
        ::= { hpnicfAggLinkEntry 7 }


    hpnicfAggPortTable OBJECT-TYPE
        SYNTAX SEQUENCE OF HpnicfAggPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "A table of aggregate port objects."
        ::= { hpnicfLAGMibObjects 2 }


    hpnicfAggPortEntry OBJECT-TYPE
        SYNTAX HpnicfAggPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Entry of table."
        INDEX { hpnicfAggPortIndex }
        ::= { hpnicfAggPortTable 1 }


    HpnicfAggPortEntry ::=
        SEQUENCE {
            hpnicfAggPortIndex
                Gauge32,
            hpnicfAggPortNotAttachedReason
                Integer32,
            hpnicfAggPortLacpState
                TruthValue,
            hpnicfAggPortNotAttachedString
                DisplayString
        }

    hpnicfAggPortIndex OBJECT-TYPE
        SYNTAX Gauge32
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "Port ifindex which is according to RFC1213 MIB."
        ::= { hpnicfAggPortEntry 1 }


    hpnicfAggPortNotAttachedReason OBJECT-TYPE
        SYNTAX Integer32 (0..10)
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "Reason why this port is selected for an
             aggregator but not attached,
             0: The port is attached to this aggregator.
             1: The current number of active ports has
                reached the upper limit.
             2: All aggregation resources are already in-use.
             3: The port's configuration is improper
                for being attached.
             4: The port's partner is improper for being attached.
             5: The number of current active ports
                has not reached the lower limit.
             6: The port's physical state (down) is
                improper for being attached.
             7: The port is not selected for an aggregator.
             8: The port's hardware restriction is
                improper for being attached.
             9: The port's speed is improper for being attached.
             10: The port's duplex mode is improper for being attached."
        ::= { hpnicfAggPortEntry 2 }

    hpnicfAggPortLacpState OBJECT-TYPE
        SYNTAX TruthValue
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "Control ports' lacp enble or disable."
        ::= { hpnicfAggPortEntry 3 }

    hpnicfAggPortNotAttachedString OBJECT-TYPE
        SYNTAX DisplayString (SIZE (0..255))
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The string which interprets this
             port is selected for an aggregator
             but not attached."
        ::= { hpnicfAggPortEntry 4 }


    hpnicfAggResourceAllocationValue OBJECT-TYPE
        SYNTAX PortList
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The priority value calculated to decide which
             aggregations have first call on the load-sharing
             aggregation resources in the hardware. It
             depends on the aggregation type and total
             speed."
        DEFVAL { "0" }
        ::= { hpnicfLAGMibObjects 3 }


    hpnicfLAGMibNotifications OBJECT IDENTIFIER ::= { hpnicfLAG 2 }


    hpnicfAggSpeedChangedNotification NOTIFICATION-TYPE
        OBJECTS { hpnicfAggLinkNumber }
        STATUS current
        DESCRIPTION
            "This event will be triggered whenever an
             aggregation changes its speed."
        ::= { hpnicfLAGMibNotifications 1 }


    hpnicfAggPortInactiveNotification NOTIFICATION-TYPE
        OBJECTS { hpnicfAggLinkNumber }
        STATUS current
        DESCRIPTION
            "This event will be triggered whenever any port
             in aggregator is made inactive."
        ::= { hpnicfLAGMibNotifications 2 }


    hpnicfAggPortInactiveNotification2 NOTIFICATION-TYPE
        OBJECTS { hpnicfAggLinkNumber,
                  hpnicfAggPortIndex }
        STATUS current
        DESCRIPTION
            "This event will be triggered whenever the port
             in aggregator is made inactive."
        ::= { hpnicfLAGMibNotifications 3 }


    hpnicfAggPortActiveNotification NOTIFICATION-TYPE
        OBJECTS { hpnicfAggLinkNumber,
                  hpnicfAggPortIndex }
        STATUS current
        DESCRIPTION
            "This event will be triggered whenever the port
             in aggregator is made active."
        ::= { hpnicfLAGMibNotifications 4 }


    hpnicfLAGMibConformance OBJECT IDENTIFIER ::= { hpnicfLAG 3 }


    hpnicfLAGMibCompliances OBJECT IDENTIFIER ::= { hpnicfLAGMibConformance 1 }


    hpnicfLAGMibCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for SNMP entities
             which implement the Lag MIB."
        MODULE -- this module
            MANDATORY-GROUPS
                { hpnicfLAGMibObjectGroup, hpnicfLAGMibNotificationGroup }
        ::= { hpnicfLAGMibCompliances 1 }


    hpnicfLAGMibGroup OBJECT IDENTIFIER ::= { hpnicfLAGMibConformance 2 }


    hpnicfLAGMibObjectGroup OBJECT-GROUP
        OBJECTS { hpnicfAggLinkName, hpnicfAggLinkMode, hpnicfAggLinkPortList,
                hpnicfAggLinkState, hpnicfAggPortListSelectedPorts,
                hpnicfAggPortListSamePartnerPorts,
                hpnicfAggPortNotAttachedReason, hpnicfAggPortLacpState,
                hpnicfAggPortNotAttachedString,
                hpnicfAggResourceAllocationValue }
        STATUS current
        DESCRIPTION
            "The collection of objects which are used to
             represent LAG objects."
        ::= { hpnicfLAGMibGroup 1 }


    hpnicfLAGMibNotificationGroup NOTIFICATION-GROUP
        NOTIFICATIONS { hpnicfAggSpeedChangedNotification,
                        hpnicfAggPortInactiveNotification,
                        hpnicfAggPortInactiveNotification2,
                        hpnicfAggPortActiveNotification }
        STATUS current
        DESCRIPTION
            "The collection of objects which are used to
             represent notifications."
        ::= { hpnicfLAGMibGroup 2 }

END
