lwres_gabn.html revision 1969ab5360417d374547a8b51c78acfa1e9202ba
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<!--
11e9368a226272085c337e9e74b79808c16fbdbaTinderbox User - Copyright (C) 2001 Internet Software Consortium.
6a42ab64276ff832a47e009be1208f7c7d4da22dAutomatic Updater -
6a42ab64276ff832a47e009be1208f7c7d4da22dAutomatic Updater - Permission to use, copy, modify, and distribute this software for any
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater - purpose with or without fee is hereby granted, provided that the above
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - copyright notice and this permission notice appear in all copies.
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews -
6a42ab64276ff832a47e009be1208f7c7d4da22dAutomatic Updater - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
6a42ab64276ff832a47e009be1208f7c7d4da22dAutomatic Updater - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews-->
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<!-- $Id: lwres_gabn.html,v 1.4 2001/05/30 20:27:28 bwelling Exp $ -->
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<HTML
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><HEAD
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt><TITLE
cd32f419a8a5432fbb139f56ee73cbf68b9350ccTinderbox User>lwres_gabn</TITLE
f9aef05653eeb454c489d5bd2bde6daab774ad4aTinderbox User><META
50066670817cdf9e86c832066d73715232b29680Tinderbox UserNAME="GENERATOR"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCONTENT="Modular DocBook HTML Stylesheet Version 1.61
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews"></HEAD
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews><BODY
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="REFENTRY"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsBGCOLOR="#FFFFFF"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsTEXT="#000000"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsLINK="#0000FF"
f9aef05653eeb454c489d5bd2bde6daab774ad4aTinderbox UserVLINK="#840084"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsALINK="#0000FF"
50066670817cdf9e86c832066d73715232b29680Tinderbox User><H1
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews><A
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsNAME="AEN1"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>lwres_gabn</A
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></H1
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews><DIV
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCLASS="REFNAMEDIV"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews><A
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserNAME="AEN8"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></A
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><H2
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>Name</H2
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>lwres_gabnrequest_render, lwres_gabnresponse_render, lwres_gabnrequest_parse, lwres_gabnresponse_parse, lwres_gabnresponse_free, lwres_gabnrequest_free&nbsp;--&nbsp;lightweight resolver getaddrbyname message handling</DIV
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews><DIV
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCLASS="REFSYNOPSISDIV"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><A
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserNAME="AEN16"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></A
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><H2
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>Synopsis</H2
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><DIV
b27ce68bae92006e2ad7a9b75602c6385e529c3bAutomatic UpdaterCLASS="FUNCSYNOPSIS"
922312472e2e05ebc64993d465999c5351b83036Automatic Updater><A
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsNAME="AEN17"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></A
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><PRE
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="FUNCSYNOPSISINFO"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>#include &lt;lwres/lwres.h&gt;</PRE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="FUNCDEF"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>lwres_result_t
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userlwres_gabnrequest_render</CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>(lwres_context_t *ctx, lwres_gabnrequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserCLASS="FUNCDEF"
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>lwres_result_t
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userlwres_gabnresponse_render</CODE
481870b95fee976541f4fe455c0ef2dbeab3ec7aTinderbox User>(lwres_context_t *ctx, lwres_gabnresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);</CODE
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><P
481870b95fee976541f4fe455c0ef2dbeab3ec7aTinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e839bf134fb138920d4833cf05cb8b8906787a8dAutomatic UpdaterCLASS="FUNCDEF"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>lwres_result_t
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userlwres_gabnrequest_parse</CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnrequest_t **structp);</CODE
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater></P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserCLASS="FUNCDEF"
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>lwres_result_t
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updaterlwres_gabnresponse_parse</CODE
795a316ec568b2470aab18b9481443966047652eAutomatic Updater>(lwres_context_t *ctx, lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp);</CODE
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserCLASS="FUNCDEF"
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>void
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userlwres_gabnresponse_free</CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>(lwres_context_t *ctx, lwres_gabnresponse_t **structp);</CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User></P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><CODE
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCLASS="FUNCDEF"
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>void
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userlwres_gabnrequest_free</CODE
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>(lwres_context_t *ctx, lwres_gabnrequest_t **structp);</CODE
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater></P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
6478b87fd23bcd3ab74c25b261021fe19a239c4fTinderbox User></P
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater></DIV
9d557856c2a19ec95ee73245f60a92f8675cf5baTinderbox User></DIV
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><DIV
ca67ebfe9eef0b8f04179f7e511a19e0337a5422Automatic UpdaterCLASS="REFSECT1"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><A
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserNAME="AEN57"
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User></A
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><H2
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>DESCRIPTION</H2
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User><P
481870b95fee976541f4fe455c0ef2dbeab3ec7aTinderbox User>These are low-level routines for creating and parsing
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userlightweight resolver name-to-address lookup request and
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrewsresponse messages.</P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>There are four main functions for the getaddrbyname opcode.
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserOne render function converts a getaddrbyname request structure &mdash;
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User<SPAN
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="TYPE"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>lwres_gabnrequest_t</SPAN
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User> &mdash;
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userto the lighweight resolver's canonical format.
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserIt is complemented by a parse function that converts a packet in this
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updatercanonical format to a getaddrbyname request structure.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserAnother render function converts the getaddrbyname response structure &mdash;
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User<SPAN
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserCLASS="TYPE"
6f1205897504b8f50b1785975482c995888dd630Tinderbox User>lwres_gabnresponse_t</SPAN
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User> &mdash;
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox Userto the canonical format.
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox UserThis is complemented by a parse function which converts a packet in
6f1205897504b8f50b1785975482c995888dd630Tinderbox Usercanonical format to a getaddrbyname response structure.</P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User>These structures are defined in
e62b9c9ce6413fb183c8116381e75dcd07ca5517Tinderbox User<TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="FILENAME"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>&lt;lwres/lwres.h&gt;</TT
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserThey are shown below.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<PRE
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="PROGRAMLISTING"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>#define LWRES_OPCODE_GETADDRSBYNAME 0x00010001U
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrewstypedef struct lwres_addr lwres_addr_t;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usertypedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usertypedef struct {
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_uint32_t flags;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_uint32_t addrtypes;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User lwres_uint16_t namelen;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews char *name;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User} lwres_gabnrequest_t;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usertypedef struct {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User lwres_uint32_t flags;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_uint16_t naliases;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_uint16_t naddrs;
b27ce68bae92006e2ad7a9b75602c6385e529c3bAutomatic Updater char *realname;
922312472e2e05ebc64993d465999c5351b83036Automatic Updater char **aliases;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_uint16_t realnamelen;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User lwres_uint16_t *aliaslen;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews lwres_addrlist_t addrs;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews void *base;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews size_t baselen;
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews} lwres_gabnresponse_t;</PRE
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User></P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><P
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><TT
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCLASS="FUNCTION"
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>lwres_gabnrequest_render()</TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Useruses resolver context
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<TT
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserCLASS="PARAMETER"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><I
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User>ctx</I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>
163af735c2082a024167be111d27bd5b5ff4f462Automatic Updaterto convert getaddrbyname request structure
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="PARAMETER"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User><I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>req</I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrewsto canonical format.
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsThe packet header structure
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<TT
f9aef05653eeb454c489d5bd2bde6daab774ad4aTinderbox UserCLASS="PARAMETER"
cd32f419a8a5432fbb139f56ee73cbf68b9350ccTinderbox User><I
50066670817cdf9e86c832066d73715232b29680Tinderbox User>pkt</I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrewsis initialised and transferred to
f9aef05653eeb454c489d5bd2bde6daab774ad4aTinderbox Userbuffer
f9aef05653eeb454c489d5bd2bde6daab774ad4aTinderbox User<TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark AndrewsCLASS="PARAMETER"
50066670817cdf9e86c832066d73715232b29680Tinderbox User><I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>b</I
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews></TT
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews>.
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntThe contents of
582f8b9a8d170a80ef67475bddb8ad5cf7cd7cadMark Andrews<TT
922312472e2e05ebc64993d465999c5351b83036Automatic UpdaterCLASS="PARAMETER"
><I
>*req</I
></TT
>
are then appended to the buffer in canonical format.
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>
performs the same task, except it converts a getaddrbyname response structure
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
to the lightweight resolver's canonical format.</P
><P
><TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
uses context
<TT
CLASS="PARAMETER"
><I
>ctx</I
></TT
>
to convert the contents of packet
<TT
CLASS="PARAMETER"
><I
>pkt</I
></TT
>
to a
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
structure.
Buffer
<TT
CLASS="PARAMETER"
><I
>b</I
></TT
>
provides space to be used for storing this structure.
When the function succeeds, the resulting
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
is made available through
<TT
CLASS="PARAMETER"
><I
>*structp</I
></TT
>.
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>
offers the same semantics as
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
except it yields a
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
structure.</P
><P
><TT
CLASS="FUNCTION"
>lwres_gabnresponse_free()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_free()</TT
>
release the memory in resolver context
<TT
CLASS="PARAMETER"
><I
>ctx</I
></TT
>
that was allocated to the
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
or
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
structures referenced via
<TT
CLASS="PARAMETER"
><I
>structp</I
></TT
>.
Any memory associated with ancillary buffers and strings for those
structures is also discarded.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN93"
></A
><H2
>RETURN VALUES</H2
><P
>The getaddrbyname opcode functions
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_render()</TT
>,
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_render()</TT
>
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>
all return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_SUCCESS</SPAN
>
on success.
They return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_NOMEMORY</SPAN
>
if memory allocation fails.
<SPAN
CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
is returned if the available space in the buffer
<TT
CLASS="PARAMETER"
><I
>b</I
></TT
>
is too small to accommodate the packet header or the
<SPAN
CLASS="TYPE"
>lwres_gabnrequest_t</SPAN
>
and
<SPAN
CLASS="TYPE"
>lwres_gabnresponse_t</SPAN
>
structures.
<TT
CLASS="FUNCTION"
>lwres_gabnrequest_parse()</TT
>
and
<TT
CLASS="FUNCTION"
>lwres_gabnresponse_parse()</TT
>
will return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_UNEXPECTEDEND</SPAN
>
if the buffer is not empty after decoding the received packet.
These functions will return
<SPAN
CLASS="ERRORCODE"
>LWRES_R_FAILURE</SPAN
>
if
<TT
CLASS="STRUCTFIELD"
><I
>pktflags</I
></TT
>
in the packet header structure
<SPAN
CLASS="TYPE"
>lwres_lwpacket_t</SPAN
>
indicate that the packet is not a response to an earlier query.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN112"
></A
><H2
>SEE ALSO</H2
><P
><SPAN
CLASS="CITEREFENTRY"
><SPAN
CLASS="REFENTRYTITLE"
>lwres_packet</SPAN
>(3)</SPAN
></P
></DIV
></BODY
></HTML
>