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

--
-- Atkk QoS objects
--

CENTRECOM-QOS-MIB DEFINITIONS ::= BEGIN

        IMPORTS
                MODULE-IDENTITY FROM SNMPv2-SMI
		OBJECT-TYPE     FROM RFC-1212
                TruthValue      FROM SNMPv2-TC
		DisplayString   FROM RFC1213-MIB
		RowStatus       FROM SNMPv2-TC
		atiVlanIfIndex	FROM CENTRECOM-VLAN-MIB
                extSwitchMIB        FROM CENTRECOM-MIB;

        atiQos MODULE-IDENTITY
                LAST-UPDATED "9803020000Z"
                ORGANIZATION "Allied Telesis K.K"
                CONTACT-INFO "www1.allied-telesis.co.jp/GIGA"
                DESCRIPTION "Atkk Quality-of-Service objects"
        ::= { extSwitchMIB 5 }

	atiQosCommon	OBJECT IDENTIFIER ::= { atiQos 1 }

--
-- Select QoS Mode
--
	atiQosMode OBJECT-TYPE
		SYNTAX  INTEGER { ingress(1), egress(2) }
		ACCESS  read-write
		STATUS  mandatory
		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."
	::= { atiQosCommon 4 }

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


--
-- QoS Profile table
--

	atiQosProfileTable	OBJECT-TYPE
		SYNTAX	SEQUENCE OF AtiQosProfileEntry
		ACCESS  not-accessible
		STATUS  mandatory
		DESCRIPTION
			"This table lists QoS profiles."
		::= { atiQosCommon 6 }

	atiQosProfileEntry	OBJECT-TYPE
		SYNTAX	AtiQosProfileEntry
		ACCESS	not-accessible
		STATUS	mandatory
		DESCRIPTION
			"An individual QoS profile Entry."
		INDEX {atiQosProfileIndex}
		::= {atiQosProfileTable 1}

	AtiQosProfileEntry ::= SEQUENCE {

        	atiQosProfileIndex	INTEGER ,
		atiQosProfileName	DisplayString,
		atiQosProfileMinBw	INTEGER,
		atiQosProfileMaxBw	INTEGER,
		atiQosProfilePriority	INTEGER,
		atiQosProfileRowStatus	RowStatus
	}

	atiQosProfileIndex OBJECT-TYPE
		SYNTAX	INTEGER (1..65535)
		ACCESS	read-write
		STATUS	mandatory
		DESCRIPTION
			"An index that uniquely identifies an entry in the
			qos table."
		::= { atiQosProfileEntry 1}

	atiQosProfileName OBJECT-TYPE
		SYNTAX	DisplayString (SIZE (0..127))
		ACCESS 	read-write
		STATUS	mandatory
		DESCRIPTION
			"A unique qos profile name."
		::= {atiQosProfileEntry 2}

	atiQosProfileMinBw	OBJECT-TYPE
		SYNTAX	INTEGER
		ACCESS read-write
		STATUS mandatory
		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%."
		::= {atiQosProfileEntry 3 }

		
	atiQosProfileMaxBw	OBJECT-TYPE
		SYNTAX	INTEGER
		ACCESS read-write
		STATUS mandatory
		DESCRIPTION
			"The maximum percentage of bandwidth that this queue is
			permitted to use"
		::= {atiQosProfileEntry 4 }

	atiQosProfilePriority OBJECT-TYPE
		SYNTAX	INTEGER {
				low(1),
				normal(2),
				medium(3),
				high(4)
		}
		ACCESS read-write
		STATUS mandatory
		DESCRIPTION
			"The level of priority in which this queue will be serviced
			  by the Switch."
		::= {atiQosProfileEntry 5 }

	atiQosProfileRowStatus OBJECT-TYPE
		SYNTAX	RowStatus
		ACCESS 	read-write
		STATUS	mandatory
		DESCRIPTION
			"The status of the atiQosProfile 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."
        ::= { atiQosProfileEntry 6 }

--
-- VLAN-based QoS Table
--
       	atiQosByVlanMappingTable OBJECT-TYPE

		SYNTAX  SEQUENCE OF AtiQosByVlanMappingEntry
		ACCESS  not-accessible
		STATUS  mandatory
		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 atiVlanIfTable."
		::= { atiQosCommon 7 }

	atiQosByVlanMappingEntry OBJECT-TYPE
		SYNTAX	AtiQosByVlanMappingEntry
		ACCESS	not-accessible
		STATUS	mandatory
		DESCRIPTION
                        "The QoS associated with a particular Vlan."
		INDEX {atiVlanIfIndex}
		::= {atiQosByVlanMappingTable 1}

	AtiQosByVlanMappingEntry ::= SEQUENCE {
        	atiQosByVlanMappingQosProfileIndex	INTEGER
	}

	atiQosByVlanMappingQosProfileIndex OBJECT-TYPE
		SYNTAX	INTEGER (1..65535)
		ACCESS	read-write
		STATUS	mandatory
		DESCRIPTION
			"Value of atiQosProfileIndex that uniquely 
                        identifies a QoS Profile entry in atiQosProfileTable.
                        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."
	::= { atiQosByVlanMappingEntry 1 }


END
