xref: /freebsd/lib/libc/net/gethostbyname.3 (revision 75ea0b769708cd5d9024dbf1a83788309c65b77a)
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.\"
31b1b1386fSCy Schubert.Dd October 4, 2017
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 ,
42c293d821SPeter Wemm.Nm hstrerror
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"
65bc7413d0SPeter Wemm.Sh DESCRIPTION
663bc371d2SRuslan Ermilov.Bf -symbolic
673bc371d2SRuslan ErmilovThe
683bc371d2SRuslan Ermilov.Xr getaddrinfo 3
693bc371d2SRuslan Ermilovand
703bc371d2SRuslan Ermilov.Xr getnameinfo 3
713bc371d2SRuslan Ermilovfunctions are preferred over the
723bc371d2SRuslan Ermilov.Fn gethostbyname ,
733bc371d2SRuslan Ermilov.Fn gethostbyname2 ,
743bc371d2SRuslan Ermilovand
753bc371d2SRuslan Ermilov.Fn gethostbyaddr
763bc371d2SRuslan Ermilovfunctions.
773bc371d2SRuslan Ermilov.Ef
783bc371d2SRuslan Ermilov.Pp
79bc7413d0SPeter WemmThe
80c293d821SPeter Wemm.Fn gethostbyname ,
81c293d821SPeter Wemm.Fn gethostbyname2
82fdf4c7afSPeter Wemmand
83bc7413d0SPeter Wemm.Fn gethostbyaddr
84bc7413d0SPeter Wemmfunctions
85fdf4c7afSPeter Wemmeach return a pointer to an object with the
86fdf4c7afSPeter Wemmfollowing structure describing an internet host
87fdf4c7afSPeter Wemmreferenced by name or by address, respectively.
884460a589SNik Clayton.Pp
894460a589SNik ClaytonThe
904460a589SNik Clayton.Fa name
912efeeba5SRuslan Ermilovargument passed to
924460a589SNik Clayton.Fn gethostbyname
934460a589SNik Claytonor
944460a589SNik Clayton.Fn gethostbyname2
95c634427cSRuslan Ermilovshould point to a
96c634427cSRuslan Ermilov.Dv NUL Ns -terminated
97c634427cSRuslan Ermilovhostname.
984460a589SNik ClaytonThe
994460a589SNik Clayton.Fa addr
1002efeeba5SRuslan Ermilovargument passed to
1014460a589SNik Clayton.Fn gethostbyaddr
1024460a589SNik Claytonshould point to an address which is
1034460a589SNik Clayton.Fa len
1044460a589SNik Claytonbytes long,
1054460a589SNik Claytonin binary form
1061a0a9345SRuslan Ermilov(i.e., not an IP address in human readable
107c634427cSRuslan Ermilov.Tn ASCII
108c634427cSRuslan Ermilovform).
1094460a589SNik ClaytonThe
1100237ec97SPawel Jakub Dawidek.Fa af
1112efeeba5SRuslan Ermilovargument specifies the address family
112c634427cSRuslan Ermilov(e.g.\&
113c634427cSRuslan Ermilov.Dv AF_INET , AF_INET6 ,
114c634427cSRuslan Ermilovetc.) of this address.
1154460a589SNik Clayton.Pp
1164460a589SNik ClaytonThe structure returned contains either the information obtained from the name
1174460a589SNik Claytonserver,
118bc7413d0SPeter Wemm.Xr named 8 ,
119248aee62SJacques Vidrinebroken-out fields from a line in
120248aee62SJacques Vidrine.Pa /etc/hosts ,
121248aee62SJacques Vidrineor database entries supplied by the
122491a8429SRuslan Ermilov.Xr yp 8
123248aee62SJacques Vidrinesystem.
124248aee62SJacques VidrineThe order of the lookups is controlled by the
125248aee62SJacques Vidrine.Sq hosts
126248aee62SJacques Vidrineentry in
127248aee62SJacques Vidrine.Xr nsswitch.conf 5 .
128bc7413d0SPeter Wemm.Bd -literal
129fdf4c7afSPeter Wemmstruct	hostent {
130fdf4c7afSPeter Wemm	char	*h_name;	/* official name of host */
131fdf4c7afSPeter Wemm	char	**h_aliases;	/* alias list */
132fdf4c7afSPeter Wemm	int	h_addrtype;	/* host address type */
133fdf4c7afSPeter Wemm	int	h_length;	/* length of address */
134fdf4c7afSPeter Wemm	char	**h_addr_list;	/* list of addresses from name server */
135fdf4c7afSPeter Wemm};
136fdf4c7afSPeter Wemm#define	h_addr  h_addr_list[0]	/* address, for backward compatibility */
137bc7413d0SPeter Wemm.Ed
138bc7413d0SPeter Wemm.Pp
139fdf4c7afSPeter WemmThe members of this structure are:
140bc7413d0SPeter Wemm.Bl -tag -width h_addr_list
141c634427cSRuslan Ermilov.It Va h_name
142fdf4c7afSPeter WemmOfficial name of the host.
143c634427cSRuslan Ermilov.It Va h_aliases
144c634427cSRuslan ErmilovA
145c634427cSRuslan Ermilov.Dv NULL Ns -terminated
146c634427cSRuslan Ermilovarray of alternate names for the host.
147c634427cSRuslan Ermilov.It Va h_addrtype
148c293d821SPeter WemmThe type of address being returned; usually
149bc7413d0SPeter Wemm.Dv AF_INET .
150c634427cSRuslan Ermilov.It Va h_length
151fdf4c7afSPeter WemmThe length, in bytes, of the address.
152c634427cSRuslan Ermilov.It Va h_addr_list
153c634427cSRuslan ErmilovA
154c634427cSRuslan Ermilov.Dv NULL Ns -terminated
155c634427cSRuslan Ermilovarray of network addresses for the host.
156fdf4c7afSPeter WemmHost addresses are returned in network byte order.
157c634427cSRuslan Ermilov.It Va h_addr
158bc7413d0SPeter WemmThe first address in
159c634427cSRuslan Ermilov.Va h_addr_list ;
160bc7413d0SPeter Wemmthis is for backward compatibility.
161c293d821SPeter Wemm.El
162bc7413d0SPeter Wemm.Pp
163fdf4c7afSPeter WemmWhen using the nameserver,
164bc7413d0SPeter Wemm.Fn gethostbyname
165c293d821SPeter Wemmand
166aec5b6f6SAlexey Zelkin.Fn gethostbyname2
167fdf4c7afSPeter Wemmwill search for the named host in the current domain and its parents
168fdf4c7afSPeter Wemmunless the name ends in a dot.
169bc7413d0SPeter WemmIf the name contains no dot, and if the environment variable
170bc7413d0SPeter Wemm.Dq Ev HOSTALIASES
171fdf4c7afSPeter Wemmcontains the name of an alias file, the alias file will first be searched
172fdf4c7afSPeter Wemmfor an alias matching the input name.
173fdf4c7afSPeter WemmSee
174bc7413d0SPeter Wemm.Xr hostname 7
175fdf4c7afSPeter Wemmfor the domain search procedure and the alias file format.
176bc7413d0SPeter Wemm.Pp
177bc7413d0SPeter WemmThe
178c293d821SPeter Wemm.Fn gethostbyname2
179c293d821SPeter Wemmfunction is an evolution of
180c293d821SPeter Wemm.Fn gethostbyname
181c293d821SPeter Wemmwhich is intended to allow lookups in address families other than
182c293d821SPeter Wemm.Dv AF_INET ,
183c293d821SPeter Wemmfor example
184c293d821SPeter Wemm.Dv AF_INET6 .
185c293d821SPeter Wemm.Pp
186c293d821SPeter WemmThe
187bc7413d0SPeter Wemm.Fn sethostent
188bc7413d0SPeter Wemmfunction
189bc7413d0SPeter Wemmmay be used to request the use of a connected
190bc7413d0SPeter Wemm.Tn TCP
191bc7413d0SPeter Wemmsocket for queries.
1929eba44bfSCy SchubertQueries will by default use
193b1b1386fSCy Schubert.Tn UDP
194*75ea0b76SBenjamin Kadukdatagrams.
195*75ea0b76SBenjamin KadukIf the
196bc7413d0SPeter Wemm.Fa stayopen
197b1b1386fSCy Schubertflag is non-zero, a
198bc7413d0SPeter Wemm.Tn TCP
199*75ea0b76SBenjamin Kadukconnection to the name server will be used.
200*75ea0b76SBenjamin KadukIt will remain open after calls to
201c293d821SPeter Wemm.Fn gethostbyname ,
202c293d821SPeter Wemm.Fn gethostbyname2
203fdf4c7afSPeter Wemmor
204b1b1386fSCy Schubert.Fn gethostbyaddr
205b1b1386fSCy Schuberthave completed.
206bc7413d0SPeter Wemm.Pp
207bc7413d0SPeter WemmThe
208bc7413d0SPeter Wemm.Fn endhostent
209bc7413d0SPeter Wemmfunction
210bc7413d0SPeter Wemmcloses the
211bc7413d0SPeter Wemm.Tn TCP
212bc7413d0SPeter Wemmconnection.
213c293d821SPeter Wemm.Pp
214c293d821SPeter WemmThe
215c293d821SPeter Wemm.Fn herror
216c293d821SPeter Wemmfunction writes a message to the diagnostic output consisting of the
2172efeeba5SRuslan Ermilovstring argument
2182efeeba5SRuslan Ermilov.Fa string ,
219c634427cSRuslan Ermilovthe constant string
220c634427cSRuslan Ermilov.Qq Li ":\ " ,
221c634427cSRuslan Ermilovand a message corresponding to the value of
222c293d821SPeter Wemm.Va h_errno .
223c293d821SPeter Wemm.Pp
224c293d821SPeter WemmThe
225c293d821SPeter Wemm.Fn hstrerror
226c293d821SPeter Wemmfunction returns a string which is the message text corresponding to the
227c293d821SPeter Wemmvalue of the
228c293d821SPeter Wemm.Fa err
2292efeeba5SRuslan Ermilovargument.
230bc7413d0SPeter Wemm.Sh FILES
231248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
232bc7413d0SPeter Wemm.It Pa /etc/hosts
233248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
234c293d821SPeter Wemm.It Pa /etc/resolv.conf
235bc7413d0SPeter Wemm.El
2364460a589SNik Clayton.Sh EXAMPLES
2374460a589SNik ClaytonPrint out the hostname associated with a specific IP address:
238c634427cSRuslan Ermilov.Bd -literal -offset indent
2394460a589SNik Claytonconst char *ipstr = "127.0.0.1";
2404460a589SNik Claytonstruct in_addr ip;
2414460a589SNik Claytonstruct hostent *hp;
2424460a589SNik Clayton
2434460a589SNik Claytonif (!inet_aton(ipstr, &ip))
2444460a589SNik Clayton	errx(1, "can't parse IP address %s", ipstr);
2454460a589SNik Clayton
2463da59cd0SHajimu UMEMOTOif ((hp = gethostbyaddr((const void *)&ip,
2474460a589SNik Clayton    sizeof ip, AF_INET)) == NULL)
2484460a589SNik Clayton	errx(1, "no name associated with %s", ipstr);
2494460a589SNik Clayton
2504460a589SNik Claytonprintf("name associated with %s is %s\en", ipstr, hp->h_name);
251c634427cSRuslan Ermilov.Ed
252bc7413d0SPeter Wemm.Sh DIAGNOSTICS
253fdf4c7afSPeter WemmError return status from
254c293d821SPeter Wemm.Fn gethostbyname ,
255c293d821SPeter Wemm.Fn gethostbyname2
256fdf4c7afSPeter Wemmand
257bc7413d0SPeter Wemm.Fn gethostbyaddr
258c634427cSRuslan Ermilovis indicated by return of a
259c634427cSRuslan Ermilov.Dv NULL
260c634427cSRuslan Ermilovpointer.
2616b0a380fSSam LawranceThe integer
262bc7413d0SPeter Wemm.Va h_errno
263fdf4c7afSPeter Wemmmay then be checked to see whether this is a temporary failure
264fdf4c7afSPeter Wemmor an invalid or unknown host.
265fdf4c7afSPeter WemmThe routine
266bc7413d0SPeter Wemm.Fn herror
267fdf4c7afSPeter Wemmcan be used to print an error message describing the failure.
268fdf4c7afSPeter WemmIf its argument
269bc7413d0SPeter Wemm.Fa string
270bc7413d0SPeter Wemmis
271c634427cSRuslan Ermilov.Pf non- Dv NULL ,
272bc7413d0SPeter Wemmit is printed, followed by a colon and a space.
273fdf4c7afSPeter WemmThe error message is printed with a trailing newline.
274bc7413d0SPeter Wemm.Pp
275bc7413d0SPeter WemmThe variable
276bc7413d0SPeter Wemm.Va h_errno
277fdf4c7afSPeter Wemmcan have the following values:
278bc7413d0SPeter Wemm.Bl -tag -width HOST_NOT_FOUND
279bc7413d0SPeter Wemm.It Dv HOST_NOT_FOUND
280fdf4c7afSPeter WemmNo such host is known.
281bc7413d0SPeter Wemm.It Dv TRY_AGAIN
282fdf4c7afSPeter WemmThis is usually a temporary error
283fdf4c7afSPeter Wemmand means that the local server did not receive
284fdf4c7afSPeter Wemma response from an authoritative server.
285fdf4c7afSPeter WemmA retry at some later time may succeed.
286bc7413d0SPeter Wemm.It Dv NO_RECOVERY
287fdf4c7afSPeter WemmSome unexpected server failure was encountered.
288fdf4c7afSPeter WemmThis is a non-recoverable error.
289bc7413d0SPeter Wemm.It Dv NO_DATA
290fdf4c7afSPeter WemmThe requested name is valid but does not have an IP address;
291fdf4c7afSPeter Wemmthis is not a temporary error.
292fdf4c7afSPeter WemmThis means that the name is known to the name server but there is no address
293fdf4c7afSPeter Wemmassociated with this name.
294fdf4c7afSPeter WemmAnother type of request to the name server using this domain name
295fdf4c7afSPeter Wemmwill result in an answer;
296fdf4c7afSPeter Wemmfor example, a mail-forwarder may be registered for this domain.
297bc7413d0SPeter Wemm.El
298bc7413d0SPeter Wemm.Sh SEE ALSO
2991fed0019SArchie Cobbs.Xr getaddrinfo 3 ,
3003bc371d2SRuslan Ermilov.Xr getnameinfo 3 ,
301a289e937SRuslan Ermilov.Xr inet_aton 3 ,
302bc7413d0SPeter Wemm.Xr resolver 3 ,
303bc7413d0SPeter Wemm.Xr hosts 5 ,
304bc7413d0SPeter Wemm.Xr hostname 7 ,
305bc7413d0SPeter Wemm.Xr named 8
306bc7413d0SPeter Wemm.Sh CAVEAT
307bc7413d0SPeter WemmThe
308bc7413d0SPeter Wemm.Fn gethostent
309bc7413d0SPeter Wemmfunction
310fdf4c7afSPeter Wemmis defined, and
311bc7413d0SPeter Wemm.Fn sethostent
312fdf4c7afSPeter Wemmand
313bc7413d0SPeter Wemm.Fn endhostent
314fdf4c7afSPeter Wemmare redefined,
315fdf4c7afSPeter Wemmwhen
316fe71ab1cSPhilippe Charnier.Lb libc
317fdf4c7afSPeter Wemmis built to use only the routines to lookup in
318bc7413d0SPeter Wemm.Pa /etc/hosts
319fdf4c7afSPeter Wemmand not the name server.
320bc7413d0SPeter Wemm.Pp
321bc7413d0SPeter WemmThe
322bc7413d0SPeter Wemm.Fn gethostent
323bc7413d0SPeter Wemmfunction
324fdf4c7afSPeter Wemmreads the next line of
325bc7413d0SPeter Wemm.Pa /etc/hosts ,
326fdf4c7afSPeter Wemmopening the file if necessary.
327bc7413d0SPeter Wemm.Pp
328bc7413d0SPeter WemmThe
329bc7413d0SPeter Wemm.Fn sethostent
330bc7413d0SPeter Wemmfunction
331bc7413d0SPeter Wemmopens and/or rewinds the file
332bc7413d0SPeter Wemm.Pa /etc/hosts .
333bc7413d0SPeter WemmIf the
334bc7413d0SPeter Wemm.Fa stayopen
335fdf4c7afSPeter Wemmargument is non-zero,
336bc7413d0SPeter Wemmthe file will not be closed after each call to
337c293d821SPeter Wemm.Fn gethostbyname ,
338c293d821SPeter Wemm.Fn gethostbyname2
339fdf4c7afSPeter Wemmor
340bc7413d0SPeter Wemm.Fn gethostbyaddr .
341bc7413d0SPeter Wemm.Pp
342bc7413d0SPeter WemmThe
343bc7413d0SPeter Wemm.Fn endhostent
344bc7413d0SPeter Wemmfunction
345bc7413d0SPeter Wemmcloses the file.
346bc7413d0SPeter Wemm.Sh HISTORY
347bc7413d0SPeter WemmThe
348bc7413d0SPeter Wemm.Fn herror
349bc7413d0SPeter Wemmfunction appeared in
350bc7413d0SPeter Wemm.Bx 4.3 .
351bc7413d0SPeter WemmThe
352bc7413d0SPeter Wemm.Fn endhostent ,
353bc7413d0SPeter Wemm.Fn gethostbyaddr ,
354bc7413d0SPeter Wemm.Fn gethostbyname ,
355bc7413d0SPeter Wemm.Fn gethostent ,
356bc7413d0SPeter Wemmand
357bc7413d0SPeter Wemm.Fn sethostent
358bc7413d0SPeter Wemmfunctions appeared in
359bc7413d0SPeter Wemm.Bx 4.2 .
360c293d821SPeter WemmThe
361c293d821SPeter Wemm.Fn gethostbyname2
362c634427cSRuslan Ermilovfunction first appeared in
363c634427cSRuslan Ermilov.Tn BIND
364c634427cSRuslan Ermilovversion 4.9.4.
365bc7413d0SPeter Wemm.Sh BUGS
366aa2f4ec7SHajimu UMEMOTOThese functions use a thread-specific data storage;
367bc7413d0SPeter Wemmif the data is needed for future use, it should be
368bc7413d0SPeter Wemmcopied before any subsequent calls overwrite it.
369aa2f4ec7SHajimu UMEMOTO.Pp
370aa2f4ec7SHajimu UMEMOTOThough these functions are thread-safe,
371aa2f4ec7SHajimu UMEMOTOstill it is recommended to use the
37233dee819SBrian Feldman.Xr getaddrinfo 3
373aa2f4ec7SHajimu UMEMOTOfamily of functions, instead.
374aa2f4ec7SHajimu UMEMOTO.Pp
375bc7413d0SPeter WemmOnly the Internet
376fdf4c7afSPeter Wemmaddress format is currently understood.
377