-- Copyright (C) 2008-2014 Super Micro Computer Inc. All Rights Reserved

-- $Id: fsqosxtd.mib,v 1.16 2013/09/25 11:13:03 siva Exp $

--  ------------------------------------------------------------------------ 
-- DIFF SERVER DATA PATH FLOW 
--  ------------------------------------------------------------------------ 
--
--           +==========+    +========+                        +==========+   
--  Traffic  |          |    |        |    +==========+ InProf |          | 
--           |          |    |        |    |          |( green,|          | 
--           | Classify |    |   Pre  |    |          | yellow)| Marking, | 
--  ========>|          |===>| Marking|===>| Metering |=======>|          |  
--           |          |    |        |    +====+=====+    +==>|          | 
--           +==========+    +========+         |          |   +==========+ 
--                                            |          |           |
--                                        OutProfile=====+           |
--                                          (red)     (soft police)  |
--                                            |                      |
--                                            |                      |
--                                            |                      |
--                                        (hard police)              |
--                                            |                      |
--                                       +==========+                |
--                                       | pkt drop |                |
--                                       +==========+                |
--                                                                   |
--                                                                   |
--                     +===============+      +===============+      |
--    Tx to egress port|               |<=====|   Queueing /  |      |
--    <=============== | Scheduling/   |      |   Shaping     |======+
--                     | Rate-Shaping  |      |               | 
--                     +===============+      +===============+

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

SUPERMICRO-QOS-MIB DEFINITIONS ::= BEGIN

    IMPORTS
    Unsigned32, MODULE-IDENTITY, OBJECT-TYPE, enterprises, Integer32, 
    Counter64  FROM SNMPv2-SMI
    ifIndex    FROM IF-MIB
    TEXTUAL-CONVENTION, RowStatus, DisplayString  FROM SNMPv2-TC;

fsQoSMib MODULE-IDENTITY
    LAST-UPDATED "201209050000Z"
    ORGANIZATION "Super Micro Computer Inc."
    CONTACT-INFO "support@Supermicro.com"
    DESCRIPTION
         "This MIB defines the objects necessary to manage 
         a device that uses the Differentiated Services."
    REVISION "201209050000Z"
    DESCRIPTION
         "This MIB defines the objects necessary to manage 
         a device that uses the Differentiated Services."

    ::= { enterprises supermicro-computer-inc(10876) super-switch(101) extended(2) 6 }

Dscp ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    DESCRIPTION
       "A Differentiated Services Code-Point that may be used for
       marking a traffic stream."
    REFERENCE
        "RFC 2474, RFC 2780"
    SYNTAX   Integer32 (0..63)

MeterColorMode ::= TEXTUAL-CONVENTION
        STATUS  current
        DESCRIPTION
        "Enums to indicate the color mode of the Meter
        colorAware      - the Meter will also consider the Pre-Color 
                          of the Packet
        colorBlind      - the Meter will ignore the Pre-Color of the Packet"
        SYNTAX   INTEGER {
                          colorAware(1),
                          colorBlind(2)
                         }

MeterType ::= TEXTUAL-CONVENTION
        STATUS  current
        DESCRIPTION
        "Enums to indicate the meter type :
        SimpleTokenBucket - Two Parameter Token Bucket Meter as described in 
                            the Informal Differentiated Services Model section 
                            5.2.3.
        AvgRate           - Average Rate Meter as described in the Informal 
                            Differentiated Services Model section 5.2.1.
        SrTCM             - Single Rate Three Color Marker Metering as defined 
                            by RFC 2697.
        TrTCM             - Two Rate Three Color Marker Metering as defined by 
                            RFC 2698.
        TswTCM            - Time Sliding Window Three Color Marker Metering as 
                            defined by RFC 2859.
        mefDecoupledMeter - Dual bucket meter as defined by RFC 4115.
        mefCoupledMeter   - Dual bucket meter as defined by RFC 2697 and 
                            MEF coupling Flag."
        SYNTAX   INTEGER {
                          simpleTokenBucket(1),
                          avgRate(2),
                          srTCM(3),         
                          trTCM(4), 
                          tswTCM(5),
                          mefDecoupledMeter(6),
                          mefCoupledMeter(7)
                         }

EnableStatus    ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION "A textual convention to Enable or Disable a MIB contruct."
    SYNTAX      INTEGER {
                    enable(1),
                    disable(2)
                }

SchedulerPriority    ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS    current
    DESCRIPTION
        "Scheduler Priority which a flow should fall in."
    SYNTAX    Integer32 (0..15)

IndexInteger ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    DESCRIPTION
       "An integer which may be used as a table index. If 0 then it is invalid"
    SYNTAX   Unsigned32 (0..65535)

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

fsQoSMIBObjects     OBJECT IDENTIFIER ::= { fsQoSMib 1 }

-- System Object to support system specific scalars.
fsQoSSystem             OBJECT IDENTIFIER ::= { fsQoSMIBObjects 1 }

-- Class Table
fsQoSClass         OBJECT IDENTIFIER ::= { fsQoSMIBObjects 2 }

-- Policy Table : Meter and Action tables
fsQoSPolicy             OBJECT IDENTIFIER ::= { fsQoSMIBObjects 3 }

-- Traffic Management Tables for shaping , managing queues and scheduling them
fsQoSTrafficMgmt        OBJECT IDENTIFIER ::= { fsQoSMIBObjects 4 }

-- Stats 
fsQoSStats              OBJECT IDENTIFIER ::= { fsQoSMIBObjects 5 }

-- Rate Control Table : For CPU port
fsQosHwCpuRateControl   OBJECT IDENTIFIER ::= { fsQoSMIBObjects 6 }

fsQoSSystemControl OBJECT-TYPE
    SYNTAX      INTEGER { shutdown(0), start(1) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
               "Starts or shutdowns QoS Module in the system.
                When set as 'start',resources required by QoS module are
                allocated & QoS module starts running.
                When shutdown, all the pools used by QoS module will be 
                released to the system."
    ::= { fsQoSSystem  1 }

fsQoSStatus OBJECT-TYPE
    SYNTAX      INTEGER { disabled(0), enabled(1) }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
               "Enables or Disables QoS Module in the system.
                When set as 'enabled', QoS module programs the hardware
                and starts Protocol Operation.
                When set as 'disabled', it stops protocol operation by 
                deleting the hardware configuration.
                If any mib table supports global configurations (less-specific) 
                at runtime and H/W supports more-specific configurations,                  
                then appropriate behaviour may take effect in H/W only after next 
                status change of this object."
    DEFVAL { enabled }
    ::= { fsQoSSystem  2 }

fsQoSTrcFlag     OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
             "This object is used to enable trace statements in QoS module. 
              A four byte integer is used for enabling the trace level.  
              Each bit in the four byte integer represents a particular  
              trace level.  
              The mapping between the bit positions & the trace level is  
              as follows:  
                      0 - Init and Shutdown traces 
                      1 - Management traces 
                      2 - Data Path traces 
                      3 - Control Plane traces 
                      5 - Traces related to all resources except buffers 
                      6 - Buffer allocation/release traces 
                      7 - All Failure traces 
                      None of the bit is set the Disable the Trace,value(0). 

              The remaining bits are unused. Combination of levels are  
              also allowed. 
 
              For example if the bits 0 and 1 are set, then the trace 
              statement related to Init-Shutdown and management  
              will be printed. 
 
              The user has to enter the corresponding integer value for the 
              bits set. For example if bits 0 and 1 are to be set ,then user
              has to give the value 3." 
    ::= { fsQoSSystem  3 }

fsQoSRateUnit OBJECT-TYPE
    SYNTAX   INTEGER 
             {
                 bps(1),
                 kbps(2),
                 mbps(3),
                 gbps(4)
             }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION    "This Object indicates the unit for the 
                    Information Rate(CIR,EIR,PIR,PTR,CTR ...)values 
                    based on target platform.
                    This  Object  specifies the unit alone. Value corresponding 
                    to this unit should be taken from 'fsQoSRateGranularity' 
                    Ex 1:
                    'fsQoSRateUnit'        = kbps
                    'fsQoSRateGranularity' =  64 
                    then this target will accept the  Information 
                    Rate(CIR,EIR,TIR,PTR, CTR ...) values in multiples of 64
                    like 64 kbps, 128 kbps ...
                    Ex 2: 
                    'fsQoSRateUnit'        = mbps
                    'fsQoSRateGranularity' =  64 
                    then this target will accept the  Information 
                    Rate(CIR,EIR,TIR,PTR, CTR ...) values in multiples of 64
                    like 64 mbps, 128 mbps ..."

    ::= { fsQoSSystem  4 }

fsQoSRateGranularity OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION     "This Object indicates the acceptable Granularity level
                    for configuring the Information Rate(CIR,EIR,PIR,PTR,
                    CTR ...)values for a target platform.
                    This  Object specifies the Integer Value for the 
                    granularity. Unit for 
                    this value should be taken from 'fsQoSRateUnit' 
                    Ex 1: 
                    'fsQoSRateUnit'        = kbps
                    'fsQoSRateGranularity' =  64 
                    then this target will accept the  Information 
                    Rate(CIR,EIR,TIR,PTR, CTR ...) values in multiples of 64
                    like 64 kbps, 128 kbps ...
                    Ex 2: 
                    'fsQoSRateUnit'        = mbps
                    'fsQoSRateGranularity' =  64 
                    then this target will accept the  Information 
                    Rate(CIR,EIR,TIR,PTR, CTR ...) values in multiples of 64
                    like 64 mbps, 128 mbps ..."
    ::= { fsQoSSystem  5 }


-- ------------------------------------------------------------------ 
-- Priority Map Table 
-- ------------------------------------------------------------------ 

fsQoSPriorityMapTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSPriorityMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A table to map incoming priority to a regenerated priority. 
        This table is used to regenerate port/VLAN priorities for an 
        incoming packet. It can be used to directly program priority 
        tables in the hardware."
    ::= { fsQoSClass 1 }

fsQoSPriorityMapEntry OBJECT-TYPE
    SYNTAX      FsQoSPriorityMapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry to map an incoming priority, drop-precedence to a 
        regenerated priority value for an ingress PORT/VLAN. The PORT/VLAN 
        indices may take dont-care (0) values as required." 
    INDEX   { fsQoSPriorityMapID }
    ::= { fsQoSPriorityMapTable 1 }

FsQoSPriorityMapEntry ::=
    SEQUENCE {
        fsQoSPriorityMapID                   IndexInteger,
        fsQoSPriorityMapName                 DisplayString, 
        fsQoSPriorityMapIfIndex              Unsigned32,
        fsQoSPriorityMapVlanId               Unsigned32, 
        fsQoSPriorityMapInPriority           Integer32,
        fsQoSPriorityMapInPriType            INTEGER,
        fsQoSPriorityMapRegenPriority        Unsigned32,
        fsQoSPriorityMapRegenInnerPriority   Unsigned32,
        fsQoSPriorityMapConfigStatus         INTEGER, 
        fsQoSPriorityMapStatus               RowStatus
    }

fsQoSPriorityMapID OBJECT-TYPE
    SYNTAX      IndexInteger
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
        " The output priority map index for the incoming packet received over
          ingress PORT/VLAN with specified incoming priority. This is unique for
          each entry in the priority-map table."
    ::= { fsQoSPriorityMapEntry 1 }
        

fsQoSPriorityMapName  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(1..31))
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
       "This indicates the Name for the Priority map entry. 
       It should be unique in this Table."
    ::= { fsQoSPriorityMapEntry 2 }

 fsQoSPriorityMapIfIndex  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
        "Incoming Port Number. The PORT may take dont-care (0) values 
         as required."
   DEFVAL { 0 }
    ::= { fsQoSPriorityMapEntry 3 }

fsQoSPriorityMapVlanId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION "Vlan Id for Priority regeneration.The VlanId may 
                 take dont-care (0) values as required."
   DEFVAL { 0 }
    ::= { fsQoSPriorityMapEntry 4 }

fsQoSPriorityMapInPriority OBJECT-TYPE
    SYNTAX      Integer32 (0..63)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The incoming Priority value determined for the received frame.
        This value is equivalent to the priority( VLAN (4 bit)/DSCP( 6 bit)
        priority bits) indicated in the received frame, or one of the 
        evaluated priorities."
   DEFVAL { 0 } 
    ::= { fsQoSPriorityMapEntry 5 }

fsQoSPriorityMapInPriType OBJECT-TYPE
    SYNTAX      INTEGER { vlanPri(0),
                          ipTos(1),
                          ipDscp(2),
                          mplsExp(3),
                          vlanDEI(4)
                        }
 
    MAX-ACCESS  read-write 
    STATUS      current
    DESCRIPTION
        "The Incoming Priority Type is used to Identify the 
        'fsQoSPriorityMapInPriority' value is a VLAN PRI or IP TOS or IP DSCP
         or MPLS EXP. if the Type is vlanDEI the we can set 
         'fsQoSPriorityMapInPriority' and 'fsQoSPriorityMapRegenPriority' as
         0 or 1"
   DEFVAL { 0 } 
    ::= { fsQoSPriorityMapEntry 6 }
 
fsQoSPriorityMapRegenPriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..63)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Regenerated Priority value determined for the received frame."
   DEFVAL { 0 } 
    ::= { fsQoSPriorityMapEntry 7 }

fsQoSPriorityMapRegenInnerPriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..8)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Regenerated Inner-VLAN (CVLAN) Priority value determined
        for the received frame. It the Values is 8 then this object is not
        configured by user"
    ::= { fsQoSPriorityMapEntry 8 }

fsQoSPriorityMapConfigStatus  OBJECT-TYPE
    SYNTAX      INTEGER {
                 sysdefault(1),
                 management(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "The status of the prority map entry. Indicates whether
                 entry is configured by management or is a default entry." 
   DEFVAL { sysdefault } 
    ::= { fsQoSPriorityMapEntry 9 }

fsQoSPriorityMapStatus OBJECT-TYPE
    SYNTAX      RowStatus 
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION 
       "The status of this conceptual row. All writable objects in this
       row may be modified at any time. 
       It can be deleted 'destroy', only if it is not referenced 
       by other table; otherwise returns inconsistentValue error. 
       For any mib table that supports global configurations (less-specific) at runtime  
       and H/W supports more-specific configurations, if a more-specific entry is deleted 
       by configuration, then the next less-specific entry gets programmed to H/W"
    ::= { fsQoSPriorityMapEntry 10 }

-- -------------------------------------------------------------------------- 
-- MultiField ClassMap Table
-- -------------------------------------------------------------------------- 

fsQoSClassMapTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSClassMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "This table contains the Multifield Classifier details. It takes input
        from the ACL or priority-map table and outputs a CLASS for the 
        traffic-class pattern/match."
    ::= { fsQoSClass 2 }

fsQoSClassMapEntry OBJECT-TYPE
    SYNTAX       FsQoSClassMapEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
       "A Multi-field Classifier entry maps an ACL entry or a priority-map 
        to a CLASS of Service."
    INDEX { fsQoSClassMapId }
    ::= { fsQoSClassMapTable 1 }

-- This table outputs a CLASS for the input  FilterId/Priority-MAP.
FsQoSClassMapEntry ::= SEQUENCE {
    fsQoSClassMapId                 IndexInteger,
    fsQoSClassMapName               DisplayString,
-- input ACL/Priority-Map ID
    fsQoSClassMapL2FilterId         Unsigned32, 
    fsQoSClassMapL3FilterId         Unsigned32, 
    fsQoSClassMapPriorityMapId      Unsigned32,
-- outputs
    fsQoSClassMapCLASS              Unsigned32, 
    fsQoSClassMapClfrId             Unsigned32,
    fsQoSClassMapPreColor           INTEGER,       -- Color b4 Meter          
    fsQoSClassMapStatus             RowStatus
}

fsQoSClassMapId OBJECT-TYPE
    SYNTAX         IndexInteger
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
       "An index that enumerates the MultiField Classifier table."
    ::= { fsQoSClassMapEntry 1 }

fsQoSClassMapName  OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31))
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
        "This indicates the Name for the Entry.Multiple ACL/priority-map
         entries can map to the same CLASS. They need to be configured with
         the same ClassMapName."
    ::= { fsQoSClassMapEntry 2 }

fsQoSClassMapL2FilterId OBJECT-TYPE
    SYNTAX         Unsigned32 (0..65535)
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This Object specifies the ID of the MAC filter, the details of which 
        should be matched against the incoming packet. A valid value of this
        object is not mandatory for the creation of the conceptual row. However,
        L2/L3 FilterId is mutually exclusive to the Priority-Map Id. One
        of them is a mandatory input for an entry."
    DEFVAL { 0 }
    ::= { fsQoSClassMapEntry 3 }

fsQoSClassMapL3FilterId OBJECT-TYPE
    SYNTAX         Unsigned32 (0..65535)
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This Object specifies the ID of the IP filter, the details of which 
        should be matched against the incoming packet. A valid value of this
        object is not mandatory for the creation of the conceptual row. However,
        L2/L3 FilterId is mutually exclusive to the Priority-Map Id. One
        of them is a mandatory input for an entry."
    DEFVAL { 0 }
    ::= { fsQoSClassMapEntry 4 }

fsQoSClassMapPriorityMapId OBJECT-TYPE
    SYNTAX         Unsigned32 (0..65535)
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This Object specifies the priority map ID for mapping incoming priority
        against received packet.A valid value of this
        object is not mandatory for the creation of the conceptual row. However,
        L2/L3 FilterId is mutually exclusive to the Priority-Map Id. One
        of them is a mandatory input for an entry."
    DEFVAL { 0 }
    ::= { fsQoSClassMapEntry 5 }

fsQoSClassMapCLASS OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the Traffic CLASS to which an incoming frame pattern
         is classified. The administrator needs to define the logical groups
         that represent this CLASS. Multiple ACL/priority-map entries can
         map to the same CLASS value. '0' is not configurable but it is the
         default value."
    DEFVAL { 0 }
    ::= { fsQoSClassMapEntry 6 }

fsQoSClassMapClfrId OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the Classifier Id of teh Classifier in the Standard Qos Entry.
         This used to get the datapath entry pointing to teh CLass-Map with respect to the 
         Standard MIB"
    DEFVAL { 0 }
    ::= { fsQoSClassMapEntry 7 }


fsQoSClassMapPreColor OBJECT-TYPE
    SYNTAX      INTEGER {
                    none (0), -- Traffic is not pre-colored
                    green(1), -- Traffic conforms to SLAs
                    yellow(2), -- Traffic exceeds the SLAs
                    red (3)    -- Traffic violates the SLAs
                }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the color of the packet prior to metering.
         The default Drop-Precedence for the packet can be evaluated 
         using this object. This value is overridden by the meter." 
    ::= { fsQoSClassMapEntry 8 }

fsQoSClassMapStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
        row may be modified only when the row status is not active. 
        CreateAndGo not allowed ,it can be deleted 'destroy', 
        only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSClassMapEntry 9 }

-- -------------------------------------------------------------------------- 
-- ClassToPriority Table
-- -------------------------------------------------------------------------- 

fsQoSClassToPriorityTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSClassToPriorityEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "This table assigns local priority values for a input CLASS. This table
         is optional and can be configured as per user requirement. This table
         is provided for easy mapping of CLASS to priority values. 
         A set of non-contiguous CLASS values belong to a 
         unique Group ( identified by a group name)."
    ::= { fsQoSClass 3 }

fsQoSClassToPriorityEntry OBJECT-TYPE
    SYNTAX       FsQoSClassToPriorityEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
       "An entry to specify a regenerated priority value for a input CLASS."
    INDEX { fsQoSClassToPriorityCLASS }
    ::= { fsQoSClassToPriorityTable 1 }

-- This table maps a CLASS to a regenerated priority value.
FsQoSClassToPriorityEntry ::= SEQUENCE {
    fsQoSClassToPriorityCLASS            IndexInteger, 
    fsQoSClassToPriorityRegenPri         Unsigned32, 
    fsQoSClassToPriorityGroupName        DisplayString,
    fsQoSClassToPriorityStatus           RowStatus
}

fsQoSClassToPriorityCLASS OBJECT-TYPE
    SYNTAX      IndexInteger
    MAX-ACCESS  not-accessible 
    STATUS      current
    DESCRIPTION
        "This represents the Traffic CLASS to which an incoming frame pattern
         is classified. The administrator needs to define the traffic 
         class patterns that represent this CLASS. Multiple 
         ACL/priority-map entries can map to the same CLASS value."
    ::= { fsQoSClassToPriorityEntry 1 }

fsQoSClassToPriorityRegenPri OBJECT-TYPE
    SYNTAX      Unsigned32 (0..7)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Regenerated Priority value determined for the input CLASS."
    ::= { fsQoSClassToPriorityEntry 2 }

fsQoSClassToPriorityGroupName  OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31)) 
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
        "This is for unique identification of the group to which a input
        CLASS belongs."
    ::= { fsQoSClassToPriorityEntry 3 }

fsQoSClassToPriorityStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
        row may be modified only when the row status is not active.
        it can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSClassToPriorityEntry 4 }


-- ------------------------------------------------------------------ 
-- Meter Table
-- ------------------------------------------------------------------ 
-- The below is as per RFC 3289 ( std qos diffserv mib). 

-- This MIB supports a variety of Meters.  It includes a specific
-- definition for Token Bucket Meter, which are but one type of
-- specification. 

-- Configuration of various meter parameters is as follows :
-- AvgRate meter 
-- Average Rate = CIR
-- Avg. Interval = Interval

-- srTCM meters (RFC 2697) can be specified using CIR, CBS and EBS.

-- trTCM meters (RFC 2698) can be specified using CIR, CBS, PIR, PBS where
-- PIR = EIR, 
-- PBS = EBS. 

-- tswTCM meters (RFC 2859) can be specified using CTR, PTR and Avg. Interval 
-- where
-- CTR = CIR,
-- PTR = EIR
-- Average Interval = Interval.

--  MEF based meter bandwidth attributes -
--  CIR, EIR , CBS, EBS where EBS should mean max burst size. 
--  single bucket parameters - CIR, CBS, EBS
--  dual bucket parameters - CIR, EIR, CBS and EBS where EIR - max rate
--

fsQoSMeterTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSMeterEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "This table enumerates specific meters that a system may use to
       police a stream of traffic. This may include all traffic on an
       interface."
    ::= { fsQoSPolicy 1 }

fsQoSMeterEntry OBJECT-TYPE
    SYNTAX       FsQoSMeterEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An entry in the meter table describes a single conformance level
       of a meter."
    INDEX { fsQoSMeterId }
    ::= { fsQoSMeterTable 1 }

FsQoSMeterEntry ::= SEQUENCE  {
    fsQoSMeterId                                  IndexInteger,
    fsQoSMeterName                                DisplayString,
    fsQoSMeterType                                MeterType,
    fsQoSMeterInterval                            Unsigned32,
    fsQoSMeterColorMode                           MeterColorMode,
    fsQoSMeterCIR                                 Unsigned32,
    fsQoSMeterCBS                                 Unsigned32,
    fsQoSMeterEIR                                 Unsigned32,
    fsQoSMeterEBS                                 Unsigned32,
    fsQoSMeterNext                                Unsigned32,
    fsQoSMeterStatus                              RowStatus
}

fsQoSMeterId OBJECT-TYPE
    SYNTAX       IndexInteger
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An index that enumerates the Meter entries." 
    ::= { fsQoSMeterEntry 1 }

fsQoSMeterName OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31)) 
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This indicates the Name for the meter entry. 
       It should be unique in this Table."
    ::= { fsQoSMeterEntry 2 }

fsQoSMeterType OBJECT-TYPE
    SYNTAX       MeterType 
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Metering algorithm associated with the Token Bucket meter."
    ::= { fsQoSMeterEntry 3 }

fsQoSMeterInterval OBJECT-TYPE
    SYNTAX       Unsigned32 (0..10000)
    UNITS        "microseconds"
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The time interval used with the token bucket.  For:
       1. Average Rate Meter, the Informal Differentiated Services Model
          section 5.2.1, - Delta.
       2. Simple Token Bucket Meter, the Informal Differentiated
          Services Model section 5.1, - time interval t.
       3. RFC 2859 TSWTCM, - AVG_INTERVAL.
       4. RFC 2697 srTCM, RFC 2698 trTCM, - token bucket update time
          interval."
    DEFVAL { 0 }
    ::= { fsQoSMeterEntry 4 }

fsQoSMeterColorMode    OBJECT-TYPE
    SYNTAX      MeterColorMode
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "The user defined Meter Color Mode."
    DEFVAL  { colorBlind }
    ::= { fsQoSMeterEntry 5 }

fsQoSMeterCIR OBJECT-TYPE 
    SYNTAX       Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
       "The committed information rate as per MEF. 
        Must be >= 0. CIR must be less than or equal to  EIR, if EIR > 0"
    ::= { fsQoSMeterEntry 6 }

fsQoSMeterCBS OBJECT-TYPE 
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "Bytes"
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
        "The committed burst size as per MEF. Must be > 0 if CIR > 0.
         Maximum allowable size will be jumbo frame size."
    ::= { fsQoSMeterEntry 7 }

fsQoSMeterEIR OBJECT-TYPE 
    SYNTAX       Unsigned32 (0..65535)
    MAX-ACCESS   read-write
    STATUS       current 
    DESCRIPTION 
       "The excess information rate as per MEF. 
        Must be >= 0. EIR must be greater than or equal to CIR,
        if EIR > 0.  This is not applicable when MeterType is srtcm."
    ::= { fsQoSMeterEntry 8 }

fsQoSMeterEBS OBJECT-TYPE 
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "Bytes"
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION "The excess burst size as per MEF. Must be > 0 if EIR > 0."
    ::= { fsQoSMeterEntry 9 }

fsQoSMeterNext OBJECT-TYPE
    SYNTAX       Unsigned32 (0..65535)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This specifies the meter entry ID to be used for applying the 
       second/next level of conformance on the incoming packet. A valid 
       value of this object is not mandatory for the creation of an 
       entry in the conceptual row."
    DEFVAL { 0 } 
    ::= { fsQoSMeterEntry 10 }

fsQoSMeterStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
       row may be modified only of the Entry is not ACTIVE.
       It can be deleted 'destroy', only if it is not referenced 
       by other table; otherwise return inconsistentValue error."
    ::= { fsQoSMeterEntry 11 }


-- ------------------------------------------------------------------ 
-- Policy-Map Table ( ClassMap To PolicyMap Table ) 
-- ------------------------------------------------------------------ 

fsQoSPolicyMapTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSPolicyMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "This table contains the class-map to policy-map details."
    ::= { fsQoSPolicy 2 }

fsQoSPolicyMapEntry OBJECT-TYPE
    SYNTAX       FsQoSPolicyMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An entry to map a policy for a class-map." 
    INDEX { fsQoSPolicyMapId }
    ::= { fsQoSPolicyMapTable 1 }

FsQoSPolicyMapEntry ::= SEQUENCE  {
    fsQoSPolicyMapId                                  IndexInteger,
    fsQoSPolicyMapName                                DisplayString,
-- inputs
    fsQoSPolicyMapIfIndex                             Unsigned32,
    fsQoSPolicyMapCLASS                               Unsigned32,
-- outputs  
    fsQoSPolicyMapPHBType                             INTEGER, 
    fsQoSPolicyMapDefaultPHB                          Unsigned32,    -- default outgoing priority
    fsQoSPolicyMapMeterTableId                        Unsigned32,  -- meter
    fsQoSPolicyMapFailMeterTableId                    Unsigned32,
-- actions
    fsQoSPolicyMapInProfileConformActionId            Unsigned32,
    fsQoSPolicyMapInProfileConformActionFlag          BITS,
    fsQoSPolicyMapInProfileActionSetPort              Unsigned32, -- for conform, exceed actions
    fsQoSPolicyMapConformActionSetIpTOS               Unsigned32,
    fsQoSPolicyMapConformActionSetDscp                Dscp,
    fsQoSPolicyMapConformActionSetVlanPrio            Unsigned32,
    fsQoSPolicyMapConformActionSetVlanDE              Unsigned32,
    fsQoSPolicyMapConformActionSetInnerVlanPrio       Unsigned32,
    fsQoSPolicyMapConformActionSetMplsExp             Unsigned32,
    fsQoSPolicyMapConformActionSetNewCLASS            Unsigned32,
    fsQoSPolicyMapInProfileExceedActionId             Unsigned32,
    fsQoSPolicyMapInProfileExceedActionFlag           BITS,
    fsQoSPolicyMapExceedActionSetIpTOS                Unsigned32,
    fsQoSPolicyMapExceedActionSetDscp                 Dscp,
    fsQoSPolicyMapExceedActionSetInnerVlanPrio        Unsigned32,
    fsQoSPolicyMapExceedActionSetVlanPrio             Unsigned32,
    fsQoSPolicyMapExceedActionSetVlanDE               Unsigned32,
    fsQoSPolicyMapExceedActionSetMplsExp              Unsigned32,
    fsQoSPolicyMapExceedActionSetNewCLASS             Unsigned32,
    fsQoSPolicyMapOutProfileActionId                  Unsigned32,
    fsQoSPolicyMapOutProfileActionFlag                BITS,
    fsQoSPolicyMapOutProfileActionSetIPTOS            Unsigned32,
    fsQoSPolicyMapOutProfileActionSetDscp             Dscp,
    fsQoSPolicyMapOutProfileActionSetInnerVlanPrio    Unsigned32,
    fsQoSPolicyMapOutProfileActionSetVlanPrio         Unsigned32,
    fsQoSPolicyMapOutProfileActionSetVlanDE           Unsigned32,
    fsQoSPolicyMapOutProfileActionSetMplsExp          Unsigned32,
    fsQoSPolicyMapOutProfileActionSetNewCLASS         Unsigned32,
    fsQoSPolicyMapStatus                              RowStatus
}

fsQoSPolicyMapId OBJECT-TYPE
    SYNTAX       IndexInteger
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An index that enumerates the policy-map table entries."
    ::= { fsQoSPolicyMapEntry 1 }

fsQoSPolicyMapName OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31))  
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This the Name for a policy entry. It should be unique in this Table."
    ::= { fsQoSPolicyMapEntry 2 }
    
fsQoSPolicyMapIfIndex OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This indicates the incoming interface identifier for which the policy
        map is applied. A Valid value of this object is not mandatory for the 
        creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 3 }

fsQoSPolicyMapCLASS OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write 
    STATUS       current
    DESCRIPTION 
        "This indicates the Traffic CLASS for which the policy-map
         needs to be applied. A valid value is not necessary for 
         creation of an entry in this table. When this object is configured as
         dont-care(0), it is mandatory that the PolicyMapIfIndex is 
         configured. This implies that the policy is interface-specific 
         and not CLASS-specific." 
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 4 }

fsQoSPolicyMapPHBType OBJECT-TYPE
    SYNTAX      INTEGER {
                        none(0),
                        vlanPri(1),
                        ipTos(2),
                        ipDscp(3),
                        mplsExp(4)
                        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "It indicates the PHB type to be used for filling the Default PHB
                 for the policy-map entry."
    ::= { fsQoSPolicyMapEntry 5 }

fsQoSPolicyMapDefaultPHB  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..63)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "It indicate the default out going PHB Values for the 
                 Policy-Map. It may be overriden by the Meter used for the policy-map. 
                 This value is interpreted by fsQoSPolicyMapPHBType."
    ::= { fsQoSPolicyMapEntry 6 }

fsQoSPolicyMapMeterTableId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Object refers to a Meter table Id which is the index
        for the Meter  table. A Valid value of this object is
        not mandatory for the creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 7 } 
    
fsQoSPolicyMapFailMeterTableId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Object refers to a Meter table Id which is the index
        of the Meter pointed to by diffServMeterFailNext.
        A Valid value of this object is not mandatory for the 
        creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 8 } 


fsQoSPolicyMapInProfileConformActionFlag OBJECT-TYPE
    SYNTAX       BITS {
                  none(0),
                  setFlagPort(1),
                  setFlagConfTos(2),                -- mark TOS
                  setFlagConfDscp(3),               -- mark DSCP
                  setFlagConfVlanPrio(4),           -- mark vlan priority
                  setFlagConfVlanDE(5),             -- mark vlan DE
                  setFlagConfInnerVlanPrio(6),      -- mark inner vlan priority
                  setFlagConfMplsExp(7)             -- mark MPLS exp
                 }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object defines the action to be performed on the packet,
        when the packets are found to be In profile."
    ::= { fsQoSPolicyMapEntry 9 } 
    
fsQoSPolicyMapInProfileConformActionId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Object refers to an Action table Id which is the index
        for the Action table. This is for the reference of the StdQos mib.
        where we have to mention an action table for each action.
        A Valid value of this object is
        not mandatory for the creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 10 } 


fsQoSPolicyMapInProfileActionSetPort OBJECT-TYPE
    SYNTAX       Unsigned32 
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new port value in case the action 
        selected by fsQoSPolicyMapInProfileActionFlag is to assign a new
        out port value." 
    ::= { fsQoSPolicyMapEntry 11 } 

fsQoSPolicyMapConformActionSetIpTOS OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new IP TOS value in case the action
        selected by fsQoSPolicyMapInProfileActionFlag is to assign a new
        IP TOS value."
    ::= { fsQoSPolicyMapEntry 12 } 

fsQoSPolicyMapConformActionSetDscp OBJECT-TYPE
    SYNTAX       Dscp
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new DSCP value in case the action
        selected by fsQoSPolicyMapInProfileActionFlag is to assign a new
        DSCP value."
    ::= { fsQoSPolicyMapEntry 13 } 

fsQoSPolicyMapConformActionSetVlanPrio  OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Vlan Priority of the outgoing packet.
         Setting of Vlan Priority is mutually exclusive to setting of Mpls EXP bits.
         So setting the Vlan Priority to a non-zero value is only allowed when MplsExp is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 14 } 

fsQoSPolicyMapConformActionSetVlanDE OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..1 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the VLAN Drop Eligible Indicator of the outgoing packet.   
         This is applicable ONLY when MplsExp is 0"
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 15 } 

fsQoSPolicyMapConformActionSetInnerVlanPrio  OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Inner Vlan Priority of the outgoing packet."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 16 } 

fsQoSPolicyMapConformActionSetMplsExp OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Mpls Experimental bits of the outgoing packet.
         Either Vlan Priority can be set OR Mpls EXP bits
         can be set. So setting the Mpls EXP to a non 0
         value is only allowed when Vlan Prio is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 17 } 

fsQoSPolicyMapConformActionSetNewCLASS OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the Traffic CLASS to which an incoming frame pattern
         is classified after metering. The priority of the New CLASS should 
         be lower as compared to the CLASS assigned prior to metering. 
         The administrator needs to ensure that the new CLASS belongs
         to the same logical group as the CLASS assigned prior to metering.
         In cases where lower priority CLASS cannot be assigned, the 
         administrator needs to appropriately configure for dropping the packet.
         "
    ::= { fsQoSPolicyMapEntry 18 } 

fsQoSPolicyMapInProfileExceedActionFlag OBJECT-TYPE
    SYNTAX       BITS {
                  setFlagExcDrop(0),
                  setFlagExcTos(1),                 -- mark for exceed action
                  setFlagExcDscp(2),
                  setFlagExcVlanPrio(3),
                  setFlagExcVlanDE(4),
                  setFlagExcInnerVlanPrio(5),
                  setFlagExcMplsExp(6)
                 }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object defines the action to be performed on the packet,
        when the packets are found to be In profile."
    ::= { fsQoSPolicyMapEntry 19 } 
    
fsQoSPolicyMapInProfileExceedActionId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Object refers to an Action table Id which is the index
        for the Action table. This is for the reference of the StdQos mib.
        where we have to mention an action table for each action.
        A Valid value of this object is
        not mandatory for the creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 20 } 


fsQoSPolicyMapExceedActionSetIpTOS OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new IP TOS value in case the action
        selected by fsQoSPolicyMapInProfileActionFlag is to assign a new
        IP TOS value."
    ::= { fsQoSPolicyMapEntry 21 } 

fsQoSPolicyMapExceedActionSetDscp OBJECT-TYPE
    SYNTAX       Dscp
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new DSCP value in case the action
        selected by fsQoSPolicyMapInProfileActionFlag is to assign a new
        DSCP value."
    ::= { fsQoSPolicyMapEntry 22 } 

fsQoSPolicyMapExceedActionSetInnerVlanPrio OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Vlan Priority of the outgoing packet.
         Either Vlan Priority can be set OR Mpls EXP bits 
         can be set. So setting the Vlan Priority to a non-zero
         value is only allowed when MplsExp is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 23 } 

fsQoSPolicyMapExceedActionSetVlanPrio OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Inner-Vlan Priority of the outgoing packet."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 24 } 

fsQoSPolicyMapExceedActionSetVlanDE    OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..1 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the VLAN Drop Eligible Indicator of the outgoing packet. 
         This is applicable ONLY when MplsEXP is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 25 } 

fsQoSPolicyMapExceedActionSetMplsExp    OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Mpls Experimental bits of the outgoing packet.
         Either Vlan Priority can be set OR Mpls EXP bits
         can be set. So setting the Mpls EXP to a non-zero
         value is only allowed when Vlan Prio is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 26 } 

fsQoSPolicyMapExceedActionSetNewCLASS OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the Traffic CLASS to which an incoming frame pattern
         is classified after metering. The priority of the New CLASS should 
         be lower as compared to the CLASS assigned prior to metering. 
         The administrator needs to ensure that the new CLASS belongs
         to the same logical group as the CLASS assigned prior to metering.
         In cases where lower priority CLASS cannot be assigned, the 
         administrator needs to appropriately configure for dropping the packet.
         "
    ::= { fsQoSPolicyMapEntry 27 } 

fsQoSPolicyMapOutProfileActionFlag OBJECT-TYPE
    SYNTAX       BITS {
                  setFlagDrop(0),              -- packet is dropped
                  setFlagTos(1),               -- mark IP TOS 
                  setFlagDscp(2),              -- mark DSCP
                  setFlagVlanPrio(3),          -- mark VLAN priority
                  setFlagVlanDE(4),            -- mark VLAN DE
                  setFlagConfInnerVlanPrio(5), -- mark inner vlan priority
                  setFlagMplsExp(6)            -- mark MPLS EXP bits
    }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object defines the action to be performed on the packet
        when the packets are found to be out of profile." 
    ::= { fsQoSPolicyMapEntry 28 } 
    
fsQoSPolicyMapOutProfileActionId OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The Object refers to an Action table Id which is the index
        for the Action table. This is for the reference of the StdQos mib.
        where we have to mention an action table for each action.
        A Valid value of this object is
        not mandatory for the creation of an entry in this table."
    DEFVAL { 0 }
    ::= { fsQoSPolicyMapEntry 29 } 


fsQoSPolicyMapOutProfileActionSetIPTOS OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new IP TOS value in case the action
        selected by fsQoSPolicyMapOutProfileActionFlag is to assign a new
        Ip TOS value."
    ::= { fsQoSPolicyMapEntry 30 } 

fsQoSPolicyMapOutProfileActionSetDscp OBJECT-TYPE
    SYNTAX       Dscp
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "This Object sets the new DSCP value in case the action
        selected by fsQoSPolicyMapOutProfileActionFlag is to assign
        a new DSCP value."
    ::= { fsQoSPolicyMapEntry 31 } 

fsQoSPolicyMapOutProfileActionSetInnerVlanPrio OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Vlan Priority of the outgoing packet.
         Either Vlan Priority can be set OR Mpls EXP bits
         can be set. So setting the Vlan Priority to a non-zero
         value is only allowed when is MplsExp is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 32 } 


fsQoSPolicyMapOutProfileActionSetVlanPrio OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the Inner Vlan Priority of the outgoing packet.
         Either Vlan Priority can be set OR Mpls EXP bits
         can be set. So setting the Vlan Priority to a non-zero
         value is only allowed when is MplsExp is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 33 } 

fsQoSPolicyMapOutProfileActionSetVlanDE OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..1 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting the VLAN Drop Eligible Indicator of the outgoing packet.
         This is applicable ONLY when MplsEXP is 0."
    DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 34 } 

fsQoSPolicyMapOutProfileActionSetMplsExp OBJECT-TYPE
    SYNTAX      Unsigned32 ( 0..7 )
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
    "Setting the Mpls Experimental bits of the outgoing packet.
     Either Vlan Priority can be set OR Mpls EXP bits
     can be set. So setting the Mpls EXP to a non-zero
     value is only allowed when is Vlan Prio is 0."
     DEFVAL  { 0 }
    ::= { fsQoSPolicyMapEntry 35 } 

fsQoSPolicyMapOutProfileActionSetNewCLASS OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This represents the Traffic CLASS to which an incoming frame pattern
         is classified after metering. The priority of the New CLASS should 
         be lower as compared to the CLASS assigned prior to metering. 
         The administrator needs to ensure that the new CLASS belongs
         to the same logical group as the CLASS assigned prior to metering. In cases,
         where lower-priority CLASS cannot be assigned, administrator needs to
         appropriately configure for dropping the packet."
    ::= { fsQoSPolicyMapEntry 36 } 

fsQoSPolicyMapStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row." 
    ::= { fsQoSPolicyMapEntry 37 } 

-- ------------------------------------------------------------------------ 
-- Queue Template Table :
-- A template to specify the queue parameters ,the policing algo parameters
-- applied on the queue.
-- ------------------------------------------------------------------------ 

fsQoSQTemplateTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSQTemplateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "The queue template table configures the queue attributes.
         The template is re-used for configuring multiple queues."
    ::= { fsQoSTrafficMgmt 1 }

fsQoSQTemplateEntry OBJECT-TYPE
    SYNTAX       FsQoSQTemplateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Each entry in the table is a Queue Template Configuration."
    INDEX { fsQoSQTemplateId }
    ::= { fsQoSQTemplateTable 1 }

FsQoSQTemplateEntry ::= SEQUENCE  {
    fsQoSQTemplateId                      IndexInteger,
    fsQoSQTemplateName                    DisplayString,
    fsQoSQTemplateDropType                INTEGER,
    fsQoSQTemplateDropAlgoEnableFlag      EnableStatus,
    fsQoSQTemplateSize                    Unsigned32,
    fsQoSQTemplateStatus                  RowStatus
}

fsQoSQTemplateId   OBJECT-TYPE
    SYNTAX      IndexInteger
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Queue Template Table Index."
    ::= { fsQoSQTemplateEntry 1 }

fsQoSQTemplateName  OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31))
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This the Name for a Entry. It should be unique in this Table."
    ::= { fsQoSQTemplateEntry 2 }

fsQoSQTemplateDropType  OBJECT-TYPE
    SYNTAX       INTEGER {
                     other(1),
                     tailDrop(2),
                     headDrop(3),
                     red(4),
                     alwaysDrop(5),
                     wred(6)
                 }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The type of drop algorithm used by this queue template. The value 
        other(1)requires further specification in some other MIB module.
       
        In the tailDrop(2) algorithm, fsQoSQTemplateSize 
        represents the maximum depth of the queue, beyond which all newly 
        arriving packets will be dropped.

        In the headDrop(3) algorithm, if a packet arrives when the current 
        depth of the queue, is at fsQoSQTemplateSize , packets
        currently at the head of the queue are dropped to make room for the 
        new packet to be enqueued at the tail of the queue.

        In the random Drop(4) and (6) algorithms, on packet arrival, an Active
        Queue Management algorithm is executed which may randomly drop a
        packet. This algorithm may be proprietary, and it may drop either
        the arriving packet or another packet in the queue.
        For this algorithm, fsQoSQTemplateSize is understood to 
        be the absolute maximum size of the queue and additional parameters are 
        described in fsQoSRandomDetectCfgTable.

        The alwaysDrop(5) algorithm is as its name specifies; always
        drop. In this case, the other configuration values in this Entry
        are not meaningful"
       ::= { fsQoSQTemplateEntry 3 }

fsQoSQTemplateDropAlgoEnableFlag OBJECT-TYPE
    SYNTAX      EnableStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Enable/disable Drop Algorithm for Congestion Management"
    DEFVAL  { enable }
    ::= { fsQoSQTemplateEntry 4 }

fsQoSQTemplateSize     OBJECT-TYPE
        SYNTAX       Unsigned32 (0..65535)           
        UNITS        "bytes"
        MAX-ACCESS   read-write
        STATUS       current
        DESCRIPTION
         "The Queue Size. This must be greater than or equal to the
          fsQoSRandomDetectCfgMinAvgThresh and less-than/equal to
          fsQoSRandomDetectCfgMaxAvgThresh if Random Detection is enabled.
          This is depth in bytes of the queue being measured, at
          which a trigger is generated to the dropping algorithm.
          For the tailDrop(2) or headDrop(3) algorithms, this represents
          the depth of the queue, at which the drop action will take place.
          Other algorithms will need to define their own semantics for this 
          threshold."
        ::= { fsQoSQTemplateEntry 5 }

fsQoSQTemplateStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
       row may be modified at any time.
       It can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSQTemplateEntry 6 }

-- --------------------------------------------------------------
-- RED configuration for Q Congestion Management
-- The below is configured if RED needs to be enabled in the system.
-- fsQoSQTemplateDropSpecific  points to an entry in this
-- table. 
-- --------------------------------------------------------------
fsQoSRandomDetectCfgTable      OBJECT-TYPE
        SYNTAX      SEQUENCE OF FsQoSRandomDetectCfgEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
             "A table to configure parameters for Random Detect Algorithm.
        The table is Indexed by fsQoSQTemplateId  and
        Drop Precedence (DP) (0 - 2).
        Each entry represent random detect configurations
        per QueueTemplate per Drop Precedence."
 
        ::= { fsQoSTrafficMgmt 2 }

fsQoSRandomDetectCfgEntry      OBJECT-TYPE
    SYNTAX      FsQoSRandomDetectCfgEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
    "Each entry in the table is a random drop Configuration."
    INDEX { fsQoSQTemplateId , fsQoSRandomDetectCfgDP }
    ::= { fsQoSRandomDetectCfgTable 1 }

FsQoSRandomDetectCfgEntry ::=
    SEQUENCE {
        fsQoSRandomDetectCfgDP             Integer32,
        fsQoSRandomDetectCfgMinAvgThresh   Unsigned32,
        fsQoSRandomDetectCfgMaxAvgThresh   Unsigned32,
        fsQoSRandomDetectCfgMaxPktSize     Unsigned32,
        fsQoSRandomDetectCfgMaxProb        Unsigned32,
        fsQoSRandomDetectCfgExpWeight      Unsigned32,
        fsQoSRandomDetectCfgStatus         RowStatus
    }

fsQoSRandomDetectCfgDP     OBJECT-TYPE
    SYNTAX      Integer32(0..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "The Drop Precedence 
                  0 - low drop precedence
                  1 - medium drop precedence
                  2 - high drop precedence"
    ::= { fsQoSRandomDetectCfgEntry 1 }

fsQoSRandomDetectCfgMinAvgThresh OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
    "The minimum average threshold for the random detect algorithm.
     Below this threshold, packets are admitted into the queue.
     The units are bits in accordance with Traffic Manager.
     This must be less than or equal to the 
       fsQoSRandomDetectCfgMaxAvgThresh and the Queue size."
    ::= { fsQoSRandomDetectCfgEntry 2 }

fsQoSRandomDetectCfgMaxAvgThresh   OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
    "The maximum average threshold for the random detect algorithm.
     Above this threshold, packets are discarded before entering
     the queue. The units is bits in accordance with Traffic Manager.
     This must be greater than or equal to the 
     fsQoSRandomDetectCfgMinAvgThresh and less than or equal to the
     Queue size."
     ::= { fsQoSRandomDetectCfgEntry 3 }

fsQoSRandomDetectCfgMaxPktSize OBJECT-TYPE
    SYNTAX      Unsigned32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION "Maximum allowed Packet Size. The units is bytes."
    ::= { fsQoSRandomDetectCfgEntry 4 }

fsQoSRandomDetectCfgMaxProb    OBJECT-TYPE
    SYNTAX      Unsigned32(1..100)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Maximum probability of discarding a packet in units of percentage."
    DEFVAL    { 100 }
    ::= { fsQoSRandomDetectCfgEntry 5 }

fsQoSRandomDetectCfgExpWeight    OBJECT-TYPE
    SYNTAX       Unsigned32(0..31)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
        "The exponential Weight for determining the average queue size."
    DEFVAL{ 0 }
 ::= { fsQoSRandomDetectCfgEntry 6 }

fsQoSRandomDetectCfgStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
       row may be modified at any time. 
       It can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSRandomDetectCfgEntry 7 }

-------------------------------------------------------------------
-- Shape Template Table 
-------------------------------------------------------------------

fsQoSShapeTemplateTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSShapeTemplateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        " The shape template table configures the shaper attributes."
    ::= { fsQoSTrafficMgmt 3 }

fsQoSShapeTemplateEntry OBJECT-TYPE
    SYNTAX       FsQoSShapeTemplateEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Each entry in the table is a Shape Template Configuration."
    INDEX { fsQoSShapeTemplateId }
    ::= { fsQoSShapeTemplateTable 1 }

FsQoSShapeTemplateEntry ::= SEQUENCE  {
    fsQoSShapeTemplateId                IndexInteger,
    fsQoSShapeTemplateName              DisplayString,
    fsQoSShapeTemplateCIR               Unsigned32, 
    fsQoSShapeTemplateCBS               Unsigned32,
    fsQoSShapeTemplateEIR               Unsigned32,
    fsQoSShapeTemplateEBS               Unsigned32,
    fsQoSShapeTemplateStatus            RowStatus
}

fsQoSShapeTemplateId   OBJECT-TYPE
    SYNTAX      IndexInteger
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Shape Template Table Index."
    ::= { fsQoSShapeTemplateEntry 1 }

fsQoSShapeTemplateName  OBJECT-TYPE
    SYNTAX         DisplayString (SIZE(1..31))
    MAX-ACCESS     read-write
    STATUS         current
    DESCRIPTION
       "This the Name for a Shape template Entry. 
        It should be unique in this Table."
    ::= { fsQoSShapeTemplateEntry 2 }

fsQoSShapeTemplateCIR OBJECT-TYPE
    SYNTAX       Unsigned32 (1..65535)
    MAX-ACCESS   read-write
    STATUS       current 
    DESCRIPTION
        "The committed information rate for packets through this queue.
         Must be > 0."
    ::= { fsQoSShapeTemplateEntry 3 }

fsQoSShapeTemplateCBS OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "Bytes"
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
        "The committed burst size for packets through this queue.
         Must be > 0 when CIR > 0."
    ::= { fsQoSShapeTemplateEntry 4 }

fsQoSShapeTemplateEIR OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION
       "The Excess information rate for packets through this hierarchy.
        Must be >= 0. EIR must be greater than or equal to CIR, if EIR > 0.
        Currently not used, for future use.
        Agent returns EIR = 0 to represent that this row is not configured by
        the manager."
    ::= { fsQoSShapeTemplateEntry 5 }

fsQoSShapeTemplateEBS OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    UNITS       "Bytes"
    MAX-ACCESS  read-write
    STATUS      current 
    DESCRIPTION 
       "The excess burst size for packets through this hierarchy. 
        Must be > 0 when EIR > 0. Currently not used, for future use.
        Agent returns EBS = 0 to represent that this row is not configured by
        the manager."
    ::= { fsQoSShapeTemplateEntry 6 }

fsQoSShapeTemplateStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
       row may be modified at any time.
       It can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSShapeTemplateEntry 7 }

-- ------------------------------------------------------------------
-- Queue Map Table
-- ------------------------------------------------------------------------

fsQoSQMapTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSQMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Queue MAP table mapping an egress port, 
            CLASS of service to a queue." 
    ::= { fsQoSTrafficMgmt 4 }

fsQoSQMapEntry   OBJECT-TYPE
    SYNTAX       FsQoSQMapEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Q MAP Entry mapping a CLASS of service or  
                  RegenPriority from the fsQoSPolicyMapTable to a queue."
    INDEX   { ifIndex, fsQoSQMapCLASS, fsQoSQMapRegenPriType,
              fsQoSQMapRegenPriority }
    ::= { fsQoSQMapTable 1 }

FsQoSQMapEntry ::=
    SEQUENCE {
       fsQoSQMapCLASS               Unsigned32,
       fsQoSQMapRegenPriType        INTEGER,
       fsQoSQMapRegenPriority       Unsigned32,
       fsQoSQMapQId                 Unsigned32, 
       fsQoSQMapStatus              RowStatus
    }

fsQoSQMapCLASS OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The input CLASS ( associated with an incoming packet) that needs 
        to be mapped to an outbound queue. This is mutually exclusive to 
        the RegenPriority object. CLASS should be 0 while configuring 
        RegenPriority specific Q."
    ::= { fsQoSQMapEntry 1 }

fsQoSQMapRegenPriType  OBJECT-TYPE
    SYNTAX      INTEGER { 
                          none(0),
                          vlanPri(1),
                          ipTos(2),
                          ipDscp(3),
                          mplsExp(4),
                          vlanDEI(5),
                          internalPrio(6)
                        }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The regenerated-priority type to interpret the value of
        'fsQoSQMapRegenPriority' object. This object should be none 
        while configuring CLASS specific Queue.

        If fsQoSQMapRegenPriType is internalPrio, then packets classified to
        internal priority will be associated to queue with identfier
        fsQoSQMapQId"
    ::= { fsQoSQMapEntry 2 }

fsQoSQMapRegenPriority OBJECT-TYPE
    SYNTAX      Unsigned32(0..63)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The regenerated-priority ( for an incoming packet) that needs 
        to be mapped to an outbound queue. This is mutually exclusive to
        the CLASS configuration. This object should be 0 while configuring 
        CLASS specific Queue." 
    ::= { fsQoSQMapEntry 3 }

fsQoSQMapQId    OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The Queue Identifier that uniquely identifies a queue relative to an 
        interface. It could be configured with a unique value in the system."
    ::= { fsQoSQMapEntry 4 }

fsQoSQMapStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
        row may be modified only when the row status is not active.
        It can be deleted/destroyed independent of other Traffic class tables; 
        For any mib table that supports global configurations (less-specific) 
        at runtime and H/W supports more-specific configurations, 
        if a more-specific entry is deleted by configuration, then the next 
        less-specific entry gets programmed to H/W"
    ::= { fsQoSQMapEntry 5 }


-- ------------------------------------------------------------------
-- Queue Table
-- ------------------------------------------------------------------

fsQoSQTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSQEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Table describing the queue parameters"
    ::= { fsQoSTrafficMgmt 5 }

fsQoSQEntry   OBJECT-TYPE
    SYNTAX       FsQoSQEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  " Q table entry"
    INDEX   {ifIndex, fsQoSQId } 
    ::= { fsQoSQTable 1 }

FsQoSQEntry ::=
    SEQUENCE {
       fsQoSQId                     Unsigned32,
       fsQoSQCfgTemplateId          Unsigned32,
       fsQoSQSchedulerId            Unsigned32, 
       fsQoSQWeight                 Unsigned32,
       fsQoSQPriority               Unsigned32,
       fsQoSQShapeId                Unsigned32,
       fsQoSQStatus                 RowStatus,
       fsQoSQType                   Unsigned32
    }

fsQoSQId    OBJECT-TYPE
    SYNTAX        Unsigned32 ( 1..65535 )
    MAX-ACCESS    not-accessible 
    STATUS        current
    DESCRIPTION
        "The Queue Identifier that uniquely identifies the queue 
        in the system/port."
    ::= { fsQoSQEntry 1 }

fsQoSQCfgTemplateId OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current 
    DESCRIPTION
        "The Queue template Id applied for configuring queue attributes."
    ::= { fsQoSQEntry 2 }

fsQoSQSchedulerId    OBJECT-TYPE
    SYNTAX        Unsigned32 ( 1..65535 )
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "The scheduler identifier that manages the specified queue.
        This identifier is unique relative to an egress interface." 
    ::= { fsQoSQEntry 3 }

fsQoSQWeight OBJECT-TYPE
    SYNTAX      Unsigned32 (0..1000)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "User assigned weight to the CoS queue.
        The assigned weights are used only when scheduling
       algorithm is a weighted scheduling algorithm."
    DEFVAL { 0 } 
    ::= { fsQoSQEntry 4 }
 
fsQoSQPriority OBJECT-TYPE
    SYNTAX      Unsigned32 (0..15)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
       "User assigned priority for the CoS queue.
        The assigned priority is used only when the scheduler uses a 
        priority based scheduling algorithm."
    DEFVAL { 0 } 
    ::= { fsQoSQEntry 5 }

fsQoSQShapeId    OBJECT-TYPE
    SYNTAX        Unsigned32 ( 0..65535 )
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "The shaper identifier that specifies the bandwidth requirements 
        for the queue. This object is not mandatory for the 
        creation of the row." 
    ::= { fsQoSQEntry 6 }

 fsQoSQStatus   OBJECT-TYPE 
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Row Status to Create/Destroy the entry.
    It can be deleted 'destroy', only if it is not referenced 
    by other dependent tables; otherwise it returns inconsistentValue error."
    ::= { fsQoSQEntry 7 }

  fsQoSQType OBJECT-TYPE
    SYNTAX       Unsigned32 (1..2)
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
       "The object indicates the type of the queue.
	1- Unicast queue
	2- Multicast queue"
    DEFVAL    { 1 }   
    ::= { fsQoSQEntry 8 }

-- ------------------------------------------------------------------
-- Scheduler Table
-- ------------------------------------------------------------------

fsQoSSchedulerTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSSchedulerEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Scheduler table " 
    ::= { fsQoSTrafficMgmt 6 }

fsQoSSchedulerEntry   OBJECT-TYPE
    SYNTAX       FsQoSSchedulerEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Scheduler table Entry."
    INDEX   { ifIndex, fsQoSSchedulerId } 
    ::= { fsQoSSchedulerTable 1 }

FsQoSSchedulerEntry ::=
    SEQUENCE {
       fsQoSSchedulerId             Unsigned32,
       fsQoSSchedulerSchedAlgorithm INTEGER,
       fsQoSSchedulerShapeId        Unsigned32,
       fsQoSSchedulerHierarchyLevel Unsigned32,
       fsQoSSchedulerGlobalId       Unsigned32,
       fsQoSSchedulerStatus         RowStatus
    }

fsQoSSchedulerId    OBJECT-TYPE
    SYNTAX        Unsigned32 (0..65535)
    MAX-ACCESS    not-accessible 
    STATUS        current
    DESCRIPTION
        "The Scheduler Identifier that uniquely identifies the 
        scheduler in the system/egress interface."
    ::= { fsQoSSchedulerEntry 1 }

fsQoSSchedulerSchedAlgorithm OBJECT-TYPE
    SYNTAX      INTEGER {
                strictPriority(1),
                roundRobin(2),
                weightedRoundRobin(3),
                weightedFairQueing(4),
                strictRoundRobin(5),
                strictWeightedRoundRobin(6),
                strictWeightedFairQueing(7),
                deficitRoundRobin(8)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the packet scheduling algorithm for the port
        The default is strictPriority(1)."
    DEFVAL      { 1 }
    ::= { fsQoSSchedulerEntry 2 }

fsQoSSchedulerShapeId    OBJECT-TYPE
    SYNTAX        Unsigned32 (0..65535)
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "The shaper identifier that specifies the bandwidth requirements 
        for the scheduler. This object is not mandatory for the 
        creation of the conceptual row." 
    ::= { fsQoSSchedulerEntry 3 }

fsQoSSchedulerHierarchyLevel    OBJECT-TYPE
    SYNTAX        Unsigned32 (0..10)
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "This indicates the depth of the queue/scheduler hierarchy. 
        A value of 0 indicates that there is no hierarchy and that all 
        queues/schedulers are port-bound.
        0 - No hierarchy
	1 - S1 schedulers (attached to the egress port)
	2 - S2 schedulers (next level attached to the S1 schecdulers)
	3 - S3 schedulers (attached to the COS queues)"
    DEFVAL {0}
    ::= { fsQoSSchedulerEntry 4 }

fsQoSSchedulerGlobalId    OBJECT-TYPE
    SYNTAX        Unsigned32 (0..65535)
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "The Scheduler Identifier that uniquely identifies the 
        scheduler in the system/egress interface.This object is
        used only for creating Scheduler entry from the 
        standard QOS Scheduler table diffServSchedulerTable
        as defined in RFC 3289. The Id corresponds to the 
        diffServSchedulerId in RFC 3289. This is added purely
        for the purpose of Save/Restore"
    ::= { fsQoSSchedulerEntry 5 }

fsQoSSchedulerStatus   OBJECT-TYPE 
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Row Status to Create/Destroy the entry.
        It can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSSchedulerEntry 6 }

-- ------------------------------------------------------------------
-- Hierarchy Table : for hierarchical queuing/scheduling
-- ------------------------------------------------------------------

fsQoSHierarchyTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQoSHierarchyEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Hierarchy table for specifying the hierarchy details." 
    ::= { fsQoSTrafficMgmt 7 }

fsQoSHierarchyEntry   OBJECT-TYPE
    SYNTAX       FsQoSHierarchyEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Each entry specifies the queue/scheduler details to be used
                  for the next level hierarchy. The interface index associated with 
                  the NextQ or Next Scheduler is obtained from this table index 
                  - 'ifIndex'."
    INDEX   { ifIndex, fsQoSHierarchyLevel, fsQoSSchedulerId } 
    ::= { fsQoSHierarchyTable 1 }

FsQoSHierarchyEntry ::=
    SEQUENCE {
       fsQoSHierarchyLevel          Unsigned32,
       fsQoSHierarchyQNext          Unsigned32, 
       fsQoSHierarchySchedNext      Unsigned32, 
       fsQoSHierarchyWeight         Unsigned32,
       fsQoSHierarchyPriority       SchedulerPriority,
       fsQoSHierarchyStatus         RowStatus
    }

fsQoSHierarchyLevel    OBJECT-TYPE
    SYNTAX        Unsigned32 (0..10)
    MAX-ACCESS    not-accessible 
    STATUS        current
    DESCRIPTION
        "This indicates the depth of the queue/scheduler hierarchy. 
        A value of 0 indicates that there is no hierarchy and that all 
        queues/schedulers are port-bound."
    ::= { fsQoSHierarchyEntry 1 }

fsQoSHierarchyQNext OBJECT-TYPE
    SYNTAX        Unsigned32 (0..65535)
    MAX-ACCESS    read-write
    STATUS        current 
    DESCRIPTION
        "The output of this COSQ is sent to the scheduler attached to the queue.
        For eg.,
	A packet may flow from a cosq to the schedulers in the following way:
		COSQ => S3 => S2 => S1 => Egress port. 
        The value of this object could be unique in the system/port.
        A valid value is not mandatory for the creation of the conceptual row.
        This object is used for hierarchical queuing." 
    ::= { fsQoSHierarchyEntry 2 }

fsQoSHierarchySchedNext OBJECT-TYPE
    SYNTAX        Unsigned32 (0..65535)
    MAX-ACCESS    read-write
    STATUS        current 
    DESCRIPTION
        "The next-level scheduler to which the scheduler output needs to 
        be sent. The value of this object could be unique in the system/port.
	A valid value is not mandatory for the creation of the 
        conceptual row. This object is used for hierarchical scheduling." 
    ::= { fsQoSHierarchyEntry 3 }

fsQoSHierarchyWeight   OBJECT-TYPE
    SYNTAX      Unsigned32(0..1000)
    UNITS       "Percentage"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
      "The Weight is specified if the Scheduler  is connecting to a WFQ of 
       another Scheduler. Agent returns Weight = 0 to represent that this 
       object is not configured by the manager."
    ::= { fsQoSHierarchyEntry 4 }

fsQoSHierarchyPriority   OBJECT-TYPE
    SYNTAX         SchedulerPriority
    MAX-ACCESS     read-write
    STATUS         current 
    DESCRIPTION
        "The Scheduler can connect to any of the Priority of the next-level 
        Scheduler. The priority is specified when the scheduler is 
        connecting to any of the priorities ( EF, AF, BE) of the 
        next level strict-priority scheduler. A value of 0 indicates 
        that this value is not configured by manager."
    DEFVAL   { 0 }
    ::= { fsQoSHierarchyEntry 5 }

fsQoSHierarchyStatus   OBJECT-TYPE 
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "Row Status to Create/Destroy the entry.
        It can be deleted 'destroy', only if it is not referenced 
        by other table; otherwise return inconsistentValue error."
    ::= { fsQoSHierarchyEntry 6 }

-- ------------------------------------------------------------------
-- Default User Priority Table : for Untagged Packets
-- and to specify preference for p-bit over dscp in case of tagged
-- packets                  
-- ------------------------------------------------------------------

fsQoSDefUserPriorityTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF FsQoSDefUserPriorityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table that contains default user priority for an interfae." 
    ::= { fsQoSTrafficMgmt 8}

fsQoSDefUserPriorityEntry OBJECT-TYPE
    SYNTAX     FsQoSDefUserPriorityEntry 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table for configuring default user priority for each port. This is  
         used for assigning priority to the untagged packets received on the
         interface."
    INDEX { ifIndex }
    ::= { fsQoSDefUserPriorityTable 1 }

FsQoSDefUserPriorityEntry ::=
    SEQUENCE {
        fsQoSPortDefaultUserPriority Integer32,
        fsQoSPortPbitPrefOverDscp INTEGER 
    }

fsQoSPortDefaultUserPriority OBJECT-TYPE
    SYNTAX      Integer32 (0..7)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The default ingress user priority for this port. 
         It will be used to set priority for an untagged Packets."
    ::= { fsQoSDefUserPriorityEntry 1 }

fsQoSPortPbitPrefOverDscp OBJECT-TYPE
	SYNTAX		INTEGER { enabled(1), disabled(2) }
	MAX-ACCESS	read-write
	STATUS 		current
	DESCRIPTION
	"The default pbit precedence for a port over DSCP is enabled.
         It will be used to set preferece as P-Bit over DSCP
	 for the given tagged port."
    DEFVAL { enabled }
	::= { fsQoSDefUserPriorityEntry 2 }

-- --------------------------------------------------------------------------
-- Policer Statistics Counters
-- --------------------------------------------------------------------------

fsQoSPolicerStatsTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF FsQoSPolicerStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION "A list of Policer Statistics."
    ::= { fsQoSStats  1 }

fsQoSPolicerStatsEntry    OBJECT-TYPE
    SYNTAX        FsQoSPolicerStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION "A collection of statistics kept for a particular Policer."
    INDEX    { fsQoSMeterId }
    ::= { fsQoSPolicerStatsTable 1 }

FsQoSPolicerStatsEntry ::=
    SEQUENCE {
        fsQoSPolicerStatsConformPkts   Counter64,
        fsQoSPolicerStatsConformOctets Counter64,
        fsQoSPolicerStatsExceedPkts    Counter64,
        fsQoSPolicerStatsExceedOctets  Counter64,
        fsQoSPolicerStatsViolatePkts   Counter64,
        fsQoSPolicerStatsViolateOctets Counter64
    }

fsQoSPolicerStatsConformPkts        OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Packets marked down as conforming(Green) traffic
         by this policer."
    ::= { fsQoSPolicerStatsEntry    1 }

fsQoSPolicerStatsConformOctets    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Octets of traffic marked down as conforming(Green)
         by this policer."
    ::= { fsQoSPolicerStatsEntry    2 }

fsQoSPolicerStatsExceedPkts    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Packets marked down as exceeding(Yellow) traffic
         by this policer."
    ::= { fsQoSPolicerStatsEntry    3 }

fsQoSPolicerStatsExceedOctets    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Octets of traffic marked down as exceeding(Yellow)
         by this policer."
    ::= { fsQoSPolicerStatsEntry    4 }

fsQoSPolicerStatsViolatePkts    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Packets marked down as violating(Red) traffic
         by this policer."
    ::= { fsQoSPolicerStatsEntry    5 }

fsQoSPolicerStatsViolateOctets    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of Octets of traffic marked down as violating(Red)
         by this policer."
    ::= { fsQoSPolicerStatsEntry    6 }

-- --------------------------------------------------------------------------
-- CoS based Statistics Counters
-- --------------------------------------------------------------------------

fsQoSCoSQStatsTable    OBJECT-TYPE
    SYNTAX        SEQUENCE OF FsQoSCoSQStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of  class-of-service based Queue Statistics for a COS Queue." 
    ::= { fsQoSStats 2 }

fsQoSCoSQStatsEntry    OBJECT-TYPE
    SYNTAX        FsQoSCoSQStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A collection of CoS Queue statistics for a particular COS queue." 
    INDEX    { ifIndex, fsQoSCoSQId }
    ::= { fsQoSCoSQStatsTable 1 }

FsQoSCoSQStatsEntry ::=
    SEQUENCE {
        fsQoSCoSQId                      Unsigned32,
        fsQoSCoSQStatsEnQPkts            Counter64,
        fsQoSCoSQStatsEnQBytes           Counter64,
        fsQoSCoSQStatsDeQPkts            Counter64,
        fsQoSCoSQStatsDeQBytes           Counter64,
        fsQoSCoSQStatsDiscardPkts        Counter64,
        fsQoSCoSQStatsDiscardBytes       Counter64,
        fsQoSCoSQStatsOccupancy          Counter64,
        fsQoSCoSQStatsCongMgntAlgoDrop   Counter64
    }

fsQoSCoSQId       OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The COSQ for which the statistics is being collected." 
    ::= { fsQoSCoSQStatsEntry 1 }

fsQoSCoSQStatsEnQPkts    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION "Number of packets enqueued in this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 2 }

fsQoSCoSQStatsEnQBytes    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION "Number of bytes enqueued in this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 3 }

fsQoSCoSQStatsDeQPkts    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION "Number of packets de-queued from this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 4 }

fsQoSCoSQStatsDeQBytes    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION "Number of bytes de-queued from this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 5 }

fsQoSCoSQStatsDiscardPkts   OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION "Number of packets discarded from this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 6 }

fsQoSCoSQStatsDiscardBytes    OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION  "Number of bytes discarded from this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 7 }

fsQoSCoSQStatsOccupancy   OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION  "Number of bytes currently occupied in the CoS Queue."
    ::= { fsQoSCoSQStatsEntry 8 }

fsQoSCoSQStatsCongMgntAlgoDrop  OBJECT-TYPE
    SYNTAX        Counter64
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION  "Number of bytes discarded due to congestion management 
                  algorithm (RED/WRED) in this CoS Queue."
    ::= { fsQoSCoSQStatsEntry 9 }

-- Hardware CPU Rate Control Group 

fsQosHwCpuRateLimitTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF FsQosHwCpuRateLimitEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  "Table describing the queue parameters for CPU port"
    ::= { fsQosHwCpuRateControl 1 }

fsQosHwCpuRateLimitEntry   OBJECT-TYPE
    SYNTAX       FsQosHwCpuRateLimitEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  " CPU Rate Limit table entry"
    INDEX   {fsQosHwCpuQId } 
    ::= { fsQosHwCpuRateLimitTable 1 }

FsQosHwCpuRateLimitEntry ::=
    SEQUENCE {
       fsQosHwCpuQId                     Unsigned32,
       fsQosHwCpuMinRate                 Unsigned32,
       fsQosHwCpuMaxRate                 Unsigned32,
       fsQosHwCpuRowStatus               RowStatus
    }

fsQosHwCpuQId    OBJECT-TYPE
    SYNTAX        Unsigned32 ( 1..65535 )
    MAX-ACCESS    not-accessible 
    STATUS        current
    DESCRIPTION
        "The Queue Identifier that uniquely identifies the queue 
        in the system/port."
    ::= { fsQosHwCpuRateLimitEntry 1 }

fsQosHwCpuMinRate OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current 
    DESCRIPTION
        "This object controls the minimum transmission rate 
	on a cpu port. Min Rate must be less than or equal
	to Max Rate."
    ::= { fsQosHwCpuRateLimitEntry 2 }

fsQosHwCpuMaxRate    OBJECT-TYPE
    SYNTAX        Unsigned32 ( 1..65535 )
    MAX-ACCESS    read-write 
    STATUS        current
    DESCRIPTION
        "This object controls the maximum transmission rate on
	 a cpu port. Max Rate must be greater than or equal to
	 Min Rate." 
    ::= { fsQosHwCpuRateLimitEntry 3 }

fsQosHwCpuRowStatus   OBJECT-TYPE 
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates the status of this entry. 
	The entry in this table is used when the status of this object 
        is SET 'active'. The entry in this table is not used when this 
        object is SET 'notInService'."
    ::= { fsQosHwCpuRateLimitEntry 4 }
END

