CISCO-SWITCH-QOS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE,
    Counter64,
    Unsigned32
        FROM SNMPv2-SMI

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF

    TruthValue,
    RowStatus
        FROM SNMPv2-TC

    ifIndex
        FROM IF-MIB

    entPhysicalIndex
        FROM ENTITY-MIB

    QosLayer2Cos,
    Percent
        FROM CISCO-QOS-PIB-MIB

    Dscp
        FROM DIFFSERV-DSCP-TC

    IfDirection
        FROM DIFFSERV-MIB

    QosIpPrecedence,
    QosQueueNumber,
    QosThresholdNumber,
    QosMplsExpValue,
    QosMutationMapName,
    QosMutationMapNameOrEmpty
        FROM CISCO-QOS-TC-MIB

    ciscoMgmt
        FROM CISCO-SMI;

ciscoSwitchQosMIB MODULE-IDENTITY
    LAST-UPDATED "200609180000Z"
    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-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "This MIB module extends the CISCO-CLASS-BASED-QOS-MIB
         by defining configuration and statistics information
         specific to the quality of service (QoS) features of
         Layer2/3 switch functionality implemented in Cisco
         devices. It is applicable to a device which is fully
         within a single QoS domain, although one or more
         boundaries with other QoS domains can be immediately
         adjacent to this device.

         Configuration information available through this MIB
         includes:

         + Mappings between CoS, IP Precedence, MPLS-EXP value
           to DSCP value and vice versa for classification purpose.

         + Device level QoS configuration for DSCP rewrite,
           policing of ACL-redirected traffic, QoS port-queueing
           mode, statistics collection for policy that sets a 
           trust state. 

         + CoS, MPLS-EXP and DSCP mutation map name and mappings.
           These mutations can be configured so that they change
           the content of packets which cross QoS boundaries, either
           as they enter or leave this device. 

         + Interface QoS configuration such as default CoS value,
           trust state, packet assignment to queue and threshold
           based on CoS or DSCP value, drop algorithm and
           corresponding parameters, queue scheduling parameter
           such as WRR (Weighted Round Robin) weights, queue
           size allocation weight.

         Statistics available through this MIB includes:

         + Per module Multi-Layer Switching QoS statistics.

         + Per interface QoS queueing statistics.

         The following terms are used throughout this MIB:

         DSCP (Differentiated Services Code Point) is the six most
         significant bits of the ToS field in a IP packet header.

         DSCP Mutation: when a packet is being forwarded across an
         IP network, the previous hop(s) and the following hop(s)
         of a device may reside in a different QoS domain. A QoS
         domain refers to the set of QoS rules and conventions
         adopted by an administrative entity. For instance, a set
         of DSCP values may have a different meaning in different
         domains. DSCP mutation allows a DSCP set to be mutated or
         transformed in order to maintain semantic compatibility
         between adjacent domains. The mutation is done via mapping
         tables which maps the old DSCP value from one domain to a
         new DSCP value in the other domain. DSCP Mutation is applied 
         to egress traffic.

         IP precedence is the three most significant bits of the ToS
         field in a IP packet header.

         CoS (Class of Service) is the three bits in the layer 2
         header that indicates user priority value assigned to this
         packet.

         Trust state is a parameter configured at an interface to
         specify which QoS markings in packets arriving at that
         interface are acceptable as-is, rather than needing to be
         ignored/overwritten due to an 'untrusted' source or
         previous hop.

         MPLS-EXP:  MPLS experimental field in MPLS label." 
    REVISION    "200609180000Z"
    DESCRIPTION
        "Initial revision of this MIB module."
    ::= { ciscoMgmt 580 } 

--
--     MIB object definitions
--

ciscoSwitchQosMIBNotifs
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIB 0 }
ciscoSwitchQosMIBObjects
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIB 1 }
ciscoSwitchQosMIBConformance
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIB 2 }

csqGlobals
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBObjects 1 }
csqMappings 
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBObjects 2 }
csqMutations
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBObjects 3 }
csqInterface
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBObjects 4 }
csqStatistics
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBObjects 5 }

--
--  Global group
--

csqDscpRewriteEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies whether DSCP rewrite is enabled
         at a device-level of granularity, i.e., 'true' = enabled
         and 'false' = disabled.  If no other objects specify whether
         DSCP rewrite is enabled at any different level of granularity,
         then this object's value is not subject to any modifiers.
         However, some devices might support other object(s) which
         specify whether DSCP rewrite is enabled at different level(s)
         of granularity.  For such devices, the value of this object
         takes precedence over the values of such other object(s) when
         the value of this object is 'false'; in contrast, when the
         value of this object is 'true', the values of such other
         objects take precedence over the value of this object.

         if 'true', all outgoing packets will have their DSCP
         value rewritten based on the result of classification,
         policing or DSCP mutation configured in the device.

         if 'false', all outgoing packets will have their DSCP
         values unchanged from they arrived."
    ::= { csqGlobals 1 }

csqPoliceRedirectedTrafficEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies whether ACL-redirected traffic
         policing is enabled at a device-level of granularity,
         i.e., 'true' = enabled and 'false' = disabled.  If no
         other objects specify whether ACL-redirected traffic
         is enabled at any different level of granularity,
         then this object's value is not subject to any modifiers.
         However, some devices might support other object(s) which
         specify whether ACL-redirected traffic policing is enabled
         at different level(s) of granularity. For such devices,
         the value of this object takes precedence over the values
         of such other object(s) when the value of this object is
         'false'; in contrast, when the value of this object is 'true',
         the values of such other objects take precedence over the
         value of this object.

         if 'true', ACL-redirected traffic is subject to policing.
         if 'false', ACL-redirected traffic is not policed." 
    ::= { csqGlobals 2 }

csqPortQueueingModeEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies whether port-queueing mode is enabled
         at a device-level of granularity, i.e., 'true' = enabled
         and 'false' = disabled.  If no other objects specify whether
         port-queueing mode is enabled at any different level of
         granularity, then this object's value is not subject to any
         modifiers.  However, some devices might support other object(s)
         which specify whether port-queueing mode is enabled at
         different level(s) of granularity.  For such devices, the
         value of this object takes precedence over the values of such
         other object(s) when the value of this object is 'false'; in
         contrast, when the value of this object is 'true', the values
         of such other objects take precedence over the value of this
         object.

         if 'true', port-queueing mode is enabled. In port-queueing
         mode, marking and policing is disabled. All queueing
         on receiving and transmitting is based on QoS tag in the
         incoming packet. For 802.1Q or ISL-encapsulated packets,
         queueing is based on the CoS value. Otherwise, queueing
         is based on the default interface CoS value denoted by
         csqIfDefaultCos object.

         if 'false', port-queueing mode is disabled."
    ::= { csqGlobals 3 }

csqMarkingStatisticsEnable OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies whether statistics collection for
         policy that sets a trust state is enabled at a device-level
         of granularity, i.e., 'true' = enabled and 'false' = disabled.
         If no other objects specify whether statistics collection for
         policy that sets a trust state is enabled at any different
         level of granularity, then this object's value is not subject
         to any modifiers. However, some devices might support other
         object(s) which specify whether statistics collection for
         policy that sets a trust state is enabled at different
         level(s) of granularity.  For such devices, the value of this
         object takes precedence over the values of such other object(s)
         when the value of this object is 'false'; in contrast, when the
         value of this object is 'true', the values of such other
         objects take precedence over the value of this object.

         if 'true', statistics collection is enabled. 
         if 'false', statistics collection is disabled." 
    ::= { csqGlobals 4 }

--
-- The csqCosToDscpTable
--

csqCosToDscpTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqCosToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table contains the mapping of CoS values to DSCP values.
        This mapping table consist of eight CoS values (0 through 7) and
        their corresponding DSCP values. The mapping given by this table
        is used for all packets received on an interface if and only if
        that interface has a trust state, as given by the value of
        csqIfTrustState for the interface, of 'trustCoS'." 
    ::= { csqMappings 1 }

csqCosToDscpEntry OBJECT-TYPE
    SYNTAX        CsqCosToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from a CoS value to a DSCP
        value."
    INDEX { csqCosToDscpCos }
    ::= { csqCosToDscpTable 1 }

CsqCosToDscpEntry ::= SEQUENCE {
    csqCosToDscpCos    QosLayer2Cos,
    csqCosToDscpDscp   Dscp
}

csqCosToDscpCos   OBJECT-TYPE
    SYNTAX        QosLayer2Cos
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The CoS value being mapped to the DSCP value."
    ::= { csqCosToDscpEntry 1 }

csqCosToDscpDscp  OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The DSCP value which the CoS value maps to."
    ::= { csqCosToDscpEntry 2 }

--
-- CsqIpPrecToDscpTable    
--
csqIpPrecToDscpTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqIpPrecToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table contains the mapping of IP Precedence to DSCP.
        This mapping table consist of eight IpPrecedence values
        (0 through 7) and their corresponding DSCP values. The
        mapping given by this table is used for all packets received
        on an interface if and only if that interface has a trust state,
        as given by the value of csqIfTrustState for the interface,
        of 'trustIpPrec'."
    ::= { csqMappings 2 }

csqIpPrecToDscpEntry    OBJECT-TYPE
    SYNTAX        CsqIpPrecToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from an IP Precedence value to
        a DSCP value."
    INDEX { csqIpPrecToDscpIpPrec }
    ::= { csqIpPrecToDscpTable 1 }

CsqIpPrecToDscpEntry ::= SEQUENCE {
    csqIpPrecToDscpIpPrec    QosIpPrecedence,
    csqIpPrecToDscpDscp      Dscp
}

csqIpPrecToDscpIpPrec  OBJECT-TYPE
    SYNTAX        QosIpPrecedence
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The IP Precedence value being mapped to the DSCP value."
    ::= { csqIpPrecToDscpEntry 1 }

csqIpPrecToDscpDscp  OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The DSCP value which the IP Precedence value maps to."
    ::= { csqIpPrecToDscpEntry 2 }

--
-- The csqExpToDscpTable
--

csqExpToDscpTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqExpToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table contains the mapping of MPLS-EXP values to DSCP
        values.  This mapping table consist of eight MPLS-EXP values
        (0 through 7) and their corresponding DSCP values." 
    ::= { csqMappings 3 }

csqExpToDscpEntry OBJECT-TYPE
    SYNTAX        CsqExpToDscpEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from a EXP value to a DSCP
        value."
    INDEX { csqExpToDscpExp }
    ::= { csqExpToDscpTable 1 }

CsqExpToDscpEntry ::= SEQUENCE {
    csqExpToDscpExp    QosMplsExpValue,
    csqExpToDscpDscp   Dscp
}

csqExpToDscpExp   OBJECT-TYPE
    SYNTAX        QosMplsExpValue 
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The EXP value being mapped to the DSCP value."
    ::= { csqExpToDscpEntry 1 }

csqExpToDscpDscp  OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The DSCP value which the EXP value maps to."
    ::= { csqExpToDscpEntry 2 }

--
-- csqDscpMappingTable
--

csqDscpMappingTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqDscpMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table always has 64 entries, one for each DSCP value. The
        table contains four mappings from the DSCP value assigned to
        a packet. One mapping is to the egress CoS to be stored in the
        layer-2 frame headers for output on 802.1Q or ISL interfaces.
        Another mapping is to the EXP value to be stored in MPLS label.
        The other two mappings are to the remarked (or 'marked down')
        DSCP values which are used when a policer requires that 
        a packet's DSCP value to be modified. Of these two mappings,
        one is for a normal burst, and the other is for maximum burst." 
    ::= { csqMappings 4 }

csqDscpMappingEntry    OBJECT-TYPE
    SYNTAX        CsqDscpMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from DSCP value to CoS value,
        MPLS-EXP value and policed DSCP."
    INDEX  { csqDscpMappingDscp }
    ::= { csqDscpMappingTable 1 }

CsqDscpMappingEntry ::= SEQUENCE {
    csqDscpMappingDscp            Dscp,
    csqDscpMappingCos             QosLayer2Cos,
    csqDscpMappingExp             QosMplsExpValue,
    csqDscpMappingNormalBurstDscp Dscp,
    csqDscpMappingMaxBurstDscp    Dscp
}

csqDscpMappingDscp    OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The DSCP value being mapped to the CoS, EXP and
        policed DSCP value."
    ::= { csqDscpMappingEntry 1 }

csqDscpMappingCos    OBJECT-TYPE
    SYNTAX        QosLayer2Cos
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The CoS value which the DSCP values maps to."
    ::= { csqDscpMappingEntry 2 }

csqDscpMappingExp    OBJECT-TYPE
    SYNTAX        QosMplsExpValue 
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The MPLS-EXP value which the DSCP values maps to."
    ::= { csqDscpMappingEntry 3 }

csqDscpMappingNormalBurstDscp   OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The normal burst policed DSCP value which the DSCP values maps
        to."
    ::= { csqDscpMappingEntry 4 }

csqDscpMappingMaxBurstDscp   OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The maximum burst policed DSCP value which the DSCP values maps
        to."
    ::= { csqDscpMappingEntry 5 }

--
--  csqMutations group
--

csqMaxCosMutationMap OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of CoS mutation map that can be supported
         in the device."
    ::= { csqMutations 1 }

csqCosMutationTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqCosMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table indicates CoS mutation maps in the
         device."
    ::= { csqMutations 2 }

csqCosMutationEntry OBJECT-TYPE
    SYNTAX        CsqCosMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the status of this instance. A row
         instance can be created or removed by setting
         the appropriate value of its RowStatus object. Once
         the number of entries in this table reaches the
         maximum number of CoS mutation map supported in
         the device denoted by csqMaxCosMutationMap object, user
         must delete an existing entry in this table in order to
         create a new entry." 
    INDEX { IMPLIED csqCosMutationMapName }
    ::= { csqCosMutationTable 1 }

CsqCosMutationEntry ::= SEQUENCE {
    csqCosMutationMapName   QosMutationMapName,
    csqCosMutationRowStatus RowStatus
}

csqCosMutationMapName  OBJECT-TYPE
    SYNTAX        QosMutationMapName 
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The name of the CoS mutation map." 
    ::= { csqCosMutationEntry 1 }

csqCosMutationRowStatus  OBJECT-TYPE
    SYNTAX        RowStatus 
    MAX-ACCESS    read-create 
    STATUS        current
    DESCRIPTION
        "This object is used to manage the creation and deletion
         of rows in this table."
    ::= { csqCosMutationEntry 2 }

--
-- The csqCosMutationMappingTable
--

csqCosMutationMappingTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqCosMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table provides management information for CoS
         mutation mapping. CoS mutation is applied to ingress
         traffic. This mutation occurs before the CoS to
         DSCP mapping for applicable traffic as specified in
         csqCosToDscpTable."
    ::= { csqMutations 3 }

csqCosMutationMappingEntry OBJECT-TYPE
    SYNTAX        CsqCosMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from a CoS value to another CoS 
         value. When the entry for csqCosMutationMapName in the
         csqCosMutationTable is created, corresponding entries in this
         table are initialized with a default mapping which is the
         identity function. When the entry for csqCosMutationMapName
         in the csqCosMutationTable is removed, corresponding entries
         in this table will also be deleted."
    INDEX { csqCosMutationMapName, csqCosMutationFromCos }
    ::= { csqCosMutationMappingTable 1 }

CsqCosMutationMappingEntry ::= SEQUENCE {
    csqCosMutationFromCos  QosLayer2Cos,
    csqCosMutationToCos    QosLayer2Cos 
}

csqCosMutationFromCos   OBJECT-TYPE
    SYNTAX        QosLayer2Cos
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The input CoS value being mapped to the output CoS value in
        this mutation map."
    ::= { csqCosMutationMappingEntry 1 }

csqCosMutationToCos  OBJECT-TYPE
    SYNTAX        QosLayer2Cos 
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The output CoS value which the input CoS value maps to."
    ::= { csqCosMutationMappingEntry 2 }

csqMaxDscpMutationMap OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of DSCP mutation map that can be supported 
         in the device."
    ::= { csqMutations 4 }

--
-- csqDscpMutationTable
--

csqDscpMutationTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqDscpMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table indicates DSCP mutation maps in the
         device."
    ::= { csqMutations 5 }

csqDscpMutationEntry OBJECT-TYPE
    SYNTAX        CsqDscpMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the status of this instance. A row
         instance can be created or removed by setting
         the appropriate value of its RowStatus object. Once
         the number of entries in this table reaches the
         maximum number of DSCP mutation map supported in
         the device denoted by csqMaxDscpMutationMap
         object, user must delete an existing entry in this table
         in order to create a new entry." 
    INDEX { IMPLIED csqDscpMutationMapName }
    ::= { csqDscpMutationTable 1 }

CsqDscpMutationEntry ::= SEQUENCE {
    csqDscpMutationMapName   QosMutationMapName,
    csqDscpMutationRowStatus RowStatus
}

csqDscpMutationMapName  OBJECT-TYPE
    SYNTAX        QosMutationMapName 
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The name of the DSCP mutation map." 
    ::= { csqDscpMutationEntry 1 }

csqDscpMutationRowStatus  OBJECT-TYPE
    SYNTAX        RowStatus 
    MAX-ACCESS    read-create 
    STATUS        current
    DESCRIPTION
        "This object is used to manage the creation and deletion
         of rows in this table."
    ::= { csqDscpMutationEntry 2 }

--
-- The csqDscpMutationMappingTable
--

csqDscpMutationMappingTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqDscpMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table provides management information for DSCP
         mutation mapping. DSCP mutation is applied to egress
         traffic. This mutation occurs after the mappings
         specified in csqDscpMappingTable." 
    ::= { csqMutations 6 }

csqDscpMutationMappingEntry OBJECT-TYPE
    SYNTAX        CsqDscpMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from an input DSCP value to
         an output DSCP value. When the entry for csqDscpMutationMapName
         in the csqDscpMutationTable is created, corresponding entries
         in this table are initialized with a default mapping which is
         the identity function. When the entry for
         csqDscpMutationMapName in the csqDscpMutationTable is removed,
         corresponding entries in this table will also be deleted."
    INDEX { csqDscpMutationMapName, csqDscpMutationFromDscp }
    ::= { csqDscpMutationMappingTable 1 }

CsqDscpMutationMappingEntry ::= SEQUENCE {
    csqDscpMutationFromDscp  Dscp,
    csqDscpMutationToDscp    Dscp 
}

csqDscpMutationFromDscp   OBJECT-TYPE
    SYNTAX        Dscp
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The input DSCP value being mapped to the output DSCP value in
        this mutation map."
    ::= { csqDscpMutationMappingEntry 1 }

csqDscpMutationToDscp  OBJECT-TYPE
    SYNTAX        Dscp 
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The output DSCP value which the input DSCP value maps to."
    ::= { csqDscpMutationMappingEntry 2 }

csqMaxExpMutationMap OBJECT-TYPE
    SYNTAX      Unsigned32 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of EXP mutation can be supported 
         in the device."
    ::= { csqMutations 7 }

--
-- csqExpMutationTable
--

csqExpMutationTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqExpMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table indicates EXP mutation maps in the
         device."
    ::= { csqMutations 8 }

csqExpMutationEntry OBJECT-TYPE
    SYNTAX        CsqExpMutationEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the status of this instance. A row
         instance can be created or removed by setting
         the appropriate value of its RowStatus object. Once
         the number of entries in this table reaches the
         maximum number of EXP mutation map supported in
         the device denoted by csqMaxExpMutationMap object, user
         must delete an existing entry in this table in order to
         create a new entry." 
    INDEX { IMPLIED csqExpMutationMapName }
    ::= { csqExpMutationTable 1 }

CsqExpMutationEntry ::= SEQUENCE {
    csqExpMutationMapName   QosMutationMapName,
    csqExpMutationRowStatus RowStatus
}

csqExpMutationMapName  OBJECT-TYPE
    SYNTAX        QosMutationMapName 
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The name of the EXP mutation map." 
    ::= { csqExpMutationEntry 1 }

csqExpMutationRowStatus  OBJECT-TYPE
    SYNTAX        RowStatus 
    MAX-ACCESS    read-create 
    STATUS        current
    DESCRIPTION
        "This object is used to manage the creation and deletion
         of rows in this table."
    ::= { csqExpMutationEntry 2 }

--
-- The csqExpMutationMappingTable
--

csqExpMutationMappingTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF CsqExpMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This table provides management information for EXP 
         mutation mapping. EXP mutation is applied to egress
         traffic. This mutation occurs after the mapping
         specified in csqExpToDscpTable." 
    ::= { csqMutations 9 }

csqExpMutationMappingEntry OBJECT-TYPE
    SYNTAX        CsqExpMutationMappingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each row contains the mapping from input EXP to output EXP 
         value. When the entry for csqExpMutationMapName in the
         csqExpMutationTable is created, corresponding entries in this
         table are initialized with a default mapping which is the
         identity function. When the entry for csqExpMutationMapName
         in the csqExpMutationTable is removed, corresponding entries
         in this table will also be deleted."
    INDEX { csqExpMutationMapName, csqExpMutationFromExp }
    ::= { csqExpMutationMappingTable 1 }

CsqExpMutationMappingEntry ::= SEQUENCE {
    csqExpMutationFromExp QosMplsExpValue, 
    csqExpMutationToExp   QosMplsExpValue 
}

csqExpMutationFromExp   OBJECT-TYPE
    SYNTAX        QosMplsExpValue 
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The input EXP value being mapped to the output EXP value in
        this mutation map."
    ::= { csqExpMutationMappingEntry 1 }

csqExpMutationToExp  OBJECT-TYPE
    SYNTAX        QosMplsExpValue 
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The output EXP value which the input EXP value maps to."
    ::= { csqExpMutationMappingEntry 2 }

--
--  csqIfMutationConfigTable
--

csqIfMutationConfigTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF CsqIfMutationConfigEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A table containing the mutation configuration for
         mutation capable interface in the device. If a
         mutation capable interface does not have a row
         in this table, there is no mutation performed
         at such interface."
    ::= { csqMutations 10 }

csqIfMutationConfigEntry OBJECT-TYPE
    SYNTAX       CsqIfMutationConfigEntry 
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A row instance contains the name of CoS, DSCP and EXP
        mutation map and RowStatus object." 
    INDEX { ifIndex }
    ::= { csqIfMutationConfigTable 1 }

CsqIfMutationConfigEntry ::= SEQUENCE {
    csqIfCosMutationMap     QosMutationMapNameOrEmpty,
    csqIfDscpMutationMap    QosMutationMapNameOrEmpty,
    csqIfExpMutationMap     QosMutationMapNameOrEmpty,
    csqIfMutationRowStatus  RowStatus
}

csqIfCosMutationMap OBJECT-TYPE
    SYNTAX      QosMutationMapNameOrEmpty 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object specifies the name of CoS mutation map 
         applied at this interface. If CoS mutation is not performed
         at the interface, then the value of this object is the
         zero-length string; otherwise, the value of this object must
         be the name of a row in the csqCosMutationTable.  If a row
         in the csqCosMutationTable is deleted, all instances of this
         object which referenced the deleted row get changed to the
         zero-length string."
    ::= { csqIfMutationConfigEntry 1 }

csqIfDscpMutationMap OBJECT-TYPE
    SYNTAX      QosMutationMapNameOrEmpty 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object specifies the name of DSCP mutation map 
         applied at this interface. If DSCP mutation is not performed
         at the interface, then the value of this object is the
         zero-length string; otherwise, the value of this object must
         be the name of a row in the csqDscpMutationTable.  If a row
         in the csqDscpMutationTable is deleted, all instances of this
         object which referenced the deleted row get changed to the
         zero-length string."
    ::= { csqIfMutationConfigEntry 2 }

csqIfExpMutationMap OBJECT-TYPE
    SYNTAX      QosMutationMapNameOrEmpty 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object specifies the name of EXP mutation map
         applied at this interface. If EXP mutation is not performed
         at the interface, then the value of this object is the
         zero-length string; otherwise, the value of this object must
         be the name of a row in the csqExpMutationTable.  If a row
         in the csqExpMutationTable is deleted, all instances of this
         object which referenced the deleted row get changed to the
         zero-length string."
    ::= { csqIfMutationConfigEntry 3 }

csqIfMutationRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object is used to manage the creation, and deletion
        of rows in the table."
    ::= { csqIfMutationConfigEntry 4 }

--
--  csqIfConfigTable
--

csqIfConfigTable OBJECT-TYPE
        SYNTAX       SEQUENCE OF CsqIfConfigEntry
        MAX-ACCESS   not-accessible
        STATUS       current
        DESCRIPTION
          "This table provides QoS configuration for QoS manageable  
          interface in the device."
        ::= { csqInterface 1 }

csqIfConfigEntry OBJECT-TYPE
    SYNTAX       CsqIfConfigEntry 
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A row instance contains the default CoS value and trust
        state of a Qos manageable interface."
    INDEX { ifIndex }
    ::= { csqIfConfigTable 1 }

CsqIfConfigEntry ::= SEQUENCE {
    csqIfDefaultCos   QosLayer2Cos,
    csqIfTrustState   INTEGER
}

csqIfDefaultCos OBJECT-TYPE
    SYNTAX      QosLayer2Cos 
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
        "This object specifies the default CoS value configured
        at this physical interface. This default value will be
        assigned to packet which does not have a CoS value in
        its layer-2 header when the packet arrives at this
        interface or if the value of csqIfTrustState object
        for this physical interface is 'untrusted'."
    ::= { csqIfConfigEntry 1 }

csqIfTrustState OBJECT-TYPE
    SYNTAX      INTEGER { 
                  untrusted(1),
                  trustCoS(2),
                  trustIpPrec(3),
                  trustDscp(4)
                } 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object is used to set the trust state of an interface.
        (whether the packets arriving at an interface are trusted to
        carry the correct data for classification.)

        If the object is untrusted(1), then the DSCP assigned to the
        packet is the layer2 CoS value denoted by csqIfDefaultCos
        object mapped to a DSCP by the CoS-to-DSCP mapping defined in
        object csqCosToDscpDscp.

        If this object is trustCoS(2), then the DSCP assigned
        to the packet is the layer2 CoS of the packet mapped to a
        DSCP by the CoS-to-DSCP mapping defined in object
        csqCosToDscpDscp.

        When this object is trustIpPrec(3), a DSCP is assigned to
        an IP packet according to the IP-Precedence-to-DSCP mapping
        defined by the values contained in csqIpPrecToDscpTable. For
        non-IP packets, trustIpPrec(3) has identical behavior as
        trustCoS(2).

        When this object is trustDscp(4), the DSCP contained in an IP
        packet is trusted as being the correct value to assign to it.
        For non-IP packets, trustDscp(4) has identical behavior as
        trustCoS(2)."
    ::= { csqIfConfigEntry 2 }

--
-- Cos to Queue assignment table
--

csqIfCosToQueueTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfCosToQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides the information for and configuration of
        assigning packets to queues and thresholds based on their CoS
        value."
    ::= { csqInterface 2 }

csqIfCosToQueueEntry OBJECT-TYPE
    SYNTAX      CsqIfCosToQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The assignment of packets at an interface to a pair of queue
        and threshold based on their CoS value and traffic direction."
    INDEX { ifIndex, csqIfCosToQueueDirection, csqIfCosToQueueCos }
    ::= { csqIfCosToQueueTable 1 }

CsqIfCosToQueueEntry ::= SEQUENCE {
    csqIfCosToQueueDirection           IfDirection,
    csqIfCosToQueueCos                 QosLayer2Cos,
    csqIfCosToQueueQueueNumber         QosQueueNumber, 
    csqIfCosToQueueThresholdNumber     QosThresholdNumber 
}

csqIfCosToQueueDirection  OBJECT-TYPE
    SYNTAX      IfDirection
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The traffic direction of a packet." 
    ::= { csqIfCosToQueueEntry 1 }

csqIfCosToQueueCos  OBJECT-TYPE
    SYNTAX      QosLayer2Cos
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The CoS value of the packet which the queue and threshold
         assignment is based on."
    ::= { csqIfCosToQueueEntry 2 }

csqIfCosToQueueQueueNumber OBJECT-TYPE
    SYNTAX      QosQueueNumber 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The queue number where packet whose CoS value denoted by 
        csqIfCosToQueueCos will be assigned to." 
    ::= { csqIfCosToQueueEntry 3 }

csqIfCosToQueueThresholdNumber OBJECT-TYPE
    SYNTAX      QosThresholdNumber 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The threshold number where packet whose CoS value denoted 
         by csqIfCosToQueueCos will be assigned to." 
    ::= { csqIfCosToQueueEntry 4 }

--
-- DSCP to Queue assignment table
--

csqIfDscpToQueueTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfDscpToQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides the information for and configuration of
        assigning packets to queues and thresholds based on their DSCP
        value and traffic direction."
    ::= { csqInterface 3 }

csqIfDscpToQueueEntry OBJECT-TYPE
    SYNTAX      CsqIfDscpToQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The assignment of packets at an interface to a pair of queue
        and threshold based on their DSCP value and packets traffic
        direction."
    INDEX { ifIndex, csqIfDscpToQueueDirection, csqIfDscpToQueueDscp }
    ::= { csqIfDscpToQueueTable 1 }

CsqIfDscpToQueueEntry ::= SEQUENCE {
    csqIfDscpToQueueDirection           IfDirection,
    csqIfDscpToQueueDscp                Dscp,
    csqIfDscpToQueueQueueNumber         QosQueueNumber, 
    csqIfDscpToQueueThresholdNumber     QosThresholdNumber 
}

csqIfDscpToQueueDirection  OBJECT-TYPE
    SYNTAX      IfDirection
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The traffic direction of a packet." 
    ::= { csqIfDscpToQueueEntry 1 }

csqIfDscpToQueueDscp  OBJECT-TYPE
    SYNTAX      Dscp
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The DSCP value of the packet which the queue and threshold
         assignment is based on."
    ::= { csqIfDscpToQueueEntry 2 }

csqIfDscpToQueueQueueNumber OBJECT-TYPE
    SYNTAX      QosQueueNumber 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The queue number where packet whose DSCP value denoted by 
        csqIfDscpToQueueDscp will be assigned to." 
    ::= { csqIfDscpToQueueEntry 3 }

csqIfDscpToQueueThresholdNumber OBJECT-TYPE
    SYNTAX      QosThresholdNumber 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The threshold number where packet whose DSCP value denoted by 
        csqIfDscpToQueueDscp will be assigned to." 
    ::= { csqIfDscpToQueueEntry 4 }

--
-- The Interface Drop Table
--

csqIfDropConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfDropConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table maintains threshold parameters for the specified
        queue number and threshold number of an interface."
    ::= { csqInterface 4 }

csqIfDropConfigEntry       OBJECT-TYPE
    SYNTAX      CsqIfDropConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "For each threshold of a queue, there are parameters to set on
        the threshold. This entry contains the parameters."
    INDEX   { ifIndex,
              csqIfDropConfigDirection,
              csqIfDropConfigQueueIndex,
              csqIfDropConfigThresholdIndex }
    ::= { csqIfDropConfigTable 1 }

CsqIfDropConfigEntry ::= SEQUENCE {
    csqIfDropConfigDirection           IfDirection, 
    csqIfDropConfigQueueIndex          QosQueueNumber, 
    csqIfDropConfigThresholdIndex      QosThresholdNumber, 
    csqIfDropConfigDropAlgorithm       INTEGER,
    csqIfDropConfigDropThreshold       Percent, 
    csqIfDropConfigMinWredThreshold    Percent,
    csqIfDropConfigMaxWredThreshold    Percent 
}

csqIfDropConfigDirection  OBJECT-TYPE
    SYNTAX      IfDirection
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates the queue direction."
    ::= { csqIfDropConfigEntry 1 }

csqIfDropConfigQueueIndex  OBJECT-TYPE
    SYNTAX      QosQueueNumber 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates queue number."
    ::= { csqIfDropConfigEntry 2 }

csqIfDropConfigThresholdIndex   OBJECT-TYPE
    SYNTAX      QosThresholdNumber 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates threshold number."
    ::= { csqIfDropConfigEntry 3 }

csqIfDropConfigDropAlgorithm   OBJECT-TYPE
    SYNTAX      INTEGER { tailDrop(1), wred(2) } 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Specifies the drop algorithm running at this queue and
         threshold.

         'tailDrop' indicates that this queue and threshold drops
         packet using tail-drop algorithm. This value is configurable 
         only if 'tailDrop' bit in the value of qosIfCapabilities object
         for the same ifIndex and traffic direction is set. 

         'wred' indicates that WRED algorithm is used. This value is
         configurable only if 'wred' bit in the value of 
         qosIfCapabilities object for the same ifIndex and traffic
         direction is set."
    ::= { csqIfDropConfigEntry 4 }

csqIfDropConfigDropThreshold   OBJECT-TYPE
    SYNTAX      Percent (1..100) 
    MAX-ACCESS  read-write    
    STATUS      current
    DESCRIPTION
        "This object specifies the drop threshold parameter for a
        pair of queue and threshold of an interface when the
        drop algorithm is tail drop. Once the packets in the buffer is
        more than the value of this object, the incoming packets of the
        buffer are dropped. The value is a percentage of the full
        buffer.

        This object is configurable only if 'tailDrop' bit in 
        the value of qosIfCapabilities for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'tailDrop', this object value is ignored." 
    ::= { csqIfDropConfigEntry 5 }

csqIfDropConfigMinWredThreshold   OBJECT-TYPE
    SYNTAX      Percent
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object specifies the min WRED threshold parameter of a
        threshold number for the specific interface when WRED drop
        algorithm is used.

        WRED (Weighted Random Early Detect) is a mechanism which drops
        packets fairly during congestion so that adaptive applications
        can react to congestion. This object specifies a percentage of
        the buffer size.

        This object is configurable only if 'wred' bit in the value
        of qosIfCapabilities object for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'wred', this object value is ignored."
    ::= { csqIfDropConfigEntry 6 }

csqIfDropConfigMaxWredThreshold   OBJECT-TYPE
    SYNTAX      Percent (1..100) 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object specifies the max WRED threshold parameter of a
        threshold number for the specific interface when WRED drop
        algorithm is used.

        This object is configurable only if 'wred' bit in the value
        of qosIfCapabilities object for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'wred', this object value is ignored."
    ::= { csqIfDropConfigEntry 7 }

--
-- The Queue Table
--

csqIfQueueTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table containing configuration parameter for each queue on
         a QOS managable interface."
    ::= { csqInterface 5 }

csqIfQueueEntry OBJECT-TYPE
    SYNTAX      CsqIfQueueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of WRR weight and queue size allocation weight for
        ingress or egress of a specific queue."
    INDEX   { ifIndex, 
              csqIfQueueDirection,
              csqIfQueueNumber }
    ::= { csqIfQueueTable 1 }

CsqIfQueueEntry ::= SEQUENCE {
    csqIfQueueDirection         IfDirection, 
    csqIfQueueNumber            QosQueueNumber, 
    csqIfQueueWrrWeight         Unsigned32,
    csqIfQueueSizeWeight        Unsigned32,
    csqIfQueueStatsGranularity  INTEGER
}

csqIfQueueDirection  OBJECT-TYPE
    SYNTAX      IfDirection 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates the queue direction." 
    ::= { csqIfQueueEntry 1 }

csqIfQueueNumber  OBJECT-TYPE
    SYNTAX      QosQueueNumber 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates queue number."
    ::= { csqIfQueueEntry 2 }

csqIfQueueWrrWeight OBJECT-TYPE
    SYNTAX          Unsigned32 (1..255)
    MAX-ACCESS      read-write    
    STATUS          current
    DESCRIPTION
        "Specifies the WRR weight."
    ::= { csqIfQueueEntry 3 }

csqIfQueueSizeWeight    OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies the queue size weight."
    ::= { csqIfQueueEntry 4 }

csqIfQueueStatsGranularity OBJECT-TYPE
    SYNTAX          INTEGER { perQueue(1), perQueueThresh(2) }  
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates whether QoS statistics is maintained per queue or
         per queue per threshold.

         'perQueue' indicates that QoS statistics is maintained per
         queue.

         'perQueueThresh' indicates that QoS statistics is maintained
         per queue per threshold."
    ::= { csqIfQueueEntry 5 }

--
-- The Interface Mode Config Table
--

csqIfModeConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfModeConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table used to configure the QoS mode for layer-2
         interface." 
    ::= { csqInterface 6 }

csqIfModeConfigEntry OBJECT-TYPE
    SYNTAX      CsqIfModeConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing QoS mode information of layer-2 
        interface."
    INDEX   { ifIndex }
    ::= { csqIfModeConfigTable 1 }

CsqIfModeConfigEntry ::= SEQUENCE {
    csqIfVlanBasedQosModeEnable   TruthValue
}

csqIfVlanBasedQosModeEnable OBJECT-TYPE
    SYNTAX      TruthValue 
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
        "Specifies if VLAN-based mode is enabled or disabled at
         the specified interface.

        If 'true', policy map that is attached to this interface
        is ignored, and QoS is driven by the policy map that is
        attached to the corresponding VLAN interface that this
        interface belongs to. Otherwise, the value of this object
        is 'false'."
    ::= { csqIfModeConfigEntry 1 }

--
-- The Interface Consistency Check Table
--

csqIfConsistencyCheckTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfConsistencyCheckEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table used to configure the QoS-port attribute consistency
         check for Port Channel interface identified by ifIndex.
         QoS-port attribute consistency check consists of but not
         limited to checking for members of a Port Channel interface
         having the same queue type."
    ::= { csqInterface 7 }

csqIfConsistencyCheckEntry OBJECT-TYPE
    SYNTAX      CsqIfConsistencyCheckEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing QoS-port attribute consistency check
        information of Port Channel interface."
    INDEX   { ifIndex }
    ::= { csqIfConsistencyCheckTable 1 }

CsqIfConsistencyCheckEntry ::= SEQUENCE {
    csqIfConsistencyCheckEnable   TruthValue
}

csqIfConsistencyCheckEnable OBJECT-TYPE
    SYNTAX      TruthValue 
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
        "Specifies if QoS-port attribute consitency check is enabled
        or disabled at the specified channel interface.

        If 'true', QoS-port attribute consistency check is enabled. 
        If 'false', QoS-port attribute consistency check is disabled."
    ::= { csqIfConsistencyCheckEntry 1 }

--
--  The Interface Statistics Table
--

csqIfStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqIfStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table containing QoS statistics counters per QoS manageable
         interface."
    ::= { csqStatistics 1 }

csqIfStatsEntry OBJECT-TYPE
    SYNTAX      CsqIfStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry contains statistics, such as a drop packet  
         counter, which are per interface (ifIndex), per  
         direction, per queue and per threshold."
    INDEX  { ifIndex,
             csqIfStatsDirection,
             csqIfStatsQueueNumber,
             csqIfStatsThresholdNumber  }
    ::= { csqIfStatsTable 1 }

CsqIfStatsEntry ::= SEQUENCE {
    csqIfStatsDirection       IfDirection,
    csqIfStatsQueueNumber     QosQueueNumber, 
    csqIfStatsThresholdNumber QosThresholdNumber, 
    csqIfStatsDropPkts        Counter64
}

csqIfStatsDirection OBJECT-TYPE
    SYNTAX      IfDirection
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates traffic direction of an interface."
    ::= { csqIfStatsEntry 1 }

csqIfStatsQueueNumber  OBJECT-TYPE
    SYNTAX      QosQueueNumber 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Indicates the queue number of the interface for which
        statistics are collected. For example : if the interface 
        has a queue type of oneP2Q2t, this index value can
        be 1, 2, 3." 
    ::= { csqIfStatsEntry 2 }

csqIfStatsThresholdNumber  OBJECT-TYPE
    SYNTAX       QosThresholdNumber 
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "Indicates the threshold number of a queue on the interface for
         which statistics are collected. For example : if the interface 
         has a queue type of oneP2Q2t, this index value can be 1, 2. If
         the value of the corresponding csqIfQueueStatsGranularity for
         the queue that this csqIfStatsThresholdNumber belongs to is 
         'perQueue', this csqIfStatsThresholdNumber index value is
         always 1."
    ::= { csqIfStatsEntry 3 }

csqIfStatsDropPkts  OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of packets that have been received then dropped
         from the interface because they exceeded the threshold value
         configured at this queue and threshold of this interface."
    ::= { csqIfStatsEntry 4 }

--
--  The Module Statistics Table
--

csqModuleStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CsqModuleStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table decribes QoS statistics counters per module that
        is capable of providing this information. Such module is
        identified by the entPhysicalIndex in ENTITY-MIB."
    ::= { csqStatistics 2 }

csqModuleStatsEntry OBJECT-TYPE
    SYNTAX      CsqModuleStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry contains per-module (entPhysicalIndex) statistics such
         as the number of dropped packets due to policing, number of IP
         packets with their ToS and CoS value changed, number of non IP
         packets with their CoS value changed, and number of MPLS
         packets with their EXP value changed."
    INDEX  { entPhysicalIndex }
    ::= { csqModuleStatsTable 1 }

CsqModuleStatsEntry ::= SEQUENCE {
    csqModuleDropByPolicingPackets   Counter64,
    csqModuleTosChangedIpPackets     Counter64,
    csqModuleCosChangedIpPackets     Counter64,
    csqModuleCosChangedNonIpPackets  Counter64,
    csqModuleExpChangedMplsPackets   Counter64
}

csqModuleDropByPolicingPackets OBJECT-TYPE
    SYNTAX      Counter64 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of packets that have been dropped due to policing." 
    ::= { csqModuleStatsEntry 1 }

csqModuleTosChangedIpPackets OBJECT-TYPE
    SYNTAX      Counter64 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of IP packets that have the ToS value changed due
        to policing." 
    ::= { csqModuleStatsEntry 2 }

csqModuleCosChangedIpPackets OBJECT-TYPE
    SYNTAX      Counter64 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of IP packets that have the CoS value changed due
        to policing." 
    ::= { csqModuleStatsEntry 3 }

csqModuleCosChangedNonIpPackets OBJECT-TYPE
    SYNTAX      Counter64 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of non IP packets that have the CoS value changed
        due to policing." 
    ::= { csqModuleStatsEntry 4 }

csqModuleExpChangedMplsPackets OBJECT-TYPE
    SYNTAX      Counter64 
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of MPLS packets have the EXP value change
        due to policing." 
    ::= { csqModuleStatsEntry 5 }

--
-- Conformance
--

ciscoSwitchQosMIBCompliances
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBConformance 1 }

ciscoSwitchQosMIBGroups
    OBJECT IDENTIFIER ::= { ciscoSwitchQosMIBConformance 2 }

ciscoSwitchQosMIBCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for the CISCO-SWITCH-QOS-MIB"
    MODULE
    MANDATORY-GROUPS { 
         ciscoSwitchQosIfConfigGroup
    }
    GROUP ciscoSwitchQosIfStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support port statictics." 

    GROUP ciscoSwitchQosModuleStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support module statistics." 

    GROUP ciscoSwitchQosPortQueueingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support port queueing mode." 

    GROUP ciscoSwitchQosRedirectPolicingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support policing of ACL-redirected packets." 

    GROUP ciscoSwitchQosDscpRewriteGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support DSCP rewrite." 

    GROUP ciscoSwitchQosMappingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support mapping between CoS, IpPrecedence,
         MPLS-EXP and DSCP."

    GROUP ciscoSwitchQosMutationGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support CoS, MPLS-EXP and DSCP mutation."

    GROUP ciscoSwitchQosIfCosToQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support CoS to queue assignment at an interface." 

    GROUP ciscoSwitchQosIfDscpAssignGroup
    DESCRIPTION
        "This group is mandatory only for platforms
         which support Dscp to queue assignment at an interface." 

    GROUP ciscoSwitchQosIfDropConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
         support drop threshold configuration at an interface." 

    GROUP ciscoSwitchQosIfQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
         support queue configuration at an interface." 

    GROUP ciscoSwitchQosMarkingStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
         support marking statistics at the device." 

    GROUP ciscoSwitchQosIfModeConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
         support VLAN-based Qos mode configuration at an interface." 

    GROUP ciscoSwitchQosIfCCGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
         support consistency check at an interface." 

    OBJECT      csqCosMutationRowStatus 
    SYNTAX      INTEGER { active(1), createAndGo(4), destroy(6) }
    MIN-ACCESS  read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT      csqDscpMutationRowStatus 
    SYNTAX      INTEGER { active(1), createAndGo(4), destroy(6) }
    MIN-ACCESS  read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT      csqExpMutationRowStatus 
    SYNTAX      INTEGER { active(1), createAndGo(4), destroy(6) }
    MIN-ACCESS  read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT      csqIfMutationRowStatus 
    SYNTAX      INTEGER { active(1), createAndGo(4), destroy(6) }
    MIN-ACCESS  read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- Units of Conformance

ciscoSwitchQosMappingGroup OBJECT-GROUP
    OBJECTS {
       csqCosToDscpDscp,
       csqIpPrecToDscpDscp,
       csqExpToDscpDscp,
       csqDscpMappingCos,
       csqDscpMappingExp,
       csqDscpMappingNormalBurstDscp,
       csqDscpMappingMaxBurstDscp 
    } 
    STATUS current
    DESCRIPTION
        "A collection of objects which provides the QoS mapping
         information in the device." 
    ::= { ciscoSwitchQosMIBGroups 1 }

ciscoSwitchQosMutationGroup OBJECT-GROUP
    OBJECTS {
        csqMaxCosMutationMap,
        csqMaxDscpMutationMap,
        csqMaxExpMutationMap,
        csqCosMutationRowStatus,
        csqDscpMutationRowStatus,
        csqExpMutationRowStatus,
        csqCosMutationToCos,
        csqDscpMutationToDscp,
        csqExpMutationToExp,
        csqIfCosMutationMap,
        csqIfDscpMutationMap,
        csqIfExpMutationMap,
        csqIfMutationRowStatus
    }
    STATUS current
    DESCRIPTION
        "A collection of objects which provides the QoS mutation
         information in the device." 
    ::= { ciscoSwitchQosMIBGroups 2 }

ciscoSwitchQosIfConfigGroup OBJECT-GROUP
    OBJECTS {
        csqIfDefaultCos,
        csqIfTrustState
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides QoS configuration
         at an interface." 
    ::= { ciscoSwitchQosMIBGroups 3 }

ciscoSwitchQosIfCosToQueueGroup OBJECT-GROUP
    OBJECTS {
        csqIfCosToQueueQueueNumber,
        csqIfCosToQueueThresholdNumber
    }
    STATUS current
    DESCRIPTION
        "A collection of objects which provides CoS assignment
         information at an interface." 
    ::= { ciscoSwitchQosMIBGroups 4 }

ciscoSwitchQosIfDropConfigGroup OBJECT-GROUP
    OBJECTS {
        csqIfDropConfigDropAlgorithm,
        csqIfDropConfigDropThreshold,
        csqIfDropConfigMinWredThreshold,
        csqIfDropConfigMaxWredThreshold 
    }
    STATUS current
    DESCRIPTION
        "A collection of objects which provides drop threshold
         information at an interface." 
    ::= { ciscoSwitchQosMIBGroups 5 }

ciscoSwitchQosIfQueueGroup OBJECT-GROUP
    OBJECTS {
        csqIfQueueWrrWeight,
        csqIfQueueSizeWeight,
        csqIfQueueStatsGranularity
    }
    STATUS current
    DESCRIPTION
        "A collection of objects which provides queue information 
         at an interface." 
    ::= { ciscoSwitchQosMIBGroups 6 }

ciscoSwitchQosIfStatsGroup OBJECT-GROUP
    OBJECTS {
        csqIfStatsDropPkts
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides drop packets 
         information at an interface." 
    ::= { ciscoSwitchQosMIBGroups 7 }

ciscoSwitchQosModuleStatsGroup OBJECT-GROUP
    OBJECTS {
        csqModuleDropByPolicingPackets,
        csqModuleTosChangedIpPackets, 
        csqModuleCosChangedIpPackets,
        csqModuleCosChangedNonIpPackets,
        csqModuleExpChangedMplsPackets
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides QoS statistics 
         information at each QoS capable module." 
    ::= { ciscoSwitchQosMIBGroups 8 }

ciscoSwitchQosIfDscpAssignGroup OBJECT-GROUP
    OBJECTS {
        csqIfDscpToQueueQueueNumber,
        csqIfDscpToQueueThresholdNumber
    }
    STATUS current
    DESCRIPTION
        "A collection of objects which provides DSCP to queue
         assignment information at an interface." 
    ::= { ciscoSwitchQosMIBGroups 9 }

ciscoSwitchQosDscpRewriteGroup OBJECT-GROUP
    OBJECTS {
        csqDscpRewriteEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides DSCP rewrite 
         information."
    ::= { ciscoSwitchQosMIBGroups 10 }

ciscoSwitchQosRedirectPolicingGroup OBJECT-GROUP
    OBJECTS {
        csqPoliceRedirectedTrafficEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides information on
         policing of ACL-redirected traffic."
    ::= { ciscoSwitchQosMIBGroups 11 }

ciscoSwitchQosPortQueueingGroup OBJECT-GROUP
    OBJECTS {
        csqPortQueueingModeEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides information on
         port-queuing mode." 
    ::= { ciscoSwitchQosMIBGroups 12 }

ciscoSwitchQosMarkingStatsGroup OBJECT-GROUP
    OBJECTS {
        csqMarkingStatisticsEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides information on
         marking statistics configuration." 
    ::= { ciscoSwitchQosMIBGroups 13 }

ciscoSwitchQosIfCCGroup OBJECT-GROUP
    OBJECTS {
        csqIfConsistencyCheckEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides information on
         interface consistency check configuration." 
    ::= { ciscoSwitchQosMIBGroups 14 }

ciscoSwitchQosIfModeConfigGroup OBJECT-GROUP
    OBJECTS {
        csqIfVlanBasedQosModeEnable
    }
    STATUS current
    DESCRIPTION
        "A collection of object which provides information on
         QoS mode configuration." 
    ::= { ciscoSwitchQosMIBGroups 15 }

END
