<?xml version="1.0" encoding="UTF-8"?>
<!--
  Component objects for CWMP: TR-069 Device:1.2 and
  InternetGatewayDevice:1.3 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 XML Document has been approved by members of the Forum.
  This Broadband Forum XML Document is not binding on the Broadband Forum,
  any of its members, or any developer or service provider. This Broadband
  Forum XML Document is subject to change, but only with approval of members
  of the Forum.  This XML Document is copyrighted by the Broadband Forum,
  and all rights are reserved.  Portions of this XML Document may be
  copyrighted by Broadband Forum members.

  This Broadband Forum XML Document is provided AS IS, WITH ALL FAULTS.
  ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM XML 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 XML 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 DOCUMENTATION WILL NOT
      INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER
      RIGHTS.

  By using this Broadband Forum XML 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 XML Document will be
  available for license at all or on reasonable and non-discriminatory terms.

  ANY PERSON HOLDING A COPYRIGHT IN THIS BROADBAND FORUM XML 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 XML DOCUMENT; AND (B) ANY OBLIGATION TO UPDATE OR
  CORRECT THIS XML DOCUMENT.

  Broadband Forum XML 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.

  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>

