lwres_noop.html revision c651f15b30f1dae5cc2f00878fb5da5b3a35a468
b0e8629055a766d4555a005a283c2889a5974945Mark Andrews - Copyright (C) 2004, 2005 Internet Systems Consortium, Inc. ("ISC")
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews - Copyright (C) 2000, 2001 Internet Software Consortium.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Permission to use, copy, modify, and distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - purpose with or without fee is hereby granted, provided that the above
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!-- $Id: lwres_noop.html,v 1.13 2005/04/07 03:50:04 marka Exp $ -->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noop</TITLE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="GENERATOR"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFENTRY"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinBGCOLOR="#FFFFFF"
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsTEXT="#000000"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinLINK="#0000FF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVLINK="#840084"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinALINK="#0000FF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noop</H1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFNAMEDIV"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_render, lwres_noopresponse_render, lwres_nooprequest_parse, lwres_noopresponse_parse, lwres_noopresponse_free, lwres_nooprequest_free -- lightweight resolver no-op message handling</DIV
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFSYNOPSISDIV"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Synopsis</H2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCSYNOPSIS"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCSYNOPSISINFO"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCDEF"
f7b41fd9291b8f4dba27e2b57e1d93f0913a4f1dMark Andrews>lwres_result_t
12351e0500dff39f56844401fd191a36bcc4a7adMark Andrewslwres_nooprequest_render</CODE
12351e0500dff39f56844401fd191a36bcc4a7adMark Andrews>(lwres_context_t *ctx, lwres_nooprequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCDEF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_result_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_noopresponse_render</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>(lwres_context_t *ctx, lwres_noopresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
c115370fcb34be129ad93fd61c4a4767a214eea2Mark AndrewsCLASS="FUNCDEF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_result_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_nooprequest_parse</CODE
c115370fcb34be129ad93fd61c4a4767a214eea2Mark Andrews>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_nooprequest_t **structp);</CODE
c115370fcb34be129ad93fd61c4a4767a214eea2Mark AndrewsCLASS="FUNCDEF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_result_t
c115370fcb34be129ad93fd61c4a4767a214eea2Mark Andrewslwres_noopresponse_parse</CODE
c115370fcb34be129ad93fd61c4a4767a214eea2Mark Andrews>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_noopresponse_t **structp);</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCDEF"
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewslwres_noopresponse_free</CODE
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews>(lwres_context_t *ctx, lwres_noopresponse_t **structp);</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCDEF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlwres_nooprequest_free</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>(lwres_context_t *ctx, lwres_nooprequest_t **structp);</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFSECT1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>DESCRIPTION</H2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>These are low-level routines for creating and parsing
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlightweight resolver no-op request and response messages.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The no-op message is analogous to a <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="COMMAND"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeina packet is sent to the resolver daemon and is simply echoed back.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThe opcode is intended to allow a client to determine if the server is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinoperational or not.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>There are four main functions for the no-op opcode.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinOne render function converts a no-op request structure —
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto the lighweight resolver's canonical format.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinIt is complemented by a parse function that converts a packet in this
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincanonical format to a no-op request structure.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAnother render function converts the no-op response structure —
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto the canonical format.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThis is complemented by a parse function which converts a packet in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincanonical format to a no-op response structure.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>These structures are defined in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FILENAME"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsThey are shown below.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsCLASS="PROGRAMLISTING"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews>#define LWRES_OPCODE_NOOP 0x00000000U
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewstypedef struct {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews lwres_uint16_t datalength;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews unsigned char *data;
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews} lwres_nooprequest_t;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewstypedef struct {
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews lwres_uint16_t datalength;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews unsigned char *data;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews} lwres_noopresponse_t;</PRE
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsAlthough the structures have different types, they are identical.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThis is because the no-op opcode simply echos whatever data was sent:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe response is therefore identical to the request.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_render()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> uses resolver
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincontext <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> to convert no-op request structure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> to canonical format. The packet header
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstructure <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> is initialised and transferred to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>. The contents of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> are then appended to the buffer in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincanonical format. <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_render()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinperforms the same task, except it converts a no-op response structure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> to the lightweight resolver's
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincanonical format.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> uses context
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> to convert the contents of packet
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews>lwres_nooprequest_t</SPAN
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrewsstructure. Buffer <CODE
ceeb18e6907a10547859faa340ecad83bedae90cMark AndrewsCLASS="PARAMETER"
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews> provides space to be used
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfor storing this structure. When the function succeeds, the resulting
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews>lwres_nooprequest_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> is made available through
ceeb18e6907a10547859faa340ecad83bedae90cMark AndrewsCLASS="PARAMETER"
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews>*structp</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> offers the same
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinsemantics as <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinyields a <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> structure.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_free()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_free()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> release the memory in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinresolver context <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> that was allocated to the
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews>lwres_noopresponse_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstructures referenced via <CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>structp</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFSECT1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>RETURN VALUES</H2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The no-op opcode functions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_render()</CODE
ceeb18e6907a10547859faa340ecad83bedae90cMark AndrewsCLASS="FUNCTION"
ceeb18e6907a10547859faa340ecad83bedae90cMark Andrews>lwres_noopresponse_render()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="ERRORCODE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>LWRES_R_SUCCESS</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="ERRORCODE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>LWRES_R_NOMEMORY</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinif memory allocation fails.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="ERRORCODE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>LWRES_R_UNEXPECTEDEND</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinis returned if the available space in the buffer
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="PARAMETER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinis too small to accommodate the packet header or the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_nooprequest_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="FUNCTION"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_noopresponse_parse()</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="ERRORCODE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>LWRES_R_UNEXPECTEDEND</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinif the buffer is not empty after decoding the received packet.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThese functions will return
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="ERRORCODE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>LWRES_R_FAILURE</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="CONSTANT"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>pktflags</CODE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinin the packet header structure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_lwpacket_t</SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinindicate that the packet is not a response to an earlier query.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFSECT1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="AEN114"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews>SEE ALSO</H2
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsCLASS="CITEREFENTRY"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="REFENTRYTITLE"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>lwres_packet</SPAN