xref: /freebsd/lib/libc/net/gethostbyname.3 (revision 47d0f36c3c439c65374d29937f3ccdf99a4356b6)
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.\"
28577b61c6SPhilippe Charnier.\"     From: @(#)gethostbyname.3	8.4 (Berkeley) 5/25/95
297f3dea24SPeter Wemm.\" $FreeBSD$
30bc7413d0SPeter Wemm.\"
314a3c598fSFernando Apesteguía.Dd June 27, 2022
32bc7413d0SPeter Wemm.Dt GETHOSTBYNAME 3
33a307d598SRuslan Ermilov.Os
34bc7413d0SPeter Wemm.Sh NAME
35bc7413d0SPeter Wemm.Nm gethostbyname ,
36c293d821SPeter Wemm.Nm gethostbyname2 ,
37bc7413d0SPeter Wemm.Nm gethostbyaddr ,
38bc7413d0SPeter Wemm.Nm gethostent ,
39bc7413d0SPeter Wemm.Nm sethostent ,
40bc7413d0SPeter Wemm.Nm endhostent ,
41c293d821SPeter Wemm.Nm herror ,
42dc689973SFernando Apesteguía.Nm hstrerror ,
43dc689973SFernando Apesteguía.Nm gethostbyname_r ,
44dc689973SFernando Apesteguía.Nm gethostbyname2_r ,
45dc689973SFernando Apesteguía.Nm gethostbyaddr_r
46bc7413d0SPeter Wemm.Nd get network host entry
4725bb73e0SAlexey Zelkin.Sh LIBRARY
4825bb73e0SAlexey Zelkin.Lb libc
49bc7413d0SPeter Wemm.Sh SYNOPSIS
5032eef9aeSRuslan Ermilov.In netdb.h
516b0a380fSSam Lawrance.Vt int h_errno ;
52bc7413d0SPeter Wemm.Ft struct hostent *
53d3281e16SJohn Polstra.Fn gethostbyname "const char *name"
54bc7413d0SPeter Wemm.Ft struct hostent *
55c293d821SPeter Wemm.Fn gethostbyname2 "const char *name" "int af"
56c293d821SPeter Wemm.Ft struct hostent *
570237ec97SPawel Jakub Dawidek.Fn gethostbyaddr "const void *addr" "socklen_t len" "int af"
58bc7413d0SPeter Wemm.Ft struct hostent *
59bc7413d0SPeter Wemm.Fn gethostent void
603ce29386SBruce Evans.Ft void
61bc7413d0SPeter Wemm.Fn sethostent "int stayopen"
623ce29386SBruce Evans.Ft void
63bc7413d0SPeter Wemm.Fn endhostent void
643ce29386SBruce Evans.Ft void
65d3281e16SJohn Polstra.Fn herror "const char *string"
66c293d821SPeter Wemm.Ft const char *
67c293d821SPeter Wemm.Fn hstrerror "int err"
68dc689973SFernando Apesteguía.Ft int
69dc689973SFernando Apesteguía.Fn gethostbyname_r "const char *name" "struct hostent *he" "char *buffer" "size_t buflen" "struct hostent **result" "int *h_errnop"
70dc689973SFernando Apesteguía.Ft int
71dc689973SFernando Apesteguía.Fn gethostbyname2_r "const char *name" "int af" "struct hostent *he" "char *buffer" "size_t buflen" "struct hostent **result" "int *h_errnop"
72dc689973SFernando Apesteguía.Ft int
73dc689973SFernando 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
74bc7413d0SPeter Wemm.Sh DESCRIPTION
753bc371d2SRuslan Ermilov.Bf -symbolic
763bc371d2SRuslan ErmilovThe
773bc371d2SRuslan Ermilov.Xr getaddrinfo 3
783bc371d2SRuslan Ermilovand
793bc371d2SRuslan Ermilov.Xr getnameinfo 3
803bc371d2SRuslan Ermilovfunctions are preferred over the
813bc371d2SRuslan Ermilov.Fn gethostbyname ,
823bc371d2SRuslan Ermilov.Fn gethostbyname2 ,
833bc371d2SRuslan Ermilovand
843bc371d2SRuslan Ermilov.Fn gethostbyaddr
853bc371d2SRuslan Ermilovfunctions.
863bc371d2SRuslan Ermilov.Ef
873bc371d2SRuslan Ermilov.Pp
88bc7413d0SPeter WemmThe
89c293d821SPeter Wemm.Fn gethostbyname ,
90c293d821SPeter Wemm.Fn gethostbyname2
91fdf4c7afSPeter Wemmand
92bc7413d0SPeter Wemm.Fn gethostbyaddr
93bc7413d0SPeter Wemmfunctions
94fdf4c7afSPeter Wemmeach return a pointer to an object with the
95fdf4c7afSPeter Wemmfollowing structure describing an internet host
96fdf4c7afSPeter Wemmreferenced by name or by address, respectively.
974460a589SNik Clayton.Pp
984460a589SNik ClaytonThe
994460a589SNik Clayton.Fa name
1002efeeba5SRuslan Ermilovargument passed to
1014460a589SNik Clayton.Fn gethostbyname
1024460a589SNik Claytonor
1034460a589SNik Clayton.Fn gethostbyname2
104c634427cSRuslan Ermilovshould point to a
105c634427cSRuslan Ermilov.Dv NUL Ns -terminated
106c634427cSRuslan Ermilovhostname.
1074460a589SNik ClaytonThe
1084460a589SNik Clayton.Fa addr
1092efeeba5SRuslan Ermilovargument passed to
1104460a589SNik Clayton.Fn gethostbyaddr
1114460a589SNik Claytonshould point to an address which is
1124460a589SNik Clayton.Fa len
1134460a589SNik Claytonbytes long,
1144460a589SNik Claytonin binary form
1151a0a9345SRuslan Ermilov(i.e., not an IP address in human readable
116c634427cSRuslan Ermilov.Tn ASCII
117c634427cSRuslan Ermilovform).
1184460a589SNik ClaytonThe
1190237ec97SPawel Jakub Dawidek.Fa af
1202efeeba5SRuslan Ermilovargument specifies the address family
121c634427cSRuslan Ermilov(e.g.\&
122c634427cSRuslan Ermilov.Dv AF_INET , AF_INET6 ,
123c634427cSRuslan Ermilovetc.) of this address.
1244460a589SNik Clayton.Pp
1254460a589SNik ClaytonThe structure returned contains either the information obtained from the name
126942e234dSFernando Apesteguíaserver, broken-out fields from a line in
127248aee62SJacques Vidrine.Pa /etc/hosts ,
128248aee62SJacques Vidrineor database entries supplied by the
129491a8429SRuslan Ermilov.Xr yp 8
130248aee62SJacques Vidrinesystem.
131248aee62SJacques VidrineThe order of the lookups is controlled by the
132248aee62SJacques Vidrine.Sq hosts
133248aee62SJacques Vidrineentry in
134248aee62SJacques Vidrine.Xr nsswitch.conf 5 .
135bc7413d0SPeter Wemm.Bd -literal
136fdf4c7afSPeter Wemmstruct	hostent {
137fdf4c7afSPeter Wemm	char	*h_name;	/* official name of host */
138fdf4c7afSPeter Wemm	char	**h_aliases;	/* alias list */
139fdf4c7afSPeter Wemm	int	h_addrtype;	/* host address type */
140fdf4c7afSPeter Wemm	int	h_length;	/* length of address */
141fdf4c7afSPeter Wemm	char	**h_addr_list;	/* list of addresses from name server */
142fdf4c7afSPeter Wemm};
143fdf4c7afSPeter Wemm#define	h_addr  h_addr_list[0]	/* address, for backward compatibility */
144bc7413d0SPeter Wemm.Ed
145bc7413d0SPeter Wemm.Pp
146fdf4c7afSPeter WemmThe members of this structure are:
147bc7413d0SPeter Wemm.Bl -tag -width h_addr_list
148c634427cSRuslan Ermilov.It Va h_name
149fdf4c7afSPeter WemmOfficial name of the host.
150c634427cSRuslan Ermilov.It Va h_aliases
151c634427cSRuslan ErmilovA
152c634427cSRuslan Ermilov.Dv NULL Ns -terminated
153c634427cSRuslan Ermilovarray of alternate names for the host.
154c634427cSRuslan Ermilov.It Va h_addrtype
155c293d821SPeter WemmThe type of address being returned; usually
156bc7413d0SPeter Wemm.Dv AF_INET .
157c634427cSRuslan Ermilov.It Va h_length
158fdf4c7afSPeter WemmThe length, in bytes, of the address.
159c634427cSRuslan Ermilov.It Va h_addr_list
160c634427cSRuslan ErmilovA
161c634427cSRuslan Ermilov.Dv NULL Ns -terminated
162c634427cSRuslan Ermilovarray of network addresses for the host.
163fdf4c7afSPeter WemmHost addresses are returned in network byte order.
164c634427cSRuslan Ermilov.It Va h_addr
165bc7413d0SPeter WemmThe first address in
166c634427cSRuslan Ermilov.Va h_addr_list ;
167bc7413d0SPeter Wemmthis is for backward compatibility.
168c293d821SPeter Wemm.El
169bc7413d0SPeter Wemm.Pp
170fdf4c7afSPeter WemmWhen using the nameserver,
171bc7413d0SPeter Wemm.Fn gethostbyname
172c293d821SPeter Wemmand
173aec5b6f6SAlexey Zelkin.Fn gethostbyname2
174fdf4c7afSPeter Wemmwill search for the named host in the current domain and its parents
175fdf4c7afSPeter Wemmunless the name ends in a dot.
176bc7413d0SPeter WemmIf the name contains no dot, and if the environment variable
177bc7413d0SPeter Wemm.Dq Ev HOSTALIASES
178fdf4c7afSPeter Wemmcontains the name of an alias file, the alias file will first be searched
179fdf4c7afSPeter Wemmfor an alias matching the input name.
180fdf4c7afSPeter WemmSee
181bc7413d0SPeter Wemm.Xr hostname 7
182fdf4c7afSPeter Wemmfor the domain search procedure and the alias file format.
183bc7413d0SPeter Wemm.Pp
184bc7413d0SPeter WemmThe
185c293d821SPeter Wemm.Fn gethostbyname2
186c293d821SPeter Wemmfunction is an evolution of
187c293d821SPeter Wemm.Fn gethostbyname
188c293d821SPeter Wemmwhich is intended to allow lookups in address families other than
189c293d821SPeter Wemm.Dv AF_INET ,
190c293d821SPeter Wemmfor example
191c293d821SPeter Wemm.Dv AF_INET6 .
192c293d821SPeter Wemm.Pp
193c293d821SPeter WemmThe
194bc7413d0SPeter Wemm.Fn sethostent
195bc7413d0SPeter Wemmfunction
196bc7413d0SPeter Wemmmay be used to request the use of a connected
197bc7413d0SPeter Wemm.Tn TCP
198bc7413d0SPeter Wemmsocket for queries.
1999eba44bfSCy SchubertQueries will by default use
200b1b1386fSCy Schubert.Tn UDP
20175ea0b76SBenjamin Kadukdatagrams.
20275ea0b76SBenjamin KadukIf the
203bc7413d0SPeter Wemm.Fa stayopen
204b1b1386fSCy Schubertflag is non-zero, a
205bc7413d0SPeter Wemm.Tn TCP
20675ea0b76SBenjamin Kadukconnection to the name server will be used.
20775ea0b76SBenjamin KadukIt will remain open after calls to
208c293d821SPeter Wemm.Fn gethostbyname ,
209c293d821SPeter Wemm.Fn gethostbyname2
210fdf4c7afSPeter Wemmor
211b1b1386fSCy Schubert.Fn gethostbyaddr
212b1b1386fSCy Schuberthave completed.
213bc7413d0SPeter Wemm.Pp
214bc7413d0SPeter WemmThe
215bc7413d0SPeter Wemm.Fn endhostent
216bc7413d0SPeter Wemmfunction
217bc7413d0SPeter Wemmcloses the
218bc7413d0SPeter Wemm.Tn TCP
219bc7413d0SPeter Wemmconnection.
220c293d821SPeter Wemm.Pp
221c293d821SPeter WemmThe
222c293d821SPeter Wemm.Fn herror
223c293d821SPeter Wemmfunction writes a message to the diagnostic output consisting of the
2242efeeba5SRuslan Ermilovstring argument
2252efeeba5SRuslan Ermilov.Fa string ,
226c634427cSRuslan Ermilovthe constant string
227c634427cSRuslan Ermilov.Qq Li ":\ " ,
228c634427cSRuslan Ermilovand a message corresponding to the value of
229c293d821SPeter Wemm.Va h_errno .
230c293d821SPeter Wemm.Pp
231c293d821SPeter WemmThe
232c293d821SPeter Wemm.Fn hstrerror
233c293d821SPeter Wemmfunction returns a string which is the message text corresponding to the
234c293d821SPeter Wemmvalue of the
235c293d821SPeter Wemm.Fa err
2362efeeba5SRuslan Ermilovargument.
237dc689973SFernando Apesteguía.Pp
238dc689973SFernando ApesteguíaFunctions with the
239dc689973SFernando Apesteguía.Em _r
240dc689973SFernando Apesteguíasuffix provide reentrant versions of their respective counterparts.
241dc689973SFernando ApesteguíaThe caller must supply five additional parameters: a
242dc689973SFernando Apesteguía.Vt struct hostent
243dc689973SFernando Apesteguíavariable to be filled on success, a
244dc689973SFernando Apesteguía.Va buffer
245dc689973SFernando Apesteguíaof
246dc689973SFernando Apesteguía.Va buflen
247dc689973SFernando Apesteguíabytes in size, a
248dc689973SFernando Apesteguía.Vt struct hostent
249dc689973SFernando Apesteguía.Va result
250dc689973SFernando Apesteguíavariable that will point to the result on success or be set to
251dc689973SFernando Apesteguía.Dv NULL
252dc689973SFernando Apesteguíaon failure or if the name is not found.
253dc689973SFernando ApesteguíaThe
254dc689973SFernando Apesteguía.Va h_errnop
255dc689973SFernando Apesteguíavariable will be filled with the error code if any.
256dc689973SFernando ApesteguíaAll these functions return 0 on success.
257bc7413d0SPeter Wemm.Sh FILES
258248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
259bc7413d0SPeter Wemm.It Pa /etc/hosts
260248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
261c293d821SPeter Wemm.It Pa /etc/resolv.conf
262bc7413d0SPeter Wemm.El
2634460a589SNik Clayton.Sh EXAMPLES
2644460a589SNik ClaytonPrint out the hostname associated with a specific IP address:
265c634427cSRuslan Ermilov.Bd -literal -offset indent
2664460a589SNik Claytonconst char *ipstr = "127.0.0.1";
2674460a589SNik Claytonstruct in_addr ip;
2684460a589SNik Claytonstruct hostent *hp;
2694460a589SNik Clayton
2704460a589SNik Claytonif (!inet_aton(ipstr, &ip))
2714460a589SNik Clayton	errx(1, "can't parse IP address %s", ipstr);
2724460a589SNik Clayton
2733da59cd0SHajimu UMEMOTOif ((hp = gethostbyaddr((const void *)&ip,
2744460a589SNik Clayton    sizeof ip, AF_INET)) == NULL)
2754460a589SNik Clayton	errx(1, "no name associated with %s", ipstr);
2764460a589SNik Clayton
2774460a589SNik Claytonprintf("name associated with %s is %s\en", ipstr, hp->h_name);
278c634427cSRuslan Ermilov.Ed
279bc7413d0SPeter Wemm.Sh DIAGNOSTICS
280fdf4c7afSPeter WemmError return status from
281c293d821SPeter Wemm.Fn gethostbyname ,
282c293d821SPeter Wemm.Fn gethostbyname2
283fdf4c7afSPeter Wemmand
284bc7413d0SPeter Wemm.Fn gethostbyaddr
285c634427cSRuslan Ermilovis indicated by return of a
286c634427cSRuslan Ermilov.Dv NULL
287c634427cSRuslan Ermilovpointer.
2886b0a380fSSam LawranceThe integer
289bc7413d0SPeter Wemm.Va h_errno
290fdf4c7afSPeter Wemmmay then be checked to see whether this is a temporary failure
291fdf4c7afSPeter Wemmor an invalid or unknown host.
292fdf4c7afSPeter WemmThe routine
293bc7413d0SPeter Wemm.Fn herror
294fdf4c7afSPeter Wemmcan be used to print an error message describing the failure.
295fdf4c7afSPeter WemmIf its argument
296bc7413d0SPeter Wemm.Fa string
297bc7413d0SPeter Wemmis
298c634427cSRuslan Ermilov.Pf non- Dv NULL ,
299bc7413d0SPeter Wemmit is printed, followed by a colon and a space.
300fdf4c7afSPeter WemmThe error message is printed with a trailing newline.
301bc7413d0SPeter Wemm.Pp
302bc7413d0SPeter WemmThe variable
303bc7413d0SPeter Wemm.Va h_errno
304fdf4c7afSPeter Wemmcan have the following values:
305bc7413d0SPeter Wemm.Bl -tag -width HOST_NOT_FOUND
306bc7413d0SPeter Wemm.It Dv HOST_NOT_FOUND
307fdf4c7afSPeter WemmNo such host is known.
308bc7413d0SPeter Wemm.It Dv TRY_AGAIN
309fdf4c7afSPeter WemmThis is usually a temporary error
310fdf4c7afSPeter Wemmand means that the local server did not receive
311fdf4c7afSPeter Wemma response from an authoritative server.
312fdf4c7afSPeter WemmA retry at some later time may succeed.
313bc7413d0SPeter Wemm.It Dv NO_RECOVERY
314fdf4c7afSPeter WemmSome unexpected server failure was encountered.
315fdf4c7afSPeter WemmThis is a non-recoverable error.
316bc7413d0SPeter Wemm.It Dv NO_DATA
317fdf4c7afSPeter WemmThe requested name is valid but does not have an IP address;
318fdf4c7afSPeter Wemmthis is not a temporary error.
319fdf4c7afSPeter WemmThis means that the name is known to the name server but there is no address
320fdf4c7afSPeter Wemmassociated with this name.
321fdf4c7afSPeter WemmAnother type of request to the name server using this domain name
322fdf4c7afSPeter Wemmwill result in an answer;
323fdf4c7afSPeter Wemmfor example, a mail-forwarder may be registered for this domain.
324bc7413d0SPeter Wemm.El
325bc7413d0SPeter Wemm.Sh SEE ALSO
3261fed0019SArchie Cobbs.Xr getaddrinfo 3 ,
3273bc371d2SRuslan Ermilov.Xr getnameinfo 3 ,
328a289e937SRuslan Ermilov.Xr inet_aton 3 ,
329bc7413d0SPeter Wemm.Xr resolver 3 ,
330bc7413d0SPeter Wemm.Xr hosts 5 ,
331942e234dSFernando Apesteguía.Xr hostname 7
332f6d234d8SGordon Bergling.Sh HISTORY
333f6d234d8SGordon BerglingThe
334f6d234d8SGordon Bergling.Fn herror
335f6d234d8SGordon Berglingfunction appeared in
336f6d234d8SGordon Bergling.Bx 4.3 .
337f6d234d8SGordon BerglingThe
338f6d234d8SGordon Bergling.Fn endhostent ,
339f6d234d8SGordon Bergling.Fn gethostbyaddr ,
340f6d234d8SGordon Bergling.Fn gethostbyname ,
341f6d234d8SGordon Bergling.Fn gethostent ,
342f6d234d8SGordon Berglingand
343f6d234d8SGordon Bergling.Fn sethostent
344f6d234d8SGordon Berglingfunctions appeared in
345f6d234d8SGordon Bergling.Bx 4.2 .
346f6d234d8SGordon BerglingThe
347f6d234d8SGordon Bergling.Fn gethostbyname2
348f6d234d8SGordon Berglingfunction first appeared in
349f6d234d8SGordon Bergling.Tn BIND
350f6d234d8SGordon Berglingversion 4.9.4.
351*47d0f36cSDavid E. O'BrienThe
352*47d0f36cSDavid E. O'Brien.Fn gethostbyname_r
353*47d0f36cSDavid E. O'Brienfunction first appeared in
354*47d0f36cSDavid E. O'Brien.Fx 6.2 .
355f6d234d8SGordon Bergling.Sh CAVEATS
356bc7413d0SPeter WemmThe
357bc7413d0SPeter Wemm.Fn gethostent
358bc7413d0SPeter Wemmfunction
359fdf4c7afSPeter Wemmis defined, and
360bc7413d0SPeter Wemm.Fn sethostent
361fdf4c7afSPeter Wemmand
362bc7413d0SPeter Wemm.Fn endhostent
363fdf4c7afSPeter Wemmare redefined,
364fdf4c7afSPeter Wemmwhen
365fe71ab1cSPhilippe Charnier.Lb libc
366fdf4c7afSPeter Wemmis built to use only the routines to lookup in
367bc7413d0SPeter Wemm.Pa /etc/hosts
368fdf4c7afSPeter Wemmand not the name server.
369bc7413d0SPeter Wemm.Pp
370bc7413d0SPeter WemmThe
371bc7413d0SPeter Wemm.Fn gethostent
372bc7413d0SPeter Wemmfunction
373fdf4c7afSPeter Wemmreads the next line of
374bc7413d0SPeter Wemm.Pa /etc/hosts ,
375fdf4c7afSPeter Wemmopening the file if necessary.
376bc7413d0SPeter Wemm.Pp
377bc7413d0SPeter WemmThe
378bc7413d0SPeter Wemm.Fn sethostent
379bc7413d0SPeter Wemmfunction
380bc7413d0SPeter Wemmopens and/or rewinds the file
381bc7413d0SPeter Wemm.Pa /etc/hosts .
382bc7413d0SPeter WemmIf the
383bc7413d0SPeter Wemm.Fa stayopen
384fdf4c7afSPeter Wemmargument is non-zero,
385bc7413d0SPeter Wemmthe file will not be closed after each call to
386c293d821SPeter Wemm.Fn gethostbyname ,
387c293d821SPeter Wemm.Fn gethostbyname2
388fdf4c7afSPeter Wemmor
389bc7413d0SPeter Wemm.Fn gethostbyaddr .
390bc7413d0SPeter Wemm.Pp
391bc7413d0SPeter WemmThe
392bc7413d0SPeter Wemm.Fn endhostent
393bc7413d0SPeter Wemmfunction
394bc7413d0SPeter Wemmcloses the file.
395bc7413d0SPeter Wemm.Sh BUGS
396aa2f4ec7SHajimu UMEMOTOThese functions use a thread-specific data storage;
397bc7413d0SPeter Wemmif the data is needed for future use, it should be
398bc7413d0SPeter Wemmcopied before any subsequent calls overwrite it.
399aa2f4ec7SHajimu UMEMOTO.Pp
400aa2f4ec7SHajimu UMEMOTOThough these functions are thread-safe,
401aa2f4ec7SHajimu UMEMOTOstill it is recommended to use the
40233dee819SBrian Feldman.Xr getaddrinfo 3
403aa2f4ec7SHajimu UMEMOTOfamily of functions, instead.
404aa2f4ec7SHajimu UMEMOTO.Pp
405bc7413d0SPeter WemmOnly the Internet
406fdf4c7afSPeter Wemmaddress format is currently understood.
407