  
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 "200606210000Z"
    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     "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][dot1dBasePort1][dot1dBasePort2]...'

         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 dot1dBasePort field
         following this field. 

         [dot1dBasePort'n'] is the value of dot1dBasePort 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
        }

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

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

        GROUP      clagAggDistributionGroup
        DESCRIPTION
            "This group is mandatory for the devices which 
             supported aggregation load balancing."
    ::= { 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
        }

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

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

        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."
    ::= { 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
        }

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

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

        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." 
    ::= { 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
        }

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

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

        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." 

    ::= { 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
     
  
 
 

     
  
 
 

