lwres_gethostent.html revision e21a2904f02a03fa06b6db04d348f65fe9c67b2b
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Copyright (C) 2004, 2005 Internet Systems Consortium, Inc. ("ISC")
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews - Copyright (C) 2001 Internet Software Consortium.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - Permission to use, copy, modify, and distribute this software for any
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - purpose with or without fee is hereby granted, provided that the above
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson - copyright notice and this permission notice appear in all copies.
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
8a66318e41ed14c5a88130e8c362610e8faa2121Mark Andrews - PERFORMANCE OF THIS SOFTWARE.
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<!-- $Id: lwres_gethostent.html,v 1.22 2006/12/12 01:45:21 marka Exp $ -->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<meta name="generator" content="DocBook XSL Stylesheets V1.71.1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en">
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<a name="id2476419"></a><div class="titlepage"></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>lwres_gethostbyname, lwres_gethostbyname2, lwres_gethostbyaddr, lwres_gethostent, lwres_sethostent, lwres_endhostent, lwres_gethostbyname_r, lwres_gethostbyaddr_r, lwres_gethostent_r, lwres_sethostent_r, lwres_endhostent_r — lightweight resolver get network host entry</p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre class="funcsynopsisinfo">#include <lwres/netdb.h></pre>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostbyname</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">name</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostbyname2</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">af</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostbyaddr</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">type</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em"><tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<b class="fsfunc">lwres_gethostent</b>(</code></td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em"><tr>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<b class="fsfunc">lwres_sethostent</b>(</code></td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<var class="pdparam">stayopen</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em"><tr>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<b class="fsfunc">lwres_endhostent</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostbyname_r</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">error</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostbyaddr_r</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">error</var><code>)</code>;</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<b class="fsfunc">lwres_gethostent_r</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<var class="pdparam">error</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" style="padding-bottom: 1em"><tr>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<b class="fsfunc">lwres_sethostent_r</b>(</code></td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<var class="pdparam">stayopen</var><code>)</code>;</td>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0"><tr>
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews<b class="fsfunc">lwres_endhostent_r</b>(</code></td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein These functions provide hostname-to-address and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein address-to-hostname lookups by means of the lightweight resolver.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein They are similar to the standard
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="citerefentry"><span class="refentrytitle">gethostent</span>(3)</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein functions provided by most operating systems.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein which is usually defined in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinstruct hostent {
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char *h_name; /* official name of host */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char **h_aliases; /* alias list */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int h_addrtype; /* host address type */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson int h_length; /* length of address */
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char **h_addr_list; /* list of addresses from name server */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#define h_addr h_addr_list[0] /* address, for backward compatibility */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The members of this structure are:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">h_name</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The official (canonical) name of the host.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">h_aliases</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A NULL-terminated array of alternate names (nicknames) for the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">h_addrtype</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The type of address being returned —
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">h_length</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The length of the address in bytes.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">h_addr_list</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein terminated array of network addresses for the host.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Host addresses are returned in network byte order.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein For backward compatibility with very old software,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is the first address in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><code class="function">lwres_gethostent()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_sethostent()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_endhostent()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostent_r()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_sethostent_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_endhostent_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein provide iteration over the known host entries on systems that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein provide such functionality through facilities like
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein or NIS. The lightweight resolver does not currently implement
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein these functions; it only provides them as stub functions that always
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein return failure.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><code class="function">lwres_gethostbyname()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and <code class="function">lwres_gethostbyname2()</code> look up the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein hostname <em class="parameter"><code>name</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname()</code> always looks for an
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IPv4 address while <code class="function">lwres_gethostbyname2()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein looks for an address of protocol family
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>af</code></em>: either <span class="type">PF_INET</span> or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">PF_INET6</span> — IPv4 or IPV6 addresses
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively. Successful calls of the functions return a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span>for the name that was looked up.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">NULL</span> is returned if the lookups by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname()</code> or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname2()</code> fail.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Reverse lookups of addresses are performed by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>addr</code></em> is an address of length
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>len</code></em> bytes and protocol family
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>type</code></em> — <span class="type">PF_INET</span> or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname_r()</code> is a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein thread-safe function
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for forward lookups. If an error occurs, an error code is returned in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>resbuf</code></em> is a pointer to a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span> which is initialised by a successful call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname_r()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>buf</code></em> is a buffer of length
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>len</code></em> bytes which is used to store the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">h_name</code>, <code class="constant">h_aliases</code>, and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">h_addr_list</code> elements of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span> returned in <em class="parameter"><code>resbuf</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Successful calls to <code class="function">lwres_gethostbyname_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein return <em class="parameter"><code>resbuf</code></em>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein which is a pointer to the <span class="type">struct hostent</span> it created.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><code class="function">lwres_gethostbyaddr_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is a thread-safe function
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein that performs a reverse lookup of address <em class="parameter"><code>addr</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein which is <em class="parameter"><code>len</code></em> bytes long and is of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein family <em class="parameter"><code>type</code></em> — <span class="type">PF_INET</span> or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">PF_INET6</span>. If an error occurs, the error code is returned
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in <em class="parameter"><code>*error</code></em>. The other function
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein parameters are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein identical to those in <code class="function">lwres_gethostbyname_r()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>resbuf</code></em> is a pointer to a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span> which is initialised by a successful call to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr_r()</code>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>buf</code></em> is a buffer of length
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>len</code></em> bytes which is used to store the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">h_name</code>, <code class="constant">h_aliases</code>, and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">h_addr_list</code> elements of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span> returned in <em class="parameter"><code>resbuf</code></em>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Successful calls to <code class="function">lwres_gethostbyaddr_r()</code> return
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>resbuf</code></em>, which is a pointer to the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">struct hostent()</code> it created.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The functions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname2()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostent()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein return NULL to indicate an error. In this case the global variable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein will contain one of the following error codes defined in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename"><lwres/netdb.h></code>:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">HOST_NOT_FOUND</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The host or address was not found.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">TRY_AGAIN</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A recoverable error occurred, e.g., a timeout.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Retrying the lookup may succeed.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">NO_RECOVERY</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A non-recoverable error occurred.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dt><span class="term"><code class="constant">NO_DATA</code></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The name exists, but has no address information
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein associated with it (or vice versa in the case
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein of a reverse lookup). The code NO_ADDRESS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is accepted as a synonym for NO_DATA for backwards
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein compatibility.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><span class="citerefentry"><span class="refentrytitle">lwres_hstrerror</span>(3)</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein translates these error codes to suitable error messages.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><code class="function">lwres_gethostent()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and <code class="function">lwres_gethostent_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Successful calls to <code class="function">lwres_gethostbyname_r()</code> and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr_r()</code> return
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <em class="parameter"><code>resbuf</code></em>, a pointer to the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">struct hostent</span> that was initialised by these functions. They return
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">NULL</span> if the lookups fail or if <em class="parameter"><code>buf</code></em>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein was too small to hold the list of addresses and names referenced by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the <code class="constant">h_name</code>, <code class="constant">h_aliases</code>, and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="constant">h_addr_list</code> elements of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein If <em class="parameter"><code>buf</code></em> was too small, both
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname_r()</code> and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr_r()</code> set the global
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="type">errno</span> to <span class="errorcode">ERANGE</span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><span class="citerefentry"><span class="refentrytitle">gethostent</span>(3)</span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="citerefentry"><span class="refentrytitle">lwres_getipnode</span>(3)</span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="citerefentry"><span class="refentrytitle">lwres_hstrerror</span>(3)</span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><code class="function">lwres_gethostbyname()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname2()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_endhostent()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein are not thread safe; they return pointers to static data and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein provide error codes through a global variable.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Thread-safe versions for name and address lookup are provided by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyname_r()</code>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="function">lwres_gethostbyaddr_r()</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein respectively.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The resolver daemon does not currently support any non-DNS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein name services such as
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein consequently the above functions don't, either.