<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  TR-069 Device:2.2 Root Object definition

  Notice:
    The Broadband Forum is a non-profit corporation organized to create
    guidelines for broadband network system development and deployment.
    This Broadband Forum Document has been approved by members of the
    Forum. This Broadband Forum Document is not binding on the Broadband
    Forum, any of its members, or any developer or service provider.
    This Broadband Forum Document is subject to change, but only with
    approval of members of the Forum.  This Document is copyrighted by
    the Broadband Forum, and all rights are reserved.  Portions of this
    Document may be copyrighted by Broadband Forum members.

    This Broadband Forum Document is provided AS IS, WITH ALL FAULTS.
    ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM DOCUMENT,
    OR ANY PORTION THEREOF, DISCLAIMS TO THE FULLEST EXTENT PERMITTED
    BY LAW ANY REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED,
    INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY: 

    (a) OF ACCURACY, COMPLETENESS, MERCHANTABILITY, FITNESS FOR A
        PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
    (b) THAT THE CONTENTS OF THIS BROADBAND FORUM DOCUMENT ARE SUITABLE
        FOR ANY PURPOSE, EVEN IF THAT PURPOSE IS KNOWN TO THE COPYRIGHT
        HOLDER;
    (c) THAT THE IMPLEMENTATION OF THE CONTENTS OF THE DOCUMENT WILL NOT
        INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR
        OTHER RIGHTS.

    By using this Broadband Forum Document, users acknowledge that
    implementation may require licenses to patents.  The Broadband Forum
    encourages but does not require its members to identify such
    patents.  For a list of declarations made by Broadband Forum member
    companies, please see http://www.broadband-forum.org.  No assurance
    is given that licenses to patents necessary to implement this
    Document will be available for license at all or on reasonable and
    non-discriminatory terms.

    ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM DOCUMENT, OR
    ANY PORTION THEREOF, DISCLAIMS TO THE FULLEST EXTENT PERMITTED BY
    LAW (A) ANY LIABILITY (INCLUDING DIRECT, INDIRECT, SPECIAL, OR
    CONSEQUENTIAL DAMAGES UNDER ANY LEGAL THEORY) ARISING FROM OR
    RELATED TO THE USE OF OR RELIANCE UPON THIS DOCUMENT; AND (B) ANY
    OBLIGATION TO UPDATE OR CORRECT THIS DOCUMENT.

    Broadband Forum Documents may be copied, downloaded, stored on a
    server or otherwise re-distributed in their entirety only, and may
    not be modified without the advance written permission of the
    Broadband Forum.

    The text of this notice must be included in all copies of this
    Broadband Forum Document.
  
  Summary:
    TR-069 Device:2.2 Root Object definition.
  
  Version History:
    * May 2010: tr-181-2-0-0.xml, corresponds to TR-181 Issue 2.
    * November 2010: tr-181-2-1-0.xml, 
        corresponds to TR-181 Issue 2 Amendment 1.
    * March 2011: tr-181-2-2-0,
        corresponds to TR-181 Issue 2 Amendment 2.
-->

<dm:document xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-3" 
    xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-0-1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:broadband-forum-org:cwmp:datamodel-1-3 cwmp-datamodel-1-3.xsd 
                        urn:broadband-forum-org:cwmp:datamodel-report-0-1 cwmp-datamodel-report.xsd" 
    spec="urn:broadband-forum-org:tr-181-2-2-0">
  <description>Device:2.2 data model (IPv6 and Firewall additions).</description>

  <import file="tr-106-1-0-types.xml" spec="urn:broadband-forum-org:tr-106-1-0">
    <dataType name="IPPrefix"/>
    <dataType name="IPAddress"/>
    <dataType name="IPv6Address"/>
    <dataType name="IPv6Prefix"/>
    <dataType name="IPv4Address"/>
    <dataType name="MACAddress"/>
  </import>

  <import file="tr-181-2-1.xml" spec="urn:broadband-forum-org:tr-181-2-1">
    <component name="DeviceInfo"/>
    <component name="Time"/>
    <component name="_UserInterface" ref="UserInterface"/>
    <model name="Device:2.1"/>
  </import>
  
  <component name="UserInterfaceDiffs">
    <object base="UserInterface." access="readOnly" minEntries="1" maxEntries="1">
      <parameter base="PasswordReset" access="readWrite">
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>
  </component>
  
  <component name="UserInterface">
    <component ref="_UserInterface"/>
    <component ref="UserInterfaceDiffs"/>
  </component>
  
  <!-- Device:2.2 Data Model -->
  
  <model name="Device:2.2" base="Device:2.1">
  
    <!-- Device:2 (common objects) updated components -->
    <component path="Device." ref="UserInterfaceDiffs"/>

    <object base="Device.ManagementServer." access="readOnly" minEntries="1" maxEntries="1">
      <parameter base="ConnectionRequestURL" access="readOnly" forcedInform="true" activeNotify="forceDefaultEnabled">
        <description action="append">Note: If the ''host'' portion of the URL is a literal IPv6 address then it MUST be enclosed in square brackets (see {{bibref|RFC3986|Section 3.2.2}}).</description>
      </parameter>
      <parameter base="UDPConnectionRequestAddress" access="readOnly">
        <description action="append">Note: If the ''host'' portion of the URL is a literal IPv6 address then it MUST be enclosed in square brackets (see {{bibref|RFC3986|Section 3.2.2}}).</description>
      </parameter>
    </object>

    <object base="Device.PPP." access="readOnly" minEntries="1" maxEntries="1">
      <parameter name="SupportedNCPs" access="readOnly">
        <description>The Network Control Protocols (NCPs) that are supported by the device. {{enum}}
Note that {{enum|IPv6CP}} is an IPv6 capability.</description>
        <syntax>
          <list/>
          <string>
            <enumeration value="ATCP">
              <description>AppleTalk Control Protocol {{bibref|RFC1378}}</description>
            </enumeration>
            <enumeration value="IPCP">
              <description>{{bibref|RFC1332}}</description>
            </enumeration>
            <enumeration value="IPXCP">
              <description>{{bibref|RFC1552}}</description>
            </enumeration>
            <enumeration value="NBFCP">
              <description>{{bibref|RFC2097}}</description>
            </enumeration>
            <enumeration value="IPv6CP">
              <description>{{bibref|RFC5072}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.PPP.Interface.{i}." access="readWrite" minEntries="0" maxEntries="unbounded"> 
      <parameter name="IPCPEnable" access="readWrite">
        <description>Enables or disables IPCP ({{bibref|RFC1332}}) on this interface.  If this parameter is present, {{enum|IPCP|#.SupportedNCPs}} MUST be included in {{param|#.SupportedNCPs}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv6CPEnable" access="readWrite">
        <description>Enables or disables IPv6CP ({{bibref|RFC5072}}) on this interface.  If this parameter is present, {{enum|IPv6CP|#.SupportedNCPs}} MUST be included in {{param|#.SupportedNCPs}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter base="Reset" access="readWrite">
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.PPP.Interface.{i}.PPPoA." access="readOnly" minEntries="0" maxEntries="1">
      <description>PPPoA object that functionally groups PPPoA related parameters.</description>
    </object>

    <object name="Device.PPP.Interface.{i}.IPv6CP." access="readOnly" minEntries="1" maxEntries="1" dmr:previousObject="Device.PPP.Interface.{i}.IPCP.">
      <description>IPv6 Control Protocol (IPv6CP) client object for this PPP interface {{bibref|RFC5072}}. {{object}} only applies to IPv6.</description>
      <parameter name="LocalInterfaceIdentifier" access="readOnly">
        <description>The interface identifier for the local end of the PPP link, negotiated using the IPv6CP ''Interface-Identifier'' option {{bibref|RFC5072|Section 4.1}}.
The identifier is represented as the rightmost 64 bits of an IPv6 address (the leftmost 64 bits MUST be zero and MUST be ignored by the recipient).</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="RemoteInterfaceIdentifier" access="readOnly">
        <description>The interface identifier for the remote end of the PPP link, negotiated using the IPv6CP ''Interface-Identifier'' option {{bibref|RFC5072|Section 4.1}}.
The identifier is represented as the rightmost 64 bits of an IPv6 address (the leftmost 64 bits MUST be zero and MUST be ignored by the recipient).</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.IP." access="readOnly" minEntries="1" maxEntries="1">
      <parameter name="IPv4Enable" access="readWrite" dmr:previousParameter="IPv4Capable">
        <description>Enables or disables the IPv4 stack, and so the use of IPv4 on the device. This affects only layer 3 and above. 
When {{false}}, IP interfaces that had been operationally up and passing IPv4 packets will now no longer be able to do so, and will be operationally down (unless also attached to an enabled IPv6 stack).</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv4Status" access="readOnly">
        <description>Indicates the status of the IPv4 stack.  {{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>
        </syntax>
      </parameter>
      <parameter name="IPv6Capable" access="readOnly">
        <description>Indicates whether the device is IPv6 capable.
Note: If {{false}}, it is expected that IPv6-related parameters, enumeration values, etc will not be implemented by the device.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv6Enable" access="readWrite">
        <description>Enables or disables the IPv6 stack, and so the use of IPv6 on the device. This affects only layer 3 and above.
When {{false}}, IP interfaces that had been operationally up and passing IPv6 packets will now no longer be able to do so, and will be operationally down (unless also attached to an enabled IPv4 stack).</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv6Status" access="readOnly">
        <description>Indicates the status of the IPv6 stack.  {{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>
        </syntax>
      </parameter>
      <parameter name="ULAPrefix" access="readWrite">
        <description>The ULA /48 prefix {{bibref|RFC4193|Section 3}}.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.IP.Interface.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="append">Each IP interface can be attached to the IPv4 and/or IPv6 stack.  The interface's IP addresses and prefixes are listed in the {{object|IPv4Address}}, {{object|IPv6Address}} and {{object|IPv6Prefix}} tables.
Note that support for manipulating {{param|Loopback}} interfaces is OPTIONAL, so the implementation MAY choose not to create (or allow the ACS to create) {{object}} instances of type {{enum|Loopback|Type}}.
When the ACS administratively disables the interface, i.e. sets {{param|Enable}} to {{false}}, the interface's automatically-assigned IP addresses and prefixes MAY be retained.  When the ACS administratively enables the interface, i.e. sets {{param|Enable}} to {{true}}, these IP addresses and prefixes MUST be refreshed.  It's up to the implementation to decide exactly what this means: it SHOULD take all reasonable steps to refresh everything but if it is unable, for example, to refresh a prefix that still has a significant lifetime, it might well choose to retain rather than discard it.</description>
      <parameter base="Enable" access="readWrite">
        <description action="replace">Enables or disables the interface (regardless of {{param|IPv4Enable}} and {{param|IPv6Enable}}).
This parameter is based on ''ifAdminStatus'' from {{bibref|RFC2863}}.</description>
      </parameter>
      <parameter name="IPv4Enable" access="readWrite" dmr:previousParameter="Enable">
        <description>If set to {{true}}, attaches this interface to the IPv4 stack.  If set to {{false}}, detaches this interface from the IPv4 stack.
Once detached from the IPv4 stack, the interface will now no longer be able to pass IPv4 packets, and will be operationally down (unless also attached to an enabled IPv6 stack).
For an IPv4 capable device, if {{param}} is not present this interface SHOULD be permanently attached to the IPv4 stack.
Note that {{param}} is independent of {{param|Enable}}, and that to administratively enable an interface for IPv4 it is necessary for both {{param|Enable}} and {{param}} to be {{true}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv6Enable" access="readWrite">
        <description>If set to {{true}}, attaches this interface to the IPv6 stack.  If set to {{false}}, detaches this interface from the IPv6 stack.
Once detached from the IPv6 stack, the interface will now no longer be able to pass IPv6 packets, and will be operationally down (unless also attached to an enabled IPv4 stack).
For an IPv6 capable device, if {{param}} is not present this interface SHOULD be permanently attached to the IPv6 stack.
Note that {{param}} is independent of {{param|Enable}}, and that to administratively enable an interface for IPv6 it is necessary for both {{param|Enable}} and {{param}} to be {{true}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="ULAEnable" access="readWrite">
        <description>Controls whether or not ULAs {{bibref|RFC4193}} are generated and used on this interface.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter base="Reset" access="readWrite">
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="IPv6AddressNumberOfEntries" access="readOnly" dmr:previousParameter="IPv4AddressNumberOfEntries">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="IPv6PrefixNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.IP.Interface.{i}.IPv4Address.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter name="Status" access="readOnly" dmr:previousParameter="Enable">
        <description>The status of this {{object}} table entry.  {{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 base="Alias" access="readWrite">
        <description action="append">Note: There is no guarantee that the {{param}} value on automatically-created {{object}} instances will be retained. This is because automatically-created {{object}} instances can be transitory.</description>
      </parameter>
    </object>
    
    <object name="Device.IP.Interface.{i}.IPv6Address.{i}." access="readWrite" minEntries="0" maxEntries="unbounded" numEntriesParameter="IPv6AddressNumberOfEntries" enableParameter="Enable">
      <description>This table contains the IP interface's IPv6 unicast addresses.  There MUST be an entry for each such address, including anycast addresses.
There are several ways in which entries can be added to and deleted from this table, including:
* Automatically via SLAAC {{bibref|RFC4862}}, which covers generation of link-local addresses (for all types of device) and global addresses (for non-router devices).
* Automatically via DHCPv6 {{bibref|RFC3315}}, which covers generation of any type of address (subject to the configured DHCP server policy).
* Manually via a GUI or some other local management interface.
* Manually via factory default configuration.
* By the ACS.
This table MUST NOT include entries for the Subnet-Router anycast address {{bibref|RFC4291|Section 2.6.1}}.  Such entries would be identical to others but with a zero interface identifier, and would add no value.
A loopback interface will always have address ''::1'' {{bibref|RFC4291|Section 2.5.3}} and MAY also have link-local address ''fe80::1''.
This object is based on ''ipAddressTable'' from {{bibref|RFC4293}}.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="IPAddress"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this {{object}} table entry.  {{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="IPAddressStatus" access="readOnly">
        <description>The status of {{param|IPAddress}}, indicating whether it can be used for communication.  See also {{param|PreferredLifetime}} and {{param|ValidLifetime}}.  {{enum}}
This parameter is based on ''ipAddressStatus'' and ''ipAddressStatusTC'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <string>
            <enumeration value="Preferred">
              <description>Valid address that can appear as the destination or source address of a packet.</description>
            </enumeration>
            <enumeration value="Deprecated">
              <description>Valid but deprecated address that is not intended to be used as a source address.</description>
            </enumeration>
            <enumeration value="Invalid">
              <description>Invalid address that is not intended to appear as the destination or source address of a packet.</description>
            </enumeration>
            <enumeration value="Inaccessible">
              <description>Valid address that is not accessible because the interface to which it is assigned is not operational.</description>
            </enumeration>
            <enumeration value="Unknown">
              <description>Address status cannot be determined for some reason.</description>
            </enumeration>
            <enumeration value="Tentative">
              <description>The uniqueness of the address on the link is being verified.</description>
            </enumeration>
            <enumeration value="Duplicate">
              <description>Invalid address that has been determined to be non-unique on the link.</description>
            </enumeration>
            <enumeration value="Optimistic">
              <description>Valid address that is available for use, subject to restrictions, while its uniqueness on a link is being verified.</description>
            </enumeration>
          </string>
          <default type="object" value="Invalid"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.
Note: There is no guarantee that the {{param}} value on automatically-created {{object}} instances will be retained. This is because automatically-created {{object}} instances can be transitory.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="IPAddress" access="readWrite">
        <description>IPv6 address.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressAddr'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Origin" access="readOnly">
        <description>Mechanism via which the IP address was assigned.  {{enum}}
This parameter is based on ''ipOrigin'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <string>
            <enumeration value="AutoConfigured">
              <description>Automatically generated. For example, a link-local address as specified by SLAAC {{bibref|RFC4862|Section 5.3}}, a global address as specified by SLAAC {{bibref|RFC4862|Section 5.5}}, or generated via CPE logic (e.g. from delegated prefix as specified by {{bibref|RFC3633}}), or from ULA /48 prefix as specified by {{bibref|RFC4193}}.</description>
            </enumeration>
            <enumeration value="DHCPv6">
              <description>Assigned by DHCPv6 {{bibref|RFC3315}}.</description>
            </enumeration>
            <enumeration value="WellKnown">
              <description>Specified by a standards organization, e.g. the ''::1'' loopback address, which is defined in {{bibref|RFC4291}}.</description>
            </enumeration>
            <enumeration value="Static">
              <description>For example, present in the factory default configuration (but not {{enum|WellKnown}}), created by the ACS, or created by some other management entity (e.g. via a GUI).</description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
      <parameter name="Prefix" access="readWrite">
        <description>IPv6 address prefix.
Some addresses, e.g. addresses assigned via the DHCPv6 IA_NA option, are not associated with a prefix, and some {{enum|WellKnown|#.IPv6Prefix.{i}.Origin}} prefixes might not be modeled.  In both of these cases {{param}} will be {{null}}.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressPrefix'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="#.IPv6Prefix." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="PreferredLifetime" access="readWrite">
        <description>The time at which this address will cease to be preferred (i.e. will become deprecated), or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
      <parameter name="ValidLifetime" access="readWrite">
        <description>The time at which this address will cease to be valid (i.e. will become invalid), or {{null}} if unknown. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
      <parameter name="Anycast" access="readWrite">
        <description>Indicates whether this is an anycast address {{bibref|RFC4291|Section 2.6}}.  Anycast addresses are syntactically identical to unicast addresses and so need to be configured explicitly.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressType'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.IP.Interface.{i}.IPv6Prefix.{i}." access="readWrite" minEntries="0" maxEntries="unbounded" numEntriesParameter="IPv6PrefixNumberOfEntries" enableParameter="Enable">
      <description>This table contains the interface's IPv6 prefixes.  There MUST be an entry for each such prefix, not only for prefixes learned from router advertisements.
There are several ways in which entries can be added to and deleted from this table, including:
* Automatically via {{bibref|RFC4861}} Router Advertisements.  See also {{object|.RouterAdvertisement}}.
* Automatically via DHCPv6 {{bibref|RFC3315}} prefix delegation {{bibref|RFC3633}}.  See also {{object|.DHCPv6.Client}}.
* Automatically via internal CPE logic, e.g. creation of child prefixes derived from a parent prefix.
* Manually via a GUI or some other local management interface.
* Manually via factory default configuration.
* By the ACS.
The CPE MAY choose not to create {{object}} entries for {{enum|WellKnown|Origin}} prefixes or for the ULA /48 prefix {{bibref|RFC4193}}. If an {{object}} entry exists for the ULA /48 prefix, it MUST be on a downstream interface (i.e. an interface for which the physical layer interface object has ''Upstream'' = {{false}}).
This object is based on ''ipAddressPrefixTable'' from {{bibref|RFC4293}}.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Prefix"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this {{object}} 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>
      <parameter name="PrefixStatus" access="readOnly">
        <description>The status of {{param|Prefix}}, indicating whether it can be used for communication.  See also {{param|PreferredLifetime}} and {{param|ValidLifetime}}.  {{enum}}
This parameter is based on ''ipAddressStatus'' and ''ipAddressStatusTC'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <string>
            <enumeration value="Preferred">
              <description>Valid prefix.</description>
            </enumeration>
            <enumeration value="Deprecated">
              <description>Valid but deprecated prefix.</description>
            </enumeration>
            <enumeration value="Invalid">
              <description>Invalid prefix.</description>
            </enumeration>
            <enumeration value="Inaccessible">
              <description>Valid prefix that is not accessible because the interface to which it is assigned is not operational.</description>
            </enumeration>
            <enumeration value="Unknown">
              <description>Prefix status cannot be determined for some reason.</description>
            </enumeration>
          </string>
          <default type="object" value="Invalid"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.
Note: There is no guarantee that the {{param}} value on automatically-created {{object}} instances will be retained. This is because automatically-created {{object}} instances can be transitory.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Prefix" access="readWrite">
        <description>IPv6 address prefix.
This parameter can only be modified if the {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressPrefixPrefix'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Origin" access="readOnly">
        <description>Mechanism via which the prefix was assigned or most recently updated. {{enum}}
Note that:
* {{enum|PrefixDelegation}} and {{enum|RouterAdvertisement}} prefixes can exist only on upstream interfaces (i.e. interfaces for which the physical layer interface object has ''Upstream'' = {{true}}),
* {{enum|AutoConfigured}} and {{enum|WellKnown}} prefixes can exist on any interface, and
* {{enum|Static}} and {{enum|Child}} prefixes can exist only on downstream interfaces (i.e. interfaces for which the physical layer interface object has ''Upstream'' = {{false}}).
Also note that a {{enum|Child}} prefix's {{param|ParentPrefix}} will always be an {{enum|AutoConfigured}}, {{enum|PrefixDelegation}}, or {{enum|RouterAdvertisement}} prefix.
This parameter is based on ''ipAddressOrigin'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <string>
            <enumeration value="AutoConfigured">
              <description>Generated via internal CPE logic (e.g. the ULA /48 prefix) or derived from an internal prefix that is not modeled in any {{object}} table.</description>
            </enumeration>
            <enumeration value="PrefixDelegation">
              <description>Delegated via DHCPv6 {{bibref|RFC3633}} or some other protocol, e.g. IPv6rd {{bibref|RFC5969}}.  Also see {{param|StaticType}}.</description>
            </enumeration>
            <enumeration value="RouterAdvertisement">
              <description>Discovered via router advertisement {{bibref|RFC4861}} Prefix Information Option.</description>
            </enumeration>
            <enumeration value="WellKnown">
              <description>Specified by a standards organization, e.g. ''fe80::/10'' for link-local addresses, or ''::1/128'' for the loopback address, both of which are defined in {{bibref|RFC4291}}.</description>
            </enumeration>
            <enumeration value="Static">
              <description>Created by the ACS, by some other management entity (e.g. via a GUI), or present in the factory default configuration (but not {{enum|WellKnown}}).  Unrelated to any shorter length prefix that might exist on the CPE.  Also see {{param|StaticType}}.  Can be used for RA (Prefix Information), DHCPv6 address assignment (IA_NA) or DHCPv6 prefix delegation (IA_PD).</description>
            </enumeration>
            <enumeration value="Child">
              <description>Derived from an associated {{enum|AutoConfigured}} or {{enum|PrefixDelegation}} parent prefix.  Also see {{param|StaticType}}, {{param|ParentPrefix}} and {{param|ChildPrefixBits}}.  Can be used for RA (Prefix Information), DHCPv6 address assignment (IA_NA) or DHCPv6 prefix delegation (IA_PD).</description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
      <parameter name="StaticType" access="readWrite">
        <description>Static prefix sub-type.  For a {{enum|Static|Origin}} prefix, this can be set to {{enum|PrefixDelegation}} or {{enum|Child}}, thereby creating an unconfigured prefix of the specified type that will be populated in preference to creating a new instance.  This allows the ACS to pre-create "prefix slots" with known path names that can be referenced from elsewhere in the data model before they have been populated.  {{enum}}
This mechanism works as follows:
* When this parameter is set to {{enum|PrefixDelegation}} or {{enum|Child}}, the instance becomes a "prefix slot" of the specified type.
* Such an instance can be administratively enabled ({{param|Enable}} = {{true}}) but will remain operationally disabled ({{param|Status}} = {{enum|Disabled|Status}}) until it has been populated.
* When a new prefix of of type T is needed, the CPE will look for a matching unpopulated instance, i.e. an instance with ({{param|Origin}},{{param}},{{param|Prefix}}) = ({{enum|Static|Origin}},T,"").  If the CPE finds at least one such instance it will choose one and populate it.  If already administratively enabled it will immediately become operationally enabled.  If the CPE finds no such instances, it will create and populate a new instance with ({{param|Origin}},{{param}}) = (T,T).  If the CPE finds more than one such instance, the algorithm via which it chooses which instance to populate is implementation-specific.
* When a prefix that was populated via this mechanism becomes invalid, the CPE will reset {{param|Prefix}} to {{empty}}.  This does not affect the value of the {{param|Enable}} parameter.
The prefix {{param}} can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <string>
            <enumeration value="Static">
              <description>Prefix is a "normal" {{enum|Static|Origin}} prefix.</description>
            </enumeration>
            <enumeration value="Inapplicable" access="readOnly">
              <description>Prefix is not {{enum|Static|Origin}}, so this parameter does not apply.</description>
            </enumeration>
            <enumeration value="PrefixDelegation">
              <description>Prefix will be populated when a {{enum|PrefixDelegation|Origin}} prefix needs to be created.</description>
            </enumeration>
           <enumeration value="Child">
              <description>Prefix will be populated when a {{enum|Child|Origin}} prefix needs to be created. In this case, the ACS needs also to set {{param|ParentPrefix}} and might want to set {{param|ChildPrefixBits}} (if parent prefix is not set, or goes away, then the child prefix will become operationally disabled).</description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
      <parameter name="ParentPrefix" access="readWrite">
        <description>Indicates the parent prefix from which this prefix was derived. The parent prefix is relevant only for {{enum|Child|Origin}} prefixes and for {{enum|Static|Origin}} {{enum|Child|StaticType}} prefixes (both of which will always be on downstream interfaces), i.e. for {{param|Origin}}={{enum|Child|Origin}} and for ({{param|Origin}},{{param|StaticType}}) = ({{enum|Static|Origin}},{{enum|Child|StaticType}}) prefixes.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}} (which makes sense only for a prefix whose {{param|StaticType}} is already or will be changed to {{enum|Child|StaticType}}).</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="ChildPrefixBits" access="readWrite">
        <description>A prefix that specifies the length of {{enum|Static|Origin}} {{enum|Child|StaticType}} prefixes and how they are derived from their {{param|ParentPrefix}}. It will be used if and only if it is not {{empty}} and is longer than the parent prefix (if it is not used, derivation of such prefixes is implementation-specific).  Any bits to the right of the parent prefix are set to the bits in this prefix.
For example, for a parent prefix of fedc::/56, if this parameter had the value 123:4567:89ab:cdef::/64, the child /64 would be fedc:0:0:ef::/64.  For a parent prefix of fedc::/60, the child /64 would be fedc:0:0:f::/64.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="OnLink" access="readWrite">
        <description>On-link flag {{bibref|RFC4861|Section 4.6.2}} as received (in the RA) for RouterAdvertisement.  Indicates whether this prefix can be used for on-link determination.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressPrefixOnLinkFlag'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Autonomous" access="readWrite">
        <description>Autonomous address configuration flag {{bibref|RFC4861|Section 4.6.2}} as received (in the RA) for RouterAdvertisement.  Indicates whether this prefix can be used for generating global addresses as specified by SLAAC {{bibref|RFC4862}}.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.
This parameter is based on ''ipAddressPrefixAutonomousFlag'' from {{bibref|RFC4293}}.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="PreferredLifetime" access="readWrite">
        <description>This parameter is based on ''ipAddressPrefixAdvPreferredLifetime'' from {{bibref|RFC4293}}. The time at which this prefix will cease to be preferred (i.e. will become deprecated), or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
      <parameter name="ValidLifetime" access="readWrite">
        <description>This parameter is based on ''ipAddressPrefixAdvValidLifetime'' from {{bibref|RFC4293}}.  The time at which this prefix will cease to be valid (i.e. will become invalid), or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
This parameter can only be modified if {{param|Origin}} is {{enum|Static|Origin}}.</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.IP.Interface.{i}.Stats." access="readOnly" minEntries="1" maxEntries="1">
      <parameter base="BroadcastPacketsSent" access="readOnly">
        <description action="append">Note that IPv6 does not define broadcast addresses, so IPv6 packets will never cause this counter to increment.</description>
      </parameter>
      <parameter base="BroadcastPacketsReceived" access="readOnly">
        <description action="append">Note that IPv6 does not define broadcast addresses, so IPv6 packets will never cause this counter to increment.</description>
      </parameter>
    </object>

    <object base="Device.IP.Diagnostics.IPPing." access="readOnly" minEntries="1" maxEntries="1">
      <parameter base="Host" access="readWrite">
        <description action="append">In the case where {{param}} is specified by name, and the name resolves to more than one address, it is up to the device implementation to choose which address to use.</description>
      </parameter>
    </object>
    
    <object base="Device.IP.Diagnostics.TraceRoute." access="readOnly" minEntries="1" maxEntries="1">
      <parameter base="Host" access="readWrite">
        <description action="append">In the case where {{param}} is specified by name, and the name resolves to more than one address, it is up to the device implementation to choose which address to use.</description>
      </parameter>
    </object>
    
    <object base="Device.Bridging.Filter.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="append">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 filter criteria will be associated with either DHCPv4 or DHCPv6, as indicated by the {{param|DHCPType}} parameter.</description>
      <parameter name="DHCPType" access="readWrite" dmr:previousParameter="Interface">
        <description>The DHCP protocol associated with the {{object}} instance. Affects only parameters that specify DHCP option values as filter 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 base="SourceMACFromVendorClassIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if its DHCPv4 Vendor Class Identifier (Option 60 as defined in {{bibref|RFC2132}}) in the most recent DHCP lease acquisition or renewal matches the specified value according to the match criterion in {{param|SourceMACFromVendorClassIDMode}}. Case sensitive.
This is a normal string, e.g. "abc" is represented as "abc" and not "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.
Note that neither 802.1D {{bibref|802.1D-2004}} nor 802.1Q {{bibref|802.1Q-2005}} support classification based on source MAC address.
Note: This parameter is DHCPv4-specific. It only applies when {{param|DHCPType}} is {{enum|DHCPv4|DHCPType}}.</description>
        <syntax>
          <string>
            <size maxLength="255"/>  <!-- reducing this from 65535 to 255, since anything larger is an errata for a DHCPv4 Option -->
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceMACFromVendorClassIDFilterv6" access="readWrite">
        <description>Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCPv6 Vendor Class Identifier (Option 16 as defined in {{bibref|RFC3315}}) was equal to the specified value. The option value is binary, so an exact match is REQUIRED.
Note that neither 802.1D {{bibref|802.1D-2004}} nor 802.1Q {{bibref|802.1Q-2005}} support classification based on source MAC address.
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 base="SourceMACFromVendorClassIDFilterExclude" access="readWrite">
        <description action="replace">If {{false}}, on ingress to the interfaces associated with this Filter, the Bridge admits only those packets whose source MAC Address matches that of a LAN device previously identified as described in {{param|SourceMACFromVendorClassIDFilter}} (for {{enum|DHCPv4|DHCPType}}) or {{param|SourceMACFromVendorClassIDFilterv6}} (for {{enum|DHCPv6|DHCPType}}). If this corresponding filter parameter is {{empty}}, no packets are admitted.
If {{true}}, on ingress to the interfaces associated with this Filter, the Bridge admits all packets except those packets whose source MAC Address matches that of a LAN device previously identified as described in {{param|SourceMACFromVendorClassIDFilter}} (for {{enum|DHCPv4|DHCPType}}) or {{param|SourceMACFromVendorClassIDFilterv6}} (for {{enum|DHCPv6|DHCPType}}). If this corresponding filter parameter is {{empty}}, packets are admitted regardless of MAC address.
Note that neither 802.1D {{bibref|802.1D-2004}} nor 802.1Q {{bibref|802.1Q-2005}} support classification based on source MAC address.</description>
      </parameter>
      <parameter base="DestMACFromVendorClassIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply.  A device is considered matching if its DHCPv4 Vendor Class Identifier (Option 60 as defined in {{bibref|RFC2132}}) in the most recent DHCP lease acquisition or renewal matches the specified value according to the match criterion in {{param|DestMACFromVendorClassIDMode}}. 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.
Note: This parameter is DHCPv4-specific. It only applies when {{param|DHCPType}} is {{enum|DHCPv4|DHCPType}}.</description>
        <syntax>
          <string>
            <size maxLength="255"/>  <!-- reducing this from 65535 to 255, since anything larger is an errata for a DHCPv4 Option -->
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DestMACFromVendorClassIDFilterv6" access="readWrite">
        <description>Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCPv6 Vendor Class Identifier (Option 16 as defined in {{bibref|RFC3315}}) was equal to the specified value. The option value is binary, so an exact match is REQUIRED.
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 base="DestMACFromVendorClassIDFilterExclude" access="readWrite">
        <description action="replace">If {{false}}, on ingress to the interfaces associated with this Filter, the Bridge admits only those packets whose destination MAC Address matches that of a LAN device previously identified as described in {{param|DestMACFromVendorClassIDFilter}} (for {{enum|DHCPv4|DHCPType}}) or {{param|DestMACFromVendorClassIDFilterv6}} (for {{enum|DHCPv6|DHCPType}}). If this corresponding filter parameter is {{empty}}, no packets are admitted.
If {{true}}, on ingress to the interfaces associated with this Filter, the Bridge admits all packets except those packets whose destination MAC Address matches that of a LAN device previously identified as described in {{param|DestMACFromVendorClassIDFilter}} (for {{enum|DHCPv4|DHCPType}}) or {{param|DestMACFromVendorClassIDFilterv6}} (for {{enum|DHCPv6|DHCPType}}). If this corresponding filter parameter is {{empty}}, packets are admitted regardless of MAC address.</description>
      </parameter>
      <parameter base="SourceMACFromClientIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCP Client Identifier (via DHCP lease acquisition or renewal for DHCPv4) was equal to the specified value. The DHCP Client Identifier is Option 61 (as defined in {{bibref|RFC2132}}) for {{enum|DHCPv4|DHCPType}}, or is Option 1 (as defined in {{bibref|RFC3315}}) for {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact match is REQUIRED.
Note that neither 802.1D {{bibref|802.1D-2004}} nor 802.1Q {{bibref|802.1Q-2005}} support classification based on source MAC address.
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>
      </parameter>
      <parameter base="DestMACFromClientIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCP Client Identifier (via DHCP lease acquisition or renewal for DHCPv4) was equal to the specified value. The DHCP Client Identifier is Option 61 (as defined in {{bibref|RFC2132}}) for {{enum|DHCPv4|DHCPType}}, or is Option 1 (as defined in {{bibref|RFC3315}}) for {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact match is REQUIRED.
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>
      </parameter>
      <parameter base="SourceMACFromUserClassIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCP User Class Identifier (via DHCP lease acquisition or renewal for DHCPv4) was equal to the specified value. 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|RFC3315}}) for {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact match is REQUIRED.
Note that neither 802.1D {{bibref|802.1D-2004}} nor 802.1Q {{bibref|802.1Q-2005}} support classification based on source MAC address.
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>
      </parameter>
      <parameter base="DestMACFromUserClassIDFilter" access="readWrite">
        <description action="replace">Classification criterion.
A hexbinary string used to identify one or more devices via DHCP for which MAC address filtering would subsequently apply. A device is considered matching if the most recent DHCP User Class Identifier (via DHCP lease acquisition or renewal for DHCPv4) was equal to the specified value. 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|RFC3315}}) for {{enum|DHCPv6|DHCPType}}. The option value is binary, so an exact match is REQUIRED.
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>
      </parameter>
    </object>
    
    <object base="Device.Routing.Router.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter name="IPv6ForwardingNumberOfEntries" access="readOnly" dmr:previousParameter="IPv4ForwardingNumberOfEntries">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.Routing.Router.{i}.IPv4Forwarding.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="replace">Layer 3 IPv4 forwarding table.
In addition to statically configured routes, this table MUST include dynamic routes learned through layer 3 routing protocols, including RIP (i.e. RIP version 2), OSPF, DHCPv4, and IPCP.  The CPE MAY reject attempts to delete or modify a dynamic route entry.
For each incoming packet, the layer 3 forwarding decision is conceptually made as follows:
* Only enabled table entries with a matching {{param|ForwardingPolicy}} are considered, i.e. those that either do not specify a {{param|ForwardingPolicy}}, or else specify a {{param|ForwardingPolicy}} that matches that of the incoming packet. 
* Next, table entries that also have a matching destination address/mask are considered, and the matching entry with the longest prefix is applied to the packet (i.e. the entry with the most specific network). An unspecified destination address is a wild-card and always matches, but with a prefix length of zero.
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv4-capable interface (that is attached to the IPv4 stack), 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 disable the offending {{object}} row.</description>
      <parameter base="Status" access="readOnly">
        <description action="append">The {{enum|Error_Misconfigured}} value indicates that a necessary configuration value is undefined or invalid.</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="Origin" access="readOnly" dmr:previousParameter="Interface">
        <description>Protocol via which the IPv4 forwarding rule was learned.  {{enum}}</description>
        <syntax>
          <string>
            <enumeration value="DHCPv4"/>
            <enumeration value="OSPF"/>
            <enumeration value="IPCP"/>
            <enumeration value="RIP"/>
            <enumeration value="Static">
              <description>For example, present in the factory default configuration, created by the ACS, or created by some other management entity (e.g. via a GUI).</description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Routing.Router.{i}.IPv6Forwarding.{i}." access="readWrite" numEntriesParameter="IPv6ForwardingNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded" dmr:previousObject="Device.Routing.Router.{i}.IPv4Forwarding.{i}.">
      <description>Layer 3 IPv6 forwarding table.
In addition to statically configured routes, this table MUST include dynamic routes learned through layer 3 routing protocols, including RIPng, OSPF, DHCPv6, and RA.  The CPE MAY reject attempts to delete or modify a dynamic route entry.
For each incoming packet, the layer 3 forwarding decision is conceptually made as follows:
* Only enabled table entries with a matching {{param|ForwardingPolicy}} are considered, i.e. those that either do not specify a {{param|ForwardingPolicy}}, or else specify a {{param|ForwardingPolicy}} that matches that of the incoming packet. 
* Next, table entries that also have a matching destination prefix are considered, and the matching entry with the longest prefix length is applied to the packet (i.e. the entry with the most specific network). An unspecified destination address is a wild-card and always matches, but with a prefix length of zero.
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv6-capable interface (that is attached to the IPv6 stack), then the table entry is inoperable and the CPE MUST set {{param|Status}} to {{enum|Error_Misconfigured|Status}}.
This object is based on ''inetCidrRouteTable'' from {{bibref|RFC4292}}.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="DestIPPrefix"/>
        <parameter ref="ForwardingPolicy"/>
        <parameter ref="NextHop"/>
        <parameter ref="Interface"/>
        <parameter ref="ForwardingMetric"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>Indicates the status of the forwarding entry.  {{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="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="DestIPPrefix" access="readWrite">
        <description>Destination IPv6 prefix. {{empty}} indicates that it matches all destination prefixes (i.e. equivalent to "::/0"). All bits to the right of the prefix MUST be zero, e.g. 2001:edff:fe6a:f76::/64.
Routes with a 128-bit prefix length (/128) are host routes for a specific IPv6 destination, e.g. 2001:db8:28:2:713e:a426:d167:37ab/128.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="ForwardingPolicy" access="readWrite">
        <description>Identifier of a set of classes or flows that have the corresponding {{param}} value as defined in the {{object|.QoS}} object.
A value of -1 indicates no {{param}} is specified.
If specified, this forwarding entry is to apply only to traffic associated with the specified classes and flows.</description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter name="NextHop" access="readWrite">
        <description>IPv6 address of the next hop.
Only one of {{param}} and {{param|Interface}} SHOULD be configured for a route. {{empty}} indicates no {{param}} is specified.
If both are configured, {{param}} and {{param|Interface}} MUST be consistent with each other.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference}} Specifies the egress layer 3 interface associated with this entry. Example: ''Device.IP.Interface.1''. 
Only one of {{param|NextHop}} and {{param}} SHOULD be configured for a route. {{empty}} indicates no {{param}} is specified.
If both are configured, {{param|NextHop}} and {{param}} MUST be consistent with each other. 
For a route that was configured by setting {{param|NextHop}} but not {{param}}, read access to {{param}} MUST return the full hierarchical parameter name for the route's egress interface.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Origin" access="readOnly">
        <description>Protocol via which the IPv6 forwarding rule was learned.  {{enum}}</description>
        <syntax>
          <string>
            <enumeration value="DHCPv6"/>
            <enumeration value="OSPF"/>
            <enumeration value="RA">
              <description>Router Advertisement Route Information Option {{bibref|RFC4191}}.</description>
            </enumeration>
            <enumeration value="RIPng">
              <description>RIPng for IPv6 {{bibref|RFC2080}}</description>
            </enumeration>
            <enumeration value="Static">
              <description>For example, present in the factory default configuration, created by the ACS, or created by some other management entity (e.g. via a GUI).</description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
      <parameter name="ForwardingMetric" access="readWrite">
        <description>Forwarding metric.  A value of -1 indicates this metric is not used.</description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter name="ExpirationTime" access="readOnly">
        <description>The time at which the route will expire, or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
{{param}} is provided by an underlying dynamic routing protocol, e.g. by an {{bibref|RFC4191}} route information option.</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.Routing.RIP.InterfaceSetting.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="append">Note: This object only applies to RIP2; i.e. version 2 of the RIP protocol is used to accept or send over the specified {{param|Interface}}.</description>
      <parameter base="Version" access="readWrite" status="deleted"/>
    </object>
    
    <object name="Device.Routing.RouteInformation." access="readOnly" minEntries="1" maxEntries="1">
      <description>Received Router Advertisement (RA) route information {{bibref|RFC4191}}.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables receiving route information from the RA.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="InterfaceSettingNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Routing.RouteInformation.InterfaceSetting.{i}." access="readOnly"  numEntriesParameter="InterfaceSettingNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>IP Interface RA route information table. Contains received RA route information {{bibref|RFC4191}}. As such, the data in this table cannot be modified.</description>
      <uniqueKey>
        <parameter ref="Interface"/>
      </uniqueKey>
      <parameter name="Status" access="readOnly">
        <description>The status of this entry.  {{enum}}
The {{enum|Error}} value MAY be used by the CPE to indicate a locally defined error condition.</description>
        <syntax>
          <string>
            <enumeration value="ForwardingEntryCreated"/>
            <enumeration value="NoForwardingEntry"/>
            <enumeration value="Error" optional="true"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readOnly">
        <description>{{reference}} This is the IP interface associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="SourceRouter" access="readOnly">
        <description>IPv6 Address of the router that sent the RA that included this route info.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="PreferredRouteFlag" access="readOnly">
        <description>Flag included in a specific Route Information Option within an RA message (Prf flag), as defined in {{bibref|RFC4191|Section 2.3}}. {{enum}}
Note that this is not the Prf flag included in the base RA message. Also see {{bibref|RFC4191|Section 2.1}} which discusses how this flag is encoded on the wire.</description>
        <syntax>
          <string>
            <enumeration value="High"/>
            <enumeration value="Medium"/>
            <enumeration value="Low"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Prefix" access="readOnly">
        <description>IPv6 address prefix, as received in an instance of the Route Information Option of a RA message.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
        </syntax>
      </parameter>
      <parameter name="RouteLifetime" access="readOnly">
        <description>The time at which {{param|Prefix}} will cease to be usable for use as a forwarding entry, or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
{{param}} is received in an instance of the Route Information Option of a RA message.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.QoS.Classification.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="append">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>
      <parameter name="DHCPType" access="readWrite" dmr:previousParameter="Alias">
        <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 base="Protocol" access="readWrite">
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="255"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter base="SourceVendorClassID" access="readWrite">
        <description action="replace">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"/>  <!-- reducing this from 65535 to 255, since anything larger is an errata for a DHCPv4 Option -->
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceVendorClassIDv6" access="readWrite">
        <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|RFC3315}}. 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 base="SourceVendorClassIDExclude" access="readWrite">
        <description action="replace">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>
      </parameter>
      <parameter base="DestVendorClassID" access="readWrite">
        <description action="replace">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"/>  <!-- reducing this from 65535 to 255, since anything larger is an errata for a DHCPv4 Option -->
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DestVendorClassIDv6" access="readWrite">
        <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|RFC3315}}. 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 base="DestVendorClassIDExclude" access="readWrite">
        <description action="replace">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>
      </parameter>
      <parameter base="SourceClientID" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="DestClientID" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="SourceUserClassID" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="DestUserClassID" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="SourceVendorSpecificInfo" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="DestVendorSpecificInfo" access="readWrite">
        <description action="replace">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|RFC3315}}) 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>
      </parameter>
      <parameter base="DSCPCheck" access="readWrite">
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="63"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.Hosts.Host.{i}." access="readOnly" minEntries="0"  maxEntries="unbounded">
      <parameter base="IPAddress" access="readOnly">
        <description action="append">If more than one IP address for this host is known, the CPE will choose a ''primary'' address.  All known IP addresses can be listed in the {{object|IPv4Address}} and {{object|IPv6Address}} tables.</description>
      </parameter>
      <parameter base="AddressSource" access="readOnly" status="deprecated">
        <description action="append">{{enum}}
This parameter is DEPRECATED because only {{enum|None}} and {{enum|DHCP}} made sense (the CPE doesn't know whether the address is {{enum|Static}} or {{enum|AutoIP}}).  The {{enum|DHCP}} case is now handled via the {{param|DHCPClient}} reference.</description>
      </parameter>
      <parameter name="DHCPClient" access="readOnly">
        <description>{{reference}} Each list item is the DHCPv4 or DHCPv6 server's client entry that corresponds to the host.</description>
        <syntax>
          <list maxItems="2"/>
          <string>
            <pathRef refType="strong" targetParent=".DHCPv4.Server.Pool.{i}.Client. .DHCPv6.Server.Pool.{i}.Client." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter base="LeaseTimeRemaining" access="readOnly" status="deprecated">
        <description action="append">This parameter is DEPRECATED because DHCP lease/lifetime information can be accessed via the {{param|DHCPClient}} reference.</description>
      </parameter>
      <parameter name="AssociatedDevice" access="readOnly">
        <description>{{noreference}}The value MUST the path name of the ''AssociatedDevice'' (or equivalent) table row that models the host, or {{null}} if there is no such table.
For example: ''Device.WiFi.AccessPoint.1.AssociatedDevice.2''</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter base="VendorClassID" access="readOnly" status="deprecated">
        <description action="append">This parameter is DEPRECATED because host-supplied DHCP options can be accessed via the {{param|DHCPClient}} reference.</description>
        <syntax>
          <string>
            <size maxLength="255"/>  <!-- reducing this from 65535 to 255, since anything larger is an errata for a DHCPv4 Option -->
          </string>
        </syntax>
      </parameter>
      <parameter base="ClientID" access="readOnly" status="deprecated">
        <description action="append">This parameter is DEPRECATED because host-supplied DHCP options can be accessed via the {{param|DHCPClient}} reference.</description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
        </syntax>
      </parameter>
      <parameter base="UserClassID" access="readOnly" status="deprecated">
        <description action="append">This parameter is DEPRECATED because host-supplied DHCP options can be accessed via the {{param|DHCPClient}} reference.</description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
        </syntax>
      </parameter>
      <parameter name="IPv4AddressNumberOfEntries" access="readOnly" dmr:previousParameter="Active">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="IPv6AddressNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Hosts.Host.{i}.IPv4Address.{i}." access="readOnly" numEntriesParameter="IPv4AddressNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>The host's known IPv4 addresses.  This includes any addresses assigned via DHCP, which can also be accessed via the {{param|#.DHCPClient}} reference.</description>
      <uniqueKey>
        <parameter ref="IPAddress"/>
      </uniqueKey>
      <parameter name="IPAddress" access="readOnly">
        <description>IPv4 address.</description>
        <syntax>
          <dataType ref="IPv4Address"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Hosts.Host.{i}.IPv6Address.{i}." access="readOnly" numEntriesParameter="IPv6AddressNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>The host's known IPv6 addresses.  This includes any addresses assigned via DHCP, which can also be accessed via the {{param|#.DHCPClient}} reference.</description>
      <uniqueKey>
        <parameter ref="IPAddress"/>
      </uniqueKey>
      <parameter name="IPAddress" access="readOnly">
        <description>IPv6 address.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.NeighborDiscovery." access="readOnly" minEntries="1" maxEntries="1" dmr:previousObject="Device.Routing.">
      <description>The Neighbor Discovery Protocol (NDP) object {{bibref|RFC4861}}.  This object applies only to IPv6.  It contains an {{object|InterfaceSetting}} table that defines the NDP configuration for individual IP interfaces.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables Neighbor Discovery.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="InterfaceSettingNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.NeighborDiscovery.InterfaceSetting.{i}." access="readWrite" minEntries="0" maxEntries="unbounded" numEntriesParameter="InterfaceSettingNumberOfEntries" enableParameter="Enable">
      <description>Per-interface Neighbor Discovery Protocol (NDP) configuration {{bibref|RFC4861}}.
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv6-capable interface (that is attached to the IPv6 stack), 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>
        <parameter ref="Interface"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this entry.  {{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="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>This is the IP interface associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="RetransTimer" access="readWrite">
        <description>Retransmission interval in {{units}}, as defined in {{bibref|RFC4861}}. For auto-configuration purposes, {{param}} specifies the delay between consecutive Neighbor Solicitation transmissions performed during Duplicate Address Detection (DAD) {{bibref|RFC4862|Section 5.4}}, as well as the time a node waits after sending the last Neighbor Solicitation before ending the DAD process.</description>
        <syntax>
          <unsignedInt>
            <units value="milliseconds"/>
          </unsignedInt>
          <default type="object" value="1000"/>
        </syntax>
      </parameter>
      <parameter name="RtrSolicitationInterval" access="readWrite">
        <description>Retransmission interval in {{units}}, as defined in {{bibref|RFC4861}}. For auto-configuration purposes, {{param}} specifies the delay between consecutive Router Solicitation transmissions.</description>
        <syntax>
          <unsignedInt>
            <units value="milliseconds"/>
          </unsignedInt>
          <default type="object" value="4"/>
        </syntax>
      </parameter>
      <parameter name="MaxRtrSolicitations" access="readWrite">
        <description>Maximum Number of Router Solicitation Transmission messages, as defined in {{bibref|RFC4861}}. For auto-configuration purposes {{param}} specifies the Maximum Number of Router Solicitation Transmission messages to help the host to conclude that there are no routers on the link.</description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="3"/>
        </syntax>
      </parameter>
      <parameter name="NUDEnable" access="readWrite">
        <description>Enables or disables Neighbor Unreachability Detection (NUD) {{bibref|RFC4861|Section 7}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="RSEnable" access="readWrite">  
        <description>Enables or disables Router Solicitation (RS) on {{param|Interface}} {{bibref|RFC4861|Section 4.1}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.RouterAdvertisement." access="readOnly" minEntries="1" maxEntries="1" dmr:previousObject="Device.NeighborDiscovery.">
      <description>The Router Advertisement (RA) object {{bibref|RFC4861}}. This object applies only to IPv6. It contains an {{object|InterfaceSetting}} table that defines the RA configuration for individual IP interfaces.
Information received via router advertisement messages is automatically propagated to the relevant {{object|.IP.Interface}} sub-objects, e.g. to the {{object|.IP.Interface.{i}.IPv6Address}} and {{object|.IP.Interface.{i}.IPv6Prefix}} tables.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables Router Advertisement.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="InterfaceSettingNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.RouterAdvertisement.InterfaceSetting.{i}." access="readWrite" minEntries="0" maxEntries="unbounded" numEntriesParameter="InterfaceSettingNumberOfEntries" enableParameter="Enable">
      <description>Per-interface Router Advertisement (RA) configuration {{bibref|RFC4861}}. Table entries are created for use in sending Router Advertisements. 
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv6-capable interface (that is attached to the IPv6 stack), 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>
        <parameter ref="Interface"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.
Defines the value of the ''IsRouter'' and ''AdvSendAdvertisements'' flags from {{bibref|RFC4861|Section 4.2}}</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this entry.  {{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="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>This is the IP interface associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="ManualPrefixes" access="readWrite">
        <description>{{list}} {{reference}}
Manually-configured prefixes that will be sent in Router Advertisement messages.  Each referenced prefix MUST have a  {{param|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} of {{enum|Static|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} or {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}}.  Router Advertisement messages MUST include Prefix Information Options {{bibref|RFC4861}} for all ''Valid'' ({{param|.IP.Interface.{i}.IPv6Prefix.{i}.ValidLifetime}} is infinite or in the future) prefixes in this list.
Prefixes MUST be associated with the interface instance referenced by {{param|Interface}}.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Prefixes" access="readOnly">
        <description>{{list}} {{reference}}
All prefixes that will be included in Router Advertisement (RA) messages sent out this interface. This list can include:
* Prefixes from {{param|ManualPrefixes}} that are included in RA messages.
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} = {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} or {{enum|AutoConfigured|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} associated with the interface instance referenced by {{param|Interface}}.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"></pathRef>
          </string>
        </syntax>
      </parameter>
      <parameter name="MaxRtrAdvInterval" access="readWrite">
        <description>The maximum time allowed between sending unsolicited multicast Router Advertisements from the interface, in {{units}} (see {{bibref|RFC4861|Section 4.2}}).</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="4" maxInclusive="1800"/>
            <units value="seconds"/>
          </unsignedInt>
          <default type="object" value="600"/>
        </syntax>
      </parameter>
      <parameter name="MinRtrAdvInterval" access="readWrite">
        <description>The minimum time allowed between sending unsolicited multicast Router Advertisements from the interface, in {{units}} (see {{bibref|RFC4861|Section 4.2}}).
The value MUST be no greater than 3/4 * {{param|MaxRtrAdvInterval}}.
Note: The ''1350'' maximum was derived from the RFC, based on 3/4 times the maximum value of {{param|MaxRtrAdvInterval}}. Similarly, the ''200'' default was derived from the RFC, based on 1/3 times the default value of {{param|MaxRtrAdvInterval}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="3" maxInclusive="1350"/>
            <units value="seconds"/>
          </unsignedInt>
          <default type="object" value="200"/>
        </syntax>
      </parameter>
      <parameter name="AdvDefaultLifetime" access="readWrite">
        <description>The value placed in the "Router Lifetime" field of Router Advertisement messages on this interface, in {{units}} (see {{bibref|RFC4861|Section 4.2}}).
The value can be zero or between {{param|MaxRtrAdvInterval}} and 9000 {{units}}, but these limits can be overridden by specific documents that describe how IPv6 operates over different link layers. 
A value of zero indicates that the router is not to be used as a default router.
Note: The ''1800'' default was derived from the RFC, based on 3 times the default value of {{param|MaxRtrAdvInterval}}.</description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="65535"/>
            <units value="seconds"/>
          </unsignedInt>
          <default type="object" value="1800"/>
        </syntax>
      </parameter>
      <parameter name="AdvManagedFlag" access="readWrite">
        <description>The value placed in the "Managed address configuration" (M) flag field of Router Advertisement messages on this interafce (see {{bibref|RFC4861|Section 4.2}}, and {{bibref|RFC4862}}).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="AdvOtherConfigFlag" access="readWrite">
        <description>The value placed in the "Other configuration" (O) flag field of Router Advertisement messages on this interface (see {{bibref|RFC4861|Section 4.2}}, and {{bibref|RFC4862}}).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="AdvMobileAgentFlag" access="readWrite">
        <description>The value placed in the "Home agent" (H) flag field of Router Advertisement messages on this interface (see {{bibref|RFC3775|Section 7.1}}).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="AdvPreferredRouterFlag" access="readWrite">
        <description>The value placed in the "Default Router Preference" (Prf) field of Router Advertisement messages on this interface, as defined in {{bibref|RFC4191|Section 2.2}}. {{enum}}
Also see {{bibref|RFC4191|Section 2.1}} which discusses how this flag is encoded on the wire.</description>
        <syntax>
          <string>
            <enumeration value="High"/>
            <enumeration value="Medium"/>
            <enumeration value="Low"/>
          </string>
          <default type="object" value="Medium"/>
        </syntax>
      </parameter>
      <parameter name="AdvNDProxyFlag" access="readWrite">
        <description>The value placed in the "Proxy" (P) flag field of Router Advertisement messages on this interface (see {{bibref|RFC4389|Section 4.1.3.3}}).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="AdvLinkMTU" access="readWrite">
        <description>The value placed in MTU options of Router Advertisement messages on this interface. A value of zero indicates that no MTU options are included (see {{bibref|RFC4861|Section 4.6.4}}).</description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="AdvReachableTime" access="readWrite">
        <description>The value placed in the "Reachable Time" field of Router Advertisement messages on this interface, in {{units}} (see {{bibref|RFC4861|Section 4.2}}).
The value zero means unspecified (by the router).</description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="3600000"/>
            <units value="milliseconds"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="AdvRetransTimer" access="readWrite">
        <description>The value placed in the "Retrans Timer" field of Router Advertisement messages on this interface (see {{bibref|RFC4861|Section 4.2}}).
The value zero means unspecified (by the router).</description>
        <syntax>
          <unsignedInt>
            <units value="milliseconds"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="AdvCurHopLimit" access="readWrite">
        <description>The value placed in the "Cur Hop Limit" field of Router Advertisement messages on this interface (see {{bibref|RFC4861|Section 4.2}}).
The value zero means unspecified (by the router).
Note: The default can be overridden with the value specified in {{bibref|RFC3232}} that was in effect at the time of implementation.</description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="255"/>
          </unsignedInt>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="OptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}." access="readWrite" numEntriesParameter="OptionNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded">
      <description>This object specifies the options in a Router Advertisement (RA) message {{bibref|RFC4861|Section 4.6}}. {{object}} entries are created for use in sending Router Advertisements (enabled options MUST be included in RA messages sent). This includes support for sending DNS information in the RA message as described in {{bibref|RFC6106}}.
This table is intended only for options that are not modeled elsewhere. For example, it is not appropriate for the MTU option (which is modeled via {{param|#.AdvLinkMTU}}).</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Tag"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Tag" access="readWrite">
        <description>Option tag (type) {{bibref|RFC4861|Section 4.6}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readWrite">
        <description>A hexbinary encoded option value {{bibref|RFC4861|Section 4.6}}.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="65535"/>
          </hexBinary>
        </syntax>
      </parameter> 
    </object>
    
    <object name="Device.IPv6rd." access="readOnly" minEntries="1" maxEntries="1">
      <description>Settings allowing a CPE to derive and route IPv6 Rapid Deployment (6rd) delegated prefixes as specified in {{bibref|RFC5969}}.  The 6rd mechanism is intended to be implemented only on what {{bibref|RFC5969}} refers to as ''Customer Edge Routers'', i.e. on gateway devices, that support IPv6 on the LAN side and only have IPv4 connectivity on the WAN side.
See the 6rd Theory of Operation {{bibref|TR-181i2a2|Appendix VI}} for a description of the working of this 6rd data model.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables IPv6rd.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="InterfaceSettingNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IPv6rd.InterfaceSetting.{i}." access="readOnly" minEntries="0" maxEntries="unbounded" numEntriesParameter="InterfaceSettingNumberOfEntries">
      <description>6rd {{bibref|RFC5969}} settings.
A 6rd delegated prefix is expected to be of maximum length 64 bits, and is the concatenation of the following two items:
* Service provider IPv6 prefix: specified via the {{param|SPIPv6Prefix}} parameter
* IPv4 address suffix: the IPv4 address with the first {{param|IPv4MaskLength}} bits removed
This object definition is derived from {{bibref|RFC5969}} with some minor nomenclature changes.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enable or disable this {{object}} instance.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this 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>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="BorderRelayIPv4Addresses" access="readWrite">
        <description>List items are the IPv4 addresses (possibly anycast) of the 6rd Relay(s).</description>
        <syntax>
          <list maxItems="4"/>
          <dataType ref="IPv4Address"/>
        </syntax>
      </parameter>
      <parameter name="AllTrafficToBorderRelay" access="readWrite">
        <description>If {{true}}, the destination address for all 6rd traffic will be set (IPv4 destination address) to one of the {{param|BorderRelayIPv4Addresses}}. If {{false}}, traffic whose destination address begins with the same prefix as {{param|SPIPv6Prefix}} will be sent directly to the destination IPv4 address of the endpoint, which is in the same 6rd domain. See 6rd Theory of Operation for further explanation {{bibref|TR-181i2a2|Appendix VI}}.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="SPIPv6Prefix" access="readWrite">
        <description>The Service Provider's 6rd IPv6 prefix for this deployment and this 6rd RG.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
        </syntax>
      </parameter>
      <parameter name="IPv4MaskLength" access="readWrite">
        <description>The number of high-order {{units}} that are identical across all IPv4 addresses within a given 6rd domain. This number of {{units}} MUST be removed from the start of the IPv4 address when generating the 6rd delegated prefix.
For example, if this value is 8, only the final 24 {{units}} of the subscriber IPv4 prefix will be used when creating the IPv6 delegated prefix, determining the destination IPv4 encapsulation address, etc.
If the value is 0, then the whole 32 {{units}} of the IPv4 address are used in the encoding.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="32"/>
            <units value="bits"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="AddressSource" access="readWrite">
        <description>{{reference}} Points to the IPv4 address that is the source of the IPv4 address embedded in the IPv6 6rd prefix, and used as the source encapsulating IPv4 address. If the value is {{empty}} or this parameter is not present, the device will use internal logic to determine which IPv4 source address to use.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv4Address." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="TunnelInterface" access="readOnly">
        <description>{{reference}} This is an IP interface of ''Type'' {{enum|Tunnel|.IP.Interface.{i}.Type}} that is logically the tunnel entry point for upstream IPv6 traffic and is also logically the tunnel exit point for downstream IPv6 traffic (i.e. the entry point for non-tunneled upstream IPv6 traffic to enter a tunnel and become tunneled, or conversely, the exit point for downstream IPv6 traffic leaving a tunnel after being un-tunneled). 
IPv6 traffic that enters {{param}} from the LAN is expected to continue on through {{param|TunneledInterface}}, and traffic from the WAN is expected to come from {{param|TunneledInterface}} into {{param}}. {{param}} is a logical interface that can allow for classification, marking (of IPv6 headers), and policing of IPv6 traffic that will be going over a 6rd tunnel. These functions are modeled in the {{object|.QoS.}} object.
{{param}} can be used also to represent the 6rd virtual interface defined in {{bibref|RFC5969}}.
Note: In 6rd, IPv6 packets arriving over one or more device LAN IP interfaces are logically fed into this {{param}}. Likewise, 6rd traffic from the WAN gets logically sent from this {{param}} to LAN IP interfaces.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="TunneledInterface" access="readOnly">
        <description>{{reference}} This is an IP interface of ''Type'' {{enum|Tunneled|.IP.Interface.{i}.Type}} that provides information about the IPv4 headers used to encapsulate the IPv6 packets.
Encapsulated IPv6 traffic that enters {{param}} from the WAN is expected to continue on through {{param|TunnelInterface}}, and traffic from the LAN is expected to come from {{param|TunnelInterface}} into {{param}}. {{param}} is a logical interface that can allow for classification, marking (of IPv4 headers and VLAN tags), and policing of IPv4 packets that encapsulate IPv6 packets in 6rd traffic. These functions are modeled in the {{object|.QoS.}} object.
Note: In 6rd, {{param}} traffic originating from the LAN logically feeds into a WAN-side IPv4 capable IP interface that the "IPv6 6rd tunnel" goes over. 6rd traffic that enters over this IPv4 WAN interface gets logically sent to this {{param}}.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DSLite." access="readOnly" minEntries="1" maxEntries="1">
      <description>Settings allowing a CPE to configure and route IPv6 Dual-Stack Lite (DSLite) as specified in {{bibref|DSLite}}. The DS-Lite mechanism is intended to be implemented only on gateway devices that support IPv4 on the LAN side and only have IPv6 connectivity on the WAN side.
See the Dual-Stack Lite Theory of Operation {{bibref|TR-181i2a2|Appendix VII}} for a description of the working of this DS-Lite data model.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables DSLite.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="InterfaceSettingNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DSLite.InterfaceSetting.{i}." access="readOnly" minEntries="0" maxEntries="unbounded" numEntriesParameter="InterfaceSettingNumberOfEntries">
      <description>DSLite {{bibref|DSLite}} settings.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enable or disable this {{object}} instance.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this 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>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="EndpointAssignmentPrecedence" access="readWrite">
        <description>Indicates the preferred method to be used in assigning values to {{param|EndpointName}} and {{param|EndpointAddress}} when both static and dynamic values are available to them. See {{param|EndpointName}} and {{param|EndpointAddress}} for further clarification.</description>
        <syntax>
          <string>
            <enumeration value="DHCPv6"/>
            <enumeration value="Static"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="EndpointName" access="readWrite">
        <description>The Fully Qualified Domain Name (FQDN) of the tunnel concentrator (remote endpoint).
This parameter is based on ''OPTION_DS_LITE_NAME'' from {{bibref|DSLite-options|Section 4}} and can be assigned statically (e.g. present in the factory default configuration or set by the ACS) or assigned dynamically (via DHCPv6). If both statically and dynamically assigned, then {{param|EndpointAssignmentPrecedence}} indicates whether it is the static configuration or the DHCPv6 configuration that is actually applied to {{param}}. 
When {{param}} is assigned, the name is looked up (resolved) and the corresponding address is set in {{param|EndpointAddress}}.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="EndpointAddress" access="readWrite">
        <description>The address of the tunnel concentrator (remote endpoint).
This parameter is based on ''OPTION_DS_LITE_ADDR'' from {{bibref|DSLite-options|Section 3}} and can be assigned statically (e.g. present in the factory default configuration or set by the ACS) or assigned dynamically (via DHCPv6). If both statically and dynamically assigned, then {{param|EndpointAssignmentPrecedence}} indicates whether it is the static configuration or the DHCPv6 configuration that is actually applied to {{param}}.
When {{param|EndpointName}} is assigned, the name is looked up (resolved) and the corresponding address is set in {{param}}.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="Origin" access="readOnly">
        <description>Method used to assign {{param|EndpointName}} and {{param|EndpointAddress}}.  {{enum}}</description>
        <syntax>
          <string>
            <enumeration value="DHCPv6">
              <description>Assigned by DHCPv6 {{bibref|RFC3315}}.</description>
            </enumeration>
            <enumeration value="Static">
              <description>For example, present in the factory default configuration, set by the ACS, or set by some other management entity (e.g. via a GUI).</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
      <parameter name="TunnelInterface" access="readOnly">
        <description>{{reference}} This is an IP interface of ''Type'' {{enum|Tunnel|.IP.Interface.{i}.Type}} that is logically the tunnel entry point for upstream IPv4 traffic and is also logically the tunnel exit point for downstream IPv4 traffic (i.e. the entry point for non-tunneled upstream IPv4 traffic to enter a tunnel and become tunneled, or conversely, the exit point for downstream IPv4 traffic leaving a tunnel after being un-tunneled). 
IPv4 traffic that enters {{param}} is expected to continue on through {{param|TunneledInterface}} from the LAN, and traffic from the WAN is expected to come from TunneledInterface into TunnelInterface. TunnelInterface is a logical interface that can allow for classification, marking (of IPv4 headers), and policing of IPv4 traffic that will be going over a DS-Lite tunnel. These functions are modeled in the Device.QoS object.
Note: In DS-Lite, IPv4 packets arriving over one or more device LAN IP interfaces are logically fed into this {{param}}. Likewise, DS-Lite traffic from the WAN gets logically sent from this {{param}} to LAN IP interfaces.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="TunneledInterface" access="readOnly">
        <description>{{reference}} This is an IP interface of ''Type'' {{enum|Tunneled|.IP.Interface.{i}.Type}} that provides information about the IPv6 headers used to encapsulate the IPv4 packets.
Encapsulated IPv4 traffic that enters {{param}} from the WAN is expected to continue on through {{param|TunnelInterface}}, and traffic from the LAN is expected to come from {{param|TunnelInterface}} into {{param}}. {{param}} is a logical interface that can allow for classification, marking (of IPv6 headers and VLAN tags), and policing of IPv6 packets that encapsulate IPv4 packets in DS-Lite traffic. These functions are modeled in the {{object|.QoS.}} object.
Note: In DS-Lite, {{param}} traffic originating from the LAN logically feeds into a WAN-side IPv6 capable IP interface that the "DSLite IPv4-in-IPv6 tunnel" goes over. DS-Lite traffic that enters over this IPv6 WAN interface gets logically sent to this {{param}}.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.DNS." access="readOnly" minEntries="1" maxEntries="1">
      <parameter name="SupportedRecordTypes" access="readOnly">
        <description>The DNS record types that are supported by the device. {{enum}}</description>
        <syntax>
          <list/>
          <string>
            <enumeration value="A">
              <description>{{bibref|RFC1035}}</description>
            </enumeration>
            <enumeration value="AAAA">
              <description>{{bibref|RFC3596}}</description>
            </enumeration>
            <enumeration value="SRV">
              <description>{{bibref|RFC2782}}</description>
            </enumeration>
            <enumeration value="PTR">
              <description>{{bibref|RFC1035}}</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.DNS.Client.Server.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="replace">This table contains the DNS Server IP address to be used by the DHCP Client (it does ''not'' model a DNS Server). Entries are either automatically created as result of DHCP (v4 or v6), IPCP, or RA received DNS server information, or are statically configured by the ACS.</description>
      <parameter base="DNSServer" access="readWrite">
        <description action="replace">DNS server IP addresses.
Note: {{param}} is only writable when {{param|Type}} is {{enum|Static|Type}}; otherwise, {{param}} is automatically configured as result of DHCP, IPCP, or RA received DNS server information.</description>
      </parameter>
      <parameter base="Interface" access="readWrite">
        <description action="replace">{{reference}} This parameter specifies the IP interface over which the DNS query is sent.
If {{empty}} is specified, the CPE MUST use its routing policy (Forwarding table entries), if necessary, to determine the appropriate interface.
Note: {{param}} is only writable when {{param|Type}} is {{enum|Static|Type}}; otherwise, {{param}} is automatically configured as result of DHCP, IPCP, or RA received DNS server information.</description>
      </parameter>
      <parameter base="Type" access="readOnly">
        <description action="replace">Method used to assign the {{param|DNSServer}} address.  {{enum}}
Table entries that are automatically created as result of DHCP, IPCP, or RA received DNS server information will have {{param}} set to {{enum|DHCPv4}}, {{enum|DHCPv6}}, {{enum|IPCP}}, or {{enum|RouterAdvertisement}}, as the case may be. Manually created table entires will have their {{param}} set to {{enum|Static}}.</description>
        <syntax>
          <string>
            <enumeration value="DHCP" status="deprecated">
              <description action="replace">Replaced by {{enum|DHCPv4}}.</description>
            </enumeration>
            <enumeration value="DHCPv4"/>
            <enumeration value="DHCPv6"/>
            <enumeration value="RouterAdvertisement"/>
            <enumeration value="IPCP"/>
            <enumeration value="Static"/>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.DNS.Relay.Forwarding.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <description action="replace">DNS Server forwarding policy to be used by the DNS Relay.  Entries are either automatically created as result of DHCP (v4 or v6), IPCP, or RA received DNS server information, or are statically configured by the ACS.
Note: Management of re-directing queries to the device embedded DNS server is not defined in this version of the specification.</description>
      <parameter base="DNSServer" access="readWrite">
        <description action="replace">DNS server IP addresses.
Note: {{param}} is only writable when {{param|Type}} is {{enum|Static|Type}}; otherwise, {{param}} is automatically configured as result of DHCP, IPCP, or RA received DNS server information.</description>
      </parameter>
      <parameter base="Interface" access="readWrite">
        <description action="replace">{{reference}} Specifies the IP interface over which the DNS query is sent.
If {{empty}} is specified, the CPE MUST use its routing policy (IP Forwarding table entries), if necessary, to determine the appropriate interface.
Note: {{param}} is only writable when {{param|Type}} is {{enum|Static|Type}}; otherwise, {{param}} is automatically configured as result of DHCP, IPCP, or RA received DNS server information.</description>
      </parameter>
      <parameter base="Type" access="readOnly">
        <description action="replace">Method used to assign the {{param|DNSServer}} address.  {{enum}}
Table entries that are automatically created as result of DHCP, IPCP, or RA received DNS server information will have {{param}} set to {{enum|DHCPv4}}, {{enum|DHCPv6}}, {{enum|IPCP}}, or {{enum|RouterAdvertisement}}, as the case may be. Manually created table entires will have their {{param}} set to {{enum|Static}}.</description>
        <syntax>
          <string>
            <enumeration value="DHCP" status="deprecated">
              <description action="replace">Replaced by {{enum|DHCPv4}}.</description>
            </enumeration>
            <enumeration value="DHCPv4"/>
            <enumeration value="DHCPv6"/>
            <enumeration value="RouterAdvertisement"/>
            <enumeration value="IPCP"/>
            <enumeration value="Static"/>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.NAT.InterfaceSetting.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter base="Status" access="readOnly">
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Enabled_PortMappingDisabled">
              <description>NAT enabled but port mapping has been operationally disabled by a third party, e.g. because this is REQUIRED by the current {{object|##.Firewall}} level.</description>
            </enumeration>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Client.{i}." access="readWrite" minEntries="1" maxEntries="unbounded">
      <parameter base="Renew" access="readWrite">
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Client.{i}.SentOption.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter base="Value" access="readWrite">
        <description action="replace">A hexbinary encoded option value.</description>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Client.{i}.ReqOption.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter base="Value" access="readOnly">
        <description action="replace">A hexbinary encoded, most recently received DHCP option value.
If no option value has been received, then the value MUST represent {{empty}}.
Received DHCP option values MAY, but need not, persist across CPE reboots.</description>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Server.Pool.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter name="ClientNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.DHCPv4.Server.Pool.{i}.Option.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter base="Value" access="readWrite">
        <description action="replace">A hexbinary encoded option value.</description>
      </parameter>
    </object>
    
    <object name="Device.DHCPv4.Server.Pool.{i}.Client.{i}." access="readOnly" numEntriesParameter="ClientNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>DHCPv4 client table.
This table lists details of DHCPv4 clients that matched the filter criteria of this {{object|#}} entry.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Chaddr"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Chaddr" access="readOnly">
        <description>MAC address of the DHCPv4 client.</description>
        <syntax>
          <dataType ref="MACAddress"/>
        </syntax>
      </parameter>
      <parameter name="Active" access="readOnly">
        <description>Whether or not the DHCPv4 client is currently present on the LAN.  The method of presence detection is a local matter to  the CPE.
The ability to list inactive DHCPv4 clients is OPTIONAL.  If the CPE includes inactive DHCPv4 clients in this table, {{param}} MUST be set to {{false}}  for each inactive DHCPv4 client.  The length of time an inactive DHCPv4 client remains listed in this table is a local matter to the CPE.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IPv4AddressNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="OptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}." access="readOnly" numEntriesParameter="IPv4AddressNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>IPv4 addresses assigned to this client.</description>
      <uniqueKey>
        <parameter ref="IPAddress"/>
      </uniqueKey>
      <parameter name="IPAddress" access="readOnly">
        <description>IPv4 address.</description>
        <syntax>
          <dataType ref="IPv4Address"/>
        </syntax>
      </parameter>
      <parameter name="LeaseTimeRemaining" access="readOnly">
        <description>The time at which the DHCP lease will expire or {{null}} if not known. For an infinite lease, the parameter value MUST be 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}." access="readOnly" numEntriesParameter="OptionNumberOfEntries" minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true">
      <description>DHCPv4 options supplied by this client, e.g. ''VendorClassID'' (Option 60), ''ClientID'' (option 61) or ''UserClassID'' (Option 77).</description>
      <parameter name="Tag" access="readOnly">
        <description>Option tag as defined in {{bibref|RFC2132}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="255"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readOnly">
        <description>A hexbinary encoded option value.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="255"/>
          </hexBinary>
        </syntax>
      </parameter>
    </object>
    
    <object base="Device.DHCPv4.Relay.Forwarding.{i}." access="readWrite" minEntries="0" maxEntries="unbounded">
      <parameter base="VendorClassID" access="readWrite">
        <description action="replace">Pool association criterion. 
Used to identify one or more LAN devices, value of the DHCP Vendor Class Identifier (Option 60) as defined in {{bibref|RFC2132}}, matched according to the criterion in {{param|VendorClassIDMode}}.  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 as a relay classification criterion.</description>
      </parameter>
      <parameter base="ClientID" access="readWrite">
        <description action="replace">Pool association criterion. 
A hexbinary string used to identify one or more LAN devices, value of the DHCP Client Identifier (Option 61) as defined in {{bibref|RFC2132}}.  The option value is binary, so an exact match is REQUIRED.
{{empty}} indicates this criterion is not used as a relay classification criterion.</description>
      </parameter>
      <parameter base="UserClassID" access="readWrite">
        <description action="replace">Pool association criterion. 
A hexbinary string used to identify one or more LAN devices, value of the DHCP User Class Identifier (Option 77) as defined in {{bibref|RFC3004}}.
{{empty}} indicates this criterion is not used as a relay classification criterion.</description>
      </parameter>
      <parameter base="Chaddr" access="readWrite">
        <description action="replace">Pool association criterion.
Hardware address (MAC address) of the physical interface of the DHCP client.
{{empty}} indicates this criterion is not used as a relay classification criterion.</description>
      </parameter>
      <parameter base="ChaddrMask" access="readWrite">
        <description action="replace">Bit-mask for the MAC address, where matching of a packet's MAC address with the {{param|Chaddr}} 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|Chaddr}} are to be used for relay classification.</description>
      </parameter>
    </object>

    <object name="Device.DHCPv6." access="readOnly" minEntries="1" maxEntries="1" dmr:previousObject="Device.DHCPv4.">
      <description>The Dynamic Host Configuration Protocol (DHCP) IPv6 object {{bibref|RFC3315}}. This entire object applies to IPv6 only. It contains the {{object|Client}} and {{object|Server}} objects.</description>
      <parameter name="ClientNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv6.Client.{i}." access="readWrite" numEntriesParameter="ClientNumberOfEntries" enableParameter="Enable" minEntries="1" maxEntries="unbounded">
      <description>This object contains DHCPv6 client settings for an associated ''IP Interface'' indicated by {{param|Interface}}.
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv6-capable interface (that is attached to the IPv6 stack), 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>
        <parameter ref="Interface"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference}} The IP Interface associated with the {{object}} entry. This will reference an IPv6-capable interface (that is attached to the IPv6 stack), otherwise the table entry will be inoperable.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this table entry. {{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="DUID" access="readOnly">
        <description>The client's DHCP Unique Identifier (DUID) {{bibref|RFC3315|Section 9}}. {{param}} is set by the CPE.</description>
        <syntax>
          <hexBinary>
            <size maxLength="130"/>
          </hexBinary>
        </syntax>
      </parameter>
      <parameter name="RequestAddresses" access="readWrite">
        <description>Enables or disables inclusion of the ''Identity Association (IA) for Non-Temporary Address'' option OPTION_IA_NA(3) {{bibref|RFC3315|Section 22.4}} in Solicit messages.</description>
        <syntax>
          <boolean/>
          <default type="object" value="true"/>
        </syntax>
      </parameter>
      <parameter name="RequestPrefixes" access="readWrite">
        <description>Enables or disables inclusion of the ''Identity Association (IA) for Prefix Delegation'' option OPTION_IA_PD(25) {{bibref|RFC3633|Section 10}} in Solicit messages.
Note that this is only appropriate for an upstream interface on a requesting router, e.g. for an RG WAN interface.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="RapidCommit" access="readWrite">
        <description>Enables or disables inclusion of the ''Rapid Commit'' option OPTION_RAPID_COMMIT(14) {{bibref|RFC3315|Section 22.14}} in Solicit messages.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Renew" access="readWrite">
        <description>When set to {{true}}, the {{object}} will renew its DHCPv6-supplied information (i.e. the CPE will do a renew or information request as needed, updating both stateful and stateless parameter values discovered by this Client instance).</description>
        <syntax command="true">
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="SuggestedT1" access="readWrite">
        <description>T1 value, in {{units}}, that the client SHOULD use when sending IA options, e.g. OPTION_IA_NA {{bibref|RFC3315|Section 22.4}} and OPTION_IA_PD {{bibref|RFC3633|Section 10}}.
A value of -1 indicates that no T1 value is specified.</description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
        </syntax>
      </parameter>
      <parameter name="SuggestedT2" access="readWrite">
        <description>T2 value, in {{units}}, that the client SHOULD use when sending IA options, e.g. OPTION_IA_NA {{bibref|RFC3315|Section 22.4}} and OPTION_IA_PD {{bibref|RFC3633|Section 10}}.
A value of -1 indicates that no T2 value is specified.</description>
        <syntax>
          <int>
            <range minInclusive="-1"/>
            <units value="seconds"/>
          </int>
        </syntax>
      </parameter>
      <parameter name="SupportedOptions" access="readOnly">
        <description>{{list}} The options that the client is able to process in server responses.  This list MUST include both top-level and encapsulated options, e.g. if the client is able to process OPTION_IA_NA (3) with an encapsulated OPTION_IAADDR (5), the list would be expected to include both 3 and 5.</description>
        <syntax>
          <list/>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="RequestedOptions" access="readWrite">
        <description>{{list}} An ordered list of the top-level options (i.e. not encapsulated options) that the client will explicitly request from the server.
This parameter is intended only for options that are not necessary for the basic operation of the protocol, and are not modeled elsewhere.  For example, it is appropriate for OPTION_DNS_SERVERS {{bibref|RFC3646}} but is not appropriate for OPTION_SERVERID (which is part of the protocol), OPTION_IA_NA (which is modeled via {{param|RequestAddresses}}) or OPTION_IA_PD (which is modeled via {{param|RequestPrefixes}}).  However, the CPE MUST NOT reject an attempt to set this parameter to a value that includes options that it regards as inappropriate; instead, it MUST accept the requested options and handle them as best it can.
Loosely speaking, these are the options that the client will include in OPTION_ORO {{bibref|RFC3315}} but the client is free to decide (in accordance with {{bibref|RFC3315}}) in which messages to request which option, whether also to request additional options, whether not to request inappropriate options, and in which order to request any options that are also in {{param|SupportedOptions}}.</description>
        <syntax>
          <list/>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="ServerNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="SentOptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="ReceivedOptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DHCPv6.Client.{i}.Server.{i}." access="readOnly" numEntriesParameter="ServerNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>This is a transitory table that lists the discovered DHCPv6 servers (it does ''not'' model a local DHCP server). Table entries are automatically created to correspond with these servers. However, it is a local matter to the CPE when to delete old table entries.</description>
      <uniqueKey>
        <parameter ref="SourceAddress"/>
      </uniqueKey>
      <parameter name="SourceAddress" access="readOnly">
        <description>The IP address from which the message most recently received from this server was sent.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="DUID" access="readOnly">
        <description>The server's DHCP Unique Identifier (DUID) {{bibref|RFC3315|Section 9}} as received via OPTION_SERVERID.</description>
        <syntax>
          <hexBinary>
            <size maxLength="130"/>
          </hexBinary>
        </syntax>
       </parameter>
       <parameter name="InformationRefreshTime" access="readOnly">
        <description>The OPTION_INFORMATION_REFRESH_TIME value {{bibref|RFC4242}} that was most recently received from this server, converted to the ''dateTime'' at which the associated information will expire.  If no such option has been received, the parameter value MUST be the "Unknown Time" {{null}}.  If the information will never expire, the parameter value MUST be infinite time 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DHCPv6.Client.{i}.SentOption.{i}." access="readWrite" numEntriesParameter="SentOptionNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded">
      <description>The top-level options and option values (including any encapsulated options) that the client will send to the server.
This table is intended only for options that are not part of the basic operation of the protocol, and whose values are simple, do not often change and are not modeled elsewhere.  For example, it is appropriate for OPTION_USER_CLASS (whose value is a list of user classes) but is not appropriate for OPTION_RECONF_MSG (which is part of the protocol), OPTION_IA_NA (which is modeled via {{param|#.RequestAddresses}}) or OPTION_RAPID_COMMIT (which is modeled via {{param|#.RapidCommit}}).</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Tag"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Tag" access="readWrite">
        <description>Option tag (code) {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readWrite">
        <description>A hexbinary encoded option data {{bibref|RFC3315|Section 22.1}}.
Note: The length of the option data is ''option-len'' octets, as specified in {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DHCPv6.Client.{i}.ReceivedOption.{i}." access="readOnly" numEntriesParameter="ReceivedOptionNumberOfEntries" minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true">
      <description>This is a transitory table that lists all the options received from all servers. Table entries are automatically created to correspond with received options. However, it is a local matter to the CPE when to delete old table entries.
If the same option is received multiple times, whether from one or more servers, it is up to the CPE to decide which entries to include (i.e. whether the same option will be present multiple times). In order to allow for the same option to be present multiple times within the table, this table has no unique key defined.</description>
      <parameter name="Tag" access="readOnly">
        <description>Option tag (code) {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readOnly">
        <description>A hexbinary encoded option data {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="65535"/>
          </hexBinary>
        </syntax>
      </parameter>
      <parameter name="Server" access="readOnly">
        <description>{{reference}} This is the server that sent the option to the client. Each {{object}} entry MUST have an associated server.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="#.Server." targetType="row"/>
          </string>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv6.Server." access="readOnly" minEntries="1" maxEntries="1">
      <description>DHCPv6 server configuration.</description>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables the DHCPv6 server function.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="PoolNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv6.Server.Pool.{i}." access="readWrite" numEntriesParameter="PoolNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded">
      <description>DHCPv6 server pool table.
Each instance of this object defines a DHCPv6 server pool. Client requests are associated with pools based on criteria such as source interface, supplied DHCPv6 options, and source address. 
Overlapping pool ranges MUST be supported.
For enabled table entries, if {{param|Interface}} is not a valid reference to an IPv6-capable interface (that is attached to the IPv6 stack) 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>
      <uniqueKey>
        <parameter ref="Order"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this entry.  {{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="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Order" access="readWrite">
        <description>Position of the {{object}} entry in the order of precedence.  A value of ''1'' indicates the first entry considered (highest precedence).  For each DHCPv6 request, the highest ordered entry that matches the association criteria is applied.  All lower order entries are ignored.
When this value is modified, if the value matches that of an existing entry, the {{param}} value for the existing entry and all lower {{param}} entries is incremented (lowered in precedence) to ensure uniqueness of this value. A deletion causes {{param}} values to be compacted. When a value is changed, incrementing occurs before compaction.
The value of {{param}} on creation of a {{object}} table entry MUST be one greater than the largest current value (initially assigned the lowest precedence).</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference}} The IP Interface associated with the {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent=".IP.Interface." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DUID" access="readWrite">
        <description>Pool association criterion. 
A hexbinary string used to identify one or more LAN devices, value of the DHCPv6 Client Identifier (Option 1) {{bibref|RFC3315|Section 22.2}}.  The option value is binary, so an exact match is REQUIRED.
{{empty}} indicates this criterion is not used.</description>
        <syntax>
          <hexBinary>
            <size maxLength="130"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DUIDExclude" access="readWrite">
        <description>If {{false}}, matching packets are those that match the {{param|DUID}} entry, if specified.
If {{true}}, matching packets are those that do not match the {{param|DUID}} entry, if specified.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="VendorClassID" access="readWrite">
        <description>Pool association criterion. 
A hexbinary string used to identify one or more LAN devices, value of the DHCPv6 Vendor Class Identifier (Option 16) {{bibref|RFC3315|Section 22.16}}.  The option value is binary, so an exact match is REQUIRED.
{{empty}} indicates this criterion is not used.</description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="VendorClassIDExclude" access="readWrite">
        <description>If {{false}}, matching packets are those that match the {{param|VendorClassID}} entry, if specified.
If {{true}}, matching packets are those that do not match the {{param|VendorClassID}} entry, if specified.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="UserClassID" access="readWrite">
        <description>Pool association criterion. 
A hexbinary string used to identify one or more LAN devices, value of the DHCPv6 User Class Identifier (Option 15) {{bibref|RFC3315|Section 22.15}}.
{{empty}} indicates this criterion is not used.</description>
        <syntax>
          <hexBinary>
            <size maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="UserClassIDExclude" access="readWrite">
        <description>If {{false}}, matching packets are those that match the {{param|UserClassID}} entry, if specified.
If {{true}}, matching packets are those that do not match the {{param|UserClassID}} entry, if specified.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="SourceAddress" access="readWrite">
        <description>Pool association criterion.
Source address (link-layer address) of DHCPv6 messages sent from the DHCPv6 client.  This criterion is only likely to be useful if this is a link-layer address.
{{empty}} indicates this criterion is not used for serving.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceAddressMask" access="readWrite">
        <description>Bit-mask for the source address, where matching of a packet's source address with the {{param|SourceAddress}} is only to be done for bit positions set to one in the mask.  A mask of {{empty}} indicates all bits of the {{param|SourceAddress}} are to be used.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceAddressExclude" access="readWrite">
        <description>If {{false}}, matching packets are those that match the (masked) {{param|SourceAddress}} entry, if specified.
If {{true}}, matching packets are those that do not match the (masked) {{param|SourceAddress}} entry, if specified.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="IANAEnable" access="readWrite">
        <description>Enables or disables IANA offers.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>  
      <parameter name="IANAManualPrefixes" access="readWrite">
        <description>{{list}} {{reference}}
Manually-configured prefixes from which IA_NA addresses will be assigned.  Each referenced prefix MUST have a  {{param|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} of {{enum|Static|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} or {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}}.  All clients that request IA_NA and match filter criteria on this {{param|Interface}} MUST be offered IA_NA addresses from all of the ''Valid'' ({{param|.IP.Interface.{i}.IPv6Prefix.{i}.ValidLifetime}} is infinite or in the future) /64 prefixes in this list.
Prefixes MUST be associated with the interface instance referenced by {{param|Interface}}.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="IANAPrefixes" access="readOnly">
        <description>{{list}} {{reference}}
All prefixes from which IA_NA addresses will be assigned. This list can include:
* Prefixes from {{param|IANAManualPrefixes}} that are used for IA_NA offers.
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} = {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} or {{enum|AutoConfigured|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} associated with the interface instance referenced by {{param|Interface}}.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"></pathRef>
          </string>
        </syntax>
      </parameter>
      <parameter name="IAPDEnable" access="readWrite">
        <description>Enables or disables IAPD offers.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="IAPDManualPrefixes" access="readWrite">
        <description>{{list}} {{reference}}
Manually-configured prefixes from which IA_PD prefixes will be derived.  This list can include:
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} = {{enum|Static|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} or {{enum|PrefixDelegation|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} associated with upstream interfaces (i.e. interfaces for which the physical layer interface object has ''Upstream'' = {{true}}).
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} = {{enum|Static|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} or {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.StaticType}} associated with with the interface instance referenced by {{param|Interface}}.
All clients that request IA_PD and match filter criteria on this {{param|Interface}} MUST be offered IA_PD prefixes derived from all of the ''Valid'' ({{param|.IP.Interface.{i}.IPv6Prefix.{i}.ValidLifetime}} is infinite or in the future) prefixes in this list.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="IAPDPrefixes" access="readOnly">
        <description>{{list}} {{reference}}
All prefixes for which IA_PD prefixes will be assigned. This list can include:
* Prefixes from {{param|IAPDManualPrefixes}} that are used for IA_PD offers.
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} = {{enum|PrefixDelegation|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} or {{enum|AutoConfigured|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} associated with upstream interfaces (i.e. interfaces for which the physical layer interface object has ''Upstream'' = {{true}}).
* Prefixes with {{param|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} = {{enum|Child|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} or {{enum|AutoConfigured|.IP.Interface.{i}.IPv6Prefix.{i}.Origin}} associated with the interface instance referenced by {{param|Interface}}.</description>
        <syntax>
          <list maxItems="8"/>
          <string>
            <pathRef refType="strong" targetParent=".IP.Interface.{i}.IPv6Prefix." targetType="row"></pathRef>
          </string>
        </syntax>
      </parameter>
      <parameter name="IAPDAddLength" access="readWrite">
        <description>The RECOMMENDED minimum number of bits to add to {{param|IAPDManualPrefixes}} or {{param|IAPDPrefixes}} in order to determine the length of prefixes that are offered in an IA_PD.  The device is responsible for ensuring that it does not delegate a prefix longer than /64.  The device can have additional logic that is used (in conjunction with this parameter) to determine the actual length of prefixes offered in an IA_PD.</description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="64"/>
          </unsignedInt>
        </syntax> 
      </parameter>
      <parameter name="ClientNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
      <parameter name="OptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
          <default type="object" value="0"/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv6.Server.Pool.{i}.Client.{i}." access="readOnly" numEntriesParameter="ClientNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>DHCPv6 client table.
This table lists details of DHCPv6 clients that matched the filter criteria of this {{object|#}} entry.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="SourceAddress"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="SourceAddress" access="readOnly">
        <description>Source address of the DHCPv6 client.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="Active" access="readOnly">
        <description>Whether or not the DHCPv6 client is currently present on the LAN.  The method of presence detection is a local matter to  the CPE.
The ability to list inactive DHCPv6 clients is OPTIONAL.  If the CPE includes inactive DHCPv6 clients in this table, {{param}} MUST be set to {{false}}  for each inactive DHCPv6 client.  The length of time an inactive DHCPv6 client remains listed in this table is a local matter to the CPE.</description>
        <syntax>
          <boolean/>
        </syntax>
       </parameter>
       <parameter name="IPv6AddressNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="IPv6PrefixNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="OptionNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
    
    <object name="Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}." access="readOnly" numEntriesParameter="IPv6AddressNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>IPv6 addresses assigned to this client via IA_NA.</description>
      <uniqueKey>
        <parameter ref="IPAddress"/>
      </uniqueKey>
      <parameter name="IPAddress" access="readOnly">
        <description>IPv6 address.</description>
        <syntax>
          <dataType ref="IPv6Address"/>
        </syntax>
      </parameter>
      <parameter name="PreferredLifetime" access="readOnly">
        <description>The time at which this address will cease to be preferred (i.e. will become deprecated), or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="ValidLifetime" access="readOnly">
        <description>The time at which this address will cease to be valid (i.e. will become invalid), or {{null}} if unknown. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}." access="readOnly" numEntriesParameter="IPv6PrefixNumberOfEntries" minEntries="0" maxEntries="unbounded">
      <description>IPv6 prefixes delegated to this client via IA_PD.</description>
      <uniqueKey>
        <parameter ref="Prefix"/>
      </uniqueKey>
      <parameter name="Prefix" access="readOnly">
        <description>IPv6 address prefix.</description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
        </syntax>
      </parameter>
      <parameter name="PreferredLifetime" access="readOnly">
        <description>The time at which this prefix will cease to be preferred (i.e. will become deprecated), or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="ValidLifetime" access="readOnly">
        <description>The time at which this prefix will cease to be valid (i.e. will become invalid), or {{null}} if unknown. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
     </object>

    <object name="Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}." access="readOnly" numEntriesParameter="OptionNumberOfEntries" minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true">
      <description>DHCPv6 options supplied by this client, e.g. ''DUID'' (Option 1), ''UserClassID'' (Option 15) or ''VendorClassID'' (option 16).</description>
      <parameter name="Tag" access="readOnly">
        <description>Option tag (code) {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readOnly">
        <description>A hexbinary encoded option value.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="65535"/>
          </hexBinary>
        </syntax>
      </parameter>
    </object>

    <object name="Device.DHCPv6.Server.Pool.{i}.Option.{i}." access="readWrite" numEntriesParameter="OptionNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded">
      <description>This object specifies the DHCPv6 options that MUST, if enabled, be offered to clients whose DHCPv6 requests are associated with this pool. If {{param|PassthroughClient}} is specified, and the referenced client has a value for a given option then the {{param|PassthroughClient}} option value will be sent instead of {{param|Value}}. Otherwise, {{param|Value}} will be sent.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey>
        <parameter ref="Tag"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Tag" access="readWrite">
        <description>Option tag (code) {{bibref|RFC3315|Section 22.1}}.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Value" access="readWrite">
        <description>A hexbinary encoded option value.</description>
        <syntax>
          <hexBinary>
            <size minLength="0" maxLength="65535"/>
          </hexBinary>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="PassthroughClient" access="readWrite">
        <description>{{reference}} Indicates whether this {{object}} entry is configured for passthrough.
If {{param}} is specified, and the referenced client (since boot) has received a value from an associated upstream DHCPv6 server for the given {{param|Tag}} option, then the referenced client's option value will be sent instead of {{param|Value}}. Otherwise, {{param|Value}} will be sent.
{{empty}} indicates that passthrough is not configured for this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="###.Client." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.IEEE8021x.Supplicant.{i}." access="readWrite" minEntries="1" maxEntries="unbounded">
      <parameter base="Reset" access="readWrite">
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
      <parameter base="Disconnect" access="readWrite">
        <syntax command="true">
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object base="Device.Firewall." access="readOnly" minEntries="1" maxEntries="1">
      <description action="replace">Firewall configuration object. The {{param|Config}} parameter enables and disables the Firewall, and can select either a predefined configuration ({{enum|High|Config}} or {{enum|Low|Config}}) or an explicitly-defined {{enum|Advanced|Config}} configuration.
For an {{enum|Advanced|Config}} configuration, {{param|AdvancedLevel}} controls the currently active Firewall Level, and the Firewall Levels are defined in the {{object|Level}}, {{object|Chain}} and {{object|Chain.{i}.Rule}} tables.
The Firewall rules modeled by this object operate only on the forwarding path. This means that they affect only routed traffic, and do not affect traffic that is destined for or generated by the CPE.  Note that any {{object|#.NAT}} processing on the ingress packet occurs before Firewall rules are applied so, for example, the Firewall rules will see the translated destination IP address and port in a downstream packet that has passed through the NAT.
See {{bibref|TR-181i2a2|Appendix VIII}} for an example {{enum|Advanced|Config}} configuration.</description>
      <parameter name="Enable" access="readWrite" dmr:previousParameter="">
        <description>Enables or disables the Firewall.
Firewalls often implement additional Denial of Service and other vulnerability protections, such as those described in {{bibref|ICSA-Baseline}}. If a {{enum|Stateful|Type}} Firewall is enabled, then it is assumed that all implemented stateful protections are enabled, unless they are overridden by some other part of the data model.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter base="Config" access="readWrite">
        <syntax>
          <string>
            <enumeration value="High"/>
            <enumeration value="Low"/>
            <enumeration value="Off" status="deprecated">
              <description action="append">This value is DEPRECATED because it is the same as setting {{param|Enable}} to {{false}}.</description>
            </enumeration>
            <enumeration value="Advanced" optional="true">
              <description>Advanced firewall configuration applies, as specified by {{param|AdvancedLevel}}.</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
      <parameter name="AdvancedLevel" access="readWrite">
        <description>Selects the currently active Firewall Level.
{{param}} only applies when {{param|Config}} is {{enum|Advanced|Config}}.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".Firewall.Level." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Type" access="readOnly">
        <description>Firewall Type. {{enum}}
A {{enum|Stateless}} Firewall treats each packet individually and thus has no concept of sessions.  Therefore a {{enum|Stateless}} Firewall cannot distinguish between unsolicited downstream traffic and downstream traffic in response to outbound messages.  This means that it has to accept all incoming downstream traffic.  Furthermore, because a {{enum|Stateless}} Firewall treats each packet individually, it does not provide any DoS or vulnerability protections.
A {{enum|Stateful}} Firewall maintains state about previous packets and thus supports sessions.  Therefore a {{enum|Stateful}} Firewall can distinguish between solicited and unsolicited downstream traffic.  In a {{enum|Stateful}} Firewall, explicitly configured rules only apply to unsolicited traffic, and can not cause packets received in response to an upstream request to be dropped.  Furthermore, because a {{enum|Stateful}} Firewall maintains state, it can provide DoS and vulnerability protections.
A device that has a {{enum|Stateless}} Firewall depends on the NAT to provide protection against unsolicited downstream IPv4 traffic.  This is because, as noted above, a {{enum|Stateless}} Firewall has to be configured to accept all incoming downstream traffic.  For IPv6 there is no NAT, so a {{enum|Stateless}} Firewall can not provide simple security protections against unsolicited downstream IPv6 traffic.</description>
        <syntax>
          <string>
            <enumeration value="Stateless">
              <description>The Firewall only implements stateless packet inspection.</description>
            </enumeration>
            <enumeration value="Stateful">
              <description>The Firewall implements both stateless and stateful packet inspection.</description>
            </enumeration>
          </string>
        </syntax>
      </parameter>
      <parameter name="LevelNumberOfEntries" access="readOnly" dmr:previousParameter="LastChange">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="ChainNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Firewall.Level.{i}." numEntriesParameter="LevelNumberOfEntries" access="readWrite" minEntries="0" maxEntries="unbounded">
      <description>Firewall Level table. When an {{enum|Advanced|#.Config}} configuration is selected, {{param|#.AdvancedLevel}} selects the currently active entry in this table. Each {{object}} table entry references the {{object|#.Chain}} that contains the rules for this level.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Name"/>
      </uniqueKey>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite">
        <description>Human-readable name associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Description" access="readWrite">
        <description>Human-readable description associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Order" access="readWrite">
        <description>Position of the {{object}} entry for user interface display; levels can be presented according to an increasing or decreasing level of security. 
When this value is modified, if the value matches that of an existing entry, the {{param}} value for the existing entry and all greater-valued {{param}} entries is incremented to ensure uniqueness of this value. A deletion causes {{param}} values to be compacted. When a value is changed, incrementing occurs before compaction.
The value of {{param}} on creation of a {{object}} table entry MUST be one greater than the largest current value.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Chain" access="readOnly">
        <description>The Chain containing Firewall Level Rules associated with this {{object}} entry.
On creation of a new {{object}} entry, the device will automatically create a new {{object|#.Chain}} table entry that this {{param}} parameter will reference.</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".Firewall.Chain." targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="PortMappingEnabled" access="readWrite">
        <description>Indicates whether NAT port mapping is enabled or disabled when this is the active Level.  For a {{enum|Stateless|#.Type}} Firewall this can be set to {{false}} to force any port mappings to be operationally disabled (for a {{enum|Stateful|#.Type}} Firewall this is not necessary because the same effect can be achieved via Firewall rules).
This parameter affects all the interfaces on which NAT is enabled.  It operationally enables or disables port mapping functionality and therefore does not affect the individual {{param|##.NAT.PortMapping.{i}.Enable}} settings.  Note that the current NAT status and NAT port mapping status are indicated by the {{param|##.NAT.InterfaceSetting.{i}.Status}} parameter.</description>
        <syntax>
          <boolean/>
          <default type="object" value="true"/>
        </syntax>
      </parameter>
      <parameter name="DefaultPolicy" access="readWrite">
        <description>Default action for packets not matching any of the level rules. {{enum}}</description>
        <syntax>
          <string>
            <enumeration value="Drop">
              <description>The firewall discards packets matching this rule.</description>
            </enumeration>
            <enumeration value="Accept">
              <description>The firewall forwards packets matching this rule.</description>
            </enumeration>
            <enumeration value="Reject" optional="true">
              <description>The firewall discards packets matching this rule, and sends an ICMP message to the originating host.</description>
            </enumeration>
          </string>
          <default type="object" value="Drop"/>
        </syntax>
      </parameter>
      <parameter name="DefaultLogPolicy" access="readWrite">
        <description>Enable or disable logging, in a {{object|##.DeviceInfo.VendorLogFile}}, of packets not matching any of the level rules.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Firewall.Chain.{i}." numEntriesParameter="ChainNumberOfEntries" enableParameter="Enable" access="readWrite" minEntries="0" maxEntries="unbounded">
      <description>Firewall Chain table. Each entry contains an ordered list of {{object|Rule}} objects which can themselves reference other {{object}} instances. A hierarchy of rules can therefore be created.
A given Firewall Chain's rules are all created by the same entity, as indicated by the {{param|Creator}} parameter.</description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="false">
        <parameter ref="Name"/>
      </uniqueKey>
      <parameter name="Enable" access="readWrite">
        <description>Enables or disables this {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
        <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Name" access="readWrite">
        <description>Human-readable name associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Creator" access="readOnly">
        <description>Creator of this {{object}} entry and of its {{object|Rule}}s. {{enum}}
Note that this is the entity that originally created the {{object}} entry.  The value of this parameter does not change if the {{object}} entry or one of its rules is subsequently changed by another entity.</description>
        <syntax>
          <string>
            <enumeration value="Defaults">
              <description>The {{object}} entry is present in the factory default configuration.</description>
            </enumeration>
            <enumeration value="PortMapping">
              <description>The {{object}} entry was created as a side-effect of a {{bibref|UPnP-IGD:1}} or {{bibref|TR-064}} port mapping.</description>
            </enumeration>
            <enumeration value="WANIPv6FirewallControl">
              <description>The {{object}} entry was created by {{bibref|UPnP-IGD:2}} WANIPv6FirewallControl.</description>
            </enumeration>
            <enumeration value="ACS">
              <description>The {{object}} entry was created by the Auto Configuration Server.</description>
            </enumeration>
            <enumeration value="UserInterface">
              <description>The {{object}} entry was created by device user interface or command line interface.</description>
            </enumeration>
            <enumeration value="Other">
              <description>The {{object}} entry was created by another entity.</description>
            </enumeration>
          </string>
          <default type="object" value="ACS"/>
        </syntax>
      </parameter>
      <parameter name="RuleNumberOfEntries" access="readOnly">
        <description>{{numentries}}</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.Firewall.Chain.{i}.Rule.{i}." access="readWrite" numEntriesParameter="RuleNumberOfEntries" enableParameter="Enable" minEntries="0" maxEntries="unbounded">
      <description>Firewall Rule table. Each entry defines a Firewall packet selection rule. The {{param|Target}} parameter defines the action to perform for traffic matching this rule: the packet can be dropped, accepted, rejected or passed to another {{object|#}}.
This table MUST NOT contain dynamic Firewall rules associated with {{enum|Stateful|##.Type}} Firewall sessions.
All entries are created by the creator of the parent {{object|#}}, as indicated by its {{param|#.Creator}} parameter.  {{object}} entries in a {{object|#}} with a {{param|#.Creator}} of {{enum|Defaults|#.Creator}}, {{enum|ACS|#.Creator}}, {{enum|UserInterface|#.Creator}} or (maybe) {{enum|Other|#.Creator}} are referred to as ''Static'' {{object}}s.  Whether or not a {{object}} in a {{object|#}} with {{param|#.Creator}} {{enum|Other|#.Creator}} is regarded as ''Static'' is a local matter to the CPE.  Some of this object's parameter descriptions refer to whether a {{object}} is ''Static'' when specifying whether or not the parameter value can be modified.
For enabled table entries, if {{param|SourceInterface}} is not a valid reference and {{param|SourceAllInterfaces}} 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 {{object}} entry.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Status" access="readOnly">
        <description>The status of this {{object}} entry.  {{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>Position of the {{object}} entry in the order of precedence. A value of ''1'' indicates the first entry considered (highest precedence). For each packet, the highest ordered entry that matches the rule criteria is applied. All lower order entries are ignored.
When this value is modified, if the value matches that of an existing entry, the {{param}} value for the existing entry and all lower {{param}} entries is incremented (lowered in precedence) to ensure uniqueness of this value. A deletion causes {{param}} values to be compacted. When a value is changed, incrementing occurs before compaction.
The value of {{param}} on creation of a {{object}} table entry MUST be one greater than the largest current value (initially assigned the lowest precedence).</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="Alias" access="readWrite">
      <description>A non-volatile handle used to reference this instance. {{param}} provides a mechanism for an ACS to label this instance for future reference. An initial unique value MUST be assigned when the CPE creates an instance of this object.</description>
        <syntax>
          <string>
            <size maxLength="64"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Description" access="readWrite">
        <description>Human-readable description associated with this {{object}} entry.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Target" access="readWrite">
        <description>Action to perform for traffic matching this {{object}} entry. {{enum}}
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <string>
            <enumeration value="Drop">
              <description>The firewall discards packets matching this rule.</description>
            </enumeration>
            <enumeration value="Accept">
              <description>The firewall forwards packets matching this rule.</description>
            </enumeration>
            <enumeration value="Reject" optional="true">
              <description>The firewall discards packets matching this rule, and sends an ICMP message to the originating host.</description>
            </enumeration>
            <enumeration value="Return" optional="true">
              <description>The firewall doesn't consider the remaining rules (if any) in the current chain.</description>
            </enumeration>
            <enumeration value="TargetChain" optional="true">
              <description>The rules in the chain referenced by the {{param|TargetChain}} parameter are matched.</description>
            </enumeration>
          </string>
          <default type="object" value="Drop"/>
        </syntax>
      </parameter>
      <parameter name="TargetChain" access="readWrite">
        <description>Specifies the chain to process when {{param|Target}} equals {{enum|TargetChain|Target}}.  If there are no matching rules in the referenced chain, processing continues with the next rule in this chain (if any).  In other words, {{enum|TargetChain|Target}} behaves like a subroutine call.
{{empty}} indicates no {{param}} is specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent=".Firewall.Chain." targetType="row"/>
        </string>
        <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="Log" access="readWrite">
        <description>Enable or disable logging, in a {{object|###.DeviceInfo.VendorLogFile}}, of packets matching this {{object}}.
If the {{object}} is not ''Static'' (as explained in the object description), whether changes to this parameter persist across re-boot is a local matter to the CPE.</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="CreationDate" access="readOnly">
        <description>Date and time when this {{object}} entry was created.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="ExpiryDate" access="readWrite">
        <description>The time at which this {{object}} entry will expire, or {{null}} if not known. For an infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.
The only value that MUST be supported is 9999-12-31T23:59:59Z (i.e. support for rules that expire is OPTIONAL).
When a rule expires, the CPE MUST automatically terminate that rule and MUST automatically delete the corresponding {{object}} table entry.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
      <parameter name="SourceInterface" access="readWrite">
        <description>{{object}} 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 Rules can be instantiated is a local matter to the CPE.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceInterfaceExclude" access="readWrite">
        <description>If {{false}}, the rule matches only those packets that match the {{param|SourceInterface}} entry, if specified. 
If {{true}}, the rule matches all packets except those that match the {{param|SourceInterface}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="SourceAllInterfaces" access="readWrite">
        <description>{{object}} criterion. This specifies that all ingress interfaces are associated with the entry. If {{true}}, the values of {{param|SourceInterface}} and {{param|SourceInterfaceExclude}} are ignored since all ingress interfaces are indicated.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="DestInterface" access="readWrite">
        <description>{{object}} criterion. {{reference}}  
This specifies the egress interface associated with the entry. It MAY be a layer 1, 2 or 3 interface, however, the types of interfaces for which Rules can be instantiated is a local matter to the CPE.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DestInterfaceExclude" access="readWrite">
        <description>If {{false}}, the rule matches only those packets that match the {{param|DestInterface}} entry, if specified.
If {{true}}, the rule matches all packets except those that match the {{param|DestInterface}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="DestAllInterfaces" access="readWrite">
        <description>{{object}} criterion. This specifies that all egress interfaces are associated with the entry. If {{true}}, the values of {{param|DestInterface}} and {{param|DestInterfaceExclude}} are ignored since all ingress interfaces are indicated.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="IPVersion" access="readWrite">
      <description>{{object}} criterion.
IP Protocol Version (e.g. 4 for IPv4 and 6 for IPv6). A value of -1 indicates this criterion is not used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="15"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter name="DestIP" access="readWrite">
      <description>{{object}} criterion.
Destination IP address. {{empty}} indicates this criterion is not used for matching.
Note that Firewall rules are applied after any {{object|###.NAT}} processing, so if NAT is enabled on the source interface this is always the translated address.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <dataType ref="IPAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DestMask" access="readWrite">
        <description>Destination IP address mask, but represented as an IP routing prefix using CIDR notation {{bibref|RFC4632}} (e.g. 192.168.0.0/16 in IPv4, and 2001:db8:3210:11aa::/64 in IPv6). If not {{empty}}, only the indicated portion of the {{param|DestIP}} address is to be used for matching. {{empty}} indicates that the full {{param|DestIP}} address is to be used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <dataType ref="IPPrefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="DestIPExclude" access="readWrite">
        <description>If {{false}}, the rule matches only those packets that match the (masked) {{param|DestIP}} entry, if specified.
If {{true}}, the rule matches all packets except those that match the (masked) {{param|DestIP}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="SourceIP" access="readWrite">
      <description>{{object}} criterion.
Source IP address. {{empty}} indicates this criterion is not used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <dataType ref="IPAddress"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceMask" access="readWrite">
        <description>Source IP address mask, but represented as an IP routing prefix using CIDR notation {{bibref|RFC4632}} (e.g. 192.168.0.0/16 in IPv4, and 2001:db8:3210:11aa::/64 in IPv6). If not {{empty}}, only the indicated portion of the {{param|SourceIP}} address is to be used for matching. {{empty}} indicates that the full {{param|SourceIP}} address is to be used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <dataType ref="IPPrefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>
      <parameter name="SourceIPExclude" access="readWrite">
        <description>If {{false}}, the rule matches only those packets that match the (masked) {{param|SourceIP}} entry, if specified.
If {{true}}, the rule matches all packets except those that match the (masked) {{param|SourceIP}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="Protocol" access="readWrite">
        <description>{{object}} criterion.
Protocol number. A value of -1 indicates this criterion is not used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</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 rule matches only those packets that match the {{param|Protocol}} entry, if specified.
If {{true}}, the rule matches all packets except those that match the {{param|Protocol}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="DestPort" access="readWrite">
        <description>{{object}} criterion.
Destination port number. A value of -1 indicates this criterion is not used for matching.
Note that Firewall rules are applied after any {{object|###.NAT}} processing, so if NAT is enabled on the source interface this is always the translated port number.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter name="DestPortRangeMax" access="readWrite">
        <description>{{object}} criterion.
If specified, indicates the {{object}} 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.
Note that Firewall rules are applied after any {{object|###.NAT}} processing, so if NAT is enabled on the source interface this is always the translated port number.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</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 rule matches only those packets that match the {{param|DestPort}} entry (or port range), if specified.
If {{true}}, the rule matches all packets except those that match the {{param|DestPort}} entry (or port range), if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="SourcePort" access="readWrite">
        <description>{{object}} criterion.
Source port number. A value of -1 indicates this criterion is not used for matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <int>
            <range minInclusive="-1" maxInclusive="65535"/>
          </int>
          <default type="object" value="-1"/>
        </syntax>
      </parameter>
      <parameter name="SourcePortRangeMax" access="readWrite">
        <description>{{object}} criterion.
If specified, indicates the {{object}} criterion is to include the port range from {{param|SourcePort}} through {{param}} (inclusive). If specified, {{param}} MUST be greater than or equal to {{param|SourcePort}}.
A value of -1 indicates that no port range is specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</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 rule matches only those packets that match the {{param|SourcePort}} entry (or port range), if specified.
If {{true}}, the rule matches all packets except those that match the {{param|SourcePort}} entry (or port range), if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
      <parameter name="DSCP" access="readWrite">
        <description>{{object}} 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 matching.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</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 rule matches only those packets that match the {{param|DSCP}} entry, if specified.
If {{true}}, the rule matchess all packets except those that match the {{param|DSCP}} entry, if specified.
This parameter can only be modified if the {{object}} is ''Static'' (as explained in the object description).</description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
   </object>

    <!-- PROFILES -->

    <profile name="Baseline:2" base="Baseline:1" dmr:previousProfile="Baseline:1">
      <object ref="Device.InterfaceStack.{i}." requirement="present">
        <parameter ref="HigherLayer" requirement="readOnly" />
        <parameter ref="LowerLayer" requirement="readOnly" />
      </object>
      <object ref="Device.DNS." requirement="present">
        <parameter ref="SupportedRecordTypes" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="Routing:2" base="Routing:1" dmr:previousProfile="Routing:1">
      <object ref="Device.Routing.Router.{i}.IPv4Forwarding.{i}." requirement="createDelete">
        <parameter ref="Origin" requirement="readOnly"/>
      </object>
    </profile>
    
    <profile name="IPv6Routing:1" dmr:previousProfile="Routing:2">
      <object ref="Device.Routing." requirement="present">
        <parameter ref="RouterNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Routing.RIP." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="SupportedModes" requirement="readOnly"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Routing.RIP.InterfaceSetting.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="Version" requirement="readWrite"/>
        <parameter ref="AcceptRA" requirement="readWrite"/>
        <parameter ref="SendRA" requirement="readWrite"/>
      </object>
      <object ref="Device.Routing.RouteInformation." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Routing.RouteInformation.InterfaceSetting.{i}." requirement="present">
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readOnly"/>
        <parameter ref="SourceRouter" requirement="readOnly"/>
        <parameter ref="PreferredRouteFlag" requirement="readOnly"/>
        <parameter ref="Prefix" requirement="readOnly"/>
        <parameter ref="RouteLifetime" requirement="readOnly"/>
      </object>
      <object ref="Device.Routing.Router.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="IPv6ForwardingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Routing.Router.{i}.IPv6Forwarding.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="DestIPPrefix" requirement="readWrite"/>
        <parameter ref="NextHop" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="ForwardingMetric" requirement="readWrite"/>
        <parameter ref="Origin" requirement="readOnly"/>
      </object>
    </profile>
    
    <profile name="IPInterface:2" base="IPInterface:1" dmr:previousProfile="IPInterface:1">
      <description>This profile is IPv4 specific.</description>
      <object ref="Device.IP." requirement="present">
        <parameter ref="IPv4Enable" requirement="readWrite" dmr:previousParameter="IPv4Capable"/>
        <parameter ref="IPv4Status" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="IPv4Enable" requirement="readWrite" dmr:previousParameter="Enable"/>
      </object>
      <object ref="Device.IP.Interface.{i}.IPv4Address.{i}." requirement="createDelete">
        <parameter ref="Status" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="IPv6Interface:1" dmr:previousProfile="IPInterface:2">
      <object ref="Device.IP." requirement="present">
        <parameter ref="IPv6Capable" requirement="readOnly"/>
        <parameter ref="IPv6Enable" requirement="readWrite"/>
        <parameter ref="IPv6Status" requirement="readOnly"/>
        <parameter ref="ULAPrefix" requirement="readWrite"/>
        <parameter ref="InterfaceNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="IPv6Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="LastChange" requirement="readOnly"/>
        <parameter ref="LowerLayers" requirement="readWrite"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="ULAEnable" requirement="readWrite"/>
        <parameter ref="Reset" requirement="readWrite"/>
        <parameter ref="IPv6AddressNumberOfEntries" requirement="readOnly"/>
        <parameter ref="IPv6PrefixNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}.IPv6Address.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="IPAddressStatus" requirement="readOnly"/>
        <parameter ref="IPAddress" requirement="readWrite"/>
        <parameter ref="Origin" requirement="readOnly"/>
        <parameter ref="Prefix" requirement="readWrite"/>
        <parameter ref="PreferredLifetime" requirement="readWrite"/>
        <parameter ref="ValidLifetime" requirement="readWrite"/>
      </object>
      <object ref="Device.IP.Interface.{i}.IPv6Prefix.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="PrefixStatus" requirement="readOnly"/>
        <parameter ref="Prefix" requirement="readWrite"/>
        <parameter ref="Origin" requirement="readOnly"/>
        <parameter ref="OnLink" requirement="readWrite"/>
        <parameter ref="Autonomous" requirement="readWrite"/>
        <parameter ref="PreferredLifetime" requirement="readWrite"/>
        <parameter ref="ValidLifetime" requirement="readWrite"/>
      </object>
      <object ref="Device.IP.Interface.{i}.Stats." requirement="present">
        <parameter ref="BytesSent" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="PacketsSent" requirement="readOnly"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="ErrorsSent" requirement="readOnly"/>
        <parameter ref="ErrorsReceived" requirement="readOnly"/>
        <parameter ref="UnicastPacketsSent" requirement="readOnly"/>
        <parameter ref="UnicastPacketsReceived" requirement="readOnly"/>
        <parameter ref="DiscardPacketsSent" requirement="readOnly"/>
        <parameter ref="DiscardPacketsReceived" requirement="readOnly"/>
        <parameter ref="MulticastPacketsSent" requirement="readOnly"/>
        <parameter ref="MulticastPacketsReceived" requirement="readOnly"/>
        <parameter ref="UnknownProtoPacketsReceived" requirement="readOnly"/>
      </object>
    </profile>
    
    <profile name="PPPInterface:2" base="PPPInterface:1" dmr:previousProfile="PPPInterface:1">
      <object ref="Device.PPP." requirement="present">
        <parameter ref="SupportedNCPs" requirement="readOnly"/>
      </object>
      <object ref="Device.PPP.Interface.{i}." requirement="createDelete">
        <parameter ref="IPv6CPEnable" requirement="readWrite">
          <description>REQUIRED only for IPv6 capable devices.</description>
        </parameter>
      </object>
      <object ref="Device.PPP.Interface.{i}.IPv6CP." requirement="present">
        <description>REQUIRED only for IPv6 capable devices.</description>
        <parameter ref="LocalInterfaceIdentifier" requirement="readOnly"/>
        <parameter ref="RemoteInterfaceIdentifier" requirement="readOnly"/>
      </object>
    </profile>
    
    <profile name="BridgeFilter:2" base="BridgeFilter:1" dmr:previousProfile="BridgeFilter:1">
      <object ref="Device.Bridging.Filter.{i}." requirement="createDelete">
        <parameter ref="DHCPType" requirement="readWrite" dmr:previousParameter="Interface"/>
        <parameter ref="SourceMACFromVendorClassIDFilter" requirement="readWrite">
          <description>REQUIRED only for IPv4 capable devices.</description>
        </parameter>
        <parameter ref="DestMACFromVendorClassIDFilter" requirement="readWrite">
          <description>REQUIRED only for IPv4 capable devices.</description>
        </parameter>
        <parameter ref="SourceMACFromVendorClassIDFilterv6" requirement="readWrite">
          <description>REQUIRED only for IPv6 capable devices.</description>
        </parameter>
        <parameter ref="DestMACFromVendorClassIDFilterv6" requirement="readWrite">
          <description>REQUIRED only for IPv6 capable devices.</description>
        </parameter>
      </object>
    </profile>
    
    <profile name="QoS:2" base="QoS:1" dmr:previousProfile="QoS:1">
      <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="NeighborDiscovery:1" dmr:previousProfile="QoSStats:1">
      <object ref="Device.NeighborDiscovery." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.NeighborDiscovery.InterfaceSetting.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="RetransTimer" requirement="readWrite"/>
        <parameter ref="RtrSolicitationInterval" requirement="readWrite"/>
        <parameter ref="MaxRtrSolicitations" requirement="readWrite"/>
        <parameter ref="NUDEnable" requirement="readWrite"/>
        <parameter ref="RSEnable" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="RouterAdvertisement:1">
      <object ref="Device.RouterAdvertisement." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.RouterAdvertisement.InterfaceSetting.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="MaxRtrAdvInterval" requirement="readWrite"/>
        <parameter ref="MinRtrAdvInterval" requirement="readWrite"/>
        <parameter ref="AdvDefaultLifetime" requirement="readWrite"/>
        <parameter ref="AdvManagedFlag" requirement="readWrite"/>
        <parameter ref="AdvOtherConfigFlag" requirement="readWrite"/>
        <parameter ref="AdvMobileAgentFlag" requirement="readWrite"/>
        <parameter ref="AdvPreferredRouterFlag" requirement="readWrite"/>
        <parameter ref="AdvNDProxyFlag" requirement="readWrite"/>  
        <parameter ref="AdvLinkMTU" requirement="readWrite"/>
        <parameter ref="AdvReachableTime" requirement="readWrite"/>
        <parameter ref="AdvRetransTimer" requirement="readWrite"/>
        <parameter ref="AdvCurHopLimit" requirement="readWrite"/> 
        <parameter ref="OptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="IPv6rd:1">
      <object ref="Device.IPv6rd." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IPv6rd.InterfaceSetting.{i}." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="BorderRelayIPv4Addresses" requirement="readWrite"/>
        <parameter ref="AllTrafficToBorderRelay" requirement="readWrite"/>
        <parameter ref="SPIPv6Prefix" requirement="readWrite"/>
        <parameter ref="IPv4MaskLength" requirement="readWrite"/>
        <parameter ref="AddressSource" requirement="readWrite"/>
        <parameter ref="TunnelInterface" requirement="readOnly"/>
        <parameter ref="TunneledInterface" requirement="readOnly"/>
      </object>
    </profile>
    
    <profile name="DSLite:1">
      <object ref="Device.DSLite." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="InterfaceSettingNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DSLite.InterfaceSetting.{i}." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="EndpointAssignmentPrecedence" requirement="readWrite"/>
        <parameter ref="EndpointName" requirement="readWrite"/>
        <parameter ref="EndpointAddress" requirement="readWrite"/>
        <parameter ref="Origin" requirement="readOnly"/>
        <parameter ref="TunnelInterface" requirement="readOnly"/>
        <parameter ref="TunneledInterface" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv4ServerClientInfo:1" dmr:previousProfile="DHCPv4Relay:1">
      <object ref="Device.DHCPv4.Server.Pool.{i}." requirement="createDelete">
        <parameter ref="ClientNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv4.Server.Pool.{i}.Client.{i}." requirement="present">
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Chaddr" requirement="readOnly"/>
        <parameter ref="Active" requirement="readOnly"/>
        <parameter ref="IPv4AddressNumberOfEntries" requirement="readOnly"/>
        <parameter ref="OptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}." requirement="present">
        <parameter ref="IPAddress" requirement="readOnly"/>
        <parameter ref="LeaseTimeRemaining" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}." requirement="present">
        <parameter ref="Tag" requirement="readOnly"/>
        <parameter ref="Value" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv6Client:1">
      <object ref="Device.DHCPv6." requirement="present">
        <parameter ref="ClientNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="RequestAddresses" requirement="readWrite"/>
        <parameter ref="RequestPrefixes" requirement="readWrite"/>
        <parameter ref="RapidCommit" requirement="readWrite"/>
        <parameter ref="Renew" requirement="readWrite"/>
        <parameter ref="SuggestedT1" requirement="readWrite"/>
        <parameter ref="SuggestedT2" requirement="readWrite"/>
        <parameter ref="SupportedOptions" requirement="readOnly"/>
        <parameter ref="RequestedOptions" requirement="readWrite"/>
        <parameter ref="SentOptionNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ReceivedOptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.SentOption.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readWrite"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.ReceivedOption.{i}." requirement="present">
        <parameter ref="Tag" requirement="readOnly"/>
        <parameter ref="Value" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv6ClientServerIdentity:1" extends="DHCPv6Client:1">
      <object ref="Device.DHCPv6.Client.{i}." requirement="createDelete">
        <parameter ref="ServerNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.Server.{i}." requirement="present">
        <parameter ref="SourceAddress" requirement="readOnly"/>
        <parameter ref="DUID" requirement="readOnly"/>
        <parameter ref="InformationRefreshTime" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Client.{i}.ReceivedOption.{i}." requirement="present">
        <parameter ref="Server" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="DHCPv6Server:1">
      <object ref="Device.DHCPv6." requirement="present"/>
      <object ref="Device.DHCPv6.Server." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="PoolNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{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="IANAEnable" requirement="readWrite"/>
        <parameter ref="IAPDEnable" requirement="readWrite"/>
        <parameter ref="IANAPrefixes" requirement="readOnly"/>
        <parameter ref="IAPDAddLength" requirement="readWrite"/>
        <parameter ref="OptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{i}.Option.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Tag" requirement="readWrite"/>
        <parameter ref="Value" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="DHCPv6ServerAdv:1" extends="DHCPv6Server:1">
      <object ref="Device.DHCPv6.Server.Pool.{i}." requirement="createDelete">
        <parameter ref="DUID" requirement="readWrite"/>
        <parameter ref="VendorClassID" requirement="readWrite"/>
        <parameter ref="UserClassID" requirement="readWrite"/>
        <parameter ref="SourceAddress" requirement="readWrite"/>
        <parameter ref="SourceAddressMask" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="DHCPv6ServerClientInfo:1">
      <object ref="Device.DHCPv6.Server.Pool.{i}." requirement="createDelete">
        <parameter ref="ClientNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{i}.Client.{i}." requirement="present">
        <parameter ref="SourceAddress" requirement="readOnly"/>
        <parameter ref="Active" requirement="readOnly"/>
        <parameter ref="IPv6AddressNumberOfEntries" requirement="readOnly"/>
        <parameter ref="IPv6PrefixNumberOfEntries" requirement="readOnly"/>
        <parameter ref="OptionNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}." requirement="present">
        <parameter ref="IPAddress" requirement="readOnly"/>
        <parameter ref="PreferredLifetime" requirement="readOnly"/>
        <parameter ref="ValidLifetime" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}." requirement="present">
        <parameter ref="Prefix" requirement="readOnly"/>
        <parameter ref="PreferredLifetime" requirement="readOnly"/>
        <parameter ref="ValidLifetime" requirement="readOnly"/>
      </object>
      <object ref="Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}." requirement="present">
        <parameter ref="Tag" requirement="readOnly"/>
        <parameter ref="Value" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="AdvancedFirewall:1" extends="SimpleFirewall:1" dmr:previousProfile="SimpleFirewall:1">
      <object ref="Device.Firewall." requirement="present">
        <parameter ref="AdvancedLevel" requirement="readWrite"/>
        <parameter ref="Type" requirement="readOnly"/>
        <parameter ref="LevelNumberOfEntries" requirement="readOnly"/>
        <parameter ref="ChainNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Firewall.Level.{i}." requirement="createDelete">
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readOnly"/>
        <parameter ref="Order" requirement="readWrite"/>
        <parameter ref="Chain" requirement="readOnly"/>
        <parameter ref="PortMappingEnabled" requirement="readWrite">
          <description>REQUIRED only for devices that support NAT.</description>
        </parameter>
        <parameter ref="DefaultPolicy" requirement="readWrite"/>
        <parameter ref="DefaultLogPolicy" requirement="readWrite"/>
      </object>
      <object ref="Device.Firewall.Chain.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Name" requirement="readWrite"/>
        <parameter ref="Creator" requirement="readOnly"/>
        <parameter ref="RuleNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.Firewall.Chain.{i}.Rule.{i}." requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Order" requirement="readWrite"/>
        <parameter ref="Alias" requirement="readWrite"/>
        <parameter ref="Target" requirement="readWrite"/>
        <parameter ref="TargetChain" requirement="readWrite"/>
        <parameter ref="SourceInterface" requirement="readWrite"/>
        <parameter ref="SourceInterfaceExclude" requirement="readWrite"/>
        <parameter ref="SourceAllInterfaces" requirement="readWrite"/>
        <parameter ref="DestInterface" requirement="readWrite"/>
        <parameter ref="DestInterfaceExclude" requirement="readWrite"/>
        <parameter ref="DestAllInterfaces" requirement="readWrite"/>
        <parameter ref="IPVersion" 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"/>
      </object>  
    </profile>

    <profile name="Hosts:2" base="Hosts:1" dmr:previousProfile="Hosts:1">
      <object ref="Device.Hosts.Host.{i}." requirement="present">
        <parameter ref="DHCPClient" requirement="readOnly"/>
        <parameter ref="AssociatedDevice" requirement="readOnly"/>
        <parameter ref="IPv4AddressNumberOfEntries" requirement="readOnly">
          <description>REQUIRED only for IPv4 capable devices.</description> 
        </parameter>
        <parameter ref="IPv6AddressNumberOfEntries" requirement="readOnly">
          <description>REQUIRED only for IPv6 capable devices.</description> 
        </parameter>
      </object>
      <object ref="Device.Hosts.Host.{i}.IPv4Address.{i}." requirement="present">
        <description>REQUIRED only for IPv4 capable devices.</description>  
        <parameter ref="IPAddress" requirement="readOnly"/>
      </object>
      <object ref="Device.Hosts.Host.{i}.IPv6Address.{i}." requirement="present">
        <description>REQUIRED only for IPv6 capable devices.</description>
        <parameter ref="IPAddress" requirement="readOnly"/>
      </object>
    </profile>

  </model>
</dm:document>

