This commit is contained in:
Mark Andrews
2004-08-22 23:39:05 +00:00
parent fe8356d7e7
commit 87dcc3250a
41 changed files with 5034 additions and 8755 deletions

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres.html,v 1.4.2.1.4.1 2004/03/06 08:15:37 marka Exp $ -->
<!-- $Id: lwres.html,v 1.4.2.1.4.2 2004/08/22 23:39:02 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres</A
></H1
></A
>lwres</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN11"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN12"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -98,41 +98,41 @@ NAME="AEN18"
><P
>The lwresd library implements multiple name service APIs.
The standard
<TT
<CODE
CLASS="FUNCTION"
>gethostbyname()</TT
>gethostbyname()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>gethostbyaddr()</TT
>gethostbyaddr()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>gethostbyname_r()</TT
>gethostbyname_r()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>gethostbyaddr_r()</TT
>gethostbyaddr_r()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>getaddrinfo()</TT
>getaddrinfo()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>getipnodebyname()</TT
>getipnodebyname()</CODE
>,
and
<TT
<CODE
CLASS="FUNCTION"
>getipnodebyaddr()</TT
>getipnodebyaddr()</CODE
>
functions are all supported. To allow the lwres library to coexist
with system libraries that define functions of the same name,
the library defines these functions with names prefixed by
<TT
<VAR
CLASS="LITERAL"
>lwres_</TT
>lwres_</VAR
>.
To define the standard names, applications must include the
header file
@@ -142,23 +142,23 @@ CLASS="FILENAME"
>
which contains macro definitions mapping the standard function names
into
<TT
<VAR
CLASS="LITERAL"
>lwres_</TT
>lwres_</VAR
>
prefixed ones. Operating system vendors who integrate the lwres
library into their base distributions should rename the functions
in the library proper so that the renaming macros are not needed.</P
><P
>The library also provides a native API consisting of the functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_getnamebyaddr()</TT
>lwres_getnamebyaddr()</CODE
>.
These may be called by applications that require more detailed
control over the lookup process than the standard functions
@@ -167,9 +167,9 @@ provide.</P
>In addition to these name service independent address lookup
functions, the library implements a new, experimental API
for looking up arbitrary DNS resource records, using the
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
>
function.</P
><P
@@ -201,66 +201,58 @@ sequence of actions.</P
CLASS="TYPE"
>lwres_packet_t</SPAN
>,
called <TT
called <VAR
CLASS="VARNAME"
>pkt</TT
>pkt</VAR
> below.</P
><P
>(2) Set <TT
>(2) Set <CODE
CLASS="STRUCTFIELD"
><I
>pkt.recvlength</I
></TT
>pkt.recvlength</CODE
> to the maximum length we will accept.
This is done so the receiver of our packets knows how large our receive
buffer is. The "default" is a constant in
<TT
CLASS="FILENAME"
>lwres.h</TT
>: <TT
>: <CODE
CLASS="CONSTANT"
>LWRES_RECVLENGTH = 4096</TT
>LWRES_RECVLENGTH = 4096</CODE
>.</P
><P
>(3) Set <TT
>(3) Set <CODE
CLASS="STRUCTFIELD"
><I
>pkt.serial</I
></TT
>pkt.serial</CODE
>
to a unique serial number. This value is echoed
back to the application by the remote server.</P
><P
>(4) Set <TT
>(4) Set <CODE
CLASS="STRUCTFIELD"
><I
>pkt.pktflags</I
></TT
>pkt.pktflags</CODE
>. Usually this is set to 0.</P
><P
>(5) Set <TT
>(5) Set <CODE
CLASS="STRUCTFIELD"
><I
>pkt.result</I
></TT
>pkt.result</CODE
> to 0.</P
><P
>(6) Call <TT
>(6) Call <CODE
CLASS="FUNCTION"
>lwres_*request_render()</TT
>lwres_*request_render()</CODE
>,
or marshall in the data using the primitives
such as <TT
such as <CODE
CLASS="FUNCTION"
>lwres_packet_render()</TT
>lwres_packet_render()</CODE
>
and storing the packet data.</P
><P
>(7) Transmit the resulting buffer.</P
><P
>(8) Call <TT
>(8) Call <CODE
CLASS="FUNCTION"
>lwres_*response_parse()</TT
>lwres_*response_parse()</CODE
>
to parse any packets received.</P
><P
@@ -283,27 +275,27 @@ following is typically involved in processing each request packet.</P
CLASS="TYPE"
>lwres_packet_t</SPAN
> is used
in both the <TT
in both the <CODE
CLASS="FUNCTION"
>_parse()</TT
> and <TT
>_parse()</CODE
> and <CODE
CLASS="FUNCTION"
>_render()</TT
>_render()</CODE
> calls,
with only a few modifications made
to the packet header's contents between uses. This method is recommended
as it keeps the serial, opcode, and other fields correct.</P
><P
>(1) When a packet is received, call <TT
>(1) When a packet is received, call <CODE
CLASS="FUNCTION"
>lwres_*request_parse()</TT
>lwres_*request_parse()</CODE
> to
unmarshall it. This returns a <SPAN
CLASS="TYPE"
>lwres_packet_t</SPAN
> (also called <TT
> (also called <VAR
CLASS="VARNAME"
>pkt</TT
>pkt</VAR
>, below)
as well as a data specific type, such as <SPAN
CLASS="TYPE"
@@ -312,42 +304,36 @@ CLASS="TYPE"
><P
>(2) Process the request in the data specific type.</P
><P
>(3) Set the <TT
>(3) Set the <CODE
CLASS="STRUCTFIELD"
><I
>pkt.result</I
></TT
>pkt.result</CODE
>,
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>pkt.recvlength</I
></TT
>pkt.recvlength</CODE
> as above. All other fields can
be left untouched since they were filled in by the <TT
be left untouched since they were filled in by the <CODE
CLASS="FUNCTION"
>*_parse()</TT
>*_parse()</CODE
> call
above. If using <TT
above. If using <CODE
CLASS="FUNCTION"
>lwres_*response_render()</TT
>lwres_*response_render()</CODE
>,
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>pkt.pktflags</I
></TT
>pkt.pktflags</CODE
> will be set up
properly. Otherwise, the <TT
properly. Otherwise, the <CODE
CLASS="CONSTANT"
>LWRES_LWPACKETFLAG_RESPONSE</TT
>LWRES_LWPACKETFLAG_RESPONSE</CODE
> bit should be
set.</P
><P
>(4) Call the data specific rendering function, such as
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>lwres_gabnresponse_render()</CODE
>.</P
><P
>(5) Send the resulting packet to the client.</P

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_buffer.html,v 1.4.2.1.4.1 2004/03/06 08:15:37 marka Exp $ -->
<!-- $Id: lwres_buffer.html,v 1.4.2.1.4.2 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_buffer</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_buffer</A
></H1
></A
>lwres_buffer</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN26"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN27"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwbuffer.h&gt;</PRE
@@ -205,9 +205,9 @@ NAME="AEN106"
>These functions provide bounds checked access to a region of memory
where data is being read or written.
They are based on, and similar to, the
<TT
<VAR
CLASS="LITERAL"
>isc_buffer_</TT
>isc_buffer_</VAR
>
functions in the ISC library.</P
><P
@@ -308,323 +308,267 @@ CLASS="PROGRAMLISTING"
b-c == optional active region.</PRE
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_init()</TT
>lwres_buffer_init()</CODE
>
initializes the
<SPAN
CLASS="TYPE"
>lwres_buffer_t</SPAN
>
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>
and assocates it with the memory region of size
<TT
<VAR
CLASS="PARAMETER"
><I
>length</I
></TT
>length</VAR
>
bytes starting at location
<TT
<VAR
CLASS="PARAMETER"
><I
>base.</I
></TT
>base.</VAR
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_invalidate()</TT
>lwres_buffer_invalidate()</CODE
>
marks the buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>
as invalid. Invalidating a buffer after use is not required,
but makes it possible to catch its possible accidental use.</P
><P
>The functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_add()</TT
>lwres_buffer_add()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_subtract()</TT
>lwres_buffer_subtract()</CODE
>
respectively increase and decrease the used space in
buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>
by
<TT
<VAR
CLASS="PARAMETER"
><I
>n</I
></TT
>n</VAR
>
bytes.
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_add()</TT
>lwres_buffer_add()</CODE
>
checks for buffer overflow and
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_subtract()</TT
>lwres_buffer_subtract()</CODE
>
checks for underflow.
These functions do not allocate or deallocate memory.
They just change the value of
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>used</I
></TT
>used</CODE
>.</P
><P
>A buffer is re-initialised by
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_clear()</TT
>lwres_buffer_clear()</CODE
>.
The function sets
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>used</I
></TT
>used</CODE
> ,
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>current</I
></TT
>current</CODE
>
and
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>active</I
></TT
>active</CODE
>
to zero.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_first</TT
>lwres_buffer_first</CODE
>
makes the consumed region of buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>*p</I
></TT
>*p</VAR
>
empty by setting
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>current</I
></TT
>current</CODE
>
to zero (the start of the buffer).</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_forward()</TT
>lwres_buffer_forward()</CODE
>
increases the consumed region of buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>
by
<TT
<VAR
CLASS="PARAMETER"
><I
>n</I
></TT
>n</VAR
>
bytes, checking for overflow.
Similarly,
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_back()</TT
>lwres_buffer_back()</CODE
>
decreases buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>'s
consumed region by
<TT
<VAR
CLASS="PARAMETER"
><I
>n</I
></TT
>n</VAR
>
bytes and checks for underflow.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_getuint8()</TT
>lwres_buffer_getuint8()</CODE
>
reads an unsigned 8-bit integer from
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>
and returns it.
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putuint8()</TT
>lwres_buffer_putuint8()</CODE
>
writes the unsigned 8-bit integer
<TT
<VAR
CLASS="PARAMETER"
><I
>val</I
></TT
>val</VAR
>
to buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_buffer_getuint16()</TT
>lwres_buffer_getuint16()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_getuint32()</TT
>lwres_buffer_getuint32()</CODE
>
are identical to
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putuint8()</TT
>lwres_buffer_putuint8()</CODE
>
except that they respectively read an unsigned 16-bit or 32-bit integer
in network byte order from
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>.
Similarly,
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putuint16()</TT
>lwres_buffer_putuint16()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putuint32()</TT
>lwres_buffer_putuint32()</CODE
>
writes the unsigned 16-bit or 32-bit integer
<TT
<VAR
CLASS="PARAMETER"
><I
>val</I
></TT
>val</VAR
>
to buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>,
in network byte order.</P
><P
>Arbitrary amounts of data are read or written from a lightweight
resolver buffer with
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_getmem()</TT
>lwres_buffer_getmem()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putmem()</TT
>lwres_buffer_putmem()</CODE
>
respectively.
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_putmem()</TT
>lwres_buffer_putmem()</CODE
>
copies
<TT
<VAR
CLASS="PARAMETER"
><I
>length</I
></TT
>length</VAR
>
bytes of memory at
<TT
<VAR
CLASS="PARAMETER"
><I
>base</I
></TT
>base</VAR
>
to
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>.
Conversely,
<TT
<CODE
CLASS="FUNCTION"
>lwres_buffer_getmem()</TT
>lwres_buffer_getmem()</CODE
>
copies
<TT
<VAR
CLASS="PARAMETER"
><I
>length</I
></TT
>length</VAR
>
bytes of memory from
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>
to
<TT
<VAR
CLASS="PARAMETER"
><I
>base</I
></TT
>base</VAR
>.</P
></DIV
></BODY

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_config.html,v 1.4.2.1.4.1 2004/03/06 08:15:38 marka Exp $ -->
<!-- $Id: lwres_config.html,v 1.4.2.1.4.2 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_config</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_config</A
></H1
></A
>lwres_config</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN15"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN16"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -114,9 +114,9 @@ NAME="AEN40"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_init()</TT
>lwres_conf_init()</CODE
>
creates an empty
<SPAN
@@ -124,16 +124,14 @@ CLASS="TYPE"
>lwres_conf_t</SPAN
>
structure for lightweight resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_clear()</TT
>lwres_conf_clear()</CODE
>
frees up all the internal memory used by
that
@@ -142,30 +140,24 @@ CLASS="TYPE"
>lwres_conf_t</SPAN
>
structure in resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_parse()</TT
>lwres_conf_parse()</CODE
>
opens the file
<TT
<VAR
CLASS="PARAMETER"
><I
>filename</I
></TT
>filename</VAR
>
and parses it to initialise the resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>'s
<SPAN
CLASS="TYPE"
@@ -173,9 +165,9 @@ CLASS="TYPE"
>
structure.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_print()</TT
>lwres_conf_print()</CODE
>
prints the
<SPAN
@@ -183,22 +175,18 @@ CLASS="TYPE"
>lwres_conf_t</SPAN
>
structure for resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>
to the
<SPAN
CLASS="TYPE"
>FILE</SPAN
>
<TT
<VAR
CLASS="PARAMETER"
><I
>fp</I
></TT
>fp</VAR
>.</P
></DIV
><DIV
@@ -209,9 +197,9 @@ NAME="AEN61"
><H2
>RETURN VALUES</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_parse()</TT
>lwres_conf_parse()</CODE
>
returns
<SPAN
@@ -219,11 +207,9 @@ CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>
if it successfully read and parsed
<TT
<VAR
CLASS="PARAMETER"
><I
>filename</I
></TT
>filename</VAR
>.
It returns
<SPAN
@@ -231,18 +217,16 @@ CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
<VAR
CLASS="PARAMETER"
><I
>filename</I
></TT
>filename</VAR
>
could not be opened or contained incorrect
resolver statements.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_conf_print()</TT
>lwres_conf_print()</CODE
>
returns
<SPAN

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_context.html,v 1.5.2.2.2.2 2004/03/08 09:05:12 marka Exp $ -->
<!-- $Id: lwres_context.html,v 1.5.2.2.2.3 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_context</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_context</A
></H1
></A
>lwres_context</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN17"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN18"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -130,9 +130,9 @@ NAME="AEN60"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_context_create()</TT
>lwres_context_create()</CODE
>
creates a
<SPAN
@@ -148,11 +148,9 @@ CLASS="TYPE"
>lwres_context_t</SPAN
>
is returned through
<TT
<VAR
CLASS="PARAMETER"
><I
>contextp</I
></TT
>contextp</VAR
>,
a pointer to a
@@ -174,33 +172,25 @@ CLASS="TYPE"
><P
>When the lightweight resolver needs to perform dynamic memory
allocation, it will call
<TT
<VAR
CLASS="PARAMETER"
><I
>malloc_function</I
></TT
>malloc_function</VAR
>
to allocate memory and
<TT
<VAR
CLASS="PARAMETER"
><I
>free_function</I
></TT
>free_function</VAR
>
to free it. If
<TT
<VAR
CLASS="PARAMETER"
><I
>malloc_function</I
></TT
>malloc_function</VAR
>
and
<TT
<VAR
CLASS="PARAMETER"
><I
>free_function</I
></TT
>free_function</VAR
>
are NULL, memory is allocated using
@@ -215,48 +205,36 @@ CLASS="REFENTRYTITLE"
>.
It is not permitted to have a NULL
<TT
<VAR
CLASS="PARAMETER"
><I
>malloc_function</I
></TT
>malloc_function</VAR
>
and a non-NULL
<TT
<VAR
CLASS="PARAMETER"
><I
>free_function</I
></TT
>free_function</VAR
>
or vice versa.
<TT
<VAR
CLASS="PARAMETER"
><I
>arg</I
></TT
>arg</VAR
>
is passed as the first parameter to the memory
allocation functions.
If
<TT
<VAR
CLASS="PARAMETER"
><I
>malloc_function</I
></TT
>malloc_function</VAR
>
and
<TT
<VAR
CLASS="PARAMETER"
><I
>free_function</I
></TT
>free_function</VAR
>
are NULL,
<TT
<VAR
CLASS="PARAMETER"
><I
>arg</I
></TT
>arg</VAR
>
is unused and should be passed as NULL.</P
@@ -272,16 +250,14 @@ CLASS="REFENTRYTITLE"
>
and returned via
<TT
<VAR
CLASS="PARAMETER"
><I
>*contextp</I
></TT
>*contextp</VAR
>.&#13;</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_context_destroy()</TT
>lwres_context_destroy()</CODE
>
destroys a
<SPAN
@@ -290,11 +266,9 @@ CLASS="TYPE"
>,
closing its socket.
<TT
<VAR
CLASS="PARAMETER"
><I
>contextp</I
></TT
>contextp</VAR
>
is a pointer to a pointer to the context that is to be destroyed.
The pointer will be set to NULL when the context has been destroyed.</P
@@ -302,124 +276,106 @@ The pointer will be set to NULL when the context has been destroyed.</P
>The context holds a serial number that is used to identify resolver
request packets and associate responses with the corresponding requests.
This serial number is controlled using
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_initserial()</TT
>lwres_context_initserial()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_nextserial()</TT
>lwres_context_nextserial()</CODE
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_initserial()</TT
>lwres_context_initserial()</CODE
>
sets the serial number for context
<TT
<VAR
CLASS="PARAMETER"
><I
>*ctx</I
></TT
>*ctx</VAR
>
to
<TT
<VAR
CLASS="PARAMETER"
><I
>serial</I
></TT
>serial</VAR
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_nextserial()</TT
>lwres_context_nextserial()</CODE
>
increments the serial number and returns the previous value.</P
><P
>Memory for a lightweight resolver context is allocated and freed using
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_allocmem()</TT
>lwres_context_allocmem()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_freemem()</TT
>lwres_context_freemem()</CODE
>.
These use whatever allocations were defined when the context was
created with
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_create()</TT
>lwres_context_create()</CODE
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_allocmem()</TT
>lwres_context_allocmem()</CODE
>
allocates
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
>
bytes of memory and if successful returns a pointer to the allocated
storage.
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_freemem()</TT
>lwres_context_freemem()</CODE
>
frees
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
>
bytes of space starting at location
<TT
<VAR
CLASS="PARAMETER"
><I
>mem</I
></TT
>mem</VAR
>.&#13;</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_context_sendrecv()</TT
>lwres_context_sendrecv()</CODE
>
performs I/O for the context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>.
Data are read and written from the context's socket.
It writes data from
<TT
<VAR
CLASS="PARAMETER"
><I
>sendbase</I
></TT
>sendbase</VAR
>
&mdash; typically a lightweight resolver query packet &mdash;
and waits for a reply which is copied to the receive buffer at
<TT
<VAR
CLASS="PARAMETER"
><I
>recvbase</I
></TT
>recvbase</VAR
>.
The number of bytes that were written to this receive buffer is
returned in
<TT
<VAR
CLASS="PARAMETER"
><I
>*recvd_len</I
></TT
>*recvd_len</VAR
>.&#13;</P
></DIV
><DIV
@@ -430,9 +386,9 @@ NAME="AEN115"
><H2
>RETURN VALUES</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_context_create()</TT
>lwres_context_create()</CODE
>
returns
<SPAN
@@ -452,9 +408,9 @@ CLASS="ERRORCODE"
otherwise.</P
><P
>Successful calls to the memory allocator
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_allocmem()</TT
>lwres_context_allocmem()</CODE
>
return a pointer to the start of the allocated space.
It returns NULL if memory could not be allocated.</P
@@ -464,9 +420,9 @@ CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>
is returned when
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_sendrecv()</TT
>lwres_context_sendrecv()</CODE
>
completes successfully.
<SPAN
@@ -479,9 +435,9 @@ CLASS="ERRORCODE"
>LWRES_R_TIMEOUT</SPAN
>
is returned if
<TT
<CODE
CLASS="FUNCTION"
>lwres_context_sendrecv()</TT
>lwres_context_sendrecv()</CODE
>
times out waiting for a response.</P
></DIV

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_gabn.html,v 1.6.2.1.4.1 2004/03/06 08:15:38 marka Exp $ -->
<!-- $Id: lwres_gabn.html,v 1.6.2.1.4.2 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_gabn</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_gabn</A
></H1
></A
>lwres_gabn</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN16"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN17"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -178,52 +178,42 @@ typedef struct {
} lwres_gabnresponse_t;</PRE
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gabnrequest_render()</TT
>lwres_gabnrequest_render()</CODE
>
uses resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>
to convert getaddrbyname request structure
<TT
<VAR
CLASS="PARAMETER"
><I
>req</I
></TT
>req</VAR
>
to canonical format.
The packet header structure
<TT
<VAR
CLASS="PARAMETER"
><I
>pkt</I
></TT
>pkt</VAR
>
is initialised and transferred to
buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>.
The contents of
<TT
<VAR
CLASS="PARAMETER"
><I
>*req</I
></TT
>*req</VAR
>
are then appended to the buffer in canonical format.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>lwres_gabnresponse_render()</CODE
>
performs the same task, except it converts a getaddrbyname response structure
<SPAN
@@ -232,23 +222,19 @@ CLASS="TYPE"
>
to the lightweight resolver's canonical format.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>lwres_gabnrequest_parse()</CODE
>
uses context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>
to convert the contents of packet
<TT
<VAR
CLASS="PARAMETER"
><I
>pkt</I
></TT
>pkt</VAR
>
to a
<SPAN
@@ -257,11 +243,9 @@ CLASS="TYPE"
>
structure.
Buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>
provides space to be used for storing this structure.
When the function succeeds, the resulting
@@ -270,21 +254,19 @@ CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
is made available through
<TT
<VAR
CLASS="PARAMETER"
><I
>*structp</I
></TT
>*structp</VAR
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>lwres_gabnresponse_parse()</CODE
>
offers the same semantics as
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>lwres_gabnrequest_parse()</CODE
>
except it yields a
<SPAN
@@ -293,21 +275,19 @@ CLASS="TYPE"
>
structure.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gabnresponse_free()</TT
>lwres_gabnresponse_free()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnrequest_free()</TT
>lwres_gabnrequest_free()</CODE
>
release the memory in resolver context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
>
that was allocated to the
<SPAN
@@ -320,11 +300,9 @@ CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
structures referenced via
<TT
<VAR
CLASS="PARAMETER"
><I
>structp</I
></TT
>structp</VAR
>.
Any memory associated with ancillary buffers and strings for those
@@ -339,22 +317,22 @@ NAME="AEN93"
>RETURN VALUES</H2
><P
>The getaddrbyname opcode functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnrequest_render()</TT
>lwres_gabnrequest_render()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>lwres_gabnresponse_render()</CODE
>
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>lwres_gabnrequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>lwres_gabnresponse_parse()</CODE
>
all return
<SPAN
@@ -373,11 +351,9 @@ CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
is returned if the available space in the buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>
is too small to accommodate the packet header or the
<SPAN
@@ -390,14 +366,14 @@ CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
structures.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>lwres_gabnrequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>lwres_gabnresponse_parse()</CODE
>
will return
<SPAN
@@ -411,11 +387,9 @@ CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>pktflags</I
></TT
>pktflags</CODE
>
in the packet header structure
<SPAN

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_gai_strerror.html,v 1.5.2.1.4.1 2004/03/06 08:15:39 marka Exp $ -->
<!-- $Id: lwres_gai_strerror.html,v 1.5.2.1.4.2 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_gai_strerror</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_gai_strerror</A
></H1
></A
>lwres_gai_strerror</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN11"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN12"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -82,14 +82,14 @@ NAME="AEN18"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gai_strerror()</TT
>lwres_gai_strerror()</CODE
>
returns an error message corresponding to an error code returned by
<TT
<CODE
CLASS="FUNCTION"
>getaddrinfo()</TT
>getaddrinfo()</CODE
>.
The following error codes and their meaning are defined in
<TT
@@ -127,9 +127,9 @@ CLASS="ERRORCODE"
><DD
><P
>invalid value for
<TT
<CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
></P
></DD
><DT
@@ -148,9 +148,9 @@ CLASS="ERRORCODE"
></DT
><DD
><P
><TT
><CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
> not supported</P
></DD
><DT
@@ -187,9 +187,9 @@ CLASS="ERRORCODE"
></DT
><DD
><P
>servname not supported for <TT
>servname not supported for <CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
></P
></DD
><DT
@@ -199,9 +199,9 @@ CLASS="ERRORCODE"
></DT
><DD
><P
><TT
><CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
> not supported</P
></DD
><DT
@@ -220,26 +220,24 @@ The message <SPAN
CLASS="ERRORNAME"
>invalid error code</SPAN
> is returned if
<TT
<VAR
CLASS="PARAMETER"
><I
>ecode</I
></TT
>ecode</VAR
>
is out of range.</P
><P
><TT
><CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
>,
<TT
<CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
>
are elements of the
<SPAN
@@ -247,9 +245,9 @@ CLASS="TYPE"
>struct addrinfo</SPAN
>
used by
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>.</P
></DIV
><DIV

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_getaddrinfo.html,v 1.8.2.1.4.2 2004/03/06 08:15:39 marka Exp $ -->
<!-- $Id: lwres_getaddrinfo.html,v 1.8.2.1.4.3 2004/08/22 23:39:03 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_getaddrinfo</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_getaddrinfo</A
></H1
></A
>lwres_getaddrinfo</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN12"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN13"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -111,43 +111,35 @@ NAME="AEN29"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
is used to get a list of IP addresses and port numbers for host
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
and service
<TT
<VAR
CLASS="PARAMETER"
><I
>servname</I
></TT
>servname</VAR
>.
The function is the lightweight resolver's implementation of
<TT
<CODE
CLASS="FUNCTION"
>getaddrinfo()</TT
>getaddrinfo()</CODE
>
as defined in RFC2133.
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
and
<TT
<VAR
CLASS="PARAMETER"
><I
>servname</I
></TT
>servname</VAR
>
are pointers to null-terminated
strings or
@@ -156,19 +148,15 @@ CLASS="TYPE"
>NULL</SPAN
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
is either a host name or a numeric host address string: a dotted decimal
IPv4 address or an IPv6 address.
<TT
<VAR
CLASS="PARAMETER"
><I
>servname</I
></TT
>servname</VAR
>
is either a decimal port number or a service name as listed in
<TT
@@ -176,11 +164,9 @@ CLASS="FILENAME"
>/etc/services</TT
>.</P
><P
><TT
><VAR
CLASS="PARAMETER"
><I
>hints</I
></TT
>hints</VAR
>
is an optional pointer to a
<SPAN
@@ -190,11 +176,9 @@ CLASS="TYPE"
This structure can be used to provide hints concerning the type of socket
that the caller supports or wishes to use.
The caller can supply the following structure elements in
<TT
<VAR
CLASS="PARAMETER"
><I
>*hints</I
></TT
>*hints</VAR
>:
<P
@@ -203,17 +187,17 @@ CLASS="PARAMETER"
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
></DT
><DD
><P
>The protocol family that should be used.
When
<TT
<CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
>
is set to
<SPAN
@@ -224,9 +208,9 @@ it means the caller will accept any protocol family supported by the
operating system.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
></DT
><DD
><P
@@ -246,32 +230,32 @@ CLASS="TYPE"
>
&mdash; that is wanted.
When
<TT
<CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
>
is zero the caller will accept any socket type.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ai_protocol</TT
>ai_protocol</CODE
></DT
><DD
><P
>indicates which transport protocol is wanted: IPPROTO_UDP or
IPPROTO_TCP.
If
<TT
<CODE
CLASS="CONSTANT"
>ai_protocol</TT
>ai_protocol</CODE
>
is zero the caller will accept any protocol.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
></DT
><DD
><P
@@ -282,15 +266,15 @@ CLASS="TYPE"
>AI_CANONNAME</SPAN
>
bit is set, a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
will return a null-terminated string containing the canonical name
of the specified hostname in
<TT
<CODE
CLASS="CONSTANT"
>ai_canonname</TT
>ai_canonname</CODE
>
of the first
<SPAN
@@ -332,9 +316,9 @@ CLASS="TYPE"
for an IPv6 address.</P
><P
>When
<TT
<CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
>
does not set the
<SPAN
@@ -378,11 +362,9 @@ CLASS="REFENTRYTITLE"
if a connectionless protocol was chosen.
The IP address portion of the socket address structure will be
set to the loopback address if
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
is a
<SPAN
@@ -395,15 +377,15 @@ CLASS="TYPE"
>AI_PASSIVE</SPAN
>
is not set in
<TT
<CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
>.</P
><P
>If
<TT
<CODE
CLASS="CONSTANT"
>ai_flags</TT
>ai_flags</CODE
>
is set to
<SPAN
@@ -411,11 +393,9 @@ CLASS="TYPE"
>AI_NUMERICHOST</SPAN
>
it indicates that
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
should be treated as a numeric string defining an IPv4 or IPv6 address
and no name resolution should be attempted.</P
@@ -428,18 +408,14 @@ and no name resolution should be attempted.</P
CLASS="TYPE"
>struct addrinfo</SPAN
> passed
via <TT
via <VAR
CLASS="PARAMETER"
><I
>hints</I
></TT
>hints</VAR
> must be zero.</P
><P
>A <TT
>A <VAR
CLASS="PARAMETER"
><I
>hints</I
></TT
>hints</VAR
> of <SPAN
CLASS="TYPE"
>NULL</SPAN
@@ -448,25 +424,23 @@ the caller provided a <SPAN
CLASS="TYPE"
>struct addrinfo</SPAN
> initialized to zero
with <TT
with <CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
>set to
<TT
<CODE
CLASS="CONSTANT"
>PF_UNSPEC</TT
>PF_UNSPEC</CODE
>.</P
><P
>After a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>,
<TT
<VAR
CLASS="PARAMETER"
><I
>*res</I
></TT
>*res</VAR
>
is a pointer to a linked list of one or more
<SPAN
@@ -481,9 +455,9 @@ CLASS="TYPE"
>
in this list cn be processed by following
the
<TT
<CODE
CLASS="CONSTANT"
>ai_next</TT
>ai_next</CODE
>
pointer, until a
<SPAN
@@ -492,18 +466,18 @@ CLASS="TYPE"
>
pointer is encountered.
The three members
<TT
<CODE
CLASS="CONSTANT"
>ai_family</TT
>ai_family</CODE
>,
<TT
<CODE
CLASS="CONSTANT"
>ai_socktype</TT
>ai_socktype</CODE
>,
and
<TT
<CODE
CLASS="CONSTANT"
>ai_protocol</TT
>ai_protocol</CODE
>
in each
returned
@@ -525,43 +499,41 @@ CLASS="TYPE"
>addrinfo</SPAN
>
structure in the list, the
<TT
<CODE
CLASS="CONSTANT"
>ai_addr</TT
>ai_addr</CODE
>
member points to a filled-in socket address structure of length
<TT
<CODE
CLASS="CONSTANT"
>ai_addrlen</TT
>ai_addrlen</CODE
>.</P
><P
>All of the information returned by
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
is dynamically allocated: the addrinfo structures, and the socket
address structures and canonical host name strings pointed to by the
<TT
<CODE
CLASS="CONSTANT"
>addrinfo</TT
>addrinfo</CODE
>structures.
Memory allocated for the dynamically allocated structures created by
a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
is released by
<TT
<CODE
CLASS="FUNCTION"
>lwres_freeaddrinfo()</TT
>lwres_freeaddrinfo()</CODE
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>ai</I
></TT
>ai</VAR
>
is a pointer to a
<SPAN
@@ -569,9 +541,9 @@ CLASS="TYPE"
>struct addrinfo</SPAN
>
created by a call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>.</P
></DIV
><DIV
@@ -582,9 +554,9 @@ NAME="AEN142"
><H2
>RETURN VALUES</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
returns zero on success or one of the error codes listed in
<SPAN
@@ -596,27 +568,23 @@ CLASS="REFENTRYTITLE"
>
if an error occurs.
If both
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
and
<TT
<VAR
CLASS="PARAMETER"
><I
>servname</I
></TT
>servname</VAR
>
are
<SPAN
CLASS="TYPE"
>NULL</SPAN
>
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrinfo()</TT
>lwres_getaddrinfo()</CODE
>
returns
<SPAN

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_gethostent.html,v 1.8.2.1.4.1 2004/03/06 08:15:39 marka Exp $ -->
<!-- $Id: lwres_gethostent.html,v 1.8.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_gethostent</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_gethostent</A
></H1
></A
>lwres_gethostent</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN21"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN22"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -203,27 +203,27 @@ CLASS="PROGRAMLISTING"
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_name</TT
>h_name</CODE
></DT
><DD
><P
>The official (canonical) name of the host.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
></DT
><DD
><P
>A NULL-terminated array of alternate names (nicknames) for the host.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_addrtype</TT
>h_addrtype</CODE
></DT
><DD
><P
@@ -239,18 +239,18 @@ CLASS="TYPE"
>.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_length</TT
>h_length</CODE
></DT
><DD
><P
>The length of the address in bytes.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
></DT
><DD
><P
@@ -266,40 +266,40 @@ Host addresses are returned in network byte order.</P
></P
><P
>For backward compatibility with very old software,
<TT
<CODE
CLASS="CONSTANT"
>h_addr</TT
>h_addr</CODE
>
is the first address in
<TT
<CODE
CLASS="CONSTANT"
>h_addr_list.</TT
>h_addr_list.</CODE
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gethostent()</TT
>lwres_gethostent()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_sethostent()</TT
>lwres_sethostent()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_endhostent()</TT
>lwres_endhostent()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostent_r()</TT
>lwres_gethostent_r()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_sethostent_r()</TT
>lwres_sethostent_r()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_endhostent_r()</TT
>lwres_endhostent_r()</CODE
>
provide iteration over the known host entries on systems that
provide such functionality through facilities like
@@ -311,33 +311,29 @@ or NIS. The lightweight resolver does not currently implement
these functions; it only provides them as stub functions that always
return failure.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gethostbyname()</TT
>lwres_gethostbyname()</CODE
> and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname2()</TT
>lwres_gethostbyname2()</CODE
> look up the hostname
<TT
<VAR
CLASS="PARAMETER"
><I
>name</I
></TT
>name</VAR
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname()</TT
>lwres_gethostbyname()</CODE
> always looks for an IPv4
address while <TT
address while <CODE
CLASS="FUNCTION"
>lwres_gethostbyname2()</TT
>lwres_gethostbyname2()</CODE
> looks for an
address of protocol family <TT
address of protocol family <VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
>: either
<SPAN
CLASS="TYPE"
@@ -355,37 +351,31 @@ CLASS="TYPE"
CLASS="TYPE"
>NULL</SPAN
> is returned if the lookups by
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname()</TT
>lwres_gethostbyname()</CODE
> or
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname2()</TT
>lwres_gethostbyname2()</CODE
> fail.</P
><P
>Reverse lookups of addresses are performed by
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr()</TT
>lwres_gethostbyaddr()</CODE
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>addr</I
></TT
>addr</VAR
> is an address of length
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
> bytes and protocol family
<TT
<VAR
CLASS="PARAMETER"
><I
>type</I
></TT
>type</VAR
> &mdash; <SPAN
CLASS="TYPE"
>PF_INET</SPAN
@@ -394,99 +384,81 @@ CLASS="TYPE"
CLASS="TYPE"
>PF_INET6</SPAN
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
> is a thread-safe function
for forward lookups. If an error occurs, an error code is returned in
<TT
<VAR
CLASS="PARAMETER"
><I
>*error</I
></TT
>*error</VAR
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
> is a pointer to a <SPAN
CLASS="TYPE"
>struct
hostent</SPAN
> which is initialised by a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
> .
<TT
<VAR
CLASS="PARAMETER"
><I
>buf</I
></TT
>buf</VAR
> is a buffer of length
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
> bytes which is used to store the
<TT
<CODE
CLASS="CONSTANT"
>h_name</TT
>, <TT
>h_name</CODE
>, <CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
>, and
<TT
<CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
> elements of the <SPAN
CLASS="TYPE"
>struct
hostent</SPAN
> returned in <TT
> returned in <VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
>.
Successful calls to <TT
Successful calls to <CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
>
return <TT
return <VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
>,
which is a pointer to the <SPAN
CLASS="TYPE"
>struct hostent</SPAN
> it created.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
> is a thread-safe function
that performs a reverse lookup of address <TT
that performs a reverse lookup of address <VAR
CLASS="PARAMETER"
><I
>addr</I
></TT
>addr</VAR
>
which is <TT
which is <VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
> bytes long and is of protocol
family <TT
family <VAR
CLASS="PARAMETER"
><I
>type</I
></TT
>type</VAR
> &mdash; <SPAN
CLASS="TYPE"
>PF_INET</SPAN
@@ -495,75 +467,63 @@ CLASS="TYPE"
CLASS="TYPE"
>PF_INET6</SPAN
>. If an error occurs, the error code is returned
in <TT
in <VAR
CLASS="PARAMETER"
><I
>*error</I
></TT
>*error</VAR
>. The other function parameters are
identical to those in <TT
identical to those in <CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
> is a pointer to a <SPAN
CLASS="TYPE"
>struct
hostent</SPAN
> which is initialised by a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>buf</I
></TT
>buf</VAR
> is a buffer of length
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
> bytes which is used to store the
<TT
<CODE
CLASS="CONSTANT"
>h_name</TT
>, <TT
>h_name</CODE
>, <CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
>, and
<TT
<CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
> elements of the <SPAN
CLASS="TYPE"
>struct
hostent</SPAN
> returned in <TT
> returned in <VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
>. Successful
calls to <TT
calls to <CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
> return
<TT
<VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
>, which is a pointer to the
<TT
<CODE
CLASS="FUNCTION"
>struct hostent()</TT
>struct hostent()</CODE
> it created.</P
></DIV
><DIV
@@ -575,22 +535,22 @@ NAME="AEN191"
>RETURN VALUES</H2
><P
>The functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname()</TT
>lwres_gethostbyname()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname2()</TT
>lwres_gethostbyname2()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr()</TT
>lwres_gethostbyaddr()</CODE
>,
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostent()</TT
>lwres_gethostent()</CODE
>
return NULL to indicate an error. In this case the global variable
<SPAN
@@ -609,18 +569,18 @@ CLASS="FILENAME"
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>HOST_NOT_FOUND</TT
>HOST_NOT_FOUND</CODE
></DT
><DD
><P
>The host or address was not found.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>TRY_AGAIN</TT
>TRY_AGAIN</CODE
></DT
><DD
><P
@@ -628,18 +588,18 @@ CLASS="CONSTANT"
Retrying the lookup may succeed.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NO_RECOVERY</TT
>NO_RECOVERY</CODE
></DT
><DD
><P
>A non-recoverable error occurred.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NO_DATA</TT
>NO_DATA</CODE
></DT
><DD
><P
@@ -662,14 +622,14 @@ CLASS="REFENTRYTITLE"
>
translates these error codes to suitable error messages.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gethostent()</TT
>lwres_gethostent()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostent_r()</TT
>lwres_gethostent_r()</CODE
>
always return
<SPAN
@@ -677,19 +637,17 @@ CLASS="TYPE"
>NULL</SPAN
>.</P
><P
>Successful calls to <TT
>Successful calls to <CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
> and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
> return
<TT
<VAR
CLASS="PARAMETER"
><I
>resbuf</I
></TT
>resbuf</VAR
>, a pointer to the <SPAN
CLASS="TYPE"
>struct
@@ -698,40 +656,36 @@ hostent</SPAN
<SPAN
CLASS="TYPE"
>NULL</SPAN
> if the lookups fail or if <TT
> if the lookups fail or if <VAR
CLASS="PARAMETER"
><I
>buf</I
></TT
>buf</VAR
>
was too small to hold the list of addresses and names referenced by
the <TT
the <CODE
CLASS="CONSTANT"
>h_name</TT
>, <TT
>h_name</CODE
>, <CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
>, and
<TT
<CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
> elements of the <SPAN
CLASS="TYPE"
>struct
hostent</SPAN
>. If <TT
>. If <VAR
CLASS="PARAMETER"
><I
>buf</I
></TT
>buf</VAR
> was too small, both
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
> and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
> set the global variable
<SPAN
CLASS="TYPE"
@@ -781,34 +735,34 @@ NAME="AEN257"
><H2
>BUGS</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gethostbyname()</TT
>lwres_gethostbyname()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname2()</TT
>lwres_gethostbyname2()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr()</TT
>lwres_gethostbyaddr()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_endhostent()</TT
>lwres_endhostent()</CODE
>
are not thread safe; they return pointers to static data and
provide error codes through a global variable.
Thread-safe versions for name and address lookup are provided by
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyname_r()</TT
>lwres_gethostbyname_r()</CODE
>,
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gethostbyaddr_r()</TT
>lwres_gethostbyaddr_r()</CODE
>
respectively.</P
><P

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_getipnode.html,v 1.7.2.1.4.1 2004/03/06 08:15:40 marka Exp $ -->
<!-- $Id: lwres_getipnode.html,v 1.7.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_getipnode</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_getipnode</A
></H1
></A
>lwres_getipnode</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN13"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN14"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -131,27 +131,27 @@ CLASS="PROGRAMLISTING"
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_name</TT
>h_name</CODE
></DT
><DD
><P
>The official (canonical) name of the host.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
></DT
><DD
><P
>A NULL-terminated array of alternate names (nicknames) for the host.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_addrtype</TT
>h_addrtype</CODE
></DT
><DD
><P
@@ -167,18 +167,18 @@ CLASS="TYPE"
>.&#13;</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_length</TT
>h_length</CODE
></DT
><DD
><P
>The length of the address in bytes.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
></DT
><DD
><P
@@ -194,32 +194,26 @@ Host addresses are returned in network byte order.</P
></DIV
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getipnodebyname()</TT
>lwres_getipnodebyname()</CODE
>
looks up addresses of protocol family
<TT
<VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
>
for the hostname
<TT
<VAR
CLASS="PARAMETER"
><I
>name</I
></TT
>name</VAR
>.
The
<TT
<VAR
CLASS="PARAMETER"
><I
>flags</I
></TT
>flags</VAR
>
parameter contains ORed flag bits to
specify the types of addresses that are searched
@@ -231,44 +225,40 @@ The flag bits are:
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>AI_V4MAPPED</TT
>AI_V4MAPPED</CODE
></DT
><DD
><P
>This is used with an
<TT
<VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
>
of AF_INET6, and causes IPv4 addresses to be returned as IPv4-mapped
IPv6 addresses.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>AI_ALL</TT
>AI_ALL</CODE
></DT
><DD
><P
>This is used with an
<TT
<VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
>
of AF_INET6, and causes all known addresses (IPv6 and IPv4) to be returned.
If AI_V4MAPPED is also set, the IPv4 addresses are return as mapped
IPv6 addresses.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>AI_ADDRCONFIG</TT
>AI_ADDRCONFIG</CODE
></DT
><DD
><P
@@ -277,21 +267,21 @@ interface of that type. This is not currently implemented
in the BIND 9 lightweight resolver, and the flag is ignored.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>AI_DEFAULT</TT
>AI_DEFAULT</CODE
></DT
><DD
><P
>This default sets the
<TT
<CODE
CLASS="CONSTANT"
>AI_V4MAPPED</TT
>AI_V4MAPPED</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>AI_ADDRCONFIG</TT
>AI_ADDRCONFIG</CODE
>
flag bits.</P
></DD
@@ -299,31 +289,25 @@ flag bits.</P
></DIV
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getipnodebyaddr()</TT
>lwres_getipnodebyaddr()</CODE
>
performs a reverse lookup
of address
<TT
<VAR
CLASS="PARAMETER"
><I
>src</I
></TT
>src</VAR
>
which is
<TT
<VAR
CLASS="PARAMETER"
><I
>len</I
></TT
>len</VAR
>
bytes long.
<TT
<VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
>
denotes the protocol family, typically
<SPAN
@@ -336,9 +320,9 @@ CLASS="TYPE"
>PF_INET6</SPAN
>.&#13;</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_freehostent()</TT
>lwres_freehostent()</CODE
>
releases all the memory associated with
the
@@ -347,27 +331,25 @@ CLASS="TYPE"
>struct hostent</SPAN
>
pointer
<TT
<VAR
CLASS="PARAMETER"
><I
>he</I
></TT
>he</VAR
>.
Any memory allocated for the
<TT
<CODE
CLASS="CONSTANT"
>h_name</TT
>h_name</CODE
>,
<TT
<CODE
CLASS="CONSTANT"
>h_addr_list</TT
>h_addr_list</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>h_aliases</TT
>h_aliases</CODE
>
is freed, as is the memory for the
<SPAN
@@ -385,21 +367,19 @@ NAME="AEN116"
>RETURN VALUES</H2
><P
>If an error occurs,
<TT
<CODE
CLASS="FUNCTION"
>lwres_getipnodebyname()</TT
>lwres_getipnodebyname()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_getipnodebyaddr()</TT
>lwres_getipnodebyaddr()</CODE
>
set
<TT
<VAR
CLASS="PARAMETER"
><I
>*error_num</I
></TT
>*error_num</VAR
>
to an appropriate error code and the function returns a
<SPAN
@@ -418,18 +398,18 @@ CLASS="FILENAME"
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>HOST_NOT_FOUND</TT
>HOST_NOT_FOUND</CODE
></DT
><DD
><P
>No such host is known.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NO_ADDRESS</TT
>NO_ADDRESS</CODE
></DT
><DD
><P
@@ -438,9 +418,9 @@ available. Another type of request to the name server for the
domain might return an answer.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>TRY_AGAIN</TT
>TRY_AGAIN</CODE
></DT
><DD
><P
@@ -449,9 +429,9 @@ failure of a server to respond. The request may succeed if
retried.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NO_RECOVERY</TT
>NO_RECOVERY</CODE
></DT
><DD
><P

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_getnameinfo.html,v 1.5.2.1.4.1 2004/03/06 08:15:40 marka Exp $ -->
<!-- $Id: lwres_getnameinfo.html,v 1.5.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_getnameinfo</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_getnameinfo</A
></H1
></A
>lwres_getnameinfo</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN11"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN12"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -89,70 +89,54 @@ CLASS="REFENTRYTITLE"
>getnameinfo</SPAN
>(3)</SPAN
> function defined in RFC2133.
<TT
<CODE
CLASS="FUNCTION"
>lwres_getnameinfo()</TT
>lwres_getnameinfo()</CODE
> returns the hostname for the
<SPAN
CLASS="TYPE"
>struct sockaddr</SPAN
> <TT
> <VAR
CLASS="PARAMETER"
><I
>sa</I
></TT
>sa</VAR
> which is
<TT
<VAR
CLASS="PARAMETER"
><I
>salen</I
></TT
>salen</VAR
> bytes long. The hostname is of length
<TT
<VAR
CLASS="PARAMETER"
><I
>hostlen</I
></TT
>hostlen</VAR
> and is returned via
<TT
<VAR
CLASS="PARAMETER"
><I
>*host.</I
></TT
>*host.</VAR
> The maximum length of the hostname is
1025 bytes: <TT
1025 bytes: <CODE
CLASS="CONSTANT"
>NI_MAXHOST</TT
>NI_MAXHOST</CODE
>.</P
><P
> The name of the service associated with the port number in
<TT
<VAR
CLASS="PARAMETER"
><I
>sa</I
></TT
> is returned in <TT
>sa</VAR
> is returned in <VAR
CLASS="PARAMETER"
><I
>*serv.</I
></TT
>*serv.</VAR
>
It is <TT
It is <VAR
CLASS="PARAMETER"
><I
>servlen</I
></TT
>servlen</VAR
> bytes long. The maximum length
of the service name is <TT
of the service name is <CODE
CLASS="CONSTANT"
>NI_MAXSERV</TT
>NI_MAXSERV</CODE
> - 32 bytes.</P
><P
> The <TT
> The <VAR
CLASS="PARAMETER"
><I
>flags</I
></TT
>flags</VAR
> argument sets the following
bits:
<P
@@ -161,9 +145,9 @@ bits:
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>NI_NOFQDN</TT
>NI_NOFQDN</CODE
></DT
><DD
><P
@@ -171,9 +155,9 @@ CLASS="CONSTANT"
The local part of the fully qualified domain name is returned instead.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NI_NUMERICHOST</TT
>NI_NUMERICHOST</CODE
></DT
><DD
><P
@@ -181,9 +165,9 @@ CLASS="CONSTANT"
instead of a host name.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NI_NAMEREQD</TT
>NI_NAMEREQD</CODE
></DT
><DD
><P
@@ -193,18 +177,18 @@ If the hostname is not found and the flag is not set, the
address is returned in numeric form.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NI_NUMERICSERV</TT
>NI_NUMERICSERV</CODE
></DT
><DD
><P
>The service name is returned as a digit string representing the port number.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>NI_DGRAM</TT
>NI_DGRAM</CODE
></DT
><DD
><P
@@ -226,9 +210,9 @@ NAME="AEN70"
><H2
>RETURN VALUES</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getnameinfo()</TT
>lwres_getnameinfo()</CODE
>
returns 0 on success or a non-zero error code if an error occurs.</P
></DIV

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_getrrsetbyname.html,v 1.5.2.1.4.1 2004/03/06 08:15:40 marka Exp $ -->
<!-- $Id: lwres_getrrsetbyname.html,v 1.5.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_getrrsetbyname</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_getrrsetbyname</A
></H1
></A
>lwres_getrrsetbyname</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN12"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN13"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -111,60 +111,48 @@ NAME="AEN29"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>
gets a set of resource records associated with a
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>,
<TT
<VAR
CLASS="PARAMETER"
><I
>class</I
></TT
>class</VAR
>,
and
<TT
<VAR
CLASS="PARAMETER"
><I
>type</I
></TT
>type</VAR
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>hostname</I
></TT
>hostname</VAR
>
is
a pointer a to null-terminated string. The
<TT
<VAR
CLASS="PARAMETER"
><I
>flags</I
></TT
>flags</VAR
>
field is currently unused and must be zero.</P
><P
>After a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>,
<TT
<VAR
CLASS="PARAMETER"
><I
>*res</I
></TT
>*res</VAR
>
is a pointer to an
<SPAN
@@ -184,84 +172,82 @@ CLASS="TYPE"
structures containing SIG resource records
associated with those records.
The members
<TT
<CODE
CLASS="CONSTANT"
>rri_rdclass</TT
>rri_rdclass</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>rri_rdtype</TT
>rri_rdtype</CODE
>
are copied from the parameters.
<TT
<CODE
CLASS="CONSTANT"
>rri_ttl</TT
>rri_ttl</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>rri_name</TT
>rri_name</CODE
>
are properties of the obtained rrset.
The resource records contained in
<TT
<CODE
CLASS="CONSTANT"
>rri_rdatas</TT
>rri_rdatas</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>rri_sigs</TT
>rri_sigs</CODE
>
are in uncompressed DNS wire format.
Properties of the rdataset are represented in the
<TT
<CODE
CLASS="CONSTANT"
>rri_flags</TT
>rri_flags</CODE
>
bitfield. If the RRSET_VALIDATED bit is set, the data has been DNSSEC
validated and the signatures verified. </P
><P
>All of the information returned by
<TT
<CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>
is dynamically allocated: the
<TT
<CODE
CLASS="CONSTANT"
>rrsetinfo</TT
>rrsetinfo</CODE
>
and
<TT
<CODE
CLASS="CONSTANT"
>rdatainfo</TT
>rdatainfo</CODE
>
structures,
and the canonical host name strings pointed to by the
<TT
<CODE
CLASS="CONSTANT"
>rrsetinfo</TT
>rrsetinfo</CODE
>structure.
Memory allocated for the dynamically allocated structures created by
a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>
is released by
<TT
<CODE
CLASS="FUNCTION"
>lwres_freerrset()</TT
>lwres_freerrset()</CODE
>.
<TT
<VAR
CLASS="PARAMETER"
><I
>rrset</I
></TT
>rrset</VAR
>
is a pointer to a
<SPAN
@@ -269,9 +255,9 @@ CLASS="TYPE"
>struct rrset</SPAN
>
created by a call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>.&#13;</P
><P
></P
@@ -284,9 +270,9 @@ NAME="AEN62"
><H2
>RETURN VALUES</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>lwres_getrrsetbyname()</CODE
>
returns zero on success, and one of the following error
codes if an error occurred:
@@ -296,54 +282,54 @@ codes if an error occurred:
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>ERRSET_NONAME</TT
>ERRSET_NONAME</CODE
></DT
><DD
><P
>the name does not exist</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ERRSET_NODATA</TT
>ERRSET_NODATA</CODE
></DT
><DD
><P
>the name exists, but does not have data of the desired type</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ERRSET_NOMEMORY</TT
>ERRSET_NOMEMORY</CODE
></DT
><DD
><P
>memory could not be allocated</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ERRSET_INVAL</TT
>ERRSET_INVAL</CODE
></DT
><DD
><P
>a parameter is invalid</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>ERRSET_FAIL</TT
>ERRSET_FAIL</CODE
></DT
><DD
><P
>other failure</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
></TT
></CODE
></DT
><DD
><P

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_gnba.html,v 1.6.2.1.4.1 2004/03/06 08:15:40 marka Exp $ -->
<!-- $Id: lwres_gnba.html,v 1.6.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_gnba</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_gnba</A
></H1
></A
>lwres_gnba</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN16"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN17"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -171,41 +171,41 @@ typedef struct {
} lwres_gnbaresponse_t;</PRE
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gnbarequest_render()</TT
>lwres_gnbarequest_render()</CODE
>
uses resolver context
<TT
<VAR
CLASS="VARNAME"
>ctx</TT
>ctx</VAR
>
to convert getnamebyaddr request structure
<TT
<VAR
CLASS="VARNAME"
>req</TT
>req</VAR
>
to canonical format.
The packet header structure
<TT
<VAR
CLASS="VARNAME"
>pkt</TT
>pkt</VAR
>
is initialised and transferred to
buffer
<TT
<VAR
CLASS="VARNAME"
>b</TT
>b</VAR
>.
The contents of
<TT
<VAR
CLASS="VARNAME"
>*req</TT
>*req</VAR
>
are then appended to the buffer in canonical format.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_render()</TT
>lwres_gnbaresponse_render()</CODE
>
performs the same task, except it converts a getnamebyaddr response structure
<SPAN
@@ -214,19 +214,19 @@ CLASS="TYPE"
>
to the lightweight resolver's canonical format.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gnbarequest_parse()</TT
>lwres_gnbarequest_parse()</CODE
>
uses context
<TT
<VAR
CLASS="VARNAME"
>ctx</TT
>ctx</VAR
>
to convert the contents of packet
<TT
<VAR
CLASS="VARNAME"
>pkt</TT
>pkt</VAR
>
to a
<SPAN
@@ -235,9 +235,9 @@ CLASS="TYPE"
>
structure.
Buffer
<TT
<VAR
CLASS="VARNAME"
>b</TT
>b</VAR
>
provides space to be used for storing this structure.
When the function succeeds, the resulting
@@ -246,18 +246,18 @@ CLASS="TYPE"
>lwres_gnbarequest_t</SPAN
>
is made available through
<TT
<VAR
CLASS="VARNAME"
>*structp</TT
>*structp</VAR
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_parse()</TT
>lwres_gnbaresponse_parse()</CODE
>
offers the same semantics as
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbarequest_parse()</TT
>lwres_gnbarequest_parse()</CODE
>
except it yields a
<SPAN
@@ -266,19 +266,19 @@ CLASS="TYPE"
>
structure.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_free()</TT
>lwres_gnbaresponse_free()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbarequest_free()</TT
>lwres_gnbarequest_free()</CODE
>
release the memory in resolver context
<TT
<VAR
CLASS="VARNAME"
>ctx</TT
>ctx</VAR
>
that was allocated to the
<SPAN
@@ -291,9 +291,9 @@ CLASS="TYPE"
>lwres_gnbarequest_t</SPAN
>
structures referenced via
<TT
<VAR
CLASS="VARNAME"
>structp</TT
>structp</VAR
>.
Any memory associated with ancillary buffers and strings for those
structures is also discarded.</P
@@ -307,22 +307,22 @@ NAME="AEN97"
>RETURN VALUES</H2
><P
>The getnamebyaddr opcode functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbarequest_render()</TT
>lwres_gnbarequest_render()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_render()</TT
>lwres_gnbaresponse_render()</CODE
>
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbarequest_parse()</TT
>lwres_gnbarequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_parse()</TT
>lwres_gnbaresponse_parse()</CODE
>
all return
<SPAN
@@ -341,9 +341,9 @@ CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
is returned if the available space in the buffer
<TT
<VAR
CLASS="VARNAME"
>b</TT
>b</VAR
>
is too small to accommodate the packet header or the
<SPAN
@@ -356,14 +356,14 @@ CLASS="TYPE"
>lwres_gnbaresponse_t</SPAN
>
structures.
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbarequest_parse()</TT
>lwres_gnbarequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_gnbaresponse_parse()</TT
>lwres_gnbaresponse_parse()</CODE
>
will return
<SPAN
@@ -377,11 +377,9 @@ CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
<CODE
CLASS="STRUCTFIELD"
><I
>pktflags</I
></TT
>pktflags</CODE
>
in the packet header structure
<SPAN

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_hstrerror.html,v 1.5.2.1.4.1 2004/03/06 08:15:41 marka Exp $ -->
<!-- $Id: lwres_hstrerror.html,v 1.5.2.1.4.2 2004/08/22 23:39:04 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_hstrerror</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_hstrerror</A
></H1
></A
>lwres_hstrerror</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN12"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN13"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
@@ -90,37 +90,33 @@ NAME="AEN23"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_herror()</TT
>lwres_herror()</CODE
> prints the string
<TT
<VAR
CLASS="PARAMETER"
><I
>s</I
></TT
>s</VAR
> on <SPAN
CLASS="TYPE"
>stderr</SPAN
> followed by the string
generated by <TT
generated by <CODE
CLASS="FUNCTION"
>lwres_hstrerror()</TT
>lwres_hstrerror()</CODE
> for the error code
stored in the global variable <TT
stored in the global variable <CODE
CLASS="CONSTANT"
>lwres_h_errno</TT
>lwres_h_errno</CODE
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_hstrerror()</TT
>lwres_hstrerror()</CODE
> returns an appropriate string
for the error code gievn by <TT
for the error code gievn by <VAR
CLASS="PARAMETER"
><I
>err</I
></TT
>err</VAR
>. The values of
the error codes and messages are as follows:
@@ -205,14 +201,14 @@ NAME="AEN65"
CLASS="ERRORNAME"
>Unknown resolver error</SPAN
> is returned by
<TT
<CODE
CLASS="FUNCTION"
>lwres_hstrerror()</TT
>lwres_hstrerror()</CODE
>
when the value of
<TT
<CODE
CLASS="CONSTANT"
>lwres_h_errno</TT
>lwres_h_errno</CODE
>
is not a valid error code.</P
></DIV

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_inetntop.html,v 1.5.2.1.4.1 2004/03/06 08:15:41 marka Exp $ -->
<!-- $Id: lwres_inetntop.html,v 1.5.2.1.4.2 2004/08/22 23:39:05 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_inetntop</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_inetntop</A
></H1
></A
>lwres_inetntop</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN11"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN12"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/net.h&gt;</PRE
@@ -82,37 +82,29 @@ NAME="AEN21"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_net_ntop()</TT
>lwres_net_ntop()</CODE
> converts an IP address of
protocol family <TT
protocol family <VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
> &mdash; IPv4 or IPv6 &mdash;
at location <TT
at location <VAR
CLASS="PARAMETER"
><I
>src</I
></TT
>src</VAR
> from network format to its
conventional representation as a string. For IPv4 addresses, that
string would be a dotted-decimal. An IPv6 address would be
represented in colon notation as described in RFC1884.</P
><P
>The generated string is copied to <TT
>The generated string is copied to <VAR
CLASS="PARAMETER"
><I
>dst</I
></TT
>dst</VAR
> provided
<TT
<VAR
CLASS="PARAMETER"
><I
>size</I
></TT
>size</VAR
> indicates it is long enough to store the
ASCII representation of the address.</P
></DIV
@@ -124,33 +116,29 @@ NAME="AEN30"
><H2
>RETURN VALUES</H2
><P
>If successful, the function returns <TT
>If successful, the function returns <VAR
CLASS="PARAMETER"
><I
>dst</I
></TT
>dst</VAR
>:
a pointer to a string containing the presentation format of the
address. <TT
address. <CODE
CLASS="FUNCTION"
>lwres_net_ntop()</TT
>lwres_net_ntop()</CODE
> returns
<SPAN
CLASS="TYPE"
>NULL</SPAN
> and sets the global variable
<TT
<CODE
CLASS="CONSTANT"
>errno</TT
>errno</CODE
> to <SPAN
CLASS="ERRORCODE"
>EAFNOSUPPORT</SPAN
> if
the protocol family given in <TT
the protocol family given in <VAR
CLASS="PARAMETER"
><I
>af</I
></TT
>af</VAR
> is not
supported.</P
></DIV

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_noop.html,v 1.7.2.1.4.1 2004/03/06 08:15:41 marka Exp $ -->
<!-- $Id: lwres_noop.html,v 1.7.2.1.4.2 2004/08/22 23:39:05 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_noop</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_noop</A
></H1
></A
>lwres_noop</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN16"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN17"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -176,43 +176,33 @@ Although the structures have different types, they are identical.
This is because the no-op opcode simply echos whatever data was sent:
the response is therefore identical to the request.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_nooprequest_render()</TT
>lwres_nooprequest_render()</CODE
> uses resolver
context <TT
context <VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
> to convert no-op request structure
<TT
<VAR
CLASS="PARAMETER"
><I
>req</I
></TT
>req</VAR
> to canonical format. The packet header
structure <TT
structure <VAR
CLASS="PARAMETER"
><I
>pkt</I
></TT
>pkt</VAR
> is initialised and transferred to
buffer <TT
buffer <VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>. The contents of
<TT
<VAR
CLASS="PARAMETER"
><I
>*req</I
></TT
>*req</VAR
> are then appended to the buffer in
canonical format. <TT
canonical format. <CODE
CLASS="FUNCTION"
>lwres_noopresponse_render()</TT
>lwres_noopresponse_render()</CODE
>
performs the same task, except it converts a no-op response structure
<SPAN
@@ -221,68 +211,58 @@ CLASS="TYPE"
> to the lightweight resolver's
canonical format.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_nooprequest_parse()</TT
>lwres_nooprequest_parse()</CODE
> uses context
<TT
<VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
> to convert the contents of packet
<TT
<VAR
CLASS="PARAMETER"
><I
>pkt</I
></TT
>pkt</VAR
> to a <SPAN
CLASS="TYPE"
>lwres_nooprequest_t</SPAN
>
structure. Buffer <TT
structure. Buffer <VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
> provides space to be used
for storing this structure. When the function succeeds, the resulting
<SPAN
CLASS="TYPE"
>lwres_nooprequest_t</SPAN
> is made available through
<TT
<VAR
CLASS="PARAMETER"
><I
>*structp</I
></TT
>*structp</VAR
>.
<TT
<CODE
CLASS="FUNCTION"
>lwres_noopresponse_parse()</TT
>lwres_noopresponse_parse()</CODE
> offers the same
semantics as <TT
semantics as <CODE
CLASS="FUNCTION"
>lwres_nooprequest_parse()</TT
>lwres_nooprequest_parse()</CODE
> except it
yields a <SPAN
CLASS="TYPE"
>lwres_noopresponse_t</SPAN
> structure.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_noopresponse_free()</TT
>lwres_noopresponse_free()</CODE
> and
<TT
<CODE
CLASS="FUNCTION"
>lwres_nooprequest_free()</TT
>lwres_nooprequest_free()</CODE
> release the memory in
resolver context <TT
resolver context <VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
> that was allocated to the
<SPAN
CLASS="TYPE"
@@ -291,11 +271,9 @@ CLASS="TYPE"
CLASS="TYPE"
>lwres_nooprequest_t</SPAN
>
structures referenced via <TT
structures referenced via <VAR
CLASS="PARAMETER"
><I
>structp</I
></TT
>structp</VAR
>.</P
></DIV
><DIV
@@ -307,23 +285,23 @@ NAME="AEN95"
>RETURN VALUES</H2
><P
>The no-op opcode functions
<TT
<CODE
CLASS="FUNCTION"
>lwres_nooprequest_render()</TT
>lwres_nooprequest_render()</CODE
>,
<TT
<CODE
CLASS="FUNCTION"
>lwres_noopresponse_render()</TT
>lwres_noopresponse_render()</CODE
>
<TT
<CODE
CLASS="FUNCTION"
>lwres_nooprequest_parse()</TT
>lwres_nooprequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_noopresponse_parse()</TT
>lwres_noopresponse_parse()</CODE
>
all return
<SPAN
@@ -342,11 +320,9 @@ CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
is returned if the available space in the buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>
is too small to accommodate the packet header or the
<SPAN
@@ -359,14 +335,14 @@ CLASS="TYPE"
>lwres_noopresponse_t</SPAN
>
structures.
<TT
<CODE
CLASS="FUNCTION"
>lwres_nooprequest_parse()</TT
>lwres_nooprequest_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_noopresponse_parse()</TT
>lwres_noopresponse_parse()</CODE
>
will return
<SPAN
@@ -380,9 +356,9 @@ CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
<CODE
CLASS="CONSTANT"
>pktflags</TT
>pktflags</CODE
>
in the packet header structure
<SPAN

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_packet.html,v 1.8.2.1.4.1 2004/03/06 08:15:42 marka Exp $ -->
<!-- $Id: lwres_packet.html,v 1.8.2.1.4.2 2004/08/22 23:39:05 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_packet</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_packet</A
></H1
></A
>lwres_packet</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN12"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN13"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwpacket.h&gt;</PRE
@@ -125,9 +125,9 @@ struct lwres_lwpacket {
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>length</TT
>length</CODE
></DT
><DD
><P
@@ -136,9 +136,9 @@ This field is filled in by the lwres_gabn_*() and lwres_gnba_*()
calls.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>version</TT
>version</CODE
></DT
><DD
><P
@@ -152,9 +152,9 @@ This field is filled in by the lwres_gabn_*() and lwres_gnba_*()
calls.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>pktflags</TT
>pktflags</CODE
></DT
><DD
><P
@@ -166,9 +166,9 @@ LWRES_LWPACKETFLAG_RESPONSE bit, which is set by the library in the
lwres_gabn_*() and lwres_gnba_*() calls.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>serial</TT
>serial</CODE
></DT
><DD
><P
@@ -179,9 +179,9 @@ may be dropped.
This field must be set by the application.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>opcode</TT
>opcode</CODE
></DT
><DD
><P
@@ -193,9 +193,9 @@ This field is filled in by the lwres_gabn_*() and lwres_gnba_*()
calls.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>result</TT
>result</CODE
></DT
><DD
><P
@@ -206,9 +206,9 @@ This field is filled in by the lwres_gabn_*() and lwres_gnba_*()
calls.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>recvlength</TT
>recvlength</CODE
></DT
><DD
><P
@@ -218,9 +218,9 @@ is too large for replies.
This field is supplied by the application.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>authtype</TT
>authtype</CODE
></DT
><DD
><P
@@ -230,9 +230,9 @@ and types between 0x0000 and 0x0fff are reserved for library use.
Currently these are not used and must be zero.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>authlen</TT
>authlen</CODE
></DT
><DD
><P
@@ -250,9 +250,9 @@ Since packet authentication is currently not used, this must be zero.</P
CLASS="VARIABLELIST"
><DL
><DT
><TT
><CODE
CLASS="CONSTANT"
>NOOP</TT
>NOOP</CODE
></DT
><DD
><P
@@ -260,9 +260,9 @@ CLASS="CONSTANT"
The lwres_noop_*() functions should be used for this type.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>GETADDRSBYNAME</TT
>GETADDRSBYNAME</CODE
></DT
><DD
><P
@@ -270,9 +270,9 @@ CLASS="CONSTANT"
The lwres_gabn_*() functions should be used for this type.</P
></DD
><DT
><TT
><CODE
CLASS="CONSTANT"
>GETNAMEBYADDR</TT
>GETNAMEBYADDR</CODE
></DT
><DD
><P
@@ -283,50 +283,40 @@ The lwres_gnba_*() functions should be used for this type.</P
></DIV
></P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_lwpacket_renderheader()</TT
>lwres_lwpacket_renderheader()</CODE
> transfers the
contents of lightweight resolver packet structure
<SPAN
CLASS="TYPE"
>lwres_lwpacket_t</SPAN
> <TT
> <VAR
CLASS="PARAMETER"
><I
>*pkt</I
></TT
>*pkt</VAR
> in network
byte order to the lightweight resolver buffer,
<TT
<VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_lwpacket_parseheader()</TT
>lwres_lwpacket_parseheader()</CODE
> performs the
converse operation. It transfers data in network byte order from
buffer <TT
buffer <VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
> to resolver packet
<TT
<VAR
CLASS="PARAMETER"
><I
>*pkt</I
></TT
>*pkt</VAR
>. The contents of the buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
> should correspond to a
<SPAN
CLASS="TYPE"
@@ -342,29 +332,25 @@ NAME="AEN107"
>RETURN VALUES</H2
><P
> Successful calls to
<TT
<CODE
CLASS="FUNCTION"
>lwres_lwpacket_renderheader()</TT
>lwres_lwpacket_renderheader()</CODE
> and
<TT
<CODE
CLASS="FUNCTION"
>lwres_lwpacket_parseheader()</TT
>lwres_lwpacket_parseheader()</CODE
> return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>. If there is insufficient
space to copy data between the buffer <TT
space to copy data between the buffer <VAR
CLASS="PARAMETER"
><I
>*b</I
></TT
>*b</VAR
> and
lightweight resolver packet <TT
lightweight resolver packet <VAR
CLASS="PARAMETER"
><I
>*pkt</I
></TT
>*pkt</VAR
> both functions
return <SPAN
CLASS="ERRORCODE"

View File

@@ -15,16 +15,16 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id: lwres_resutil.html,v 1.8.2.1.4.1 2004/03/06 08:15:42 marka Exp $ -->
<!-- $Id: lwres_resutil.html,v 1.8.2.1.4.2 2004/08/22 23:39:05 marka Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>lwres_resutil</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
@@ -35,8 +35,8 @@ ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_resutil</A
></H1
></A
>lwres_resutil</H1
><DIV
CLASS="REFNAMEDIV"
><A
@@ -54,11 +54,11 @@ NAME="AEN14"
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><P
></P
><A
NAME="AEN15"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/lwres.h&gt;</PRE
@@ -106,32 +106,26 @@ NAME="AEN43"
><H2
>DESCRIPTION</H2
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_string_parse()</TT
>lwres_string_parse()</CODE
> retrieves a DNS-encoded
string starting the current pointer of lightweight resolver buffer
<TT
<VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>: i.e. <TT
>b</VAR
>: i.e. <CODE
CLASS="CONSTANT"
>b-&gt;current</TT
>b-&gt;current</CODE
>.
When the function returns, the address of the first byte of the
encoded string is returned via <TT
encoded string is returned via <VAR
CLASS="PARAMETER"
><I
>*c</I
></TT
>*c</VAR
> and the
length of that string is given by <TT
length of that string is given by <VAR
CLASS="PARAMETER"
><I
>*len</I
></TT
>*len</VAR
>. The
buffer's current pointer is advanced to point at the character
following the string length, the encoded string, and the trailing
@@ -140,45 +134,43 @@ CLASS="TYPE"
>NULL</SPAN
> character.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_addr_parse()</TT
>lwres_addr_parse()</CODE
> extracts an address from the
buffer <TT
buffer <VAR
CLASS="PARAMETER"
><I
>b</I
></TT
>b</VAR
>. The buffer's current pointer
<TT
<CODE
CLASS="CONSTANT"
>b-&gt;current</TT
>b-&gt;current</CODE
> is presumed to point at an encoded
address: the address preceded by a 32-bit protocol family identifier
and a 16-bit length field. The encoded address is copied to
<TT
<CODE
CLASS="CONSTANT"
>addr-&gt;address</TT
>addr-&gt;address</CODE
> and
<TT
<CODE
CLASS="CONSTANT"
>addr-&gt;length</TT
>addr-&gt;length</CODE
> indicates the size in bytes of
the address that was copied. <TT
the address that was copied. <CODE
CLASS="CONSTANT"
>b-&gt;current</TT
>b-&gt;current</CODE
> is
advanced to point at the next byte of available data in the buffer
following the encoded address.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_getnamebyaddr()</TT
>lwres_getnamebyaddr()</CODE
>
use the
<SPAN
@@ -213,27 +205,21 @@ CLASS="REFENTRYTITLE"
functions.</P
><P
>The lightweight resolver uses
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
> to perform foward lookups.
Hostname <TT
Hostname <VAR
CLASS="PARAMETER"
><I
>name</I
></TT
>name</VAR
> is looked up using the resolver
context <TT
context <VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
> for memory allocation.
<TT
<VAR
CLASS="PARAMETER"
><I
>addrtypes</I
></TT
>addrtypes</VAR
> is a bitmask indicating which type of
addresses are to be looked up. Current values for this bitmask are
<SPAN
@@ -244,29 +230,23 @@ CLASS="TYPE"
CLASS="TYPE"
>LWRES_ADDRTYPE_V6</SPAN
> for IPv6 addresses. Results of the
lookup are returned in <TT
lookup are returned in <VAR
CLASS="PARAMETER"
><I
>*structp</I
></TT
>*structp</VAR
>.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getnamebyaddr()</TT
>lwres_getnamebyaddr()</CODE
> performs reverse lookups.
Resolver context <TT
Resolver context <VAR
CLASS="PARAMETER"
><I
>ctx</I
></TT
>ctx</VAR
> is used for memory
allocation. The address type is indicated by
<TT
<VAR
CLASS="PARAMETER"
><I
>addrtype</I
></TT
>addrtype</VAR
>: <SPAN
CLASS="TYPE"
>LWRES_ADDRTYPE_V4</SPAN
@@ -275,23 +255,17 @@ CLASS="TYPE"
CLASS="TYPE"
>LWRES_ADDRTYPE_V6</SPAN
>. The address to be looked up is given
by <TT
by <VAR
CLASS="PARAMETER"
><I
>addr</I
></TT
>addr</VAR
> and its length is
<TT
<VAR
CLASS="PARAMETER"
><I
>addrlen</I
></TT
>addrlen</VAR
> bytes. The result of the function call
is made available through <TT
is made available through <VAR
CLASS="PARAMETER"
><I
>*structp</I
></TT
>*structp</VAR
>.</P
></DIV
><DIV
@@ -303,14 +277,14 @@ NAME="AEN84"
>RETURN VALUES</H2
><P
>Successful calls to
<TT
<CODE
CLASS="FUNCTION"
>lwres_string_parse()</TT
>lwres_string_parse()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_addr_parse()</TT
>lwres_addr_parse()</CODE
>
return
<SPAN
@@ -330,9 +304,9 @@ CLASS="ERRORCODE"
if the buffer has less space than expected for the components of the
encoded string or address.</P
><P
><TT
><CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
>
returns
<SPAN
@@ -345,11 +319,9 @@ CLASS="ERRORCODE"
>LWRES_R_NOTFOUND</SPAN
>
if the hostname
<TT
<VAR
CLASS="PARAMETER"
><I
>name</I
></TT
>name</VAR
>
could not be found.</P
><P
@@ -358,20 +330,20 @@ CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>
is returned by a successful call to
<TT
<CODE
CLASS="FUNCTION"
>lwres_getnamebyaddr()</TT
>lwres_getnamebyaddr()</CODE
>.</P
><P
>Both
<TT
<CODE
CLASS="FUNCTION"
>lwres_getaddrsbyname()</TT
>lwres_getaddrsbyname()</CODE
>
and
<TT
<CODE
CLASS="FUNCTION"
>lwres_getnamebyaddr()</TT
>lwres_getnamebyaddr()</CODE
>
return
<SPAN