IEEE8023-LAG-MIB DEFINITIONS ::= BEGIN


-- -------------------------------------------------------------
-- IEEE 802.3ad MIB
-- -------------------------------------------------------------

-- (some fixes, cleanups and JNPR-specific additions by bryan)


IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, TimeTicks, enterprises
        FROM SNMPv2-SMI
    DisplayString, MacAddress, TEXTUAL-CONVENTION, TruthValue
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF;
--    InterfaceIndex
--        FROM IF-MIB
--    PortList
--        FROM Q-BRIDGE-MIB
--    ;
-- (see below for inline defs of the above types)


lagMIB MODULE-IDENTITY
    LAST-UPDATED "200006270000Z"
    ORGANIZATION "IEEE 802.3 Working Group"
    CONTACT-INFO
        " stds-802-3-trunking@majordomo.ieee.org"
    DESCRIPTION
        "The Link Aggregation module for managing IEEE Std
        802.3ad."
    ::= { iso member-body(2) us(840) ieee802dot3(10006) snmpmibs(300) 43 }

lagMIBObjects OBJECT IDENTIFIER ::= { lagMIB 1 }


-- -------------------------------------------------------------
-- Textual Conventions
-- -------------------------------------------------------------

-- stolen from IF-MIB:
InterfaceIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION 
	"A unique value, greater than zero, for each interface
	or interface sub-layer in the managed system.  It is
	recommended that values are assigned contiguously
	starting from 1.  The value for each interface sub-
	layer must remain constant at least from one re-
	initialization of the entity's network management
	system to the next re-initialization."
    SYNTAX       Integer32 (1..2147483647) 

-- stolen from Q-BRIDGE-MIB:
PortList ::= TEXTUAL-CONVENTION
    STATUS      current       
    DESCRIPTION               
        "Each octet within this value specifies a set of eight  
        ports, with the first octet specifying ports 1 through
        8, the second octet specifying ports 9 through 16, etc.
        Within each octet, the most significant bit represents
        the lowest numbered port, and the least significant bit
        represents the highest numbered port.  Thus, each port
        of the bridge is represented by a single bit within the
        value of this object.  If that bit has a value of '1'
        then that port is included in the set of ports; the port
        is not included if its bit has a value of '0'." 
    SYNTAX      OCTET STRING  




LacpKey ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "The Actor or Partner Key value."
    SYNTAX      INTEGER (0..65535)


LacpState ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The Actor and Partner State values from the LACPDU."
    SYNTAX      BITS {
                    lacpActivity(0),
                    lacpTimeout(1),
                    aggregation(2),
                    synchronization(3),
                    collecting(4),
                    distributing(5),
                    defaulted(6),
                    expired(7)
                }


ChurnState ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "The state of the Churn Detection machine."
    SYNTAX      INTEGER {
                    noChurn(1),
                    churn(2),
                    churnMonitor(3)
                }


-- -------------------------------------------------------------


-- -------------------------------------------------------------
-- groups in the LAG MIB
-- -------------------------------------------------------------


dot3adAgg OBJECT IDENTIFIER ::= { lagMIBObjects 1 }
dot3adAggPort OBJECT IDENTIFIER ::= { lagMIBObjects 2 }


-- -------------------------------------------------------------

-- -------------------------------------------------------------
-- The Tables Last Changed Object
-- -------------------------------------------------------------

dot3adTablesLastChanged OBJECT-TYPE
    SYNTAX      TimeTicks
    MAX-ACCESS read-only
    STATUS      current
    DESCRIPTION
        "This object indicates the time of the most recent
        change to the dot3adAggTable, dot3adAggPortListTable, or
        dot3adAggPortTable."
::= { lagMIBObjects 3 }

-- -------------------------------------------------------------
-- The Aggregator Configuration Table
-- -------------------------------------------------------------


dot3adAggTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot3adAggEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains information about every
        Aggregator that is associated with this System."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1"


    ::= { dot3adAgg 1 }


dot3adAggEntry OBJECT-TYPE
    SYNTAX      Dot3adAggEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of the Aggregator parameters. This is indexed
        by the ifIndex of the Aggregator."
    INDEX { dot3adAggIndex }
    ::= { dot3adAggTable 1 }


Dot3adAggEntry ::=
    SEQUENCE {
        dot3adAggIndex
            InterfaceIndex,
        dot3adAggMACAddress
            MacAddress,
        dot3adAggActorSystemPriority
            INTEGER,
        dot3adAggActorSystemID
            MacAddress,
        dot3adAggAggregateOrIndividual
            TruthValue,
        dot3adAggActorAdminKey
            LacpKey,
        dot3adAggActorOperKey
            LacpKey,
        dot3adAggPartnerSystemID
            MacAddress,
        dot3adAggPartnerSystemPriority
            INTEGER,
        dot3adAggPartnerOperKey
            LacpKey,
        dot3adAggCollectorMaxDelay
            INTEGER
    }


dot3adAggIndex OBJECT-TYPE
    SYNTAX       InterfaceIndex
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The unique identifier allocated to this Aggregator by
        the local System.  This attribute identifies an
        Aggregator instance among the subordinate managed
        objects of the containing object.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.1"
    ::= { dot3adAggEntry 1 }


dot3adAggMACAddress OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 6-octet read-only value carrying the individual
       MAC address assigned to the Aggregator."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.9"
    ::= { dot3adAggEntry 2 }


dot3adAggActorSystemPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A 2-octet read-write value indicating the priority
        value associated with the Actor's System ID."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.5"
    ::= { dot3adAggEntry 3 }


dot3adAggActorSystemID OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 6-octet read-write MAC address value used as a unique
        identifier for the System that contains this Aggregator.
        NOTE-From the perspective of the Link Aggregation
        mechanisms described in Clause 43, only a single
        combination of Actor's System ID and System Priority are
        considered, and no distinction is made between the
        values of these parameters for an Aggregator and the
        port(s) that are associated with it; i.e., the protocol
        is described in terms of the operation of aggregation
        within a single System. However, the managed objects
        provided for the Aggregator and the port both allow
        management of these parameters. The result of this is to
        permit a single piece of equipment to be configured by
        management to contain more than one System from the
        point of view of the operation of Link Aggregation. This
        may be of particular use in the configuration of
        equipment that has limited aggregation capability (see
        43.6)."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.4"
    ::= { dot3adAggEntry 4 }


dot3adAggAggregateOrIndividual OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A read-only Boolean value indicating whether the
        Aggregator represents an Aggregate (`TRUE') or
        an Individual link (`FALSE')."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.6"
    ::= { dot3adAggEntry 5 }


dot3adAggActorAdminKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current administrative value of the Key for the
        Aggregator. The administrative Key value may differ from
        the operational Key value for the reasons discussed in
        43.6.2. This is a 16-bit, read-write value. The meaning
        of particular Key values is of local significance."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.7"
    ::= { dot3adAggEntry 6 }


dot3adAggActorOperKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The current operational value of the Key for the
        Aggregator. The administrative Key value may differ from
        the operational Key value for the reasons discussed in
        43.6.2.  This is a 16-bit read-only value. The meaning
        of particular Key values is of local significance."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.8"
    ::= { dot3adAggEntry 7 }


dot3adAggPartnerSystemID OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 6-octet read-only MAC address value consisting of the
        unique identifier for the current protocol Partner of
        this Aggregator. A value of zero indicates that there is
        no known Partner. If the aggregation is manually
        configured, this System ID value will be a value
        assigned by the local System."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.10"
    ::= { dot3adAggEntry 8 }


dot3adAggPartnerSystemPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 2-octet read-only value that indicates the priority
        value associated with the Partner's System ID. If the
        aggregation is manually configured, this System Priority
        value will be a value assigned by the local System."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.11"
    ::= { dot3adAggEntry 9 }


dot3adAggPartnerOperKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The current operational value of the Key for the
        Aggregator's current protocol Partner. This is a 16-bit
        read-only value. If the aggregation is manually
        configured, this Key value will be a value assigned by
        the local System."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.12"
    ::= { dot3adAggEntry 10 }


dot3adAggCollectorMaxDelay OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The value of this 16-bit read-write attribute defines
        the maximum delay, in tens of microseconds, that may be
        imposed by the Frame Collector between receiving a frame
        from an Aggregator Parser, and either delivering the
        frame to its MAC Client or discarding the frame (see
        43.2.3.1.1)."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.32"
    ::= { dot3adAggEntry 11 }


-- -------------------------------------------------------------
-- The Aggregation Port List Table
-- -------------------------------------------------------------


dot3adAggPortListTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot3adAggPortListEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains a list of all the ports
        associated with each Aggregator."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.30"
    ::= { dot3adAgg 2 }


dot3adAggPortListEntry OBJECT-TYPE
    SYNTAX      Dot3adAggPortListEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of the ports associated with a given Aggregator.
        This is indexed by the ifIndex of the Aggregator."
    INDEX { dot3adAggIndex }
    ::= { dot3adAggPortListTable 1 }


Dot3adAggPortListEntry ::=
    SEQUENCE {
        dot3adAggPortListPorts
            PortList
    }


dot3adAggPortListPorts OBJECT-TYPE
    SYNTAX      PortList
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The complete set of ports currently associated with
        this Aggregator.  Each bit set in this list represents
        an Actor Port member of this Link Aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.1.1.30"
    ::= { dot3adAggPortListEntry 1 }


-- -------------------------------------------------------------
-- The Aggregation Port Table
-- -------------------------------------------------------------


dot3adAggPortTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot3adAggPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains Link Aggregation Control
        configuration information about every
        Aggregation Port associated with this device.
        A row appears in this table for each physical port."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2"
    ::= { dot3adAggPort 1 }


dot3adAggPortEntry OBJECT-TYPE
    SYNTAX      Dot3adAggPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of Link Aggregation Control configuration
        parameters for each Aggregation Port on this device."
    INDEX      { dot3adAggPortIndex }
    ::= { dot3adAggPortTable 1 }


Dot3adAggPortEntry ::=
    SEQUENCE {
        dot3adAggPortIndex
            InterfaceIndex,
        dot3adAggPortActorSystemPriority
            INTEGER,
        dot3adAggPortActorSystemID
            MacAddress,
        dot3adAggPortActorAdminKey
            LacpKey,
        dot3adAggPortActorOperKey
            LacpKey,
        dot3adAggPortPartnerAdminSystemPriority
            INTEGER,
        dot3adAggPortPartnerOperSystemPriority
            INTEGER,
        dot3adAggPortPartnerAdminSystemID
            MacAddress,
        dot3adAggPortPartnerOperSystemID
            MacAddress,
        dot3adAggPortPartnerAdminKey
            LacpKey,
        dot3adAggPortPartnerOperKey
            LacpKey,
        dot3adAggPortSelectedAggID
            InterfaceIndex,
        dot3adAggPortAttachedAggID
            InterfaceIndex,
        dot3adAggPortActorPort
            INTEGER,
        dot3adAggPortActorPortPriority
            INTEGER,
        dot3adAggPortPartnerAdminPort
            INTEGER,
        dot3adAggPortPartnerOperPort
            INTEGER,
        dot3adAggPortPartnerAdminPortPriority
            INTEGER,
        dot3adAggPortPartnerOperPortPriority
            INTEGER,
        dot3adAggPortActorAdminState
            LacpState,
        dot3adAggPortActorOperState
            LacpState,
        dot3adAggPortPartnerAdminState
            LacpState,
        dot3adAggPortPartnerOperState
            LacpState,
        dot3adAggPortAggregateOrIndividual
            TruthValue
    }


dot3adAggPortIndex OBJECT-TYPE
    SYNTAX       InterfaceIndex
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The ifIndex of the port"
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.1"
    ::= { dot3adAggPortEntry 1 }


dot3adAggPortActorSystemPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A 2-octet read-write value used to define the priority
        value associated with the Actor's System ID."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.2"
    ::= { dot3adAggPortEntry 2 }


dot3adAggPortActorSystemID OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 6-octet read-only MAC address value that defines the
        value of the System ID for the System that contains this
        Aggregation Port."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.3"
    ::= { dot3adAggPortEntry 3 }


dot3adAggPortActorAdminKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current administrative value of the Key for the
        Aggregation Port. This is a 16-bit read-write value.
        The meaning of particular Key values is of local
        significance."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.4"
    ::= { dot3adAggPortEntry 4 }


dot3adAggPortActorOperKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current operational value of the Key for the
        Aggregation Port. This is a 16-bit read-only value.
        The meaning of particular Key values is of local
        significance."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.5"
    ::= { dot3adAggPortEntry 5 }


dot3adAggPortPartnerAdminSystemPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A 2-octet read-write value used to define the
        administrative value of priority associated with the
        Partner's System ID. The assigned value is used, along
        with the value of aAggPortPartnerAdminSystemID,
        aAggPortPartnerAdminKey, aAggPortPartnerAdminPort, and
        aAggPortPartnerAdminPortPriority, in order to achieve
        manually configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.6"
    ::= { dot3adAggPortEntry 6 }


dot3adAggPortPartnerOperSystemPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 2-octet read-only value indicating the operational
        value of priority associated with the Partner's System
        ID. The value of this attribute may contain the manually
        configured value carried in
        aAggPortPartnerAdminSystemPriority if there is no
        protocol Partner."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.7"
    ::= { dot3adAggPortEntry 7 }


dot3adAggPortPartnerAdminSystemID OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A 6-octet read-write MACAddress value representing the
        administrative value of the Aggregation Port's protocol
        Partner's System ID. The assigned value is used, along
        with the value of aAggPortPartnerAdminSystemPriority,
        aAggPortPartnerAdminKey, aAggPortPartnerAdminPort, and
        aAggPortPartnerAdminPortPriority, in order to achieve
        manually configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.8"
    ::= { dot3adAggPortEntry 8 }


dot3adAggPortPartnerOperSystemID OBJECT-TYPE
    SYNTAX       MacAddress
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A 6-octet read-only MACAddress value representing the
        current value of the Aggregation Port's protocol
        Partner's System ID. A value of zero indicates that
        there is no known protocol Partner. The value of this
        attribute may contain the manually configured value
        carried in aAggPortPartnerAdminSystemID if there is no
        protocol Partner."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.9"
    ::= { dot3adAggPortEntry 9 }


dot3adAggPortPartnerAdminKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current administrative value of the Key for the
        protocol Partner. This is a 16-bit read-write value.
        The assigned value is used, along with the value of
        aAggPortPartnerAdminSystemPriority,
        aAggPortPartnerAdminSystemID, aAggPortPartnerAdminPort,
        and aAggPortPartnerAdminPortPriority, in order to
        achieve manually configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.10"
    ::= { dot3adAggPortEntry 10 }


dot3adAggPortPartnerOperKey OBJECT-TYPE
    SYNTAX       LacpKey
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The current operational value of the Key for the
        protocol Partner. The value of this attribute may
        contain the manually configured value carried in
        aAggPortPartnerAdminKey if there is no protocol Partner.
        This is a 16-bit read-only value."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.11"
    ::= { dot3adAggPortEntry 11 }


dot3adAggPortSelectedAggID OBJECT-TYPE
    SYNTAX       InterfaceIndex
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The identifier value of the Aggregator that this
        Aggregation Port has currently selected. Zero indicates
        that the Aggregation Port has not selected an
        Aggregator, either because it is in the process of
        detaching from an Aggregator or because there is no
        suitable Aggregator available for it to select.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.12"
    ::= { dot3adAggPortEntry 12 }


dot3adAggPortAttachedAggID OBJECT-TYPE
    SYNTAX       InterfaceIndex
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The identifier value of the Aggregator that this
        Aggregation Port is currently attached to. Zero
        indicates that the Aggregation Port is not currently
        attached to an Aggregator.  This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.13"
    ::= { dot3adAggPortEntry 13 }


dot3adAggPortActorPort OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The port number locally assigned to the Aggregation
        Port. The port number is communicated in LACPDUs as the
        Actor_Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.14"
    ::= { dot3adAggPortEntry 14 }


dot3adAggPortActorPortPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The priority value assigned to this Aggregation Port.
        This 16-bit value is read-write."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.15"
    ::= { dot3adAggPortEntry 15 }


dot3adAggPortPartnerAdminPort OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current administrative value of the port number for
        the protocol Partner. This is a 16-bit read-write value.
        The assigned value is used, along with the value of
        aAggPortPartnerAdminSystemPriority,
        aAggPortPartnerAdminSystemID, aAggPortPartnerAdminKey,
        and aAggPortPartnerAdminPortPriority, in order to
        achieve manually configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.16"
    ::= { dot3adAggPortEntry 16 }


dot3adAggPortPartnerOperPort OBJECT-TYPE
    SYNTAX       INTEGER (0..65535)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The operational port number assigned to this
        Aggregation Port by the Aggregation Port's protocol
        Partner. The value of this attribute may contain the
        manually configured value carried in
        aAggPortPartnerAdminPort if there is no protocol
        Partner. This 16-bit value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.17"
    ::= { dot3adAggPortEntry 17 }


dot3adAggPortPartnerAdminPortPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The current administrative value of the port priority
        for the protocol Partner. This is a 16-bit read-write
        value. The assigned value is used, along with the value
        of aAggPortPartnerAdminSystemPriority,
        aAggPortPartnerAdminSystemID, aAggPortPartnerAdminKey,
        and aAggPortPartnerAdminPort, in order to achieve
        manually configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.18"
    ::= { dot3adAggPortEntry 18 }


dot3adAggPortPartnerOperPortPriority OBJECT-TYPE
    SYNTAX       INTEGER (0..255)
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The priority value assigned to this Aggregation Port by
        the Partner. The value of this attribute may contain the
        manually configured value carried in
        aAggPortPartnerAdminPortPriority if there is no protocol
        Partner. This 16-bit value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.19"
    ::= { dot3adAggPortEntry 19 }


dot3adAggPortActorAdminState OBJECT-TYPE
    SYNTAX       LacpState
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A string of 8 bits, corresponding to the administrative
        values of Actor_State (43.4.2) as transmitted by the
        Actor in LACPDUs. The first bit corresponds to bit 0 of
        Actor_State (LACP_Activity),
        the second bit corresponds to bit 1 (LACP_Timeout),
        the third bit corresponds to bit 2 (Aggregation),
        the fourth bit corresponds to bit 3 (Synchronization),
        the fifth bit corresponds to bit 4 (Collecting),
        the sixth bit corresponds to bit 5 (Distributing),
        the seventh bit corresponds to bit 6 (Defaulted),
        and the eighth bit corresponds to bit 7 (Expired).
        These values allow administrative control over the
        values of LACP_Activity, LACP_Timeout and Aggregation.
        This attribute value is read-write."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.20"
    ::= { dot3adAggPortEntry 20 }


dot3adAggPortActorOperState OBJECT-TYPE
    SYNTAX       LacpState
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A string of 8 bits, corresponding to the current
        operational values of Actor_State as transmitted by the
        Actor in LACPDUs. The bit allocations are as defined in
        30.7.2.1.20. This attribute value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.21"
    ::= { dot3adAggPortEntry 21 }


dot3adAggPortPartnerAdminState OBJECT-TYPE
    SYNTAX       LacpState
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "A string of 8 bits, corresponding to the current
        administrative value of Actor_State for the protocol
        Partner. The bit allocations are as defined in
        30.7.2.1.20. This attribute value is read-write. The
        assigned value is used in order to achieve manually
        configured aggregation."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.22"
    ::= { dot3adAggPortEntry 22 }


dot3adAggPortPartnerOperState OBJECT-TYPE
    SYNTAX       LacpState
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A string of 8 bits, corresponding to the current values
        of Actor_State in the most recently received LACPDU
        transmitted by the protocol Partner. The bit allocations
        are as defined in 30.7.2.1.20. In the absence of an
        active protocol Partner, this value may reflect the
        manually configured value aAggPortPartnerAdminState.
        This attribute value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.23"
    ::= { dot3adAggPortEntry 23 }


dot3adAggPortAggregateOrIndividual OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A read-only Boolean value indicating whether the
        Aggregation Port is able to Aggregate (`TRUE') or is
        only able to operate as an Individual link (`FALSE')."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.2.1.24"
    ::= { dot3adAggPortEntry 24 }


-- -------------------------------------------------------------
-- LACP Statistics Table
-- -------------------------------------------------------------


dot3adAggPortStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot3adAggPortStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains Link Aggregation information
        about every port that is associated with this device.
        A row appears in this table for each physical port."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3"
    ::= { dot3adAggPort 2 }


dot3adAggPortStatsEntry OBJECT-TYPE
    SYNTAX      Dot3adAggPortStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of Link Aggregation Control Protocol statistics
        for each port on this device."
    INDEX { dot3adAggPortIndex }
    ::= { dot3adAggPortStatsTable 1 }


Dot3adAggPortStatsEntry ::=
    SEQUENCE {
        dot3adAggPortStatsLACPDUsRx
            Counter32,
        dot3adAggPortStatsMarkerPDUsRx
            Counter32,
        dot3adAggPortStatsMarkerResponsePDUsRx
            Counter32,
        dot3adAggPortStatsUnknownRx
            Counter32,
        dot3adAggPortStatsIllegalRx
            Counter32,
        dot3adAggPortStatsLACPDUsTx
            Counter32,
        dot3adAggPortStatsMarkerPDUsTx
            Counter32,
        dot3adAggPortStatsMarkerResponsePDUsTx
            Counter32
    }


dot3adAggPortStatsLACPDUsRx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of valid LACPDUs received on this
        Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.2"
    ::= { dot3adAggPortStatsEntry 1 }


dot3adAggPortStatsMarkerPDUsRx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of valid Marker PDUs received on this
        Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.3"
    ::= { dot3adAggPortStatsEntry 2 }


dot3adAggPortStatsMarkerResponsePDUsRx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of valid Marker Response PDUs received on
        this Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.4"
    ::= { dot3adAggPortStatsEntry 3 }


dot3adAggPortStatsUnknownRx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of frames received that either:
        - carry the Slow Protocols Ethernet Type value (43B.4),
          but contain an unknown PDU,  or:
        - are addressed to the Slow Protocols group MAC
          Address (43B.3), but do not carry the Slow Protocols
          Ethernet Type.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.5"
    ::= { dot3adAggPortStatsEntry 4 }


dot3adAggPortStatsIllegalRx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of frames received that carry the Slow
        Protocols Ethernet Type value (43B.4), but contain a
        badly formed PDU or an illegal value of Protocol Subtype
        (43B.4). This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.6"
    ::= { dot3adAggPortStatsEntry 5 }


dot3adAggPortStatsLACPDUsTx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of LACPDUs transmitted on this
        Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.7"
    ::= { dot3adAggPortStatsEntry 6 }


dot3adAggPortStatsMarkerPDUsTx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of Marker PDUs transmitted on this
        Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.8"
    ::= { dot3adAggPortStatsEntry 7 }


dot3adAggPortStatsMarkerResponsePDUsTx OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The number of Marker Response PDUs transmitted
        on this Aggregation Port. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.3.1.9"
    ::= { dot3adAggPortStatsEntry 8 }


-- -------------------------------------------------------------
-- LACP Debug Table
-- -------------------------------------------------------------
dot3adAggPortDebugTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Dot3adAggPortDebugEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains Link Aggregation debug
        information about every port that is associated with
        this device.  A row appears in this table for each
        physical port."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4"
    ::= { dot3adAggPort 3 }


dot3adAggPortDebugEntry OBJECT-TYPE
    SYNTAX      Dot3adAggPortDebugEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of the debug parameters for a port."
    INDEX { dot3adAggPortIndex }
    ::= { dot3adAggPortDebugTable 1 }


Dot3adAggPortDebugEntry ::=
    SEQUENCE {
        dot3adAggPortDebugRxState
            INTEGER,
        dot3adAggPortDebugLastRxTime
            TimeTicks,
        dot3adAggPortDebugMuxState
            INTEGER,
        dot3adAggPortDebugMuxReason
            DisplayString,
        dot3adAggPortDebugActorChurnState
            ChurnState,
        dot3adAggPortDebugPartnerChurnState
            ChurnState,
        dot3adAggPortDebugActorChurnCount
            Counter32,
        dot3adAggPortDebugPartnerChurnCount
            Counter32,
        dot3adAggPortDebugActorSyncTransitionCount
            Counter32,
        dot3adAggPortDebugPartnerSyncTransitionCount
            Counter32,
        dot3adAggPortDebugActorChangeCount
            Counter32,
        dot3adAggPortDebugPartnerChangeCount
            Counter32
    }


dot3adAggPortDebugRxState OBJECT-TYPE
    SYNTAX       INTEGER {
                    currentRx(1),
                    expired(2),
                    defaulted(3),
                    initialize(4),
                    lacpDisabled(5),
                    portDisabled(6)
                }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "This attribute holds the value `currentRx' if the
        Receive state machine for the Aggregation Port is in the
        CURRENT state, `expired' if the Receive state machine is
        in the EXPIRED state, `defaulted' if the Receive state
        machine is in the DEFAULTED state, `initialize' if the
        Receive state machine is in the INITIALIZE state,
        `lacpDisabled' if the Receive state machine is in the
        LACP_DISABLED state, or `portDisabled' if the Receive
        state machine is in the PORT_DISABLED state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.2"
    ::= { dot3adAggPortDebugEntry 1 }


dot3adAggPortDebugLastRxTime OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The value of aTimeSinceSystemReset (F.2.1) when
        the last LACPDU was received by this Aggregation Port.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.3"
    ::= { dot3adAggPortDebugEntry 2 }


dot3adAggPortDebugMuxState OBJECT-TYPE
    SYNTAX       INTEGER {
                    detached(1),
                    waiting(2),
                    attached(3),
                    collecting(4),
                    distributing(5),
                    collectingDistributing(6)
             }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "This attribute holds the value `detached' if the Mux
        state machine (43.4.14) for the Aggregation Port is in
        the DETACHED state, `waiting' if the Mux state machine
        is in the WAITING state, `attached' if the Mux state
        machine for the Aggregation Port is in the ATTACHED
        state, `collecting' if the Mux state machine for the
        Aggregation Port is in the COLLECTING state,
        `distributing' if the Mux state machine for the
        Aggregation Port is in the DISTRIBUTING state, and
        `collectingDistributing' if the Mux state machine for
        the Aggregation Port is in the COLLECTING_DISTRIBUTING
        state. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.4"
    ::= { dot3adAggPortDebugEntry 3 }


dot3adAggPortDebugMuxReason OBJECT-TYPE
    SYNTAX       DisplayString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "A human-readable text string indicating the reason
        for the most recent change of Mux machine state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.5"
    ::= { dot3adAggPortDebugEntry 4 }


dot3adAggPortDebugActorChurnState OBJECT-TYPE
    SYNTAX       ChurnState
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The state of the Actor Churn Detection machine
        (43.4.17) for the Aggregation Port. A value of `noChurn'
        indicates that the state machine is in either the
        NO_ACTOR_CHURN or the ACTOR_CHURN_MONITOR state, and
        `churn' indicates that the state machine is in the
        ACTOR_CHURN state. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.6"
    ::= { dot3adAggPortDebugEntry 5 }


dot3adAggPortDebugPartnerChurnState OBJECT-TYPE
    SYNTAX       ChurnState
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "The state of the Partner Churn Detection machine
        (43.4.17) for the Aggregation Port. A value of `noChurn'
        indicates that the state machine is in either the
        NO_PARTNER_CHURN or the PARTNER_CHURN_MONITOR state, and
        `churn' indicates that the state machine is in the
        PARTNER_CHURN state. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.7"
    ::= { dot3adAggPortDebugEntry 6 }


dot3adAggPortDebugActorChurnCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Actor Churn state
        machine has entered the ACTOR_CHURN state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.8"
    ::= { dot3adAggPortDebugEntry 7 }


dot3adAggPortDebugPartnerChurnCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Partner Churn
        state machine has entered the PARTNER_CHURN state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.9"
    ::= { dot3adAggPortDebugEntry 8 }


dot3adAggPortDebugActorSyncTransitionCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Actor's Mux state
        machine (43.4.15) has entered the IN_SYNC state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.10"
    ::= { dot3adAggPortDebugEntry 9 }


dot3adAggPortDebugPartnerSyncTransitionCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Partner's Mux
        state machine (43.4.15) has entered the IN_SYNC state.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.11"
    ::= { dot3adAggPortDebugEntry 10 }


dot3adAggPortDebugActorChangeCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Actor's perception of
        the LAG ID for this Aggregation Port has changed.
        This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.12"
    ::= { dot3adAggPortDebugEntry 11 }


dot3adAggPortDebugPartnerChangeCount OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Count of the number of times the Partner's perception
        of the LAG ID (see 43.3.6.1) for this Aggregation Port
        has changed. This value is read-only."
    REFERENCE
        "IEEE 802.3 Subclause 30.7.4.1.13"
    ::= { dot3adAggPortDebugEntry 12 }

-- -------------------------------------------------------------
-- IEEE 802.3ad MIB - Conformance Information
-- -------------------------------------------------------------

dot3adAggConformance OBJECT IDENTIFIER ::= { lagMIB 2 }


dot3adAggGroups OBJECT IDENTIFIER ::= { dot3adAggConformance 1 }


dot3adAggCompliances OBJECT IDENTIFIER
    ::= { dot3adAggConformance 2 }

-- -------------------------------------------------------------
-- units of conformance
-- -------------------------------------------------------------

dot3adAggGroup OBJECT-GROUP
    OBJECTS {
        dot3adAggActorSystemID,
        dot3adAggActorSystemPriority,
        dot3adAggAggregateOrIndividual,
        dot3adAggActorAdminKey,
        dot3adAggMACAddress,
        dot3adAggActorOperKey,
        dot3adAggPartnerSystemID,
        dot3adAggPartnerSystemPriority,
        dot3adAggPartnerOperKey,
        dot3adAggCollectorMaxDelay
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about an
        aggregation."
    ::= { dot3adAggGroups 1 }


dot3adAggPortListGroup OBJECT-GROUP
    OBJECTS {
        dot3adAggPortListPorts
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about
        every port in an aggregation."
    ::= { dot3adAggGroups 2 }


dot3adAggPortGroup OBJECT-GROUP
    OBJECTS {
        dot3adAggPortActorSystemPriority,
        dot3adAggPortActorSystemID,
        dot3adAggPortActorAdminKey,
        dot3adAggPortActorOperKey,
        dot3adAggPortPartnerAdminSystemPriority,
        dot3adAggPortPartnerOperSystemPriority,
        dot3adAggPortPartnerAdminSystemID,
        dot3adAggPortPartnerOperSystemID,
        dot3adAggPortPartnerAdminKey,
        dot3adAggPortPartnerOperKey,
        dot3adAggPortSelectedAggID,
        dot3adAggPortAttachedAggID,
        dot3adAggPortActorPort,
        dot3adAggPortActorPortPriority,
        dot3adAggPortPartnerAdminPort,
        dot3adAggPortPartnerOperPort,
        dot3adAggPortPartnerAdminPortPriority,
        dot3adAggPortPartnerOperPortPriority,
        dot3adAggPortActorAdminState,
        dot3adAggPortActorOperState,
        dot3adAggPortPartnerAdminState,
        dot3adAggPortPartnerOperState,
        dot3adAggPortAggregateOrIndividual
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about
        every port in an aggregation."
    ::= { dot3adAggGroups 3 }


dot3adAggPortStatsGroup OBJECT-GROUP
    OBJECTS {
        dot3adAggPortStatsLACPDUsRx,
        dot3adAggPortStatsMarkerPDUsRx,
        dot3adAggPortStatsMarkerResponsePDUsRx,
        dot3adAggPortStatsUnknownRx,
        dot3adAggPortStatsIllegalRx,
        dot3adAggPortStatsLACPDUsTx,
        dot3adAggPortStatsMarkerPDUsTx,
        dot3adAggPortStatsMarkerResponsePDUsTx
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing information about
        every port in an aggregation."
    ::= { dot3adAggGroups 4 }


dot3adAggPortDebugGroup OBJECT-GROUP
    OBJECTS {
        dot3adAggPortDebugRxState,
        dot3adAggPortDebugLastRxTime,
        dot3adAggPortDebugMuxState,
        dot3adAggPortDebugMuxReason,
        dot3adAggPortDebugActorChurnState,
        dot3adAggPortDebugPartnerChurnState,
        dot3adAggPortDebugActorChurnCount,
        dot3adAggPortDebugPartnerChurnCount,
        dot3adAggPortDebugActorSyncTransitionCount,
        dot3adAggPortDebugPartnerSyncTransitionCount,
        dot3adAggPortDebugActorChangeCount,
        dot3adAggPortDebugPartnerChangeCount
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing debug information
        about every aggregated port."
    ::= { dot3adAggGroups 5 }

dot3adTablesLastChangedGroup OBJECT-GROUP
    OBJECTS {
        dot3adTablesLastChanged
    }
    STATUS   current
    DESCRIPTION
        "A collection of objects providing information about the
        time of changes to the configuration of aggregations and
        their ports."
::= { dot3adAggGroup 6 }

-- -------------------------------------------------------------
-- compliance statements
-- -------------------------------------------------------------


dot3adAggCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for device support of
        Link Aggregation."


    MODULE
        MANDATORY-GROUPS {
            dot3adAggGroup,
            dot3adAggPortGroup,
           dot3adTablesLastChangedGroup
        }


        GROUP       dot3adAggPortListGroup
        DESCRIPTION
            "This group is optional."


        GROUP       dot3adAggPortStatsGroup
        DESCRIPTION
            "This group is optional."


        GROUP       dot3adAggPortDebugGroup
        DESCRIPTION
            "This group is optional."


    ::= { dot3adAggCompliances 1 }


END

