xref: /freebsd/lib/libc/net/gethostbyname.3 (revision dc36d6f9bb1753f3808552f3afd30eda9a7b206a)
1bc7413d0SPeter Wemm.\" Copyright (c) 1983, 1987, 1991, 1993
2bc7413d0SPeter Wemm.\"	The Regents of the University of California.  All rights reserved.
3fdf4c7afSPeter Wemm.\"
4bc7413d0SPeter Wemm.\" Redistribution and use in source and binary forms, with or without
5bc7413d0SPeter Wemm.\" modification, are permitted provided that the following conditions
6bc7413d0SPeter Wemm.\" are met:
7bc7413d0SPeter Wemm.\" 1. Redistributions of source code must retain the above copyright
8bc7413d0SPeter Wemm.\"    notice, this list of conditions and the following disclaimer.
9bc7413d0SPeter Wemm.\" 2. Redistributions in binary form must reproduce the above copyright
10bc7413d0SPeter Wemm.\"    notice, this list of conditions and the following disclaimer in the
11bc7413d0SPeter Wemm.\"    documentation and/or other materials provided with the distribution.
12fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
13bc7413d0SPeter Wemm.\"    may be used to endorse or promote products derived from this software
14bc7413d0SPeter Wemm.\"    without specific prior written permission.
15fdf4c7afSPeter Wemm.\"
16bc7413d0SPeter Wemm.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17bc7413d0SPeter Wemm.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18bc7413d0SPeter Wemm.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19bc7413d0SPeter Wemm.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20bc7413d0SPeter Wemm.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21bc7413d0SPeter Wemm.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22bc7413d0SPeter Wemm.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23bc7413d0SPeter Wemm.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24bc7413d0SPeter Wemm.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25bc7413d0SPeter Wemm.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26bc7413d0SPeter Wemm.\" SUCH DAMAGE.
27fdf4c7afSPeter Wemm.\"
284a3c598fSFernando Apesteguía.Dd June 27, 2022
29bc7413d0SPeter Wemm.Dt GETHOSTBYNAME 3
30a307d598SRuslan Ermilov.Os
31bc7413d0SPeter Wemm.Sh NAME
32bc7413d0SPeter Wemm.Nm gethostbyname ,
33c293d821SPeter Wemm.Nm gethostbyname2 ,
34bc7413d0SPeter Wemm.Nm gethostbyaddr ,
35bc7413d0SPeter Wemm.Nm gethostent ,
36bc7413d0SPeter Wemm.Nm sethostent ,
37bc7413d0SPeter Wemm.Nm endhostent ,
38c293d821SPeter Wemm.Nm herror ,
39dc689973SFernando Apesteguía.Nm hstrerror ,
40dc689973SFernando Apesteguía.Nm gethostbyname_r ,
41dc689973SFernando Apesteguía.Nm gethostbyname2_r ,
42dc689973SFernando Apesteguía.Nm gethostbyaddr_r
43bc7413d0SPeter Wemm.Nd get network host entry
4425bb73e0SAlexey Zelkin.Sh LIBRARY
4525bb73e0SAlexey Zelkin.Lb libc
46bc7413d0SPeter Wemm.Sh SYNOPSIS
4732eef9aeSRuslan Ermilov.In netdb.h
486b0a380fSSam Lawrance.Vt int h_errno ;
49bc7413d0SPeter Wemm.Ft struct hostent *
50d3281e16SJohn Polstra.Fn gethostbyname "const char *name"
51bc7413d0SPeter Wemm.Ft struct hostent *
52c293d821SPeter Wemm.Fn gethostbyname2 "const char *name" "int af"
53c293d821SPeter Wemm.Ft struct hostent *
540237ec97SPawel Jakub Dawidek.Fn gethostbyaddr "const void *addr" "socklen_t len" "int af"
55bc7413d0SPeter Wemm.Ft struct hostent *
56bc7413d0SPeter Wemm.Fn gethostent void
573ce29386SBruce Evans.Ft void
58bc7413d0SPeter Wemm.Fn sethostent "int stayopen"
593ce29386SBruce Evans.Ft void
60bc7413d0SPeter Wemm.Fn endhostent void
613ce29386SBruce Evans.Ft void
62d3281e16SJohn Polstra.Fn herror "const char *string"
63c293d821SPeter Wemm.Ft const char *
64c293d821SPeter Wemm.Fn hstrerror "int err"
65dc689973SFernando Apesteguía.Ft int
66dc689973SFernando Apesteguía.Fn gethostbyname_r "const char *name" "struct hostent *he" "char *buffer" "size_t buflen" "struct hostent **result" "int *h_errnop"
67dc689973SFernando Apesteguía.Ft int
68dc689973SFernando Apesteguía.Fn gethostbyname2_r "const char *name" "int af" "struct hostent *he" "char *buffer" "size_t buflen" "struct hostent **result" "int *h_errnop"
69dc689973SFernando Apesteguía.Ft int
70dc689973SFernando Apesteguía.Fn gethostbyaddr_r "const void *addr" "socklen_t len" "int af" "struct hostent *hp" "char *buf" "size_t buflen" "struct hostent **result" "int *h_errno"p
71bc7413d0SPeter Wemm.Sh DESCRIPTION
723bc371d2SRuslan Ermilov.Bf -symbolic
733bc371d2SRuslan ErmilovThe
743bc371d2SRuslan Ermilov.Xr getaddrinfo 3
753bc371d2SRuslan Ermilovand
763bc371d2SRuslan Ermilov.Xr getnameinfo 3
773bc371d2SRuslan Ermilovfunctions are preferred over the
783bc371d2SRuslan Ermilov.Fn gethostbyname ,
793bc371d2SRuslan Ermilov.Fn gethostbyname2 ,
803bc371d2SRuslan Ermilovand
813bc371d2SRuslan Ermilov.Fn gethostbyaddr
823bc371d2SRuslan Ermilovfunctions.
833bc371d2SRuslan Ermilov.Ef
843bc371d2SRuslan Ermilov.Pp
85bc7413d0SPeter WemmThe
86c293d821SPeter Wemm.Fn gethostbyname ,
87c293d821SPeter Wemm.Fn gethostbyname2
88fdf4c7afSPeter Wemmand
89bc7413d0SPeter Wemm.Fn gethostbyaddr
90bc7413d0SPeter Wemmfunctions
91fdf4c7afSPeter Wemmeach return a pointer to an object with the
92fdf4c7afSPeter Wemmfollowing structure describing an internet host
93fdf4c7afSPeter Wemmreferenced by name or by address, respectively.
944460a589SNik Clayton.Pp
954460a589SNik ClaytonThe
964460a589SNik Clayton.Fa name
972efeeba5SRuslan Ermilovargument passed to
984460a589SNik Clayton.Fn gethostbyname
994460a589SNik Claytonor
1004460a589SNik Clayton.Fn gethostbyname2
101c634427cSRuslan Ermilovshould point to a
102c634427cSRuslan Ermilov.Dv NUL Ns -terminated
103c634427cSRuslan Ermilovhostname.
1044460a589SNik ClaytonThe
1054460a589SNik Clayton.Fa addr
1062efeeba5SRuslan Ermilovargument passed to
1074460a589SNik Clayton.Fn gethostbyaddr
1084460a589SNik Claytonshould point to an address which is
1094460a589SNik Clayton.Fa len
1104460a589SNik Claytonbytes long,
1114460a589SNik Claytonin binary form
1121a0a9345SRuslan Ermilov(i.e., not an IP address in human readable
113c634427cSRuslan Ermilov.Tn ASCII
114c634427cSRuslan Ermilovform).
1154460a589SNik ClaytonThe
1160237ec97SPawel Jakub Dawidek.Fa af
1172efeeba5SRuslan Ermilovargument specifies the address family
118c634427cSRuslan Ermilov(e.g.\&
119c634427cSRuslan Ermilov.Dv AF_INET , AF_INET6 ,
120c634427cSRuslan Ermilovetc.) of this address.
1214460a589SNik Clayton.Pp
1224460a589SNik ClaytonThe structure returned contains either the information obtained from the name
123942e234dSFernando Apesteguíaserver, broken-out fields from a line in
124248aee62SJacques Vidrine.Pa /etc/hosts ,
125248aee62SJacques Vidrineor database entries supplied by the
126491a8429SRuslan Ermilov.Xr yp 8
127248aee62SJacques Vidrinesystem.
128248aee62SJacques VidrineThe order of the lookups is controlled by the
129248aee62SJacques Vidrine.Sq hosts
130248aee62SJacques Vidrineentry in
131248aee62SJacques Vidrine.Xr nsswitch.conf 5 .
132bc7413d0SPeter Wemm.Bd -literal
133fdf4c7afSPeter Wemmstruct	hostent {
134fdf4c7afSPeter Wemm	char	*h_name;	/* official name of host */
135fdf4c7afSPeter Wemm	char	**h_aliases;	/* alias list */
136fdf4c7afSPeter Wemm	int	h_addrtype;	/* host address type */
137fdf4c7afSPeter Wemm	int	h_length;	/* length of address */
138fdf4c7afSPeter Wemm	char	**h_addr_list;	/* list of addresses from name server */
139fdf4c7afSPeter Wemm};
140fdf4c7afSPeter Wemm#define	h_addr  h_addr_list[0]	/* address, for backward compatibility */
141bc7413d0SPeter Wemm.Ed
142bc7413d0SPeter Wemm.Pp
143fdf4c7afSPeter WemmThe members of this structure are:
144bc7413d0SPeter Wemm.Bl -tag -width h_addr_list
145c634427cSRuslan Ermilov.It Va h_name
146fdf4c7afSPeter WemmOfficial name of the host.
147c634427cSRuslan Ermilov.It Va h_aliases
148c634427cSRuslan ErmilovA
149c634427cSRuslan Ermilov.Dv NULL Ns -terminated
150c634427cSRuslan Ermilovarray of alternate names for the host.
151c634427cSRuslan Ermilov.It Va h_addrtype
152c293d821SPeter WemmThe type of address being returned; usually
153bc7413d0SPeter Wemm.Dv AF_INET .
154c634427cSRuslan Ermilov.It Va h_length
155fdf4c7afSPeter WemmThe length, in bytes, of the address.
156c634427cSRuslan Ermilov.It Va h_addr_list
157c634427cSRuslan ErmilovA
158c634427cSRuslan Ermilov.Dv NULL Ns -terminated
159c634427cSRuslan Ermilovarray of network addresses for the host.
160fdf4c7afSPeter WemmHost addresses are returned in network byte order.
161c634427cSRuslan Ermilov.It Va h_addr
162bc7413d0SPeter WemmThe first address in
163c634427cSRuslan Ermilov.Va h_addr_list ;
164bc7413d0SPeter Wemmthis is for backward compatibility.
165c293d821SPeter Wemm.El
166bc7413d0SPeter Wemm.Pp
167fdf4c7afSPeter WemmWhen using the nameserver,
168bc7413d0SPeter Wemm.Fn gethostbyname
169c293d821SPeter Wemmand
170aec5b6f6SAlexey Zelkin.Fn gethostbyname2
171fdf4c7afSPeter Wemmwill search for the named host in the current domain and its parents
172fdf4c7afSPeter Wemmunless the name ends in a dot.
173bc7413d0SPeter WemmIf the name contains no dot, and if the environment variable
174bc7413d0SPeter Wemm.Dq Ev HOSTALIASES
175fdf4c7afSPeter Wemmcontains the name of an alias file, the alias file will first be searched
176fdf4c7afSPeter Wemmfor an alias matching the input name.
177fdf4c7afSPeter WemmSee
178bc7413d0SPeter Wemm.Xr hostname 7
179fdf4c7afSPeter Wemmfor the domain search procedure and the alias file format.
180bc7413d0SPeter Wemm.Pp
181bc7413d0SPeter WemmThe
182c293d821SPeter Wemm.Fn gethostbyname2
183c293d821SPeter Wemmfunction is an evolution of
184c293d821SPeter Wemm.Fn gethostbyname
185c293d821SPeter Wemmwhich is intended to allow lookups in address families other than
186c293d821SPeter Wemm.Dv AF_INET ,
187c293d821SPeter Wemmfor example
188c293d821SPeter Wemm.Dv AF_INET6 .
189c293d821SPeter Wemm.Pp
190c293d821SPeter WemmThe
191bc7413d0SPeter Wemm.Fn sethostent
192bc7413d0SPeter Wemmfunction
193bc7413d0SPeter Wemmmay be used to request the use of a connected
194bc7413d0SPeter Wemm.Tn TCP
195bc7413d0SPeter Wemmsocket for queries.
1969eba44bfSCy SchubertQueries will by default use
197b1b1386fSCy Schubert.Tn UDP
19875ea0b76SBenjamin Kadukdatagrams.
19975ea0b76SBenjamin KadukIf the
200bc7413d0SPeter Wemm.Fa stayopen
201b1b1386fSCy Schubertflag is non-zero, a
202bc7413d0SPeter Wemm.Tn TCP
20375ea0b76SBenjamin Kadukconnection to the name server will be used.
20475ea0b76SBenjamin KadukIt will remain open after calls to
205c293d821SPeter Wemm.Fn gethostbyname ,
206c293d821SPeter Wemm.Fn gethostbyname2
207fdf4c7afSPeter Wemmor
208b1b1386fSCy Schubert.Fn gethostbyaddr
209b1b1386fSCy Schuberthave completed.
210bc7413d0SPeter Wemm.Pp
211bc7413d0SPeter WemmThe
212bc7413d0SPeter Wemm.Fn endhostent
213bc7413d0SPeter Wemmfunction
214bc7413d0SPeter Wemmcloses the
215bc7413d0SPeter Wemm.Tn TCP
216bc7413d0SPeter Wemmconnection.
217c293d821SPeter Wemm.Pp
218c293d821SPeter WemmThe
219c293d821SPeter Wemm.Fn herror
220c293d821SPeter Wemmfunction writes a message to the diagnostic output consisting of the
2212efeeba5SRuslan Ermilovstring argument
2222efeeba5SRuslan Ermilov.Fa string ,
223c634427cSRuslan Ermilovthe constant string
224c634427cSRuslan Ermilov.Qq Li ":\ " ,
225c634427cSRuslan Ermilovand a message corresponding to the value of
226c293d821SPeter Wemm.Va h_errno .
227c293d821SPeter Wemm.Pp
228c293d821SPeter WemmThe
229c293d821SPeter Wemm.Fn hstrerror
230c293d821SPeter Wemmfunction returns a string which is the message text corresponding to the
231c293d821SPeter Wemmvalue of the
232c293d821SPeter Wemm.Fa err
2332efeeba5SRuslan Ermilovargument.
234dc689973SFernando Apesteguía.Pp
235dc689973SFernando ApesteguíaFunctions with the
236dc689973SFernando Apesteguía.Em _r
237dc689973SFernando Apesteguíasuffix provide reentrant versions of their respective counterparts.
238dc689973SFernando ApesteguíaThe caller must supply five additional parameters: a
239dc689973SFernando Apesteguía.Vt struct hostent
240dc689973SFernando Apesteguíavariable to be filled on success, a
241dc689973SFernando Apesteguía.Va buffer
242dc689973SFernando Apesteguíaof
243dc689973SFernando Apesteguía.Va buflen
244dc689973SFernando Apesteguíabytes in size, a
245dc689973SFernando Apesteguía.Vt struct hostent
246dc689973SFernando Apesteguía.Va result
247dc689973SFernando Apesteguíavariable that will point to the result on success or be set to
248dc689973SFernando Apesteguía.Dv NULL
249dc689973SFernando Apesteguíaon failure or if the name is not found.
250dc689973SFernando ApesteguíaThe
251dc689973SFernando Apesteguía.Va h_errnop
252dc689973SFernando Apesteguíavariable will be filled with the error code if any.
253dc689973SFernando ApesteguíaAll these functions return 0 on success.
254bc7413d0SPeter Wemm.Sh FILES
255248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
256bc7413d0SPeter Wemm.It Pa /etc/hosts
257248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
258c293d821SPeter Wemm.It Pa /etc/resolv.conf
259bc7413d0SPeter Wemm.El
2604460a589SNik Clayton.Sh EXAMPLES
2614460a589SNik ClaytonPrint out the hostname associated with a specific IP address:
262c634427cSRuslan Ermilov.Bd -literal -offset indent
2634460a589SNik Claytonconst char *ipstr = "127.0.0.1";
2644460a589SNik Claytonstruct in_addr ip;
2654460a589SNik Claytonstruct hostent *hp;
2664460a589SNik Clayton
2674460a589SNik Claytonif (!inet_aton(ipstr, &ip))
2684460a589SNik Clayton	errx(1, "can't parse IP address %s", ipstr);
2694460a589SNik Clayton
2703da59cd0SHajimu UMEMOTOif ((hp = gethostbyaddr((const void *)&ip,
2714460a589SNik Clayton    sizeof ip, AF_INET)) == NULL)
2724460a589SNik Clayton	errx(1, "no name associated with %s", ipstr);
2734460a589SNik Clayton
2744460a589SNik Claytonprintf("name associated with %s is %s\en", ipstr, hp->h_name);
275c634427cSRuslan Ermilov.Ed
276bc7413d0SPeter Wemm.Sh DIAGNOSTICS
277fdf4c7afSPeter WemmError return status from
278c293d821SPeter Wemm.Fn gethostbyname ,
279c293d821SPeter Wemm.Fn gethostbyname2
280fdf4c7afSPeter Wemmand
281bc7413d0SPeter Wemm.Fn gethostbyaddr
282c634427cSRuslan Ermilovis indicated by return of a
283c634427cSRuslan Ermilov.Dv NULL
284c634427cSRuslan Ermilovpointer.
2856b0a380fSSam LawranceThe integer
286bc7413d0SPeter Wemm.Va h_errno
287fdf4c7afSPeter Wemmmay then be checked to see whether this is a temporary failure
288fdf4c7afSPeter Wemmor an invalid or unknown host.
289fdf4c7afSPeter WemmThe routine
290bc7413d0SPeter Wemm.Fn herror
291fdf4c7afSPeter Wemmcan be used to print an error message describing the failure.
292fdf4c7afSPeter WemmIf its argument
293bc7413d0SPeter Wemm.Fa string
294bc7413d0SPeter Wemmis
295c634427cSRuslan Ermilov.Pf non- Dv NULL ,
296bc7413d0SPeter Wemmit is printed, followed by a colon and a space.
297fdf4c7afSPeter WemmThe error message is printed with a trailing newline.
298bc7413d0SPeter Wemm.Pp
299bc7413d0SPeter WemmThe variable
300bc7413d0SPeter Wemm.Va h_errno
301fdf4c7afSPeter Wemmcan have the following values:
302bc7413d0SPeter Wemm.Bl -tag -width HOST_NOT_FOUND
303bc7413d0SPeter Wemm.It Dv HOST_NOT_FOUND
304fdf4c7afSPeter WemmNo such host is known.
305bc7413d0SPeter Wemm.It Dv TRY_AGAIN
306fdf4c7afSPeter WemmThis is usually a temporary error
307fdf4c7afSPeter Wemmand means that the local server did not receive
308fdf4c7afSPeter Wemma response from an authoritative server.
309fdf4c7afSPeter WemmA retry at some later time may succeed.
310bc7413d0SPeter Wemm.It Dv NO_RECOVERY
311fdf4c7afSPeter WemmSome unexpected server failure was encountered.
312fdf4c7afSPeter WemmThis is a non-recoverable error.
313bc7413d0SPeter Wemm.It Dv NO_DATA
314fdf4c7afSPeter WemmThe requested name is valid but does not have an IP address;
315fdf4c7afSPeter Wemmthis is not a temporary error.
316fdf4c7afSPeter WemmThis means that the name is known to the name server but there is no address
317fdf4c7afSPeter Wemmassociated with this name.
318fdf4c7afSPeter WemmAnother type of request to the name server using this domain name
319fdf4c7afSPeter Wemmwill result in an answer;
320fdf4c7afSPeter Wemmfor example, a mail-forwarder may be registered for this domain.
321bc7413d0SPeter Wemm.El
322bc7413d0SPeter Wemm.Sh SEE ALSO
3231fed0019SArchie Cobbs.Xr getaddrinfo 3 ,
3243bc371d2SRuslan Ermilov.Xr getnameinfo 3 ,
325a289e937SRuslan Ermilov.Xr inet_aton 3 ,
326bc7413d0SPeter Wemm.Xr resolver 3 ,
327bc7413d0SPeter Wemm.Xr hosts 5 ,
328942e234dSFernando Apesteguía.Xr hostname 7
329f6d234d8SGordon Bergling.Sh HISTORY
330f6d234d8SGordon BerglingThe
331f6d234d8SGordon Bergling.Fn herror
332f6d234d8SGordon Berglingfunction appeared in
333f6d234d8SGordon Bergling.Bx 4.3 .
334f6d234d8SGordon BerglingThe
335f6d234d8SGordon Bergling.Fn endhostent ,
336f6d234d8SGordon Bergling.Fn gethostbyaddr ,
337f6d234d8SGordon Bergling.Fn gethostbyname ,
338f6d234d8SGordon Bergling.Fn gethostent ,
339f6d234d8SGordon Berglingand
340f6d234d8SGordon Bergling.Fn sethostent
341f6d234d8SGordon Berglingfunctions appeared in
342f6d234d8SGordon Bergling.Bx 4.2 .
343f6d234d8SGordon BerglingThe
344f6d234d8SGordon Bergling.Fn gethostbyname2
345f6d234d8SGordon Berglingfunction first appeared in
346f6d234d8SGordon Bergling.Tn BIND
347f6d234d8SGordon Berglingversion 4.9.4.
348*47d0f36cSDavid E. O'BrienThe
349*47d0f36cSDavid E. O'Brien.Fn gethostbyname_r
350*47d0f36cSDavid E. O'Brienfunction first appeared in
351*47d0f36cSDavid E. O'Brien.Fx 6.2 .
352f6d234d8SGordon Bergling.Sh CAVEATS
353bc7413d0SPeter WemmThe
354bc7413d0SPeter Wemm.Fn gethostent
355bc7413d0SPeter Wemmfunction
356fdf4c7afSPeter Wemmis defined, and
357bc7413d0SPeter Wemm.Fn sethostent
358fdf4c7afSPeter Wemmand
359bc7413d0SPeter Wemm.Fn endhostent
360fdf4c7afSPeter Wemmare redefined,
361fdf4c7afSPeter Wemmwhen
362fe71ab1cSPhilippe Charnier.Lb libc
363fdf4c7afSPeter Wemmis built to use only the routines to lookup in
364bc7413d0SPeter Wemm.Pa /etc/hosts
365fdf4c7afSPeter Wemmand not the name server.
366bc7413d0SPeter Wemm.Pp
367bc7413d0SPeter WemmThe
368bc7413d0SPeter Wemm.Fn gethostent
369bc7413d0SPeter Wemmfunction
370fdf4c7afSPeter Wemmreads the next line of
371bc7413d0SPeter Wemm.Pa /etc/hosts ,
372fdf4c7afSPeter Wemmopening the file if necessary.
373bc7413d0SPeter Wemm.Pp
374bc7413d0SPeter WemmThe
375bc7413d0SPeter Wemm.Fn sethostent
376bc7413d0SPeter Wemmfunction
377bc7413d0SPeter Wemmopens and/or rewinds the file
378bc7413d0SPeter Wemm.Pa /etc/hosts .
379bc7413d0SPeter WemmIf the
380bc7413d0SPeter Wemm.Fa stayopen
381fdf4c7afSPeter Wemmargument is non-zero,
382bc7413d0SPeter Wemmthe file will not be closed after each call to
383c293d821SPeter Wemm.Fn gethostbyname ,
384c293d821SPeter Wemm.Fn gethostbyname2
385fdf4c7afSPeter Wemmor
386bc7413d0SPeter Wemm.Fn gethostbyaddr .
387bc7413d0SPeter Wemm.Pp
388bc7413d0SPeter WemmThe
389bc7413d0SPeter Wemm.Fn endhostent
390bc7413d0SPeter Wemmfunction
391bc7413d0SPeter Wemmcloses the file.
392bc7413d0SPeter Wemm.Sh BUGS
393aa2f4ec7SHajimu UMEMOTOThese functions use a thread-specific data storage;
394bc7413d0SPeter Wemmif the data is needed for future use, it should be
395bc7413d0SPeter Wemmcopied before any subsequent calls overwrite it.
396aa2f4ec7SHajimu UMEMOTO.Pp
397aa2f4ec7SHajimu UMEMOTOThough these functions are thread-safe,
398aa2f4ec7SHajimu UMEMOTOstill it is recommended to use the
39933dee819SBrian Feldman.Xr getaddrinfo 3
400aa2f4ec7SHajimu UMEMOTOfamily of functions, instead.
401aa2f4ec7SHajimu UMEMOTO.Pp
402bc7413d0SPeter WemmOnly the Internet
403fdf4c7afSPeter Wemmaddress format is currently understood.
404