-- *****************************************************************
-- CISCO-LAG-MIB.my: Cisco LAG MIB
--
-- October 2001,  Liwei Lue
--
-- Copyright (c) 2001-2003, 2004, 2006, 2008 by cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************

CISCO-LAG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    ciscoMgmt
        FROM CISCO-SMI
    dot3adAggPortEntry,
    dot3adAggPortListEntry
        FROM IEEE8023-LAG-MIB
    ifIndex
        FROM IF-MIB;


ciscoLagMIB MODULE-IDENTITY
    LAST-UPDATED    "200801080000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W Tasman Drive
            San Jose, CA  95134
            USA

            Tel: +1 800 553-NETS

            E-mail:  cs-etherchan@cisco.com
             cs-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "Cisco Link Aggregation module for managing IEEE Std
        802.3ad.

        This MIB provides Link Aggregation information that are
        either excluded by IEEE Std 802.3ad (IEEE8023-LAG-MIB)
        or specific to Cisco products."
    REVISION        "200801080000Z"
    DESCRIPTION
        "Modified the description of clagAggPortListPorts."
    REVISION        "200606210000Z"
    DESCRIPTION
        "Added clagAggMaxAggregatorsGroup and modified the
        description of clagAggPortListPorts."
    REVISION        "200406110000Z"
    DESCRIPTION
        "Added clagAggPortListTable."
    REVISION        "200212130000Z"
    DESCRIPTION
        "Added a new value vlanIpPort(4) in TEXTUAL-CONVENTION
        ClagDistributionProtocol.
        Added a new object clagAggDistributionMplsProtocol."
    REVISION        "200201020000Z"
    DESCRIPTION
        "Modified Description of clagAggDistributionProtocol."
    REVISION        "200110230000Z"
    DESCRIPTION
        "Initial version of this MIB module.
        Support Distribution configuration for LACP, Aggregation 
        protocol control, and  Administrative status for LACP."
    ::= { ciscoMgmt 225 }


clagMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoLagMIB 1 }


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

ClagDistributionProtocol ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated type for all the supported load balancing
        algorithms used on the LACP interface to distribute 
        outgoing data frames among its component interaces, such 
        as IP address.  

        ip(1)               IP address
        mac(2)              MAC address 
        port(3)             port number
        vlanIpPort(4)       vlan number, IP address and
                        port number"
    SYNTAX          INTEGER  {
                        ip(1),
                        mac(2),
                        port(3),
                        vlanIpPort(4)
                    }

ClagDistributionAddressMode ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated type for all the supported load
        balancing address modes to distribute traffic
        across multiple links.  The address mode can be 
        source, destination, or both used on this LACP 
        interface to distribute outgoing data frames among
        its component interfaces. 

        source(1)         Source address.
        destination(2)    Destination address.
        both(3)           both, Source and Destination."
    SYNTAX          INTEGER  {
                        source(1),
                        destination(2),
                        both(3)
                    }

ClagDistributionMplsProtocol ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated type for all the supported load balancing
        algorithms used on the LACP interface to distribute 
        outgoing MPLS (Multi-Protocol Label Switching) data 
        frames among its component interfaces, such as 
        MPLS label.

        label(1)            MPLS label
        labelIp(2)          MPLS label or IP address"
    SYNTAX          INTEGER  {
                        label(1),
                        labelIp(2)
                    }

ClagAggregationProtocol ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated type for all the supported aggregation
        protocols.

        lacp(1)     Link Aggregation Control Protocol(LACP),
                    IEEE 802.3ad
        pagp(2)     Port Aggregation Protocol"
    SYNTAX          INTEGER  {
                        lacp(1),
                        pagp(2)
                    }

ClagPortAdminStatus ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "An enumerated type for all the LACP administrative states on
        a particular aggregation port.

        off(1)          No LACP involved on the aggregation port.

        on(2)           The aggregation port always join link
                        aggregation whithout any LACP protocol
                        involved.

        active(3)       Active LACP indicates the port's preference
                        to participate in the protocol regardless of
                        Partner's control value.

        passive(4)      Passive indicates the port's preference for
                        not transmitting LACP PDU unless its Partner's
                        control value is Active LACP."
    SYNTAX          INTEGER  {
                        off(1),
                        on(2),
                        active(3),
                        passive(4)
                    }
-- -------------------------------------------------------------
--   
-- -------------------------------------------------------------
-- groups in the LAG MIB
-- -------------------------------------------------------------

clagGlobalConfigObjects  OBJECT IDENTIFIER
    ::= { clagMIBObjects 1 }

clagAgg  OBJECT IDENTIFIER
    ::= { clagMIBObjects 2 }

clagAggPort  OBJECT IDENTIFIER
    ::= { clagMIBObjects 3 }

clagAggPortList  OBJECT IDENTIFIER
    ::= { clagMIBObjects 4 }


-- -------------------------------------------------------------
--   
-- -------------------------------------------------------------
-- The Aggregation Global Configuration
-- -------------------------------------------------------------

clagAggDistributionProtocol OBJECT-TYPE
    SYNTAX          ClagDistributionProtocol
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object controls the load balancing algorithms
        used on this LACP interface to distribute outgoing data
        frames among its component interfaces." 
    ::= { clagGlobalConfigObjects 1 }

clagAggDistributionAddressMode OBJECT-TYPE
    SYNTAX          ClagDistributionAddressMode
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The load balancing address mode for the device." 
    ::= { clagGlobalConfigObjects 2 }

clagAggDistributionMplsProtocol OBJECT-TYPE
    SYNTAX          ClagDistributionMplsProtocol
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object controls the load balancing algorithms
        used on this LACP interface to distribute outgoing MPLS
        data frames among its component interfaces.

        This object is only instantiated on platforms which 
        support aggregation load balancing for MPLS packets." 
    ::= { clagGlobalConfigObjects 3 }

clagAggMaxAggregators OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the maximum number of aggregators
        supported by the device." 
    ::= { clagGlobalConfigObjects 4 }
-- -------------------------------------------------------------
-- The Aggregation Protocol Table
-- -------------------------------------------------------------

clagAggProtocolTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF ClagAggProtocolEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table that contains protocol information about every
        interface which supports link aggregation."
    ::= { clagAgg 1 }

clagAggProtocolEntry OBJECT-TYPE
    SYNTAX          ClagAggProtocolEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Entry containing aggregation protocol type for a
        particular interface.  An entry is created in this
        table when its associated ifEntry is created and that 
        interface supports link aggregation.  The entry of this
        table is deleted when the associated ifEntry is removed."
    INDEX           { ifIndex } 
    ::= { clagAggProtocolTable 1 }

ClagAggProtocolEntry ::= SEQUENCE {
        clagAggProtocolType ClagAggregationProtocol
}

clagAggProtocolType OBJECT-TYPE
    SYNTAX          ClagAggregationProtocol
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The aggregation protocol type for the interface.

        On some platforms, aggregation protocol may be assigned per
        group.  The group can be a collection of the ports which belong
        to a module or system.  If the aggregation protocol is assigned
        to any of the ports in such group then the aggregation protocol
        will apply to all ports in the same group.

        On some platforms, aggregation protocol type  can be assigned
        per aggregator.  If multiple ports belong to a aggregator,
        the aggregation protocol assigned to any of the ports in such
        aggregator will apply to all ports in the same." 
    ::= { clagAggProtocolEntry 1 }
 

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

clagAggPortTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF ClagAggPortEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table that contains information about every
        aggregation port that is associated with this system.
        This table contains additional objects for the
        dot3adAggPortTable."
    REFERENCE       "IEEE 802.3 Subclause 30.7.2"
    ::= { clagAggPort 1 }

clagAggPortEntry OBJECT-TYPE
    SYNTAX          ClagAggPortEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing additional management information
        applicable to a particular aggregation port."
    AUGMENTS           { dot3adAggPortEntry  } 
 
    ::= { clagAggPortTable 1 }

ClagAggPortEntry ::= SEQUENCE {
        clagAggPortAdminStatus ClagPortAdminStatus
}

clagAggPortAdminStatus OBJECT-TYPE
    SYNTAX          ClagPortAdminStatus
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The administrative status of the LACP protocol on this
        aggregation port." 
    ::= { clagAggPortEntry 1 }
 

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

clagAggPortListTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF ClagAggPortListEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table augments the dot3adAggPortListTable and
        provides the complete list of ports associated with
        each Aggregator."
    REFERENCE       "IEEE 802.3 Subclause 30.7.1.1.30"
    ::= { clagAggPortList 1 }

clagAggPortListEntry OBJECT-TYPE
    SYNTAX          ClagAggPortListEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A list of the ports associated with a given Aggregator."
    AUGMENTS           { dot3adAggPortListEntry  } 
 
    ::= { clagAggPortListTable 1 }

ClagAggPortListEntry ::= SEQUENCE {
        clagAggPortListPorts OCTET STRING
}

clagAggPortListPorts OBJECT-TYPE
    SYNTAX          OCTET STRING (SIZE  (2..256))
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object contains a list of ports currently associated
        with this Aggregator in the format of
        '[number_of_ports][cieIfDot1dBaseMappingPort1][...]
         [cieIfDot1dBaseMappingPortn]'

        where
        [number_of_ports] is of size 2 octet and indicates
        the number of ports contains in this object. It
        also indicates the number of cieIfDot1dBaseMappingPort field
        following this field. 

        [cieIfDot1dBaseMappingPort'n'] is the value of 
        cieIfDot1dBaseMappingPort of the 'n' port associated with this
        Aggregation and has size of 2 octets where n is up to
        [number_of_ports]."
    REFERENCE       "IEEE 802.3 Subclause 30.7.1.1.30" 
    ::= { clagAggPortListEntry 1 }
 

-- -------------------------------------------------------------
--   
-- -------------------------------------------------------------
-- Notifications
-- -------------------------------------------------------------

clagMIBNotifications  OBJECT IDENTIFIER
    ::= { ciscoLagMIB 2 }

-- no notifications defined
--   
-- -------------------------------------------------------------
-- Conformance
-- -------------------------------------------------------------

clagMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoLagMIB 3 }

clagMIBCompliances  OBJECT IDENTIFIER
    ::= { clagMIBConformance 1 }

clagMIBGroups  OBJECT IDENTIFIER
    ::= { clagMIBConformance 2 }


-- -------------------------------------------------------------
--   
-- -------------------------------------------------------------
-- Compliance
-- -------------------------------------------------------------

clagMIBCompliance MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Link Aggregation MIB"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        clagAggProtocolGroup,
                        clagAggPortGroup
                    }

    GROUP           clagAggDistributionGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing."

    OBJECT          clagAggProtocolType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          clagAggPortAdminStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { clagMIBCompliances 1 }

clagMIBCompliance2 MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Link Aggregation MIB"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        clagAggProtocolGroup,
                        clagAggPortGroup
                    }

    GROUP           clagAggDistributionGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing."

    GROUP           clagAggDistributionMplsGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing for MPLS
        packets."

    OBJECT          clagAggProtocolType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          clagAggPortAdminStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { clagMIBCompliances 2 }

clagMIBCompliance3 MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Link Aggregation MIB"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        clagAggProtocolGroup,
                        clagAggPortGroup
                    }

    GROUP           clagAggDistributionGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing."

    GROUP           clagAggDistributionMplsGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing for MPLS
        packets."

    GROUP           clagAggPortListGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supports dot1dBasePort value greater than 2048."

    OBJECT          clagAggProtocolType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          clagAggPortAdminStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { clagMIBCompliances 3 }

clagMIBCompliance4 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for entities which implement
        the Cisco Link Aggregation MIB"
    MODULE          -- this module
    MANDATORY-GROUPS {
                        clagAggProtocolGroup,
                        clagAggPortGroup
                    }

    GROUP           clagAggDistributionGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing."

    GROUP           clagAggDistributionMplsGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supported aggregation load balancing for MPLS
        packets."

    GROUP           clagAggPortListGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        supports dot1dBasePort value greater than 2048."

    GROUP           clagAggMaxAggregatorsGroup
    DESCRIPTION
        "This group is mandatory for the devices which
        provides the information about the maximum number
        of aggregators supported by the device."

    OBJECT          clagAggProtocolType
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          clagAggPortAdminStatus
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { clagMIBCompliances 4 }

-- -------------------------------------------------------------
-- Units of Conformance
-- -------------------------------------------------------------

clagAggProtocolGroup OBJECT-GROUP
    OBJECTS         { clagAggProtocolType }
    STATUS          current
    DESCRIPTION
        "The object that provide aggregation protocol type of an
        interface. These are additional to the IEEE Std 802.3ad
        MIB."
    ::= { clagMIBGroups 1 }

clagAggPortGroup OBJECT-GROUP
    OBJECTS         { clagAggPortAdminStatus }
    STATUS          current
    DESCRIPTION
        "A collection of objects that provide admin status
        about an aggregation port.  These are additional to the
        IEEE Std 802.3ad MIB."
    ::= { clagMIBGroups 2 }

clagAggDistributionGroup OBJECT-GROUP
    OBJECTS         {
                        clagAggDistributionProtocol,
                        clagAggDistributionAddressMode
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects that provide the load balancing
        information for an aggregator.  These are additional to
        the IEEE Std 802.3ad MIB."
    ::= { clagMIBGroups 3 }

clagAggDistributionMplsGroup OBJECT-GROUP
    OBJECTS         { clagAggDistributionMplsProtocol }
    STATUS          current
    DESCRIPTION
        "A collection of objects that provide the load balancing
        information for an aggregator for MPLS packets.  
        These are additional to the IEEE Std 802.3ad MIB."
    ::= { clagMIBGroups 4 }

clagAggPortListGroup OBJECT-GROUP
    OBJECTS         { clagAggPortListPorts }
    STATUS          current
    DESCRIPTION
        "A collection of object that provides information about
        ports in an aggregation."
    ::= { clagMIBGroups 5 }

clagAggMaxAggregatorsGroup OBJECT-GROUP
    OBJECTS         { clagAggMaxAggregators }
    STATUS          current
    DESCRIPTION
        "A collection of object that provides information about
        the maximum number of aggregators supported by the 
        device."
    ::= { clagMIBGroups 6 }

END
