lwres_resutil.docbook revision ddccd5811feff696ba460dabfb666ce61040f545
4d237bbe075b1d2c19428cd954d721d65b31f67cwrowe<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
bf52162f2d05c1fb1a107c7ef108de73f739b3edpquerna<!--
bf52162f2d05c1fb1a107c7ef108de73f739b3edpquerna - Copyright (C) 2000, 2001 Internet Software Consortium.
bf52162f2d05c1fb1a107c7ef108de73f739b3edpquerna -
0938450cadc9a083d112a86bc7dd7ae34f791364trawick - Permission to use, copy, modify, and distribute this software for any
0938450cadc9a083d112a86bc7dd7ae34f791364trawick - purpose with or without fee is hereby granted, provided that the above
0938450cadc9a083d112a86bc7dd7ae34f791364trawick - copyright notice and this permission notice appear in all copies.
8bed7ee6d97933b958e97e222f37154d83e384e5jorton -
8bed7ee6d97933b958e97e222f37154d83e384e5jorton - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
8bed7ee6d97933b958e97e222f37154d83e384e5jorton - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
8bed7ee6d97933b958e97e222f37154d83e384e5jorton - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
8bed7ee6d97933b958e97e222f37154d83e384e5jorton - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
d33ddda47790d3295f4218f87e3a296cf51a9becmjc - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
c7d46b58052fe666c74a47bd26b6cb1e351492adrpluem - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
4e08c8c1a91e2887b41d8cacd3aa532355d0237drpluem - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
7a25b029b69f169bd22718165dff3b271114f92eniq - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
43d051c8401a1f3b4f7853cd897d3565ab814ea7poirier-->
43d051c8401a1f3b4f7853cd897d3565ab814ea7poirier
43d051c8401a1f3b4f7853cd897d3565ab814ea7poirier<!-- $Id: lwres_resutil.docbook,v 1.1 2001/03/31 00:08:23 gson Exp $ -->
2f34374f6e04b9094a1d13a5ed823f331ba841a3rpluem
2f34374f6e04b9094a1d13a5ed823f331ba841a3rpluem<refentry>
2f34374f6e04b9094a1d13a5ed823f331ba841a3rpluem <refentryinfo>
7a25b029b69f169bd22718165dff3b271114f92eniq
7a25b029b69f169bd22718165dff3b271114f92eniq
7a25b029b69f169bd22718165dff3b271114f92eniq<date>Jun 30, 2000</date>
2f34374f6e04b9094a1d13a5ed823f331ba841a3rpluem</refentryinfo>
3e6a46d2fecf446daf0e280a49fa5565f5f635eajorton<refmeta>
3e6a46d2fecf446daf0e280a49fa5565f5f635eajorton <refentrytitle>lwres_resutil</refentrytitle>
3e6a46d2fecf446daf0e280a49fa5565f5f635eajorton <manvolnum>3</manvolnum>
137e484e5f984ceff1102e1212dda8ac0413231aniq <refmiscinfo>BIND9</refmiscinfo>
0df8f79d2324b131c36955d7e474a735a762f9eeniq</refmeta>
0df8f79d2324b131c36955d7e474a735a762f9eeniq<refnamediv>
0df8f79d2324b131c36955d7e474a735a762f9eeniq<refname>lwres_string_parse</refname>
30e3e760b737f13ce800fa02c5930ade7659ba66niq<refname>lwres_addr_parse</refname>
30e3e760b737f13ce800fa02c5930ade7659ba66niq<refname>lwres_getaddrsbyname</refname>
30e3e760b737f13ce800fa02c5930ade7659ba66niq<refname>lwres_getnamebyaddr</refname>
e991c6fc032c59eb6cb751d9d382e933a53a2866niq<refpurpose>lightweight resolver utility functions</refpurpose>
e991c6fc032c59eb6cb751d9d382e933a53a2866niq</refnamediv>
e991c6fc032c59eb6cb751d9d382e933a53a2866niq<refsynopsisdiv>
e991c6fc032c59eb6cb751d9d382e933a53a2866niq<funcsynopsis>
9a00e2d46c44c111d6952e553a2f1a61b7594eb3rpluem<funcsynopsisinfo>#include &lt;lwres/lwres.h&gt;</funcsynopsisinfo>
9a00e2d46c44c111d6952e553a2f1a61b7594eb3rpluem<funcprototype>
9a00e2d46c44c111d6952e553a2f1a61b7594eb3rpluem<funcdef>
33d9be77cc6f5fc8734e9c1f526b82d359955152rpluemlwres_result_t
9a00e2d46c44c111d6952e553a2f1a61b7594eb3rpluem<function>lwres_string_parse</function></funcdef>
33d9be77cc6f5fc8734e9c1f526b82d359955152rpluem<paramdef>lwres_buffer_t *b</paramdef>
da128c59ec571c4dff70f41ecba9c8a9974c6cd6niq<paramdef>char **c</paramdef>
172e83c0f024fe6396dd1f3ca3492fd83c304db5jim<paramdef>lwres_uint16_t *len</paramdef>
da128c59ec571c4dff70f41ecba9c8a9974c6cd6niq</funcprototype>
45932a847f237b4d8f0667b138bd3f8a15fb53ffniq<funcprototype>
45932a847f237b4d8f0667b138bd3f8a15fb53ffniq<funcdef>
45932a847f237b4d8f0667b138bd3f8a15fb53ffniqlwres_result_t
186e9d990f453d16826ab87a87df7b87e6e05921rpluem<function>lwres_addr_parse</function></funcdef>
186e9d990f453d16826ab87a87df7b87e6e05921rpluem<paramdef>lwres_buffer_t *b</paramdef>
186e9d990f453d16826ab87a87df7b87e6e05921rpluem<paramdef>lwres_addr_t *addr</paramdef>
186e9d990f453d16826ab87a87df7b87e6e05921rpluem</funcprototype>
6861702c2d883e5c0744d5f7528d2060671ad24dtakashi<funcprototype>
6861702c2d883e5c0744d5f7528d2060671ad24dtakashi<funcdef>
6861702c2d883e5c0744d5f7528d2060671ad24dtakashilwres_result_t
6861702c2d883e5c0744d5f7528d2060671ad24dtakashi<function>lwres_getaddrsbyname</function></funcdef>
6861702c2d883e5c0744d5f7528d2060671ad24dtakashi<paramdef>lwres_context_t *ctx</paramdef>
f1f779c42f76118102fdecbe8777b47a1fc693a7rjung<paramdef>const char *name</paramdef>
f1f779c42f76118102fdecbe8777b47a1fc693a7rjung<paramdef>lwres_uint32_t addrtypes</paramdef>
f1f779c42f76118102fdecbe8777b47a1fc693a7rjung<paramdef>lwres_gabnresponse_t **structp</paramdef>
292cb7b720095e7bb434d79ae53b02d332aeb99acovener</funcprototype>
292cb7b720095e7bb434d79ae53b02d332aeb99acovener<funcprototype>
292cb7b720095e7bb434d79ae53b02d332aeb99acovener<funcdef>
292cb7b720095e7bb434d79ae53b02d332aeb99acovenerlwres_result_t
137e484e5f984ceff1102e1212dda8ac0413231aniq<function>lwres_getnamebyaddr</function></funcdef>
137e484e5f984ceff1102e1212dda8ac0413231aniq<paramdef>lwres_context_t *ctx</paramdef>
137e484e5f984ceff1102e1212dda8ac0413231aniq<paramdef>lwres_uint32_t addrtype</paramdef>
137e484e5f984ceff1102e1212dda8ac0413231aniq<paramdef>lwres_uint16_t addrlen</paramdef>
137e484e5f984ceff1102e1212dda8ac0413231aniq<paramdef>const unsigned char *addr</paramdef>
137e484e5f984ceff1102e1212dda8ac0413231aniq<paramdef>lwres_gnbaresponse_t **structp</paramdef>
4e08c8c1a91e2887b41d8cacd3aa532355d0237drpluem</funcprototype>
d0cd62f11bcd8fa9bf758c5125f55cea5d9038dfrpluem</funcsynopsis>
d0cd62f11bcd8fa9bf758c5125f55cea5d9038dfrpluem</refsynopsisdiv>
d0cd62f11bcd8fa9bf758c5125f55cea5d9038dfrpluem<refsect1>
51d55be8bbc6652c13bc80d920f4331f7152dceerjung<title>DESCRIPTION</title>
51d55be8bbc6652c13bc80d920f4331f7152dceerjung<para>
51d55be8bbc6652c13bc80d920f4331f7152dceerjung<function>lwres_string_parse()</function>
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawickretrieves a DNS-encoded string starting the current pointer of
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawicklightweight resolver buffer
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawick<parameter>b</parameter>:
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawick
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawicki.e.
27c7a7cad9e83eeebad0a4d5a321144394adc3f9trawick<constant>b-&gt;current</constant>.
8f2700898323915da289644dc1f3ee11a5e5b4earpluem
8f2700898323915da289644dc1f3ee11a5e5b4earpluemWhen the function returns, the address of the first byte of the
8f2700898323915da289644dc1f3ee11a5e5b4earpluemencoded string is returned via
8f2700898323915da289644dc1f3ee11a5e5b4earpluem<parameter>*c</parameter>
e7983ce746b0df56a1b74b42da6d82f5ecb99349covenerand the length of that string is given by
e7983ce746b0df56a1b74b42da6d82f5ecb99349covener<parameter>*len</parameter>.
e7983ce746b0df56a1b74b42da6d82f5ecb99349covener
e7983ce746b0df56a1b74b42da6d82f5ecb99349covenerThe buffer's current pointer is advanced to point at the character
bbcfb8ab8e22f90fdf346e9993bd58ba2203b182trawickfollowing the string length, the encoded string, and the trailing
bbcfb8ab8e22f90fdf346e9993bd58ba2203b182trawick<type>NULL</type>
bbcfb8ab8e22f90fdf346e9993bd58ba2203b182trawickcharacter.
d1745d6933c22c807cf2388332426defd1b19f03covener<function>lwres_string_parse()</function>
d1745d6933c22c807cf2388332426defd1b19f03covenerhas an assertion check that
d1745d6933c22c807cf2388332426defd1b19f03covener<parameter>b</parameter>
d1745d6933c22c807cf2388332426defd1b19f03coveneris not
b20f76a400e77d3631f3507ff22d68ae6bd25323trawick<type>NULL</type>.
222834d5a33b915037094af014905f3683cae78btrawick
222834d5a33b915037094af014905f3683cae78btrawick</para>
2db5d76ac4c75aadecf38e20569bccbfd2360ba7rpluem<para>
2db5d76ac4c75aadecf38e20569bccbfd2360ba7rpluem<function>lwres_addr_parse()</function>
2db5d76ac4c75aadecf38e20569bccbfd2360ba7rpluemextracts an address from the buffer
df46ff21c57d00f6addccaaf9b1484f2b56b8577pquerna<parameter>b</parameter>.
7f4ac5a4cd99a9cae866b5908e358bd932736307chrisd
1c03114a0f0315ed19a05f654021da9f66005897rjungIt checks that
1c03114a0f0315ed19a05f654021da9f66005897rjung<parameter>addr</parameter>
89691c9bd17f5f53fa0aa8d3fe2e1faee5a5d984rpluemis not null.
89691c9bd17f5f53fa0aa8d3fe2e1faee5a5d984rpluemThe buffer's current pointer
89691c9bd17f5f53fa0aa8d3fe2e1faee5a5d984rpluem<constant>b-&gt;current</constant>
89691c9bd17f5f53fa0aa8d3fe2e1faee5a5d984rpluemis presumed to point at an encoded address: the address preceded by a
3e9c0665b06e44cf776528c6954ed3ca34a77c7fsctemme32-bit protocol family identifier and a 16-bit length field.
51a475d92e7d68ee6d7b57aa7fd6e73b2712ce31sctemmeThe encoded address is copied to
3e9c0665b06e44cf776528c6954ed3ca34a77c7fsctemme<constant>addr-&gt;address</constant>
019f2b58acb34e31ea3a062bdb5e6c863cd82d66trawickand
873c287c391b0bbc4719b68bb84946515811e1batrawick<constant>addr-&gt;length</constant>
6707208ba4e9a5841ca1ab830830fd286ea5b7c5trawickindicates the size in bytes of the address that was copied.
6707208ba4e9a5841ca1ab830830fd286ea5b7c5trawick<constant>b-&gt;current</constant>
873c287c391b0bbc4719b68bb84946515811e1batrawickis advanced to point at the next byte of available data in the buffer
832853bb93c1831daf24e4727c5ca0e1b1786e83larsfollowing the encoded address.
832853bb93c1831daf24e4727c5ca0e1b1786e83lars</para>
832853bb93c1831daf24e4727c5ca0e1b1786e83lars<para>
d2696ac6757b3d8bdaa27634a141ac8c8a045e08fielding<function>lwres_getaddrsbyname()</function>
d2696ac6757b3d8bdaa27634a141ac8c8a045e08fieldingand
d2696ac6757b3d8bdaa27634a141ac8c8a045e08fielding<function>lwres_getnamebyaddr()</function>
d2696ac6757b3d8bdaa27634a141ac8c8a045e08fieldinguse the
1782dcd420de504978945e6b812523eeae6d56a2lars<type>lwres_gnbaresponse_t</type>
1782dcd420de504978945e6b812523eeae6d56a2larsstructure defined below:
d2696ac6757b3d8bdaa27634a141ac8c8a045e08fielding<programlisting>
1782dcd420de504978945e6b812523eeae6d56a2larstypedef struct {
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem lwres_uint32_t flags;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem lwres_uint16_t naliases;
59dc8d935dbf862712683bbc9e267bd08ced0b14fielding lwres_uint16_t naddrs;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem char *realname;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem char **aliases;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem lwres_uint16_t realnamelen;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem lwres_uint16_t *aliaslen;
cf8d02ea0c91653917b044529f3133c5a1bb9200fielding lwres_addrlist_t addrs;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem void *base;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem size_t baselen;
17ac330ebaa71b24cb77580411a231ee45996e03pquerna} lwres_gabnresponse_t;
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem</programlisting>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemThe contents of this structure are not manipulated directly but
9f38f3ec3e8087985d108a24ae796962fef83644takashithey are controlled through the
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<citerefentry>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<refentrytitle>lwres_gabn</refentrytitle><manvolnum>3
d4ee4552489641d35d1195bbbd6021351c4b79aarjung</manvolnum>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem</citerefentry>
9e152751ed380f87c5ecae4fb0221c956e5fbd24rjungfunctions.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem</para>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<para>
abb99af8aa7da2cb4c324133a4e10bd7a50f875erpluemThe lightweight resolver uses
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<function>lwres_getaddrsbyname()</function>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemto perform foward lookups.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemHostname
382d14411b582d97075a836190d74c778977505fcovener<parameter>name</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemis looked up using the resolver context
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>ctx</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemfor memory allocation.
06e6657fd0f376a16db696876f9bff5927cc3cb0trawick<parameter>addrtypes</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemis a bitmask indicating which type of addresses are to be looked up.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemCurrent values for this bitmask are
0e9dae659943679108357054e9aa7657cdc52dc4minfrin<type>LWRES_ADDRTYPE_V4</type>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemfor IPv4 addresses and
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<type>LWRES_ADDRTYPE_V6</type>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemfor IPv6 addresses.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemResults of the lookup are returned in
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>*structp</parameter>.
d03aa31ada476d8eb97feaec2b1099809e7f3d57niq
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<function>lwres_getaddrsbyname()</function>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemchecks that its pointer arguments are not
a7757dd38bb2a1afc93e241b7ea67b3de85ecc8bminfrin<type>NULL</type>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemand that
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>addrtypes</parameter>
df46ff21c57d00f6addccaaf9b1484f2b56b8577pquernais non-zero.
df46ff21c57d00f6addccaaf9b1484f2b56b8577pquerna</para>
df46ff21c57d00f6addccaaf9b1484f2b56b8577pquerna<para>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<function>lwres_getnamebyaddr()</function>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemperforms reverse lookups.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemResolver context
a5cce34e21a5b472f3806b4526043887bcb7e9eajim<parameter>ctx</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemis used for memory allocation.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemThe address type is indicated by
8c3667cd1d0db08647793137c0d1aa7f6526bebfniq<parameter>addrtype</parameter>:
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<type>LWRES_ADDRTYPE_V4</type>
8c3667cd1d0db08647793137c0d1aa7f6526bebfniqor
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<type>LWRES_ADDRTYPE_V6</type>.
6824182b3b8e045db97a228d3127bdfcbdfeb0bcniq
6824182b3b8e045db97a228d3127bdfcbdfeb0bcniqThe address to be looked up is given by
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>addr</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemand its length is
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>addrlen</parameter>
0c26d213d85bc40fc05963c63bf670b42b352d25niqbytes.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemThe result of the function call is made available through
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>*structp</parameter>.
92357fb76d3ad043e29ba2ba2041a7bdb8d13390niq
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemLike
9f07b6dc343a4e3eba5f4c47050a77441723ce89nd<function>lwres_getaddrsbyname()</function>,
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<function>lwres_getnamebyaddr()</function>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemuses assertion checking to ensure its pointer arguments are not
f7cec4a86292b160401472286a17497ae0d4df18covener<type>NULL</type>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemand
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<parameter>addrtype</parameter>
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluemis not zero.
abc69b39766c0de3eaf99e9016ea3f35e23c116drpluem<function>lwres_getaddrsbyname()</function>
1464434c2c104e0ba224644c42552330f5158537coveneralso checks that
8d574b3ac4185e4f71c8b9aae76e7122a78201c4rpluem<parameter>addrlen</parameter>
8d574b3ac4185e4f71c8b9aae76e7122a78201c4rpluemis non-zero.
8d574b3ac4185e4f71c8b9aae76e7122a78201c4rpluem</para>
7f4ac5a4cd99a9cae866b5908e358bd932736307chrisd</refsect1>
92357fb76d3ad043e29ba2ba2041a7bdb8d13390niq<refsect1>
8d574b3ac4185e4f71c8b9aae76e7122a78201c4rpluem<title>RETURN VALUES</title>
509111f5f58a9effd4c832f6a0cbd6ad9d549188jorton<para>
509111f5f58a9effd4c832f6a0cbd6ad9d549188jortonSuccessful calls to
509111f5f58a9effd4c832f6a0cbd6ad9d549188jorton<function>lwres_string_parse()</function>
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrinand
235b900b78cf6849f8344e377a91ded37d9cc9depquerna<function>lwres_addr_parse()</function>
235b900b78cf6849f8344e377a91ded37d9cc9depquernareturn
235b900b78cf6849f8344e377a91ded37d9cc9depquerna<errorcode>LWRES_R_SUCCESS.</errorcode>
66b8ec445dced7a2036bcd3b87b6fc3f08a1ab24jortonBoth functions return
66b8ec445dced7a2036bcd3b87b6fc3f08a1ab24jorton<errorcode>LWRES_R_FAILURE</errorcode>
66b8ec445dced7a2036bcd3b87b6fc3f08a1ab24jortonif the buffer is corrupt or
66b8ec445dced7a2036bcd3b87b6fc3f08a1ab24jorton<errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrinif the buffer has less space than expected for the components of the
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrinencoded string or address.
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrin</para>
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrin<para>
0e2a2eae9b72ac099aa25d7419e55af13b004be9minfrin<function>lwres_getaddrsbyname()</function>
8d574b3ac4185e4f71c8b9aae76e7122a78201c4rpluemreturns
6f33babce8f8bc723f0b2c755aef049cd509504fpquerna<errorcode>LWRES_R_SUCCESS</errorcode>
6f33babce8f8bc723f0b2c755aef049cd509504fpquernaon success and it returns
0a12339f39799193ac6866fce812a1deb8f4a1abpquerna<errorcode>LWRES_R_NOTFOUND</errorcode>
0a12339f39799193ac6866fce812a1deb8f4a1abpquernaif the hostname
0a12339f39799193ac6866fce812a1deb8f4a1abpquerna<parameter>name</parameter>
3fb118bc4e1a634f71c1fa509819ceac36c79dcbpquernacould not be found.
3fb118bc4e1a634f71c1fa509819ceac36c79dcbpquerna</para>
3fb118bc4e1a634f71c1fa509819ceac36c79dcbpquerna<para>
fb59af4ce3fcdd314b848359faeddf1e51bb24c5jim<errorcode>LWRES_R_SUCCESS</errorcode>
fb59af4ce3fcdd314b848359faeddf1e51bb24c5jimis returned by a successful call to
fb59af4ce3fcdd314b848359faeddf1e51bb24c5jim<function>lwres_getnamebyaddr()</function>.
fb59af4ce3fcdd314b848359faeddf1e51bb24c5jim
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna</para>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna<para>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernaBoth
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna<function>lwres_getaddrsbyname()</function>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernaand
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna<function>lwres_getnamebyaddr()</function>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernareturn
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna<errorcode>LWRES_R_NOMEMORY</errorcode>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernawhen memory allocation requests fail and
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquerna<errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernaif the buffers used for sending queries and receiving replies are too
a91a59d0b0ceed7cd5621fe8757eda5ff6a043a8pquernasmall.
19e5deda3a29d71ac1cc4bfecce39f96ea3ab55dcovener</para>
19e5deda3a29d71ac1cc4bfecce39f96ea3ab55dcovener</refsect1>
19e5deda3a29d71ac1cc4bfecce39f96ea3ab55dcovener<refsect1>
19e5deda3a29d71ac1cc4bfecce39f96ea3ab55dcovener<title>SEE ALSO</title>
19e5deda3a29d71ac1cc4bfecce39f96ea3ab55dcovener<para>
3ec1e3a35106ec4c8bcf8fae6a20cb623aed0b62pquerna<citerefentry>
3ec1e3a35106ec4c8bcf8fae6a20cb623aed0b62pquerna<refentrytitle>lwres_buffer</refentrytitle><manvolnum>3</manvolnum>
3ec1e3a35106ec4c8bcf8fae6a20cb623aed0b62pquerna</citerefentry>,
97f7daaffd9b6c1031302d7e551d5279fa0d0d72pquerna
97f7daaffd9b6c1031302d7e551d5279fa0d0d72pquerna<citerefentry>
97f7daaffd9b6c1031302d7e551d5279fa0d0d72pquerna<refentrytitle>lwres_gabn</refentrytitle><manvolnum>3</manvolnum>
847db8b2f0188cd9c840acbe4fea77a32748b2edpquerna</citerefentry>.
97f7daaffd9b6c1031302d7e551d5279fa0d0d72pquerna</para>
97f7daaffd9b6c1031302d7e551d5279fa0d0d72pquerna
527fc83e2bf315b2026a9ac6b1e6ce83143609bbcovener</refsect1>
527fc83e2bf315b2026a9ac6b1e6ce83143609bbcovener</refentry>
527fc83e2bf315b2026a9ac6b1e6ce83143609bbcovener