lwres_context.docbook revision dafcb997e390efa4423883dafd100c975c4095d6
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!--
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - Copyright (C) 2001, 2003 Internet Software Consortium.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson -
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - Permission to use, copy, modify, and distribute this software for any
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - purpose with or without fee is hereby granted, provided that the above
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - copyright notice and this permission notice appear in all copies.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson -
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews - PERFORMANCE OF THIS SOFTWARE.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson-->
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews<!-- $Id: lwres_context.docbook,v 1.5 2004/03/05 05:12:56 marka Exp $ -->
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentryinfo>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<date>Jun 30, 2000</date>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refentryinfo>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refmeta>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>lwres_context</refentrytitle>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<manvolnum>3</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refmiscinfo>BIND9</refmiscinfo>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refmeta>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refnamediv>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_create</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_destroy</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_nextserial</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_initserial</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_freemem</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_allocmem</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refname>lwres_context_sendrecv</refname>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refpurpose>lightweight resolver context management</refpurpose>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refnamediv>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refsynopsisdiv>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcsynopsis>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcsynopsisinfo>#include &lt;lwres/lwres.h&gt;</funcsynopsisinfo>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_create</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t **contextp</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>void *arg</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_malloc_t malloc_function</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_free_t free_function</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_destroy</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t **contextp</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonvoid
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_initserial</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t *ctx</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_uint32_t serial</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_uint32_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_nextserial</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t *ctx</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonvoid
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_freemem</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t *ctx</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>void *mem</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>size_t len</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonvoid
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_allocmem</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t *ctx</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>size_t len</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonvoid *
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_sendrecv</function></funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>lwres_context_t *ctx</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>void *sendbase</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>int sendlen</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>void *recvbase</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>int recvlen</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<paramdef>int *recvd_len</paramdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcsynopsis>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refsynopsisdiv>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<title>DESCRIPTION</title>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_create()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssoncreates a
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonstructure for use in lightweight resolver operations.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonIt holds a socket and other data needed for communicating
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonwith a resolver daemon.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThe new
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>
be8aff07bb6a863c46874021f2ce8304b721632aMark Andrewsis returned through
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>contextp</parameter>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssona pointer to a
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonpointer. This
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonpointer must initially be NULL, and is modified
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonto point to the newly created
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonWhen the lightweight resolver needs to perform dynamic memory
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonallocation, it will call
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>malloc_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonto allocate memory and
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>free_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonto free it. If
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>malloc_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>free_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonare NULL, memory is allocated using
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson.Xr malloc 3
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>free</refentrytitle><manvolnum>3</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</citerefentry>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonIt is not permitted to have a NULL
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>malloc_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand a non-NULL
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>free_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonor vice versa.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>arg</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis passed as the first parameter to the memory
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonallocation functions.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonIf
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>malloc_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>free_function</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonare NULL,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>arg</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis unused and should be passed as NULL.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonOnce memory for the structure has been allocated,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonit is initialized using
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>lwres_conf_init</refentrytitle><manvolnum>3</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand returned via
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>*contextp</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_destroy()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssondestroys a
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>lwres_context_t</type>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonclosing its socket.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>contextp</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis a pointer to a pointer to the context that is to be destroyed.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThe pointer will be set to NULL when the context has been destroyed.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThe context holds a serial number that is used to identify resolver
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonrequest packets and associate responses with the corresponding requests.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThis serial number is controlled using
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_initserial()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_nextserial()</function>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_initserial()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonsets the serial number for context
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>*ctx</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonto
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>serial</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_nextserial()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonincrements the serial number and returns the previous value.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonMemory for a lightweight resolver context is allocated and freed using
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_allocmem()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_freemem()</function>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThese use whatever allocations were defined when the context was
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssoncreated with
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_create()</function>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_allocmem()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonallocates
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>len</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonbytes of memory and if successful returns a pointer to the allocated
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonstorage.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_freemem()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonfrees
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>len</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonbytes of space starting at location
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>mem</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_sendrecv()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonperforms I/O for the context
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>ctx</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonData are read and written from the context's socket.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonIt writes data from
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>sendbase</parameter>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson&mdash; typically a lightweight resolver query packet &mdash;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonand waits for a reply which is copied to the receive buffer at
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>recvbase</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonThe number of bytes that were written to this receive buffer is
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonreturned in
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<parameter>*recvd_len</parameter>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<title>RETURN VALUES</title>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_create()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonreturns
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<errorcode>LWRES_R_NOMEMORY</errorcode>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonif memory for the
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<type>struct lwres_context</type>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssoncould not be allocated,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<errorcode>LWRES_R_SUCCESS</errorcode>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonotherwise.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonSuccessful calls to the memory allocator
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_allocmem()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonreturn a pointer to the start of the allocated space.
ddccd5811feff696ba460dabfb666ce61040f545Andreas GustafssonIt returns NULL if memory could not be allocated.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<errorcode>LWRES_R_SUCCESS</errorcode>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis returned when
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_sendrecv()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssoncompletes successfully.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<errorcode>LWRES_R_IOERROR</errorcode>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis returned if an I/O error occurs and
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<errorcode>LWRES_R_TIMEOUT</errorcode>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonis returned if
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_context_sendrecv()</function>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssontimes out waiting for a response.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<title>SEE ALSO</title>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>lwres_conf_init</refentrytitle><manvolnum>3</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</citerefentry>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</citerefentry>,
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<citerefentry>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<refentrytitle>free</refentrytitle><manvolnum>3
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</manvolnum>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</citerefentry>.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</para>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refsect1>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</refentry>