


-- ===============================================================================

--
-- Extreme QoS objects
--

EXTREME-QOS-MIB DEFINITIONS ::= BEGIN

        IMPORTS
                MODULE-IDENTITY FROM SNMPv2-SMI
		OBJECT-TYPE     FROM SNMPv2-SMI
                TruthValue      FROM SNMPv2-TC
		DisplayString   FROM RFC1213-MIB
		RowStatus       FROM SNMPv2-TC
		ifIndex                 FROM RFC1213-MIB
		extremeVlanIfIndex	FROM EXTREME-VLAN-MIB
                extremeAgent            FROM EXTREME-BASE-MIB;

        extremeQos MODULE-IDENTITY
                LAST-UPDATED "0007240000Z"
                ORGANIZATION "Extreme Networks, Inc."
                CONTACT-INFO "www.extremenetworks.com"
                DESCRIPTION "Extreme Quality-of-Service objects"
        ::= { extremeAgent 3 }

	extremeQosCommon	OBJECT IDENTIFIER ::= { extremeQos 1 }


	extremeUnitPaceMode OBJECT-TYPE
       	        SYNTAX  INTEGER {
            	        notApplicable(1),
                        normalEthernet(2),
                        lowLatency(3)
		}
                MAX-ACCESS	read-write
                STATUS deprecated
                DESCRIPTION
            	"This object specifies whether the device currently
                recognises and gives priority treatment to the 
                forwarding of packets with the PACE(tm) bit set in 
                their MAC Source Address fields.
                
                PACE(tm) mode applies to the whole unit only and
                is only valid when device is in Ingress QoS mode
                as specified by extremeQosMode ingress(1). This
                object will report notApplicable(1) when in 
                egress(2) mode. Set operations with value
                notApplicable(1) will be rejected."
	::= { extremeQosCommon 1 }                

--
-- Select QoS Mode
--
	extremeQosMode OBJECT-TYPE
		SYNTAX  INTEGER { ingress(1), egress(2) }
		MAX-ACCESS  read-write
		STATUS deprecated
		DESCRIPTION
                      "Indicates which QoS mode the device should
                       use. ingress(1) applies priority-based QoS based 
                       on the incoming packet's destination IP or MAC
                       address, 802.1p priority, PACE(tm), Source Port or
                       VLAN. egress(2) applies priority- and bandwidth-based
                       QoS based on destination IP or MAC address or VLAN.
                       See ExtremeWare documentation for further information."
	::= { extremeQosCommon 4 }

--
-- Reset all QoS settings to defaults
--
	extremeQosUnconfigure OBJECT-TYPE
		SYNTAX  TruthValue
		MAX-ACCESS  read-write
		STATUS deprecated
		DESCRIPTION
                      "Setting this to true will reset all QoS settings
                        in the device to factory defaults. Reads from this
                        value return an undefined value."
	::= { extremeQosCommon 5 }


--
-- QoS Profile table
--

	extremeQosProfileTable	OBJECT-TYPE
		SYNTAX	SEQUENCE OF ExtremeQosProfileEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
			"This table lists QoS profiles."
		::= { extremeQosCommon 6 }

	extremeQosProfileEntry	OBJECT-TYPE
		SYNTAX	ExtremeQosProfileEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
			"An individual QoS profile Entry."
		INDEX {extremeQosProfileIndex}
		::= {extremeQosProfileTable 1}

	ExtremeQosProfileEntry ::= SEQUENCE {
                extremeQosProfileIndex          INTEGER,
                extremeQosProfileName           DisplayString,
                extremeQosProfileMinBw          INTEGER,
                extremeQosProfileMaxBw          INTEGER,
                extremeQosProfilePriority       INTEGER,
                extremeQosProfileRowStatus      RowStatus
        }

        extremeQosProfileIndex OBJECT-TYPE
                SYNTAX  INTEGER (1..65535)
                MAX-ACCESS	read-create
                STATUS	current
                DESCRIPTION
                        "An index that uniquely identifies an entry in the
                        qos table."
                ::= { extremeQosProfileEntry 1}

        extremeQosProfileName OBJECT-TYPE
                SYNTAX	DisplayString (SIZE (0..127))
                MAX-ACCESS 	read-create
                STATUS	current
                DESCRIPTION
                        "A unique qos profile name."
                ::= {extremeQosProfileEntry 2}

        extremeQosProfileMinBw  OBJECT-TYPE
                SYNTAX  INTEGER
                MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                 "The minumum percentage of bandwidth that this queue requires.
                 The Switch is required to provide the minumum amount of 
                 bandwidth to the queue. The lowest possible value is 0%."
                DEFVAL { 0 }
                ::= {extremeQosProfileEntry 3 }

                
        extremeQosProfileMaxBw	OBJECT-TYPE
                SYNTAX	INTEGER
        	MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                 "The maximum percentage of bandwidth that this queue is
                 permitted to use.

                 If a non-default value is set for this object then it negates
                 any previously set value of extremeQosProfileMaxSustBwBps. In 
                 In addition, a set operation that supplies non-default values
                 for both this object and for extremeQosProfileMaxSustBwBps
                 will be rejected by the agent. In other words, you may supply
                 either an absolute or a percent limit, not both."
                DEFVAL { 100 }
                ::= {extremeQosProfileEntry 4 }

        extremeQosProfilePriority OBJECT-TYPE
                SYNTAX  INTEGER {
                                low(1),
                                lowHi(2),
                                normal(3),
                                normalHi(4),
                                medium(5),
                                mediumHi(6),
                                high(7),
                                highHi(8)
                }
                MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                        "The level of priority in which this queue will be
                        serviced by the Switch."
                ::= {extremeQosProfileEntry 5 }

        extremeQosProfileRowStatus OBJECT-TYPE
                SYNTAX	RowStatus
                MAX-ACCESS 	read-create
                STATUS	current
                DESCRIPTION
                    "The status of the extremeQosProfile entry.
                    This object can be set to:
                                active(1)
                        	createAndGo(4)
                                createAndWait(5)
                                destroy(6)

                    The following values may be read:
                                active(1)
                                notInService(2)
                                notReady(3).
                        
                    Setting this object to createAndGo(4) causes the agent
                    to attempt to create and commit the row based on 
                    the contents of the objects in the row.  If all necessary
                    information is present in the row and the values are
                    acceptible to the agent, the agent will change the 
                    status to active(1).  If any of the necessary objects  
                    are not available, the agent will reject the creation
                    request.        

                    Setting this object to createAndWait(5) causes a row
                    in this table to be created.  The agent sets the
                    status to notInService(2) if all of the information is
                    present in the row and the values are acceptable to the
                    agent; otherwise, the agent sets the status to notReady(3).

                    Setting this object to active(1) is only valid when
                    the current status is active(1) or notInService(2).  

                    When the state of the row transitions is set to active(1),
                    the agent creates the corresponding row in the ifTable..

                    Setting this object to destroy(6) will remove the
                    corresponding QoS Profile Entry.

                    In order for a set of this object to destroy(6) to succeed,
                    all dependencies on this row must have been removed.  These
                    will include any stacking dependencies in the ifStackTable
                    and any protocol specific tables dependencies."
        ::= { extremeQosProfileEntry 6 }

--
-- VLAN-based QoS Table
--
       	extremeQosByVlanMappingTable	OBJECT-TYPE

		SYNTAX  SEQUENCE OF ExtremeQosByVlanMappingEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
		  "Table to associate a Vlan with the QoS profile that the
		   Vlan is using. Every Vlan is assigned a Qos Profile and
		   hence there is an entry in this table corresponding to every
		   entry in the extremeVlanIfTable."
		::= { extremeQosCommon 7 }

	extremeQosByVlanMappingEntry	OBJECT-TYPE
		SYNTAX	ExtremeQosByVlanMappingEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
                        "The QoS associated with a particular Vlan."
		INDEX {extremeVlanIfIndex}
		::= {extremeQosByVlanMappingTable 1}

	ExtremeQosByVlanMappingEntry ::= SEQUENCE {
        	extremeQosByVlanMappingQosProfileIndex	INTEGER
	}

	extremeQosByVlanMappingQosProfileIndex OBJECT-TYPE
		SYNTAX	INTEGER (1..65535)
		MAX-ACCESS	read-write
		STATUS	current
		DESCRIPTION
		    "Value of extremeQosProfileIndex that uniquely 
                    identifies a QoS Profile entry in extremeQosProfileTable.
                    This indicates the QoS to be given to traffic for this
                    Vlan in the absence of any other more specific 
                    configuration information for this traffic."
	::= { extremeQosByVlanMappingEntry 1 }

--
-- Per Port QOS Table
--
	extremePerPortQosTable	OBJECT-TYPE
		SYNTAX	SEQUENCE OF ExtremePerPortQosEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
		    "Global Qos Profiles are defined in the
	            extremeQosProfileTable. This table contains a list
                    of ports for which the definition of certain global
		    Qos Profiles has been overridden. The new definition
                    of the Qos profile parameters is in this table."
		::= { extremeQosCommon 8 }

	extremePerPortQosEntry	OBJECT-TYPE
		SYNTAX	ExtremePerPortQosEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
			"An individual overridden QoS profile Entry."
		INDEX {ifIndex, extremePerPortQosIndex}
		::= {extremePerPortQosTable 1}

	ExtremePerPortQosEntry ::= SEQUENCE {
                extremePerPortQosIndex          INTEGER,
                extremePerPortQosMinBw          INTEGER,
                extremePerPortQosMaxBw          INTEGER,
                extremePerPortQosPriority       INTEGER,
                extremePerPortQosRowStatus      RowStatus
        }

        extremePerPortQosIndex OBJECT-TYPE
                SYNTAX  INTEGER (1..65535)
                MAX-ACCESS	read-create
                STATUS	current
                DESCRIPTION
                        "The value of this variable is the same as the value
			of extremeQosProfileIndex of the Qos Profile which
			is overridden (for the port specified by ifIndex) by 
			the definition in this table."
                ::= { extremePerPortQosEntry 1}

        extremePerPortQosMinBw  OBJECT-TYPE
                SYNTAX  INTEGER
                MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                   "The minumum percentage of bandwidth that this queue on the
		   specified port requires. The Switch is required to provide 
		   the minumum amount of bandwidth to the queue. The lowest 
		   possible value is 0%."
                DEFVAL { 0 }
                ::= {extremePerPortQosEntry 2 }

                
        extremePerPortQosMaxBw	OBJECT-TYPE
                SYNTAX	INTEGER
        	MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                 "The maximum percentage of bandwidth that this queue on the
                 specified port is permitted to use."
                DEFVAL { 100 }
                ::= {extremePerPortQosEntry 3 }

        extremePerPortQosPriority OBJECT-TYPE
                SYNTAX  INTEGER {
                                low(1),
                                lowHi(2),
                                normal(3),
                                normalHi(4),
                                medium(5),
                                mediumHi(6),
                                high(7),
                                highHi(8)
                }
                MAX-ACCESS  read-create
                STATUS current
                DESCRIPTION
                 "The level of priority in which this queue will be
                 serviced by the Switch."
                ::= {extremePerPortQosEntry 4 }

        extremePerPortQosRowStatus OBJECT-TYPE
                SYNTAX	RowStatus
                MAX-ACCESS 	read-create
                STATUS	current
                DESCRIPTION
                 "The status of the extremePerPortQos entry.
		 This object can be set to 
            		active(1)
			createAndGo(4)
                 The following value may be read:
            		active(1)
		 Note that a destroy(6) is not supported. A row will only be
		 deleted from this table when the Qos Profile indicated
		 in that row is changed globally."

        ::= { extremePerPortQosEntry 5 }

        
--
-- QoS Ingress Priority
--
	extremeQosIngressPriorityTable	OBJECT-TYPE
		SYNTAX	SEQUENCE OF ExtremeQosIngressPriorityEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
			"This table lists QoS ingress priority settings."
		::= { extremeQosCommon 9 }

	extremeQosIngressPriorityEntry	OBJECT-TYPE
		SYNTAX	ExtremeQosIngressPriorityEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
			"An individual QoS ingress priority Entry."
		INDEX {extremeQosIngressPriorityIndex}
		::= {extremeQosIngressPriorityTable 1}

	ExtremeQosIngressPriorityEntry ::= SEQUENCE {
                extremeQosIngressPriorityIndex          INTEGER,
                extremeQosIngressPriorityName           DisplayString,
                extremeQosIngressPriorityValue          INTEGER
        }

        extremeQosIngressPriorityIndex OBJECT-TYPE
                SYNTAX  INTEGER (1..65535)
                MAX-ACCESS	read-only
                STATUS	current
                DESCRIPTION
                        "An index that uniquely identifies an entry in the
                        qos ingress priority table."
                ::= { extremeQosIngressPriorityEntry 1}

        extremeQosIngressPriorityName OBJECT-TYPE
                SYNTAX	DisplayString (SIZE (0..15))
                MAX-ACCESS 	read-only
                STATUS	current
                DESCRIPTION
                        "A qos ingress priority name."
                ::= {extremeQosIngressPriorityEntry 2}
                
        extremeQosIngressPriorityValue OBJECT-TYPE
                SYNTAX  INTEGER (0..15)
                MAX-ACCESS	read-only
                STATUS	current
                DESCRIPTION
                        "The ingress Qos priority value."
                ::= { extremeQosIngressPriorityEntry 3}
                

--
-- IQoS Profile table
--

	extremeIQosProfileTable	OBJECT-TYPE
		SYNTAX	SEQUENCE OF ExtremeIQosProfileEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
			"This table lists ingress QoS profiles."
		::= { extremeQosCommon 10 }

	extremeIQosProfileEntry	OBJECT-TYPE
		SYNTAX	ExtremeIQosProfileEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
			"An individual ingress QoS profile Entry."
		INDEX {ifIndex ,
                       extremeIQosProfileIndex}
		::= {extremeIQosProfileTable 1}

	ExtremeIQosProfileEntry ::= SEQUENCE {
                extremeIQosProfileIndex          INTEGER,
                extremeIQosProfileName           DisplayString,
                extremeIQosProfileMinBwType      INTEGER,
                extremeIQosProfileMinBw          INTEGER,
                extremeIQosProfileMaxBwType      INTEGER,
                extremeIQosProfileMaxBw          INTEGER,
                extremeIQosProfileRED            INTEGER,
                extremeIQosProfileMaxBuf         INTEGER
        }

        extremeIQosProfileIndex OBJECT-TYPE
                SYNTAX  INTEGER (1..65535)
                MAX-ACCESS	read-only
                STATUS	current
                DESCRIPTION
                        "An index that uniquely identifies an entry in the
                        ingress Qos table."
                ::= { extremeIQosProfileEntry 1}
                
        extremeIQosProfileName OBJECT-TYPE
                SYNTAX	DisplayString (SIZE (0..127))
                MAX-ACCESS 	read-only
                STATUS	current
                DESCRIPTION
                        "A unique ingress Qos profile name."
                ::= {extremeIQosProfileEntry 2}
                
        extremeIQosProfileMinBwType  OBJECT-TYPE
                SYNTAX  INTEGER {
			percentage(1),
			kbps(2),
                        mbps(3)
		}
                MAX-ACCESS  read-only  
                STATUS current
                DESCRIPTION
                   "The type of the current minimum bandwith setting. A value
                   of 1 signifies that the minimum bandwith value is a percentage
                   of the configurable port bandwidth. A value of 2 or 3 signifies
                   a guaranteed minimum available bandwidth in Kbps or Mbps
                   respectively."
                ::= {extremeIQosProfileEntry 3 }

        extremeIQosProfileMinBw  OBJECT-TYPE
                SYNTAX  INTEGER
                MAX-ACCESS  read-only
                STATUS current
                DESCRIPTION
                 "The guaranteed minimum bandwidth for this queue, expressed as either
                 a percentage or a specific bandwidth value, as specified by the value
                 of extremeIQosProfileMinBwType."
                DEFVAL { 0 }
                ::= {extremeIQosProfileEntry 4 }
                
        extremeIQosProfileMaxBwType  OBJECT-TYPE
                SYNTAX  INTEGER {
			percentage(1),
			kbps(2),
                        mbps(3)
		}
                MAX-ACCESS  read-only  
                STATUS current
                DESCRIPTION
                   "The type of the current maximum bandwith setting. A value
                   of 1 signifies that the maximum bandwith value is a percentage
                   of the configurable port bandwidth. A value of 2 or 3 signifies
                   a maximum allowed bandwidth in Kbps or Mbps respectively."
                ::= {extremeIQosProfileEntry 5 }
                
        extremeIQosProfileMaxBw	OBJECT-TYPE
                SYNTAX	INTEGER
        	MAX-ACCESS  read-only
                STATUS current
                DESCRIPTION
                 "The maximum allowed input bandwidth for this queue, expressed as 
                 either a percentage or a specific bandwidth value, as specified by 
                 the value of extremeIQosProfileMaxBwType."
                DEFVAL { 0 }
                ::= {extremeIQosProfileEntry 6 }

        extremeIQosProfileRED OBJECT-TYPE
                SYNTAX  INTEGER
                MAX-ACCESS  read-only
                STATUS current
                DESCRIPTION
                        "The Random Early Drop threshold. When the input queue fill
                        ratio exceeds this percentage, frames start to drop randomly
                        with a linear increasing drop probability as the queue fill
                        count approaches the max queue size. A value of 100 indicates
                        that this feature is currently disabled."
                ::= {extremeIQosProfileEntry 7 }

        extremeIQosProfileMaxBuf OBJECT-TYPE
                SYNTAX	INTEGER
                MAX-ACCESS 	read-only
                STATUS	current
                DESCRIPTION
                    "The percentage of the total ingress queue size to use. Lower values
                    can be used to reduce the max latency through this queue, but with
                    potentially greater loss with bursty traffic."
        ::= { extremeIQosProfileEntry 8 }
        

--
-- VLAN-based Ingress QoS Table
--
       	extremeIQosByVlanMappingTable	OBJECT-TYPE

		SYNTAX  SEQUENCE OF ExtremeIQosByVlanMappingEntry
		MAX-ACCESS  not-accessible
		STATUS current
		DESCRIPTION
		  "Table to associate a Vlan with the ingress QoS profile 
                  that the Vlan is using. Every Vlan is assigned a Qos Profile 
                  and hence there is an entry in this table corresponding to
                  every entry in the extremeVlanIfTable."
		::= { extremeQosCommon 11 }

	extremeIQosByVlanMappingEntry	OBJECT-TYPE
		SYNTAX	ExtremeIQosByVlanMappingEntry
		MAX-ACCESS	not-accessible
		STATUS	current
		DESCRIPTION
                        "The ingress QoS associated with a particular Vlan."
		INDEX {extremeVlanIfIndex}
		::= {extremeIQosByVlanMappingTable 1}

	ExtremeIQosByVlanMappingEntry ::= SEQUENCE {
        	extremeIQosByVlanMappingIQosProfileIndex	INTEGER
	}

	extremeIQosByVlanMappingIQosProfileIndex OBJECT-TYPE
		SYNTAX	INTEGER (1..65535)
		MAX-ACCESS	read-only
		STATUS	current
		DESCRIPTION
		    "Value of extremeIQosProfileIndex that uniquely 
                    identifies an ingress QoS Profile entry in extremeIQosProfileTable.
                    This indicates the QoS to be given to traffic for this
                    Vlan in the absence of any other more specific 
                    configuration information for this traffic."
	::= { extremeIQosByVlanMappingEntry 1 }



END
