<?xml version="1.0" encoding="UTF-8"?>
<!--
  Device:2 Root Data Model: Common Object definitions [QoS]

  Copyright (c) 2010-2024, Broadband Forum

  Redistribution and use in source and binary forms, with or
  without modification, are permitted provided that the following
  conditions are met:

  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials
     provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its
     contributors may be used to endorse or promote products
     derived from this software without specific prior written
     permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  The above license is used as a license under copyright only.
  Please reference the Forum IPR Policy for patent licensing terms
  <https://www.broadband-forum.org/ipr-policy>.

  Any moral rights which are necessary to exercise under the above
  license grant are also deemed granted under this license.

  Comments or questions about this Broadband Forum data model should be
  directed to <info@broadband-forum.org>.
-->

<dm:document
    xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-10"
    xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-1-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      urn:broadband-forum-org:cwmp:datamodel-1-10
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-1-10.xsd
      urn:broadband-forum-org:cwmp:datamodel-report-1-0
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-report-1-0.xsd"
    spec="urn:broadband-forum-org:tr-181-2-19-0-qos"
    file="tr-181-2-19-0-qos.xml">

  <import file="tr-069-biblio.xml" spec="urn:broadband-forum-org:tr-069"/>

  <import file="tr-106-types.xml" spec="urn:broadband-forum-org:tr-106">
    <component name="Alias"/>
    <dataType name="IPAddress"/>
    <dataType name="IPPrefix"/>
    <dataType name="MACAddress"/>
    <dataType name="Order"/>
  </import>

  <import file="tr-181-2-root.xml"
      spec="urn:broadband-forum-org:tr-181-2-16-root">
    <component name="Root"/>
  </import>

  <import file="tr-181-2-ip.xml"
      spec="urn:broadband-forum-org:tr-181-2-19-ip">
    <component name="IPVersion"/>
  </import>

  <component name="QoS">

    <object name="Device.QoS." access="readOnly" minEntries="1" maxEntries="1"
        version="2.0">
      <description>
        Queue management configuration object.
      </description>

      <parameter name="MaxClassificationEntries" access="readOnly">
        <description>
          The maximum number of entries available in the Classification table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="ClassificationNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxAppEntries" access="readOnly">
        <description>
          The maximum number of entries available in the {{object|App}} table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="AppNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxFlowEntries" access="readOnly">
        <description>
          The maximum number of entries available in the {{object|Flow}} table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="FlowNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxPolicerEntries" access="readOnly">
        <description>
          The maximum number of entries available in the {{object|Policer}}
          table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="PolicerNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxQueueEntries" access="readOnly">
        <description>
          The maximum number of entries available in the {{object|Queue}}
          table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="QueueNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="QueueStatsNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxShaperEntries" access="readOnly">
        <description>
          The maximum number of entries available in the {{object|Shaper}}
          table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="ShaperNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="MaxSchedulerEntries" access="readOnly" version="2.16">
        <description>
          The maximum number of entries available in the {{object|Scheduler}}
          table.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="SchedulerNumberOfEntries" access="readOnly"
          version="2.16">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="DefaultForwardingPolicy" access="readWrite">
        <description>
          Identifier of the forwarding policy associated with traffic not
          associated with any specified classifier.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="DefaultTrafficClass" access="readWrite">
        <description>
          Identifier of the traffic class associated with traffic not
          associated with any specified classifier.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="DefaultPolicer" access="readWrite">
        <description>
          {{reference}} Indicates the ''Policer'' table entry for traffic not
          associated with any specified classifier.

          {{empty}} indicates a null policer.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="Policer." targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="DefaultQueue" access="readWrite">
        <description>
          {{reference}} Indicates the ''Queue'' table entry for traffic not
          associated with any specified classifier. Note: The interpretation of
          {{empty}} value is implementation specific.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="Queue." targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="DefaultDSCPMark" access="readWrite">
        <description>
          DSCP to mark traffic not associated with any specified classifier.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of DSCP based upon the
          EthernetPriority value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
        </syntax>
      </parameter>

      <parameter name="DefaultEthernetPriorityMark" access="readWrite">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          traffic not associated with any specified classifier.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
        </syntax>
      </parameter>

      <parameter name="DefaultInnerEthernetPriorityMark" access="readWrite"
          version="2.7">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          traffic of the inner VLAN Tag as defined in 802.1Q, when the PDU is
          not associated with any specified classifier. This parameter is only
          applicable when the PDU has 2 VLAN Tags.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
        </syntax>
      </parameter>

      <parameter name="AvailableAppList" access="readOnly">
        <description>
          {{list}} List items represent URNs, each indicating a protocol
          supported for use as a ProtocolIdentifier in the App table. This list
          MAY include any of the URNs defined in {{bibref|TR-181i2|Annex A}} as
          well as other URNs defined elsewhere.
        </description>
        <syntax>
          <list>
            <size maxLength="1024"/>
          </list>
          <string/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Classification.{i}." access="readWrite"
        numEntriesParameter="ClassificationNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.0">
      <description>
        Classification table.

        For enabled table entries, if {{param|Interface}} is not a valid
        reference and {{param|AllInterfaces}} is {{false}}, then the table
        entry is inoperable and the CPE MUST set {{param|Status}} to
        {{enum|Error_Misconfigured|Status}}.

        Several of this object's parameters specify DHCP option values. Some
        cases are version neutral (the parameter can apply to both DHCPv4 and
        DHCPv6), but in other cases the representation of the option is
        different for DHCPv4 and DHCPv6, so it is necessary to define separate
        DHCPv4-specific and DHCPv6-specific parameters. Therefore, an instance
        of this object that uses DHCP option values as classification criteria
        will be associated with either DHCPv4 or DHCPv6, as indicated by the
        {{param|DHCPType}} parameter.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this classifier.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this classifier. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="Order" access="readWrite">
        <description>
          {{datatype|expand}}

          For each packet, the highest ordered entry that matches the
          classification criteria is applied. All lower order entries are
          ignored.
        </description>
        <syntax>
          <dataType ref="Order"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="DHCPType" access="readWrite" version="2.2">
        <description>
          The DHCP protocol associated with the {{object}} instance. Affects
          only parameters that specify DHCP option values as classification
          criteria (all such parameter descriptions note this fact). {{enum}}

          If {{param}} is {{enum|DHCPv4}}, then {{object}} parameters that are
          DHCPv6-specific are ignored. If {{param}} is {{enum|DHCPv6}}, then
          {{object}} parameters that are DHCPv4-specific are ignored.
        </description>
        <syntax>
          <string>
            <enumeration value="DHCPv4"/>
            <enumeration value="DHCPv6"/>
          </string>
          <default type="object" value="DHCPv4"/>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          Classification criterion. {{reference}}

          This specifies the ingress interface associated with the entry. It
          MAY be a layer 1, 2 or 3 interface, however, the types of interfaces
          for which ''Classifications'' can be instantiated is a local matter
          to the CPE.

          Note that this parameter is permitted to reference ''Tunnel''
          instances in order to classify upstream packets that have just been
          encapsulated (such packets are conceptually similar to
          locally-generated traffic). For example, this parameter might
          reference a {{object|##.GRE.Tunnel}} or a {{object|##.MAP.Domain}}
          instance.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="AllInterfaces" access="readWrite">
        <description>
          Classification criterion. This specifies that all ingress interfaces
          are associated with the entry. If {{true}}, the value of
          {{param|Interface}} is ignored since all ingress interfaces are
          indicated.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <component ref="IPVersion" version="2.16"/>
      <parameter base="IPVersion">
        <description action="prefix">
          Classification criterion.
        </description>
      </parameter>

      <parameter name="DestIP" access="readWrite">
        <description>
          Classification criterion.

          Destination IP address. {{empty}} indicates this criterion is not
          used for classification.
        </description>
        <syntax>
          <dataType ref="IPAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestMask" access="readWrite">
        <description>
          Destination IP address mask, represented as an IP routing prefix
          using CIDR notation [RFC4632]. The IP address part MUST be {{empty}}
          (and, if specified, MUST be ignored).
        </description>
        <syntax>
          <dataType ref="IPPrefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestIPExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          (masked) DestIP entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the (masked) DestIP entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceIP" access="readWrite">
        <description>
          Classification criterion.

          Source IP address. {{empty}} indicates this criterion is not used for
          classification.
        </description>
        <syntax>
          <dataType ref="IPAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceMask" access="readWrite">
        <description>
          Source IP address mask, represented as an IP routing prefix using
          CIDR notation [RFC4632]. The IP address part MUST be {{empty}} (and,
          if specified, MUST be ignored).
        </description>
        <syntax>
          <dataType ref="IPPrefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceIPExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          (masked) {{param|SourceIP}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the (masked) {{param|SourceIP}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Protocol" access="readWrite">
        <description>
          Classification criterion.

          Protocol number. A value of -1 indicates this criterion is not used
          for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="255"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="ProtocolExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|Protocol}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|Protocol}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestPort" access="readWrite">
        <description>
          Classification criterion.

          Destination port number. A value of -1 indicates this criterion is
          not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DestPortRangeMax" access="readWrite">
        <description>
          Classification criterion.

          If specified, indicates the classification criterion is to include
          the port range from {{param|DestPort}} through {{param}} (inclusive).
          If specified, {{param}} MUST be greater than or equal to
          {{param|DestPort}}.

          A value of -1 indicates that no port range is specified.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DestPortExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|DestPort}} entry (or port range), if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|DestPort}} entry (or port range), if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourcePort" access="readWrite">
        <description>
          Classification criterion.

          Source port number. A value of -1 indicates this criterion is not
          used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="SourcePortRangeMax" access="readWrite">
        <description>
          Classification criterion.

          If specified, indicates the classification criterion is to include
          the port range from {{param|SourcePort}} through {{param}}
          (inclusive). If specified, {{param}} MUST be greater than or equal to
          SourcePort.

          A value of -1 indicates that no port range is specified.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="SourcePortExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|SourcePort}} entry (or port range), if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|SourcePort}} entry (or port range), if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceMACAddress" access="readWrite">
        <description>
          Classification criterion.

          Source MAC Address. {{empty}} indicates this criterion is not used
          for classification.
        </description>
        <syntax>
          <dataType ref="MACAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceMACMask" access="readWrite">
        <description>
          Bit-mask for the MAC address, where matching of a packet's MAC
          address with the {{param|SourceMACAddress}} is only to be done for
          bit positions set to one in the mask. A mask of ''FF:FF:FF:FF:FF:FF''
          or {{empty}} indicates all bits of the {{param|SourceMACAddress}} are
          to be used for classification.
        </description>
        <syntax>
          <dataType ref="MACAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceMACExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          (masked) {{param|SourceMACAddress}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the (masked) {{param|SourceMACAddress}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestMACAddress" access="readWrite">
        <description>
          Classification criterion.

          Destination MAC Address. {{empty}} indicates this criterion is not
          used for classification.

          The use of destination MAC address as a classification criterion is
          primarily useful only for bridged traffic.
        </description>
        <syntax>
          <dataType ref="MACAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestMACMask" access="readWrite">
        <description>
          Bit-mask for the MAC address, where matching of a packet's MAC
          address with the {{param|DestMACAddress}} is only to be done for bit
          positions set to one in the mask. A mask of ''FF:FF:FF:FF:FF:FF'' or
          {{empty}} indicates all bits of the {{param|DestMACAddress}} are to
          be used for classification.
        </description>
        <syntax>
          <dataType ref="MACAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestMACExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          (masked) {{param|DestMACAddress}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the (masked) {{param|DestMACAddress}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Ethertype" access="readWrite">
        <description>
          Classification criterion.

          Ethertype as indicated in either the Ethernet or SNAP Type header. A
          value of -1 indicates this criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthertypeExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|Ethertype}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|Ethertype}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SSAP" access="readWrite">
        <description>
          Classification criterion.

          SSAP element in the LLC header. A value of -1 indicates this
          criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="SSAPExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|SSAP}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|SSAP}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DSAP" access="readWrite">
        <description>
          Classification criterion.

          DSAP element in the LLC header. A value of -1 indicates this
          criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DSAPExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|DSAP}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|DSAP}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="LLCControl" access="readWrite">
        <description>
          Classification criterion.

          Control element in the LLC header. A value of -1 indicates this
          criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="LLCControlExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|LLCControl}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|LLCControl}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SNAPOUI" access="readWrite">
        <description>
          Classification criterion.

          OUI element in the SNAP header. A value of -1 indicates this
          criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="SNAPOUIExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|SNAPOUI}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|SNAPOUI}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorClassID" access="readWrite">
        <description>
          Classification criterion.

          Used to identify one or more LAN devices, value of the DHCPv4 Vendor
          Class Identifier (Option 60) as defined in {{bibref|RFC2132}},
          matched according to the criterion in
          {{param|SourceVendorClassIDMode}}. Case sensitive.

          This is a normal string, e.g. "abc" is represented as "abc" and not
          say "616263" hex. However, if the value includes non-printing
          characters then such characters have to be represented using XML
          escapes, e.g. #x0a for line-feed.

          {{empty}} indicates this criterion is not used for classification.

          Note: This parameter is DHCPv4-specific. It only applies when
          {{param|DHCPType}} is {{enum|DHCPv4|DHCPType}}.
        </description>
        <syntax>
          <string>
            <size maxLength="255"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorClassIDv6" access="readWrite" version="2.2">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCPv6 Vendor Class Identifier (Option 16) as defined in
          {{bibref|RFC8415}}. The option value is binary, so an exact match is
          REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: This parameter is DHCPv6-specific. It only applies when
          {{param|DHCPType}} is {{enum|DHCPv6|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorClassIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets sourced from LAN
          devices that match the {{param|SourceVendorClassID}} entry (for
          {{enum|DHCPv4|DHCPType}}) or the {{param|SourceVendorClassIDv6}}
          entry (for {{enum|DHCPv6|DHCPType}}), if specified.

          If {{true}}, the class includes all packets except those sourced from
          LAN devices that match the {{param|SourceVendorClassID}} entry (for
          {{enum|DHCPv4|DHCPType}}) or the {{param|SourceVendorClassIDv6}}
          entry (for {{enum|DHCPv6|DHCPType}}), if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorClassIDMode" access="readWrite">
        <description>
          SourceVendorClassID pattern match criterion. {{enum}}

          For example, if {{param|SourceVendorClassID}} is "Example" then an
          Option 60 value of "Example device" will match with {{param}} values
          of {{enum|Prefix}} or {{enum|Substring}}, but not with {{enum|Exact}}
          or {{enum|Suffix}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Exact"/>
            <enumeration value="Prefix"/>
            <enumeration value="Suffix"/>
            <enumeration value="Substring"/>
          </string>
          <default type="object" value="Exact"/>
        </syntax>
      </parameter>

      <parameter name="DestVendorClassID" access="readWrite">
        <description>
          Classification criterion.

          Used to identify one or more LAN devices, value of the DHCPv4 Vendor
          Class Identifier (Option 60) as defined in {{bibref|RFC2132}},
          matched according to the criterion in
          {{param|DestVendorClassIDMode}}. Case sensitive.

          This is a normal string, e.g. "abc" is represented as "abc" and not
          say "616263" hex. However, if the value includes non-printing
          characters then such characters have to be represented using XML
          escapes, e.g. #x0a for line-feed.

          {{empty}} indicates this criterion is not used for classification.

          Note: This parameter is DHCPv4-specific. It only applies when
          {{param|DHCPType}} is {{enum|DHCPv4|DHCPType}}.
        </description>
        <syntax>
          <string>
            <size maxLength="255"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestVendorClassIDv6" access="readWrite" version="2.2">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCPv6 Vendor Class Identifier (Option 16) as defined in
          {{bibref|RFC8415}}. The option value is binary, so an exact match is
          REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: This parameter is DHCPv6-specific. It only applies when
          {{param|DHCPType}} is {{enum|DHCPv6|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestVendorClassIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets destined for LAN
          devices that match the {{param|DestVendorClassID}} entry (for
          {{enum|DHCPv4|DHCPType}}) or the {{param|DestVendorClassIDv6}} entry
          (for {{enum|DHCPv6|DHCPType}}), if specified.

          If {{true}}, the class includes all packets except those destined for
          LAN devices that match the {{param|DestVendorClassID}} entry (for
          {{enum|DHCPv4|DHCPType}}) or the {{param|DestVendorClassIDv6}} entry
          (for {{enum|DHCPv6|DHCPType}}), if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestVendorClassIDMode" access="readWrite">
        <description>
          {{param|DestVendorClassID}} pattern match criterion. {{enum}}

          For example, if {{param|DestVendorClassID}} is "Example" then an
          Option 60 value of "Example device" will match with {{param}} values
          of {{enum|Prefix}} or {{enum|Substring}}, but not with {{enum|Exact}}
          or {{enum|Suffix}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Exact"/>
            <enumeration value="Prefix"/>
            <enumeration value="Suffix"/>
            <enumeration value="Substring"/>
          </string>
          <default type="object" value="Exact"/>
        </syntax>
      </parameter>

      <parameter name="SourceClientID" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP Client Identifier. The DHCP Client Identifier is Option 61
          (as defined in {{bibref|RFC2132}}) for {{enum|DHCPv4|DHCPType}}, or
          is Option 1 (as defined in {{bibref|RFC8415}}) for
          {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact
          match is REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.

          Note: DHCPv6 Option 1 (Client Identifier) is sometimes referred to as
          ''DUID''.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceClientIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets sourced from LAN
          devices that match the {{param|SourceClientID}} entry, if specified.

          If {{true}}, the class includes all packets except those sourced from
          LAN devices that match the {{param|SourceClientID}} entry, if
          specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestClientID" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP Client Identifier. The DHCP Client Identifier is Option 61
          (as defined in {{bibref|RFC2132}}) for {{enum|DHCPv4|DHCPType}}, or
          is Option 1 (as defined in {{bibref|RFC8415}}) for
          {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact
          match is REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.

          Note: DHCPv6 Option 1 (Client Identifier) is sometimes referred to as
          ''DUID''.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestClientIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets destined for LAN
          devices that match the {{param|DestClientID}} entry, if specified.

          If {{true}}, the class includes all packets except those destined for
          LAN devices that match the {{param|DestClientID}} entry, if
          specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceUserClassID" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP User Class Identifier. The DHCP User Class Identifier is
          Option 77 (as defined in {{bibref|RFC3004}}) for
          {{enum|DHCPv4|DHCPType}}, or is Option 15 (as defined in
          {{bibref|RFC8415}}) for {{enum|DHCPv6|DHCPType}}. The option value is
          binary, so an exact match is REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceUserClassIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets sourced from LAN
          devices that match the {{param|SourceUserClassID}} entry, if
          specified.

          If {{true}}, the class includes all packets except those sourced from
          LAN devices that match the {{param|SourceUserClassID}} entry, if
          specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestUserClassID" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP User Class Identifier. The DHCP User Class Identifier is
          Option 77 (as defined in {{bibref|RFC3004}}) for
          {{enum|DHCPv4|DHCPType}}, or is Option 15 (as defined in
          {{bibref|RFC8415}}) for {{enum|DHCPv6|DHCPType}}. The option value is
          binary, so an exact match is REQUIRED.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestUserClassIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets destined for LAN
          devices that match the {{param|DestUserClassID}} entry, if specified.

          If {{true}}, the class includes all packets except those destined for
          LAN devices that match the {{param|DestUserClassID}} entry, if
          specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorSpecificInfo" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP Vendor-specific Information, matched according to the
          criteria in {{param|SourceVendorSpecificInfoEnterprise}} and
          {{param|SourceVendorSpecificInfoSubOption}}. The DHCP Vendor-specific
          Information is Option 125 (as defined in {{bibref|RFC3925}}) for
          {{enum|DHCPv4|DHCPType}}, or is Option 17 (as defined in
          {{bibref|RFC8415}}) for {{enum|DHCPv6|DHCPType}}.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorSpecificInfoExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets sourced from LAN
          devices that match the {{param|SourceVendorSpecificInfo}} entry, if
          specified.

          If {{true}}, the class includes all packets except those sourced from
          LAN devices that match the {{param|SourceVendorSpecificInfo}} entry,
          if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorSpecificInfoEnterprise" access="readWrite">
        <description>
          {{param|SourceVendorSpecificInfo}} Enterprise Number as defined in
          {{bibref|RFC3925}}.

          The default value (0) is assigned to IANA and will probably need to
          be replaced with an appropriate enterprise number.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="SourceVendorSpecificInfoSubOption" access="readWrite">
        <description>
          {{param|SourceVendorSpecificInfo}} Sub Option Code as defined in
          {{bibref|RFC3925}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="0" maxInclusive="255"/>
          </int>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DestVendorSpecificInfo" access="readWrite">
        <description>
          Classification criterion.

          A hexbinary string used to identify one or more LAN devices, value of
          the DHCP Vendor-specific Information, matched according to the
          criteria in {{param|DestVendorSpecificInfoEnterprise}} and
          {{param|DestVendorSpecificInfoSubOption}}. The DHCP Vendor-specific
          Information is Option 125 (as defined in {{bibref|RFC3925}}) for
          {{enum|DHCPv4|DHCPType}}, or is Option 17 (as defined in
          {{bibref|RFC8415}}) for {{enum|DHCPv6|DHCPType}}.

          {{empty}} indicates this criterion is not used for classification.

          Note: DHCPv4 Option values are limited to a length of 255, while
          DHCPv6 Option values can have a maximum length of 65535.

          Note: This parameter is DHCP version neutral. The specific DHCP
          version in use with this parameter is indicated by
          {{param|DHCPType}}.
        </description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DestVendorSpecificInfoExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets destined for LAN
          devices that match the {{param|DestVendorSpecificInfo}} entry, if
          specified.

          If {{true}}, the class includes all packets except those destined for
          LAN devices that match the {{param|DestVendorSpecificInfo}} entry, if
          specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DestVendorSpecificInfoEnterprise" access="readWrite">
        <description>
          {{param|DestVendorSpecificInfo}} Enterprise Number as defined in
          {{bibref|RFC3925}}.

          The default value (0) is assigned to IANA and will probably need to
          be replaced with an appropriate enterprise number.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DestVendorSpecificInfoSubOption" access="readWrite">
        <description>
          {{param|DestVendorSpecificInfo}} Sub Option Code as defined in
          {{bibref|RFC3925}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="0" maxInclusive="255"/>
          </int>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="TCPACK" access="readWrite">
        <description>
          Classification criterion.

          If {{false}}, this criterion is not used for classification.

          If {{true}}, this criterion matches with all TCP segments that have
          the ACK control bit set.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="TCPACKExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|TCPACK}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|TCPACK}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="IPLengthMin" access="readWrite">
        <description>
          Classification criterion.

          Minimum IP Packet Length (including header) in {{units}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="IPLengthMax" access="readWrite">
        <description>
          Classification criterion.

          Maximum IP Packet Length (including header) in {{units}}.

          A value of zero indicates that no maximum is specified (an umlimited
          maximum length).
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="IPLengthExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets whose length
          (including header) falls within the inclusive range
          {{param|IPLengthMin}} through {{param|IPLengthMax}}. A value of zero
          for both {{param|IPLengthMin}} and {{param|IPLengthMax}} allows any
          length packet. An equal non-zero value of {{param|IPLengthMin}} and
          {{param|IPLengthMax}} allows only a packet with the exact length
          specified.

          If {{true}}, the class includes all packets except those whose length
          (including header) falls within the inclusive range
          {{param|IPLengthMin}} through {{param|IPLengthMax}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DSCPCheck" access="readWrite">
        <description>
          Classification criterion.

          DiffServ codepoint (defined in {{bibref|RFC2474}}).

          If set to a Class Selector Codepoint (defined in {{bibref|RFC2474}}),
          all DSCP values that match the first 3 bits will be considered a
          valid match.

          A value of -1 indicates this criterion is not used for
          classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="63"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DSCPExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|DSCPCheck}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|DSCPCheck}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="DSCPMark" access="readWrite">
        <description>
          Classification result.

          DSCP to mark traffic with that falls into this classification entry.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of DSCP based upon the
          EthernetPriority value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthernetPriorityCheck" access="readWrite">
        <description>
          Classification criterion.

          Current Ethernet priority of a VLAN Tag as defined in
          {{bibref|802.1Q-2011}} or Ethernet Priority field as defined in
          802.1D. If more than 1 VLAN tag is present, then this parameter
          represents the outer VLAN Tag. A value of -1 indicates this criterion
          is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthernetPriorityExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|EthernetPriorityCheck}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|EthernetPriorityCheck}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="EthernetPriorityMark" access="readWrite">
        <description>
          Classification result.

          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          traffic with that falls into this classification entry associated
          with the {{param|EthernetPriorityCheck}}.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="InnerEthernetPriorityCheck" access="readWrite"
          version="2.7">
        <description>
          Classification criterion.

          Current Ethernet priority of the inner VLAN Tag as defined in 802.1Q.
          This parameter is only applicable when the PDU has 2 VLAN Tags. A
          value of -1 indicates this criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="InnerEthernetPriorityExclude" access="readWrite"
          version="2.7">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|InnerEthernetPriorityCheck}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|InnerEthernetPriorityCheck}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="InnerEthernetPriorityMark" access="readWrite"
          version="2.7">
        <description>
          Classification result.

          Ethernet priority code to mark traffic with that falls into this
          classification entry associated with the
          {{param|InnerEthernetPriorityCheck}}.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthernetDEICheck" access="readWrite" version="2.7">
        <description>
          Classification criterion.

          Current Ethernet Drop eligible Indication (DEI) of the VLAN tag as
          defined in 802.1Q. If 2 VLAN Tags are present, then this parameter
          represents the outer VLAN tag. A value of -1 indicates this criterion
          is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthernetDEIExclude" access="readWrite" version="2.7">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|EthernetDEICheck}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|EthernetDEICheck}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="VLANIDCheck" access="readWrite">
        <description>
          Classification criterion.

          Current Ethernet VLAN ID as defined in 802.1Q. A value of -1
          indicates this criterion is not used for classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="VLANIDExclude" access="readWrite">
        <description>
          If {{false}}, the class includes only those packets that match the
          {{param|VLANIDCheck}} entry, if specified.

          If {{true}}, the class includes all packets except those that match
          the {{param|VLANIDCheck}} entry, if specified.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="OutOfBandInfo" access="readWrite">
        <description>
          Classification criterion.

          Allows traffic to be distinguished based on out-of-band information
          such as physical port or application ID. Primarily intended for, but
          not restricted to, locally sourced traffic.

          If specified, this entry applies to traffic with matching out-of-band
          information. A value of -1 indicates this criterion is not used for
          classification.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="ForwardingPolicy" access="readWrite">
        <description>
          Classification result.

          Identifier of the forwarding policy associated with traffic that
          falls in this classification.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="TrafficClass" access="readWrite">
        <description>
          Classification result.

          Identifier of the traffic class associated with traffic that falls in
          this classification. If specified, at least one {{object|#.Queue}}
          table entry MUST include this traffic class in its
          {{param|#.Queue.{i}.TrafficClasses}} parameter (which is a
          comma-separated list).

          A value of -1 indicates a null traffic class.

          {{param}} and {{param|App}} are mutually exclusive and one of the two
          MUST be specified. If {{param}} is {{null}}, {{param|App}} MUST be
          specified, and vice versa.
        </description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="Policer" access="readWrite">
        <description>
          Classification result. {{reference}}

          Indicates the ''Policer'' table entry for traffic that falls in this
          classification.

          {{empty}} indicates a null policer.

          {{param}} MAY optionally be specified in conjunction with
          {{param|TrafficClass}}. {{param}} and {{param|App}} are mutually
          exclusive.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.Policer."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="App" access="readWrite">
        <description>
          Classification result. {{reference}}

          Indicates the ''App'' table entry for traffic that falls in this
          classification.

          {{empty}} indicates a null ''App''.

          {{param|TrafficClass}} and {{param}} are mutually exclusive and one
          of the two MUST be specified. If {{param|TrafficClass}} is null,
          {{param}} MUST be specified, and vice versa.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.App." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.App.{i}." access="readWrite"
        numEntriesParameter="AppNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Application table.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this App table entry.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this App table entry. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="ProtocolIdentifier" access="readWrite">
        <description>
          URN identifying the protocol associated with the given application. A
          set of defined URNs is given in {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="Name" access="readWrite">
        <description>
          Human-readable name associated with this entry in the App table.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DefaultForwardingPolicy" access="readWrite">
        <description>
          Identifier of the forwarding policy associated with traffic
          associated with this App table entry, but not associated with any
          specified flow.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DefaultTrafficClass" access="readWrite">
        <description>
          Identifier of the traffic class associated with traffic associated
          with this App table entry, but not associated with any specified
          flow.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DefaultPolicer" access="readWrite">
        <description>
          {{reference}} Indicates the ''Policer'' table entry for traffic
          associated with this {{object}} table entry, but not associated with
          any specified flow.

          {{empty}} indicates a null policer.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.Policer."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DefaultDSCPMark" access="readWrite">
        <description>
          DSCP to mark traffic associated with this App table entry, but not
          associated with any specified flow.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of DSCP based upon the
          EthernetPriority value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DefaultEthernetPriorityMark" access="readWrite">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          traffic associated with this App table entry, but not associated with
          any specified flow.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DefaultInnerEthernetPriorityMark" access="readWrite"
          version="2.7">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          the inner VLAN Tags as defined in 802.1Q with this {{object}} table
          entry where the packet is not associated with any specified flow.
          This parameter is only applicable when the PDU has 2 VLAN Tags.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Flow.{i}." access="readWrite"
        numEntriesParameter="FlowNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Flow table.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this Flow table entry.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this Flow table entry. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Type" access="readWrite">
        <description>
          URN identifying the type of flow to be associated with the specified
          policer. A set of defined URNs is given in {{bibref|TR-181i2|Annex
          A}}.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="TypeParameters" access="readWrite">
        <description>
          Each entry is a name-value pair representing additional criteria to
          identify the flow type. The use and interpretation is specific to the
          particular FlowType URN.Encoded using the "x-www-form-urlencoded"
          content type defined in {{bibref|HTML4.01}}.
        </description>
        <syntax>
          <list/>
          <string>
            <size maxLength="256"/>
          </string>
          <default type="object" value="[]"/>
        </syntax>
      </parameter>

      <parameter name="Name" access="readWrite">
        <description>
          Human-readable name associated with this entry in the Flow table.
        </description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="App" access="readWrite">
        <description>
          {{reference}} Indicates the ''App'' table entry associated with this
          flow. {{empty}} indicates the flow table is not associated with any
          App table entry.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.App." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="ForwardingPolicy" access="readWrite">
        <description>
          Identifier of the forwarding policy associated with this flow.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="TrafficClass" access="readWrite">
        <description>
          Identifier of the traffic class associated with this flow.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="Policer" access="readWrite">
        <description>
          {{reference}} Indicates the ''Policer'' table entry for traffic that
          falls in this flow.

          {{empty}} indicates a null policer.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.Policer."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="DSCPMark" access="readWrite">
        <description>
          DSCP to mark traffic with that falls into this flow.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of DSCP based upon the
          EthernetPriority value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="EthernetPriorityMark" access="readWrite">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          traffic with that falls into this flow.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="InnerEthernetPriorityMark" access="readWrite"
          version="2.7">
        <description>
          Ethernet priority code (as defined in {{bibref|802.1Q-2011}}) to mark
          the inner VLAN Tags with for traffic that falls into this flow.

          A value of -1 indicates no change from the incoming packet.

          A value of -2 indicates automatic marking of EthernetPriority based
          upon the DSCP value of the incoming packet as defined in
          {{bibref|TR-181i2|Annex A}}.
        </description>
        <syntax>
          <int>
            <range minInclusive="-2"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Policer.{i}." access="readWrite"
        numEntriesParameter="PolicerNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Policer table.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this policer.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this policer. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="CommittedRate" access="readWrite">
        <description>
          Committed rate allowed for this policer in {{units}}.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <unsignedLong>
            <units value="bits per second"/>
          </unsignedLong>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="CommittedBurstSize" access="readWrite">
        <description>
          Committed Burstsize in {{units}}.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="ExcessBurstSize" access="readWrite">
        <description>
          Excess Burstsize in {{units}}.

          Applied for a {{enum|SingleRateThreeColor|MeterType}} meter.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="PeakRate" access="readWrite">
        <description>
          Peak rate allowed for this Meter in {{units}}.

          Applied for {{enum|TwoRateThreeColor|MeterType}} meters.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <unsignedLong>
            <units value="bits per second"/>
          </unsignedLong>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="PeakBurstSize" access="readWrite">
        <description>
          Peak Burstsize in {{units}}.

          Applied for {{enum|TwoRateThreeColor|MeterType}} meters.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="MeterType" access="readWrite">
        <description>
          Identifies the method of traffic measurement to be used for this
          policer.

          {{enum|SimpleTokenBucket}} makes use of {{param|CommittedRate}} and
          {{param|CommittedBurstSize}}.

          {{enum|SingleRateThreeColor}} makes use of {{param|CommittedRate}},
          {{param|CommittedBurstSize}}, and {{param|ExcessBurstSize}} as
          defined in {{bibref|RFC2697}}.

          {{enum|TwoRateThreeColor}} makes use of {{param|CommittedRate}},
          {{param|CommittedBurstSize}}, {{param|PeakRate}}, and
          {{param|PeakBurstSize}} as defined in {{bibref|RFC2698}}.
        </description>
        <syntax>
          <string>
            <enumerationRef targetParam="PossibleMeterTypes"/>
          </string>
          <default type="object" value="SimpleTokenBucket"/>
        </syntax>
      </parameter>

      <parameter name="PossibleMeterTypes" access="readOnly">
        <description>
          {{list}} Indicates supported meter types.
        </description>
        <syntax>
          <list/>
          <string>
            <enumeration value="SimpleTokenBucket"/>
            <enumeration value="SingleRateThreeColor"/>
            <enumeration value="TwoRateThreeColor"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ConformingAction" access="readWrite">
        <description>
          Instructions for how to handle traffic that is conforming.
          {{pattern}}

          {{pattern|Null}} corresponds with no action.

          ''&lt;DSCP Value&gt;'' is an unsigned integer that corresponds with a
          mark action overwriting the traffic's DSCP with the configured DSCP.

          ''&lt;:Ethernet Priority&gt;'' is a colon (":") followed by an
          unsigned integer (no white space). It corresponds with a mark action
          overwriting the traffic's Ethernet Priority with the configured
          Ethernet Priority.

          ''&lt;DSCP Value:Ethernet Priority&gt;'' is an unsigned integer
          followed by a colon (":") and a second unsigned integer (no white
          space). It corresponds with a mark action overwriting the traffic's
          DSCP and Ethernet Priority with the configured values.

          For example, "24" specifies a DSCP value of 24, ":3" specifies an
          Ethernet Priority of 3, and "24:3" specifies both.
        </description>
        <syntax>
          <string>
            <pattern value="Null"/>
            <pattern value="Drop"/>
            <pattern value="[0-9]|[1-5][0-9]|6[0-3]">
              <description>&lt;DSCP Value&gt;</description>
            </pattern>
            <pattern value=":[0-7]">
              <description>&lt;Ethernet Priority&gt;</description>
            </pattern>
            <pattern value="([0-9]|[1-5][0-9]|6[0-3]):[0-7]">
              <description>&lt;DSCP Value:Ethernet Priority&gt;</description>
            </pattern>
          </string>
          <default type="object" value="Null"/>
        </syntax>
      </parameter>

      <parameter name="PartialConformingAction" access="readWrite">
        <description>
          Instructions for how to handle traffic that is partially conforming
          (colored yellow). {{pattern}}

          {{pattern|Null}} corresponds with no action.

          ''&lt;DSCP Value&gt;'' is an unsigned integer that corresponds with a
          mark action overwriting the traffic's DSCP with the configured
          DSCP.Only applies for three-color meters.

          ''&lt;:Ethernet Priority&gt;'' is a colon (":") followed by an
          unsigned integer (no white space). It corresponds with a mark action
          overwriting the traffic's Ethernet Priority with the configured
          Ethernet Priority.

          ''&lt;DSCP Value:Ethernet Priority&gt;'' is an unsigned integer
          followed by a colon (":") and a second unsigned integer (no white
          space). It corresponds with a mark action overwriting the traffic's
          DSCP and Ethernet Priority with the configured values.

          For example, "24" specifies a DSCP value of 24, ":3" specifies an
          Ethernet Priority of 3, and "24:3" specifies both.
        </description>
        <syntax>
          <string>
            <pattern value="Null"/>
            <pattern value="Drop"/>
            <pattern value="[0-9]|[1-5][0-9]|6[0-3]">
              <description>&lt;DSCP Value&gt;</description>
            </pattern>
            <pattern value=":[0-7]">
              <description>&lt;Ethernet Priority&gt;</description>
            </pattern>
            <pattern value="([0-9]|[1-5][0-9]|6[0-3]):[0-7]">
              <description>&lt;DSCP Value:Ethernet Priority&gt;</description>
            </pattern>
          </string>
          <default type="object" value="Drop"/>
        </syntax>
      </parameter>

      <parameter name="NonConformingAction" access="readWrite">
        <description>
          Instructions for how to handle traffic that is non-conforming.
          {{pattern}}

          {{pattern|Null}} corresponds with no action.

          ''&lt;DSCP Value&gt;'' is an unsigned integer that corresponds with a
          mark action overwriting the traffic's DSCP with the configured DSCP.

          ''&lt;:Ethernet Priority&gt;'' is a colon (":") followed by an
          unsigned integer (no white space). It corresponds with a mark action
          overwriting the traffic's Ethernet Priority with the configured
          Ethernet Priority.

          ''&lt;DSCP Value:Ethernet Priority&gt;'' is an unsigned integer
          followed by a colon (":") and a second unsigned integer (no white
          space). It corresponds with a mark action overwriting the traffic's
          DSCP and Ethernet Priority with the configured values.

          For example, "24" specifies a DSCP value of 24, ":3" specifies an
          Ethernet Priority of 3, and "24:3" specifies both.
        </description>
        <syntax>
          <string>
            <pattern value="Null"/>
            <pattern value="Drop"/>
            <pattern value="[0-9]|[1-5][0-9]|6[0-3]">
              <description>&lt;DSCP Value&gt;</description>
            </pattern>
            <pattern value=":[0-7]">
              <description>&lt;Ethernet Priority&gt;</description>
            </pattern>
            <pattern value="([0-9]|[1-5][0-9]|6[0-3]):[0-7]">
              <description>&lt;DSCP Value:Ethernet Priority&gt;</description>
            </pattern>
          </string>
          <default type="object" value="Drop"/>
        </syntax>
      </parameter>

      <parameter name="TotalCountedPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Total number of Packets counted by this policer, regardless of meter
          action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="TotalCountedBytes" access="readOnly"
          activeNotify="canDeny">
        <description>
          Total number of Bytes counted by this policer, regardless of meter
          action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="ConformingCountedPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of conforming Packets counted by this policer, regardless of
          meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="ConformingCountedBytes" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of conforming Bytes counted by this policer, regardless of
          meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="PartiallyConformingCountedPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of partially conforming Packets counted by this policer,
          regardless of meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="PartiallyConformingCountedBytes" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of partially conforming Bytes counted by this policer,
          regardless of meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="NonConformingCountedPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of non-conforming Packets counted by this policer, regardless
          of meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="NonConformingCountedBytes" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of non-conforming Bytes counted by this policer, regardless of
          meter action.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Queue.{i}." access="readWrite"
        numEntriesParameter="QueueNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Queue table. Each entry is associated with a set of traffic classes,
        which are specified via the {{param|TrafficClasses}} parameter, and is
        configured with weight, precedence, drop algorithm, scheduler algorithm
        etc as appropriate for the traffic classes. An entry can be associated
        either with all egress interfaces (in which case an actual queue will
        be instantiated on each egress interface on which traffic of that
        traffic class can be generated) or else with a single specified egress
        interface.

        For enabled table entries, if {{param|Interface}} is not a valid
        reference and {{param|AllInterfaces}} is {{false}}, then the table
        entry is inoperable and the CPE MUST set {{param|Status}} to
        {{enum|Error_Misconfigured|Status}}.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this queue.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this queue. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Children" access="readWrite" version="2.16">
        <description>
          {{list}} Each reference can be associated with another
          {{object|##.QoS.Queue.{i}}}, {{object|##.QoS.Shaper.{i}}},
          {{object|##.QoS.Scheduler.{i}}} instance object. The references in
          this parameter are used to build a hierarchy.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="TrafficClasses" access="readWrite">
        <description>
          {{list}} Each list item identifies the set of traffic classes
          associated with this queue.

          Traffic is sent to this queue if a {{object|#.Classification}},
          {{object|#.App}} or {{object|#.Flow}} table entry specifies a traffic
          class, e.g. via the {{param|#.Classification.{i}.TrafficClass}}
          parameter.

          If more than one queue on a given egress interface is associated with
          a given traffic class, the implementation will choose which queue to
          send traffic of this class to.
        </description>
        <syntax>
          <list>
            <size maxLength="256"/>
          </list>
          <unsignedInt/>
          <default type="object" value="[]"/>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          {{reference}} Specifies the egress interface for which the specified
          queue MUST exist.

          This MAY be a layer 1, 2 or 3 interface, however, the types of
          interfaces for which ''Queues'' can be instantiated is a local matter
          to the CPE.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="AllInterfaces" access="readWrite">
        <description>
          Indicates that the specified queue MUST exist for all egress
          interfaces (i.e. this queue entry is to apply to all egress
          interfaces). If {{true}}, the value of {{param|Interface}} is ignored
          since all egress interfaces are indicated.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="HardwareAssisted" access="readOnly">
        <description>
          Indicates whether ''all'' the queues corresponding to this table
          entry are hardware assisted. If any of the queues corresponding to
          this table entry are not hardware assisted, the parameter value MUST
          be {{false}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="BufferLength" access="readOnly">
        <description>
          Number of {{units}} in the buffer.

          Queue buffer size for all egress interfaces for which this queue
          exists. If the buffer size is not the same for all such egress
          interfaces, this parameter MUST be 0.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="Weight" access="readWrite">
        <description>
          Weight of this queue in case of {{enum|WFQ|SchedulerAlgorithm}} or
          {{enum|WRR|SchedulerAlgorithm}}, but only used for queues of equal
          precedence.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="Precedence" access="readWrite">
        <description>
          Precedence of this queue relative to others. Lower numbers imply
          greater precedence.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1"/>
          </unsignedInt>
          <default type="object" value="1"/>
        </syntax>
      </parameter>

      <parameter name="REDThreshold" access="readWrite">
        <description>
          Random Early Detection threshold, used only when
          {{param|DropAlgorithm}} is {{enum|RED|DropAlgorithm}}.

          This is the minimum threshold (''min_th'') and is measured as a
          percentage of the queue size. If the value is set to zero, the CPE
          MUST choose a sensible value, e.g. 5 (but the value MUST still read
          back as zero).

          In this version of the data model, there is no way to set the maximum
          threshold (''max_th''). The CPE MUST choose a sensible value, e.g.
          three times the minimum threshold.

          In this version of the data model, there is no way to set the RED
          weight (''w_q''). The CPE MUST choose a sensible value, e.g. 0.002.
        </description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="100"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="REDPercentage" access="readWrite">
        <description>
          Random Early Detection percentage, used only when
          {{param|DropAlgorithm}} is {{enum|RED|DropAlgorithm}}.

          This is the maximum value of the packet marking probability
          (''max_p''). If the value is set to zero, the CPE MUST choose a
          sensible value, e.g. 10 (but the value MUST still read back as zero).

          In this version of the data model, there is no way to set the RED
          weight (''w_q''). The CPE MUST choose a sensible value, e.g. 0.002.
        </description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="100"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DropAlgorithm" access="readWrite">
        <description>
          Dropping algorithm used for this queue if congested.
        </description>
        <syntax>
          <string>
            <enumeration value="RED">
              <description>Random Early Detection {{bibref|RED}}</description>
            </enumeration>
            <enumeration value="DT">
              <description>Drop Tail</description>
            </enumeration>
            <enumeration value="WRED">
              <description>Weighted RED</description>
            </enumeration>
            <enumeration value="BLUE">
              <description>{{bibref|BLUE}}</description>
            </enumeration>
          </string>
          <default type="object" value="DT"/>
        </syntax>
      </parameter>

      <parameter name="SchedulerAlgorithm" access="readWrite">
        <description>
          Scheduling Algorithm used by scheduler.
        </description>
        <syntax>
          <string>
            <enumeration value="WFQ">
              <description>Weighted Fair Queueing</description>
            </enumeration>
            <enumeration value="WRR">
              <description>Weighted Round Robin</description>
            </enumeration>
            <enumeration value="SP">
              <description>Strict Priority</description>
            </enumeration>
          </string>
          <default type="object" value="SP"/>
        </syntax>
      </parameter>

      <parameter name="ShapingRate" access="readWrite">
        <description>
          Rate to shape this queue's traffic to. For leaky bucket (constant
          rate shaping), this is the constant rate. For token bucket (variable
          rate shaping), this is the average rate.

          If &lt;= 100, in percent of the rate of the highest rate-constrained
          layer over which the packet will travel on egress.

          If &gt; 100, in bits per second.

          A value of -1 indicates no shaping.

          For example, for packets destined for a WAN DSL interface, if the
          egress will be on a PPP or IP link with a specified ''ShapingRate'',
          the percentage is calculated relative to this rate. Otherwise, if the
          ATM layer is rate-constrained, then the rate is calculated relative
          to this rate. Otherwise, the rate is calculated relative to the
          physical-layer DSL rate.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="CurrentShapingRate" access="readOnly" version="2.16">
        <description>
          If the Queue is active, the CurrentShapingRate must reflect the
          actual configured ShapingRate, in {{units}} per second. -1 means no
          rate due to do Queue not active.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
            <units value="bits per second"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="AssuredRate" access="readWrite" version="2.16">
        <description>
          Minimum rate to shape this queue's traffic to.

          If &lt;= 100, in percent of the rate of the highest rate-constrained
          layer over which the packet will travel on egress.

          If &gt; 100, in bits per second.

          A value of -1 indicates no shaping.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="CurrentAssuredRate" access="readOnly" version="2.16">
        <description>
          If the Queue is active, the CurrentAssuredRate must reflect the
          actual configured AssuredRate, in bits per second. -1 means no rate
          due to do Queue not active.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="ShapingBurstSize" access="readWrite">
        <description>
          Burst size in {{units}}. For both leaky bucket (constant rate shaping)
          and token bucket (variable rate shaping) this is the bucket size and
          is therefore the maximum burst size.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.QueueStats.{i}." access="readWrite"
        numEntriesParameter="QueueStatsNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.0">
      <description>
        Queue statistics table. This table is managed by the Controller, which
        will create entries only for those {Queue, Interface} combinations for
        which statistics are to be collected.

        Note: The {{object}} table includes unique key parameters that are
        strong references. If a strongly referenced object is deleted, the CPE
        will set the referencing parameter to {{empty}}. However, doing so
        under these circumstances might cause the updated {{object}} row to
        then violate the table's unique key constraint; if this occurs, the CPE
        MUST disable the offending {{object}} row.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="Queue"/>
        <parameter ref="Interface"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this object.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this object.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled">
              <description>Enabled and {Queue,Interface} is valid</description>
            </enumeration>
            <enumeration value="Error">
              <description>
                Enabled but {Queue,Interface} is invalid
              </description>
            </enumeration>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Queue" access="readWrite">
        <description>
          {{reference}} Indicates ''Queue'' entry with which this object is
          associated.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="#.Queue." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          {{reference}} Specifies the egress interface for which this object
          contains statistics.

          This MAY be a layer 1, 2 or 3 interface, however, the types of
          interfaces for which ''QueueStats'' can be instantiated is a local
          matter to the CPE.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="OutputPackets" access="readOnly" activeNotify="canDeny">
        <description>
          Number of packets output through the queue.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="OutputBytes" access="readOnly" activeNotify="canDeny">
        <description>
          Number of {{units}} output through the queue.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DroppedPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Number of packets dropped by the queue.
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="DroppedBytes" access="readOnly" activeNotify="canDeny">
        <description>
          Number of {{units}} dropped by the queue.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="QueueOccupancyPackets" access="readOnly"
          activeNotify="canDeny">
        <description>
          Queue occupancy in packets (gives a measure of queue latency).
        </description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>

      <parameter name="QueueOccupancyPercentage" access="readOnly"
          activeNotify="canDeny">
        <description>
          Queue occupancy measured as a {{units}}, i.e. 100 * queue occupancy
          in bytes / queue size in bytes (gives a measure of queue usage).
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="100"/>
            <units value="percent"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Shaper.{i}." access="readWrite"
        numEntriesParameter="ShaperNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.0">
      <description>
        Shaper table. Used to shape the queue(s) associated with
        {{param|Interface}}. In case of a single queue for that interface,
        determines the egress rate of the queue. In case of multiple queues for
        that interface (possibly with per queue shaping rates), determines the
        aggregate egress rate on that interface.

        For enabled table entries, if {{param|Interface}} is not a valid
        reference then the table entry is inoperable and the CPE MUST set
        {{param|Status}} to {{enum|Error_Misconfigured|Status}}.

        Note: The {{object}} table includes a unique key parameter that is a
        strong reference. If a strongly referenced object is deleted, the CPE
        will set the referencing parameter to {{empty}}. However, doing so
        under these circumstances might cause the updated {{object}} row to
        then violate the table's unique key constraint; if this occurs, the CPE
        MUST set {{param|Status}} to {{enum|Error_Misconfigured|Status}} and
        disable the offending {{object}} row.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="Interface"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this shaper.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this shaper. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Children" access="readWrite" version="2.16">
        <description>
          {{list}} Each reference can be associated with another
          {{object|##.QoS.Queue.{i}}}, {{object|##.QoS.Shaper.{i}}},
          {{object|##.QoS.Scheduler.{i}}} instance object. The references in
          this parameter are used to build a hierarchy.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          {{reference}}The interface object associated with this ''Shaper''
          entry. It MAY be a layer 1, 2 or 3 interface, however, the types of
          interfaces for which ''Shapers'' can be instantiated is a local
          matter to the CPE.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="ShapingRate" access="readWrite">
        <description>
          Rate to shape the associated interface connection's egress traffic
          to. For leaky bucket (constant rate shaping), this is the constant
          rate. For token bucket (variable rate shaping), this is the average
          rate.

          If &lt;= 100, in percent of the rate of the highest rate-constrained
          layer over which the packet will travel on egress.

          If &gt; 100, in bits per second.

          A value of -1 indicates no shaping.

          For example, for packets destined for a WAN DSL interface, if the ATM
          layer is rate-constrained, then the rate is calculated relative to
          this rate. Otherwise, the rate is calculated relative to the
          physical-layer DSL rate.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.

        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="ShapingBurstSize" access="readWrite">
        <description>
          Burst size in {{units}}. For both leaky bucket (constant rate shaping)
          and token bucket (variable rate shaping) this is the bucket size and
          is therefore the maximum burst size.
        </description>
        <syntax>
          <unsignedInt>
            <units value="bytes"/>
          </unsignedInt>
        </syntax>
      </parameter>
    </object>

    <object name="Device.QoS.Scheduler.{i}." access="readWrite"
        numEntriesParameter="SchedulerNumberOfEntries" enableParameter="Enable"
        minEntries="0" maxEntries="unbounded" version="2.16">
      <description>
        Scheduler table. Each entry is used to model a scheduler object.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this scheduler.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this scheduler. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Children" access="readWrite" version="2.16">
        <description>
          {{list}} Each reference can be associated with another
          {{object|##.QoS.Queue.{i}}}, {{object|##.QoS.Shaper.{i}}},
          {{object|##.QoS.Scheduler.{i}}} instance object. The references in
          this parameter are used to build a hierarchy.
        </description>
        <syntax>
          <list/>
          <string>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          {{reference}} Specifies the egress interface for which the specified
          queue MUST exist.

          This MAY be a layer 1, 2 or 3 interface, however, the types of
          interfaces for which ''Queues'' can be instantiated is a local matter
          to the CPE.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="SchedulerAlgorithm" access="readWrite">
        <description>
          Scheduling Algorithm used by scheduler.
        </description>
        <syntax>
          <string>
            <enumeration value="WFQ">
              <description>Weighted Fair Queueing</description>
            </enumeration>
            <enumeration value="WRR">
              <description>Weighted Round Robin</description>
            </enumeration>
            <enumeration value="SP">
              <description>Strict Priority</description>
            </enumeration>
          </string>
          <default type="object" value="SP"/>
        </syntax>
      </parameter>

      <parameter name="ShapingRate" access="readWrite">
        <description>
          Rate to shape this scheduler's traffic to. For leaky bucket (constant
          rate shaping), this is the constant rate. For token bucket (variable
          rate shaping), this is the average rate.

          If &lt;= 100, in percent of the rate of the highest rate-constrained
          layer over which the packet will travel on egress.

          If &gt; 100, in bits per second.

          A value of -1 indicates no shaping.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="AssuredRate" access="readWrite">
        <description>
          Minimum guaranteed rate to shape this scheduler's traffic to.

          Must be &gt; 0 and &lt; ShapingRate, for a valid rate.

          A value of -1 indicates the ShapingRate's value is not used.

          Note: To be able to support higher bit rates, this parameter was changed to unsignedLong in the Device:2.18 version.
        </description>
        <syntax>
          <long>
            <range minInclusive="-1"/>
          </long>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>

      <parameter name="DefaultQueue" access="readWrite">
        <description>
          The value MUST be the Path Name for a {{object|##.QoS.Queue.{i}}}
          instance. If the referenced object is deleted, the parameter value
          MUST be set to an empty string.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <profile name="ProviderBridgeQoS:1" version="2.7">
      <object ref="Device.QoS." requirement="present">
        <parameter ref="DefaultInnerEthernetPriorityMark"
            requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Classification.{i}." requirement="createDelete">
        <parameter ref="InnerEthernetPriorityCheck" requirement="readWrite"/>
        <parameter ref="InnerEthernetPriorityExclude" requirement="readWrite"/>
        <parameter ref="InnerEthernetPriorityMark" requirement="readWrite"/>
        <parameter ref="EthernetDEICheck" requirement="readWrite"/>
        <parameter ref="EthernetDEIExclude" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="QoS:1" version="2.0">
      <object ref="Device.QoS." requirement="present">
        <parameter ref="MaxClassificationEntries" requirement="readOnly"/>
        <parameter ref="ClassificationNumberOfEntries" requirement="readOnly"/>
        <parameter ref="MaxAppEntries" requirement="readOnly"/>
        <parameter ref="AppNumberOfEntries" requirement="readOnly"/>
        <parameter ref="MaxFlowEntries" requirement="readOnly"/>
        <parameter ref="FlowNumberOfEntries" requirement="readOnly"/>
        <parameter ref="MaxPolicerEntries" requirement="readOnly"/>
        <parameter ref="PolicerNumberOfEntries" requirement="readOnly"/>
        <parameter ref="MaxQueueEntries" requirement="readOnly"/>
        <parameter ref="QueueNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ShaperNumberOfEntries" requirement="readOnly"/>
        <parameter ref="DefaultForwardingPolicy" requirement="readWrite"/>
        <parameter ref="DefaultPolicer" requirement="readWrite"/>
        <parameter ref="DefaultQueue" requirement="readWrite"/>
        <parameter ref="DefaultDSCPMark" requirement="readWrite"/>
        <parameter ref="DefaultEthernetPriorityMark" requirement="readWrite"/>
        <parameter ref="AvailableAppList" requirement="readOnly"/>
        <parameter ref="DefaultTrafficClass" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Classification.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Order" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="AllInterfaces" requirement="readWrite"/>
        <parameter ref="DestIP" requirement="readWrite"/>
        <parameter ref="DestMask" requirement="readWrite"/>
        <parameter ref="DestIPExclude" requirement="readWrite"/>
        <parameter ref="SourceIP" requirement="readWrite"/>
        <parameter ref="SourceMask" requirement="readWrite"/>
        <parameter ref="SourceIPExclude" requirement="readWrite"/>
        <parameter ref="Protocol" requirement="readWrite"/>
        <parameter ref="ProtocolExclude" requirement="readWrite"/>
        <parameter ref="DestPort" requirement="readWrite"/>
        <parameter ref="DestPortRangeMax" requirement="readWrite"/>
        <parameter ref="DestPortExclude" requirement="readWrite"/>
        <parameter ref="SourcePort" requirement="readWrite"/>
        <parameter ref="SourcePortRangeMax" requirement="readWrite"/>
        <parameter ref="SourcePortExclude" requirement="readWrite"/>
        <parameter ref="SourceMACAddress" requirement="readWrite"/>
        <parameter ref="SourceMACExclude" requirement="readWrite"/>
        <parameter ref="DestMACAddress" requirement="readWrite"/>
        <parameter ref="DestMACExclude" requirement="readWrite"/>
        <parameter ref="DSCPCheck" requirement="readWrite"/>
        <parameter ref="DSCPExclude" requirement="readWrite"/>
        <parameter ref="DSCPMark" requirement="readWrite"/>
        <parameter ref="EthernetPriorityCheck" requirement="readWrite"/>
        <parameter ref="EthernetPriorityExclude" requirement="readWrite"/>
        <parameter ref="EthernetPriorityMark" requirement="readWrite"/>
        <parameter ref="VLANIDCheck" requirement="readWrite"/>
        <parameter ref="VLANIDExclude" requirement="readWrite"/>
        <parameter ref="ForwardingPolicy" requirement="readWrite"/>
        <parameter ref="Policer" requirement="readWrite"/>
        <parameter ref="TrafficClass" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Policer.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="CommittedRate" requirement="readWrite"/>
        <parameter ref="CommittedBurstSize" requirement="readWrite"/>
        <parameter ref="MeterType" requirement="readWrite"/>
        <parameter ref="PossibleMeterTypes" requirement="readOnly"/>
        <parameter ref="ConformingAction" requirement="readWrite"/>
        <parameter ref="NonConformingAction" requirement="readWrite"/>
        <parameter ref="TotalCountedPackets" requirement="readOnly"/>
        <parameter ref="TotalCountedBytes" requirement="readOnly"/>
        <parameter ref="ExcessBurstSize" requirement="readWrite"/>
        <parameter ref="PeakRate" requirement="readWrite"/>
        <parameter ref="PeakBurstSize" requirement="readWrite"/>
        <parameter ref="PartialConformingAction" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Queue.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="AllInterfaces" requirement="readWrite"/>
        <parameter ref="BufferLength" requirement="readOnly"/>
        <parameter ref="Weight" requirement="readWrite"/>
        <parameter ref="Precedence" requirement="readWrite"/>
        <parameter ref="REDThreshold" requirement="readWrite"/>
        <parameter ref="REDPercentage" requirement="readWrite"/>
        <parameter ref="DropAlgorithm" requirement="readWrite"/>
        <parameter ref="SchedulerAlgorithm" requirement="readWrite"/>
        <parameter ref="ShapingRate" requirement="readWrite"/>
        <parameter ref="ShapingBurstSize" requirement="readWrite"/>
        <parameter ref="TrafficClasses" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Shaper.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="ShapingRate" requirement="readWrite"/>
        <parameter ref="ShapingBurstSize" requirement="readWrite"/>
      </object>
      <object ref="Device.Routing.Router.{i}.IPv4Forwarding.{i}."
          requirement="notSpecified">
        <parameter ref="ForwardingPolicy" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="QoS:2" base="QoS:1" version="2.2">
      <object ref="Device.Routing.Router.{i}.IPv4Forwarding.{i}."
          requirement="notSpecified">
        <description>
          REQUIRED only for IPv4 capable devices.
        </description>
      </object>
      <object ref="Device.Routing.Router.{i}.IPv6Forwarding.{i}."
          requirement="notSpecified">
        <description>
          REQUIRED only for IPv6 capable devices.
        </description>
        <parameter ref="ForwardingPolicy" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="QoSDynamicFlow:1" version="2.0">
      <object ref="Device.QoS.App.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="ProtocolIdentifier" requirement="readWrite"/>
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="DefaultForwardingPolicy" requirement="readWrite"/>
        <parameter ref="DefaultPolicer" requirement="readWrite"/>
        <parameter ref="DefaultDSCPMark" requirement="readWrite"/>
        <parameter ref="DefaultEthernetPriorityMark" requirement="readWrite"/>
        <parameter ref="DefaultTrafficClass" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Flow.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Type" requirement="readWrite"/>
        <parameter ref="TypeParameters" requirement="readWrite"/>
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="App" requirement="readWrite"/>
        <parameter ref="ForwardingPolicy" requirement="readWrite"/>
        <parameter ref="Policer" requirement="readWrite"/>
        <parameter ref="DSCPMark" requirement="readWrite"/>
        <parameter ref="EthernetPriorityMark" requirement="readWrite"/>
        <parameter ref="TrafficClass" requirement="readWrite"/>
      </object>
      <object ref="Device.QoS.Classification.{i}." requirement="notSpecified">
        <parameter ref="App" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="QoSStats:1" version="2.0">
      <object ref="Device.QoS." requirement="present">
        <parameter ref="QueueStatsNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.QoS.Policer.{i}." requirement="notSpecified">
        <parameter ref="TotalCountedPackets" requirement="readOnly"/>
        <parameter ref="TotalCountedBytes" requirement="readOnly"/>
        <parameter ref="ConformingCountedPackets" requirement="readOnly"/>
        <parameter ref="ConformingCountedBytes" requirement="readOnly"/>
        <parameter ref="NonConformingCountedPackets" requirement="readOnly"/>
        <parameter ref="NonConformingCountedBytes" requirement="readOnly"/>
      </object>
      <object ref="Device.QoS.QueueStats.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Queue" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="OutputPackets" requirement="readOnly"/>
        <parameter ref="OutputBytes" requirement="readOnly"/>
        <parameter ref="DroppedPackets" requirement="readOnly"/>
        <parameter ref="DroppedBytes" requirement="readOnly"/>
        <parameter ref="QueueOccupancyPackets" requirement="readOnly"/>
        <parameter ref="QueueOccupancyPercentage" requirement="readOnly"/>
      </object>
    </profile>
  </component>

  <model name="QoS:2.19">
    <component ref="Root"/>
    <component ref="QoS"/>
  </model>
</dm:document>
