<?xml version="1.0" encoding="UTF-8"?>
<!--
  Component objects for CWMP: TR-069 Device:1.2 and
  InternetGatewayDevice:1.3 Root Object definition

  Copyright (c) 2008-2017, Broadband Forum
  
  Redistribution and use in source and binary forms, with or
  without modification, are permitted provided that the following
  conditions are met:
  
  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
  
  2. Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials
     provided with the distribution.
  
  3. Neither the name of the copyright holder nor the names of its
     contributors may be used to endorse or promote products
     derived from this software without specific prior written
     permission.
  
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  
  The above license is used as a license under copyright only.
  Please reference the Forum IPR Policy for patent licensing terms
  <https://www.broadband-forum.org/ipr-policy>.
  
  Any moral rights which are necessary to exercise under the above
  license grant are also deemed granted under this license.
  
  Summary:
  TR-069 Device:1.2 and InternetGatewayDevice:1.3 Root Object Definition.
  Contains definition of Device:1.2 Root Object and Common Objects.

  Version History:
  November 2008: tr-143-1-0.xml, corresponds to TR-143 section 5 (Parameter Definitions),
                 section 6 (Notification Requirements) and section 7 (Profile
                 Definitions).
  March 2009:    tr-143-1-0-1.xml, changed to use new global bibliography, plus a few
                 editorial changes.
  September 2009:(name unchanged)
              - fixed cwmp-datamodel.xsd to be cwmp-datamodel-1-0.xsd
              - changed header comment to match CWMP web page
-->
<dm:document xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-0"
             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-0 cwmp-datamodel-1-0.xsd
                                 urn:broadband-forum-org:cwmp:datamodel-report-0-1 cwmp-datamodel-report.xsd"
             spec="urn:broadband-forum-org:tr-143-1-0-1">

  <import file="tr-069-biblio.xml" spec="urn:broadband-forum-org:tr-069-biblio"/>
  
  <import file="tr-106-1-0-types.xml" spec="urn:broadband-forum-org:tr-106-1-0">
    <dataType name="IPAddress"/>
  </import>

  <import file="tr-106-1-1.xml" spec="urn:broadband-forum-org:tr-106-1-1">
    <model name="Device:1.1"/>
  </import>

  <import file="tr-098-1-1.xml" spec="urn:broadband-forum-org:tr-098-1-1">
    <model name="InternetGatewayDevice:1.2"/>
  </import>

  <!-- Component Objects (allowed in Root and Service Objects) -->
  <component name="Capabilities">
    <description>Device capabilities (allowed in Root and Service Objects).</description>
    <object name="Capabilities." access="readOnly" minEntries="1" maxEntries="1">
      <description>The capabilities of the device.  This is a constant read-only object, meaning that only a firmware upgrade will cause these values to be altered.</description>
    </object>
    <object name="Capabilities.PerformanceDiagnostic." access="readOnly" minEntries="1" maxEntries="1">
      <description>The capabilities of the Performance Diagnostics (''DownloadDiagnostics'' and ''UploadDiagnostics'') for the device.</description>
      <parameter name="DownloadTransports" access="readOnly">
        <description>Supported ''DownloadDiagnostics'' transport protocols for a CPE device.</description>
        <syntax>
          <list/>
          <string>
            <enumeration value="HTTP"/>
            <enumeration value="FTP" optional="true"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="UploadTransports" access="readOnly">
        <description>Supported ''UploadDiagnostics'' transport protocols for a CPE device.</description>
        <syntax>
          <list/>
          <string>
            <enumeration value="HTTP"/>
            <enumeration value="FTP" optional="true"/>
          </string>
        </syntax>
      </parameter>
    </object>
  </component>
  <component name="DownloadDiagnostics">
    <description>HTTP / FTP download test (allowed in Root and Service Objects).</description>
    <object name="DownloadDiagnostics." access="readOnly" minEntries="1" maxEntries="1">
      <description>This object defines the diagnostics configuration for a HTTP and FTP DownloadDiagnostics Test.
Files received in the DownloadDiagnostics do not require file storage on the CPE device.</description>
      <parameter name="DiagnosticsState" access="readWrite" activeNotify="canDeny">
        <description>Indicate the availability of diagnostic data.  {{enum}}
If the ACS sets the value of this parameter to {{enum|Requested}}, the CPE MUST initiate the corresponding diagnostic test.  When writing, the only allowed value is {{enum|Requested}}.  To ensure the use of the proper test parameters (the writable parameters in this object), the test parameters MUST be set either prior to or at the same time as (in the same SetParameterValues) setting the {{param}} to {{enum|Requested}}.
When requested, the CPE SHOULD wait until after completion of the communication session with the ACS before starting the diagnostic.
When the test is completed, the value of this parameter MUST be either {{enum|Completed}} (if the test completed successfully), or one of the ''Error'' values listed above.
If the value of this parameter is anything other than {{enum|Completed}}, the values of the results parameters for this test are indeterminate.
When the diagnostic initiated by the ACS is completed (successfully or not), the CPE MUST establish a new connection to the ACS to allow the ACS to view the results, indicating the Event code ''8 DIAGNOSTICS COMPLETE'' in the Inform message.
After the diagnostic is complete, the value of all result parameters (all read-only parameters in this object) MUST be retained by the CPE until either this diagnostic is run again, or the CPE reboots.  After a reboot, if the CPE has not retained the result parameters from the most recent test, it MUST set the value of this parameter to {{enum|None}}.
Modifying any of the writable parameters in this object except for this one MUST result in the value of this parameter being set to {{enum|None}}.
While the test is in progress, modifying any of the writable parameters in this object except for this one MUST result in the test being terminated and the value of this parameter being set to {{enum|None}}.
While the test is in progress, setting this parameter to {{enum|Requested}} (and possibly modifying other writable parameters in this object) MUST result in the test being terminated and then restarted using the current values of the test parameters.</description>
        <syntax>
          <string>
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Completed" access="readOnly"/>
            <enumeration value="Error_InitConnectionFailed" access="readOnly"/>
            <enumeration value="Error_NoResponse" access="readOnly"/>
            <enumeration value="Error_TransferFailed" access="readOnly"/>
            <enumeration value="Error_PasswordRequestFailed" access="readOnly"/>
            <enumeration value="Error_LoginFailed" access="readOnly"/>
            <enumeration value="Error_NoTransferMode" access="readOnly"/>
            <enumeration value="Error_NoPASV" access="readOnly"/>
            <enumeration value="Error_IncorrectSize" access="readOnly"/>
            <enumeration value="Error_Timeout" access="readOnly"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference|the IP-layer interface over which the test is to be performed}}
The value of this parameter MUST be either a valid interface or {{empty}}.  An attempt to set this parameter to a different value MUST be rejected as an invalid parameter value.
If {{empty}} is specified, the CPE MUST use the default routing interface.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="DownloadURL" access="readWrite">
        <description>The URL as defined in {{bibref|RFC3986}}, for the CPE to perform the download on. This parameter MUST be in the form of a valid HTTP {{bibref|RFC2616}} or FTP {{bibref|RFC959}} URL.
* When using FTP transport, FTP binary transfer MUST be used.
* When using HTTP transport, persistent connections MUST be used and pipelining MUST NOT be used.
* When using HTTP transport the HTTP Authentication MUST NOT be used.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="DSCP" access="readWrite">
        <description>The DiffServ code point for marking packets transmitted in the test. 
The default value SHOULD be zero.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="63"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="EthernetPriority" access="readWrite">
        <description>Ethernet priority code for marking packets transmitted in the test (if applicable). 
The default value SHOULD be zero.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="7"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="ROMTime" access="readOnly" activeNotify="canDeny">
        <description>Request time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the client sends the GET command.
* For FTP this is the time at which the client sends the RTRV command.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="BOMTime" access="readOnly" activeNotify="canDeny">
        <description>Begin of transmission time in UTC, which MUST be specified to microsecond precision
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the first data packet is received.
* For FTP this is the time at which the client receives the first data packet on the data connection.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="EOMTime" access="readOnly" activeNotify="canDeny">
        <description>End of transmission in UTC, which MUST be specified to microsecond precision. 
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the last data packet is received.
* For FTP this is the time at which the client receives the last packet on the data connection.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="TestBytesReceived" access="readOnly" activeNotify="canDeny">
        <description>The test traffic received in bytes during the FTP/HTTP transaction including FTP/HTTP headers, between {{param|BOMTime}} and {{param|EOMTime}},</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="TotalBytesReceived" access="readOnly" activeNotify="canDeny">
        <description>The total number of bytes received on the Interface between {{param|BOMTime}} and {{param|EOMTime}}.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="TCPOpenRequestTime" access="readOnly" activeNotify="canDeny">
        <description>Request time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the TCP socket open (SYN) was sent for the HTTP connection.
* For FTP this is the time at which the TCP socket open (SYN) was sent for the data connection.
Note: Interval of 1 microsecond SHOULD be supported.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="TCPOpenResponseTime" access="readOnly" activeNotify="canDeny">
        <description>Response time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the TCP ACK to the socket opening the HTTP connection was received.
* For FTP this is the time at which the TCP ACK to the socket opening the data connection was received.
Note: Interval of 1 microsecond SHOULD be supported.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
    <profile name="Download:1">
      <object ref="Capabilities.PerformanceDiagnostic." requirement="present">
        <parameter ref="DownloadTransports" requirement="readOnly"/>
      </object>
      <object ref="DownloadDiagnostics." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="DownloadURL" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="EthernetPriority" requirement="readWrite"/>
        <parameter ref="ROMTime" requirement="readOnly"/>
        <parameter ref="BOMTime" requirement="readOnly"/>
        <parameter ref="EOMTime" requirement="readOnly"/>
        <parameter ref="TestBytesReceived" requirement="readOnly"/>
        <parameter ref="TotalBytesReceived" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="DownloadTCP:1">
      <object ref="DownloadDiagnostics." requirement="present">
        <parameter ref="TCPOpenRequestTime" requirement="readOnly"/>
        <parameter ref="TCPOpenResponseTime" requirement="readOnly"/>
      </object>
    </profile>
  </component>
  <component name="UploadDiagnostics">
    <description>HTTP / FTP upload test (allowed in Root and Service Objects).</description>
    <object name="UploadDiagnostics." access="readOnly" minEntries="1" maxEntries="1">
      <description>This object defines the diagnostics configuration for a HTTP or FTP UploadDiagnostics test. 
Files sent by the UploadDiagnostics do not require file storage on the CPE device, and MAY be an arbitrary stream of bytes</description>
      <parameter name="DiagnosticsState" access="readWrite" activeNotify="canDeny">
        <description>Indicate the availability of diagnostic data.  {{enum}}
If the ACS sets the value of this parameter to {{enum|Requested}}, the CPE MUST initiate the corresponding diagnostic test.  When writing, the only allowed value is {{enum|Requested}}.  To ensure the use of the proper test parameters (the writable parameters in this object), the test parameters MUST be set either prior to or at the same time as (in the same SetParameterValues) setting the {{param}} to {{enum|Requested}}.
When requested, the CPE SHOULD wait until after completion of the communication session with the ACS before starting the diagnostic.
When the test is completed, the value of this parameter MUST be either {{enum|Completed}} (if the test completed successfully), or one of the ''Error'' values listed above.
If the value of this parameter is anything other than {{enum|Completed}}, the values of the results parameters for this test are indeterminate.
When the diagnostic initiated by the ACS is completed (successfully or not), the CPE MUST establish a new connection to the ACS to allow the ACS to view the results, indicating the Event code ''8 DIAGNOSTICS COMPLETE'' in the Inform message.
After the diagnostic is complete, the value of all result parameters (all read-only parameters in this object) MUST be retained by the CPE until either this diagnostic is run again, or the CPE reboots.  After a reboot, if the CPE has not retained the result parameters from the most recent test, it MUST set the value of this parameter to {{enum|None}}.
Modifying any of the writable parameters in this object except for this one MUST result in the value of this parameter being set to {{enum|None}}.
While the test is in progress, modifying any of the writable parameters in this object except for this one MUST result in the test being terminated and the value of this parameter being set to {{enum|None}}.
While the test is in progress, setting this parameter to {{enum|Requested}} (and possibly modifying other writable parameters in this object) MUST result in the test being terminated and then restarted using the current values of the test parameters.</description>
        <syntax>
          <string>
            <enumeration value="None" access="readOnly"/>
            <enumeration value="Requested"/>
            <enumeration value="Completed" access="readOnly"/>
            <enumeration value="Error_InitConnectionFailed" access="readOnly"/>
            <enumeration value="Error_NoResponse" access="readOnly"/>
            <enumeration value="Error_PasswordRequestFailed" access="readOnly"/>
            <enumeration value="Error_LoginFailed" access="readOnly"/>
            <enumeration value="Error_NoTransferMode" access="readOnly"/>
            <enumeration value="Error_NoPASV" access="readOnly"/>
            <enumeration value="Error_NoCWD" access="readOnly"/>
            <enumeration value="Error_NoSTOR" access="readOnly"/>
            <enumeration value="Error_NoTransferComplete" access="readOnly"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference|the IP-layer interface over which the test is to be performed}}
The value of this parameter MUST be either a valid interface or an empty string.  An attempt to set this parameter to a different value MUST be rejected as an invalid parameter value.
If {{empty}} is specified, the CPE MUST use the default routing interface.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="UploadURL" access="readWrite">
        <description>The URL as defined in {{bibref|RFC3986}}, for the CPE to Upload to. This parameter MUST be in the form of a valid HTTP {{bibref|RFC2616}} or FTP {{bibref|RFC959}} URL.
* When using FTP transport, FTP binary transfer MUST be used.
* When using HTTP transport, persistent connections MUST be used and pipelining MUST NOT be used.
* When using HTTP transport the HTTP Authentication MUST NOT be used.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="DSCP" access="readWrite">
        <description>DiffServ code point for marking packets transmitted in the test. 
The default value SHOULD be zero.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="63"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="EthernetPriority" access="readWrite">
        <description>Ethernet priority code for marking packets transmitted in the test (if applicable).
The default value SHOULD be zero.</description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="7"/>
          </unsignedInt>
        </syntax>
      </parameter>
      <parameter name="TestFileLength" access="readWrite">
        <description>The size of the file (in bytes) to be uploaded to the server.
The CPE MUST insure the appropriate number of bytes are sent.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="ROMTime" access="readOnly" activeNotify="canDeny">
        <description>Request time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the client sends the PUT command
* For FTP this is the time at which the STOR command is sent.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="BOMTime" access="readOnly" activeNotify="canDeny">
        <description>Begin of transmission time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the first data packet is sent.
* For FTP this is the time at which the client receives the ready for transfer notification.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="EOMTime" access="readOnly" activeNotify="canDeny">
        <description>End of transmission in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time when the HTTP successful response code is received.
* For FTP this is the time when the client receives a transfer complete.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="TotalBytesSent" access="readOnly" activeNotify="canDeny">
        <description>The total number of bytes sent on the Interface between {{param|BOMTime}} and {{param|EOMTime}}.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="TCPOpenRequestTime" access="readOnly" activeNotify="canDeny">
        <description>Request time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the time at which the TCP socket open (SYN) was sent for the HTTP connection.
* For FTP this is the time at which the TCP socket open (SYN) was sent for the data connection
Note: Interval of 1 microsecond SHOULD be supported.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="TCPOpenResponseTime" access="readOnly" activeNotify="canDeny">
        <description>Response time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
* For HTTP this is the Time at which the TCP ACK to the socket opening the HTTP connection was received.
* For FTP this is  the Time at which the TCP ACK to the socket opening the Data connection was received.
Note: Interval of 1 microsecond SHOULD be supported.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
    <profile name="Upload:1">
      <object ref="Capabilities.PerformanceDiagnostic." requirement="present">
        <parameter ref="UploadTransports" requirement="readOnly"/>
      </object>
      <object ref="UploadDiagnostics." requirement="present">
        <parameter ref="DiagnosticsState" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="UploadURL" requirement="readWrite"/>
        <parameter ref="DSCP" requirement="readWrite"/>
        <parameter ref="EthernetPriority" requirement="readWrite"/>
        <parameter ref="ROMTime" requirement="readOnly"/>
        <parameter ref="BOMTime" requirement="readOnly"/>
        <parameter ref="EOMTime" requirement="readOnly"/>
        <parameter ref="TestFileLength" requirement="readOnly"/>
        <parameter ref="TotalBytesSent" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="UploadTCP:1">
      <object ref="UploadDiagnostics." requirement="present">
        <parameter ref="TCPOpenRequestTime" requirement="readOnly"/>
        <parameter ref="TCPOpenResponseTime" requirement="readOnly"/>
      </object>
    </profile>
  </component>
  <component name="UDPEchoConfig">
    <description>UDP echo test (allowed in Root and Service Objects).</description>
    <object name="UDPEchoConfig." access="readOnly" minEntries="1" maxEntries="1">
      <description>This object allows the CPE to be configured to perform the UDP Echo Service defined in {{bibref|RFC862}} and UDP Echo Plus Service defined in {{bibref|TR-143|Appendix A.1}}.</description>
      <parameter name="Enable" access="readWrite">
        <description>MUST be enabled to receive UDP echo. When enabled from a disabled state all related timestamps, statistics and UDP Echo Plus counters are cleared.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="Interface" access="readWrite">
        <description>{{reference|IP-layer interface over which the CPE MUST listen and receive UDP echo requests on}}
The value of this parameter MUST be either a valid interface or {{empty}}.  An attempt to set this parameter to a different value MUST be rejected as an invalid parameter value.
If {{empty}} is specified, the CPE MUST listen and receive UDP echo requests on all interfaces.
Note: Interfaces behind a NAT MAY require port forwarding rules configured in the Gateway to enable receiving the UDP packets.</description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetType="row"/>
          </string>
        </syntax>
      </parameter>
      <parameter name="SourceIPAddress" access="readWrite">
        <description>The Source IP address of the UDP echo packet. The CPE MUST only respond to a UDP echo from this source IP address.</description>
        <syntax>
          <dataType ref="IPAddress"/>
        </syntax>
      </parameter>
      <parameter name="UDPPort" access="readWrite">
        <description>The UDP port on which the UDP server MUST listen and respond to UDP echo requests.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="EchoPlusEnabled" access="readWrite">
        <description>If {{true}} the CPE will perform necessary packet processing for UDP Echo Plus packets.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="EchoPlusSupported" access="readOnly">
        <description>{{true}} if UDP Echo Plus is supported.</description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
      <parameter name="PacketsReceived" access="readOnly" activeNotify="canDeny">
        <description>Incremented upon each valid UDP echo packet received.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="PacketsResponded" access="readOnly" activeNotify="canDeny">
        <description>Incremented for each UDP echo response sent.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="BytesReceived" access="readOnly" activeNotify="canDeny">
        <description>The number of UDP received bytes including payload and UDP header after the UDPEchoConfig is enabled.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="BytesResponded" access="readOnly" activeNotify="canDeny">
        <description>The number of UDP responded bytes, including payload and UDP header sent after the UDPEchoConfig is enabled.</description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
      <parameter name="TimeFirstPacketReceived" access="readOnly" activeNotify="canDeny">
        <description>Time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456, 
The time that the server receives the first UDP echo packet after the UDPEchoConfig is enabled.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
      <parameter name="TimeLastPacketReceived" access="readOnly" activeNotify="canDeny">
        <description>Time in UTC, which MUST be specified to microsecond precision.
For example: 2008-04-09T15:01:05.123456
The time that the server receives the most recent UDP echo packet.</description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
    <profile name="UDPEcho:1">
      <object ref="UDPEchoConfig." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="SourceIPAddress" requirement="readWrite"/>
        <parameter ref="UDPPort" requirement="readWrite"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="PacketsResponded" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="BytesResponded" requirement="readOnly"/>
        <parameter ref="TimeFirstPacketReceived" requirement="readOnly"/>
        <parameter ref="TimeLastPacketReceived" requirement="readOnly"/>
        <parameter ref="EchoPlusSupported" requirement="readOnly"/>
      </object>
    </profile>
    <profile name="UDPEchoPlus:1">
      <object ref="UDPEchoConfig." requirement="present">
        <parameter ref="EchoPlusEnabled" requirement="readWrite"/>
      </object>
    </profile>
  </component>

  <model name="Device:1.2" base="Device:1.1">
    <component path="Device." ref="Capabilities" dmr:previousObject="Services."/>
    <component path="Device." ref="DownloadDiagnostics" dmr:previousObject="TraceRouteDiagnostics." dmr:previousProfile="TraceRoute:1"/>
    <component path="Device." ref="UploadDiagnostics" dmr:previousObject="DownloadDiagnostics." dmr:previousProfile="DownloadTCP:1"/>
    <component path="Device." ref="UDPEchoConfig" dmr:previousObject="UploadDiagnostics." dmr:previousProfile="UploadTCP:1"/>
  </model>

  <model name="InternetGatewayDevice:1.3" base="InternetGatewayDevice:1.2">
    <component path="InternetGatewayDevice." ref="Capabilities" dmr:previousObject="Services."/>
    <component path="InternetGatewayDevice." ref="DownloadDiagnostics" dmr:previousObject="IPPingDiagnostics." dmr:previousProfile="IPPing:1"/>
    <component path="InternetGatewayDevice." ref="UploadDiagnostics" dmr:previousObject="DownloadDiagnostics." dmr:previousProfile="DownloadTCP:1"/>
    <component path="InternetGatewayDevice." ref="UDPEchoConfig" dmr:previousObject="UploadDiagnostics." dmr:previousProfile="UploadTCP:1"/>
  </model>
</dm:document>
