xref: /freebsd/lib/libc/net/gethostbyname.3 (revision 3bc371d25d4386a85ff3c0f6e38d8fe9dd4e2c89)
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.
12bc7413d0SPeter Wemm.\" 3. All advertising materials mentioning features or use of this software
13bc7413d0SPeter Wemm.\"    must display the following acknowledgement:
14bc7413d0SPeter Wemm.\"	This product includes software developed by the University of
15bc7413d0SPeter Wemm.\"	California, Berkeley and its contributors.
16bc7413d0SPeter Wemm.\" 4. Neither the name of the University nor the names of its contributors
17bc7413d0SPeter Wemm.\"    may be used to endorse or promote products derived from this software
18bc7413d0SPeter Wemm.\"    without specific prior written permission.
19fdf4c7afSPeter Wemm.\"
20bc7413d0SPeter Wemm.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21bc7413d0SPeter Wemm.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22bc7413d0SPeter Wemm.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23bc7413d0SPeter Wemm.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24bc7413d0SPeter Wemm.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25bc7413d0SPeter Wemm.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26bc7413d0SPeter Wemm.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27bc7413d0SPeter Wemm.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28bc7413d0SPeter Wemm.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29bc7413d0SPeter Wemm.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30bc7413d0SPeter Wemm.\" SUCH DAMAGE.
31fdf4c7afSPeter Wemm.\"
32577b61c6SPhilippe Charnier.\"     From: @(#)gethostbyname.3	8.4 (Berkeley) 5/25/95
337f3dea24SPeter Wemm.\" $FreeBSD$
34bc7413d0SPeter Wemm.\"
35c293d821SPeter Wemm.Dd May 25, 1995
36bc7413d0SPeter Wemm.Dt GETHOSTBYNAME 3
37a307d598SRuslan Ermilov.Os
38bc7413d0SPeter Wemm.Sh NAME
39bc7413d0SPeter Wemm.Nm gethostbyname ,
40c293d821SPeter Wemm.Nm gethostbyname2 ,
41bc7413d0SPeter Wemm.Nm gethostbyaddr ,
42bc7413d0SPeter Wemm.Nm gethostent ,
43bc7413d0SPeter Wemm.Nm sethostent ,
44bc7413d0SPeter Wemm.Nm endhostent ,
45c293d821SPeter Wemm.Nm herror ,
46c293d821SPeter Wemm.Nm hstrerror
47bc7413d0SPeter Wemm.Nd get network host entry
4825bb73e0SAlexey Zelkin.Sh LIBRARY
4925bb73e0SAlexey Zelkin.Lb libc
50bc7413d0SPeter Wemm.Sh SYNOPSIS
51bc7413d0SPeter Wemm.Fd #include <netdb.h>
52c7091c31SBruce Evans.Vt extern int h_errno ;
53bc7413d0SPeter Wemm.Ft struct hostent *
54d3281e16SJohn Polstra.Fn gethostbyname "const char *name"
55bc7413d0SPeter Wemm.Ft struct hostent *
56c293d821SPeter Wemm.Fn gethostbyname2 "const char *name" "int af"
57c293d821SPeter Wemm.Ft struct hostent *
58d3281e16SJohn Polstra.Fn gethostbyaddr "const char *addr" "int len" "int type"
59bc7413d0SPeter Wemm.Ft struct hostent *
60bc7413d0SPeter Wemm.Fn gethostent void
613ce29386SBruce Evans.Ft void
62bc7413d0SPeter Wemm.Fn sethostent "int stayopen"
633ce29386SBruce Evans.Ft void
64bc7413d0SPeter Wemm.Fn endhostent void
653ce29386SBruce Evans.Ft void
66d3281e16SJohn Polstra.Fn herror "const char *string"
67c293d821SPeter Wemm.Ft const char *
68c293d821SPeter Wemm.Fn hstrerror "int err"
69bc7413d0SPeter Wemm.Sh DESCRIPTION
703bc371d2SRuslan Ermilov.Bf -symbolic
713bc371d2SRuslan ErmilovThe
723bc371d2SRuslan Ermilov.Xr getaddrinfo 3
733bc371d2SRuslan Ermilovand
743bc371d2SRuslan Ermilov.Xr getnameinfo 3
753bc371d2SRuslan Ermilovfunctions are preferred over the
763bc371d2SRuslan Ermilov.Fn gethostbyname ,
773bc371d2SRuslan Ermilov.Fn gethostbyname2 ,
783bc371d2SRuslan Ermilovand
793bc371d2SRuslan Ermilov.Fn gethostbyaddr
803bc371d2SRuslan Ermilovfunctions.
813bc371d2SRuslan Ermilov.Ef
823bc371d2SRuslan Ermilov.Pp
83bc7413d0SPeter WemmThe
84c293d821SPeter Wemm.Fn gethostbyname ,
85c293d821SPeter Wemm.Fn gethostbyname2
86fdf4c7afSPeter Wemmand
87bc7413d0SPeter Wemm.Fn gethostbyaddr
88bc7413d0SPeter Wemmfunctions
89fdf4c7afSPeter Wemmeach return a pointer to an object with the
90fdf4c7afSPeter Wemmfollowing structure describing an internet host
91fdf4c7afSPeter Wemmreferenced by name or by address, respectively.
924460a589SNik Clayton.Pp
934460a589SNik ClaytonThe
944460a589SNik Clayton.Fa name
954460a589SNik Claytonparameter passed to
964460a589SNik Clayton.Fn gethostbyname
974460a589SNik Claytonor
984460a589SNik Clayton.Fn gethostbyname2
99c634427cSRuslan Ermilovshould point to a
100c634427cSRuslan Ermilov.Dv NUL Ns -terminated
101c634427cSRuslan Ermilovhostname.
1024460a589SNik ClaytonThe
1034460a589SNik Clayton.Fa addr
1044460a589SNik Claytonparameter passed to
1054460a589SNik Clayton.Fn gethostbyaddr
1064460a589SNik Claytonshould point to an address which is
1074460a589SNik Clayton.Fa len
1084460a589SNik Claytonbytes long,
1094460a589SNik Claytonin binary form
110c634427cSRuslan Ermilov(i.e. not an IP address in human readable
111c634427cSRuslan Ermilov.Tn ASCII
112c634427cSRuslan Ermilovform).
1134460a589SNik ClaytonThe
1144460a589SNik Clayton.Fa type
1154460a589SNik Claytonparameter specifies the address family
116c634427cSRuslan Ermilov(e.g.\&
117c634427cSRuslan Ermilov.Dv AF_INET , AF_INET6 ,
118c634427cSRuslan Ermilovetc.) of this address.
1194460a589SNik Clayton.Pp
1204460a589SNik ClaytonThe structure returned contains either the information obtained from the name
1214460a589SNik Claytonserver,
122bc7413d0SPeter Wemm.Xr named 8 ,
123248aee62SJacques Vidrinebroken-out fields from a line in
124248aee62SJacques Vidrine.Pa /etc/hosts ,
125248aee62SJacques Vidrineor database entries supplied by the
126248aee62SJacques Vidrine.Xr yp 4
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.
196fdf4c7afSPeter WemmIf the
197bc7413d0SPeter Wemm.Fa stayopen
198fdf4c7afSPeter Wemmflag is non-zero,
199bc7413d0SPeter Wemmthis sets the option to send all queries to the name server using
200bc7413d0SPeter Wemm.Tn TCP
201fdf4c7afSPeter Wemmand to retain the connection after each call to
202c293d821SPeter Wemm.Fn gethostbyname ,
203c293d821SPeter Wemm.Fn gethostbyname2
204fdf4c7afSPeter Wemmor
205bc7413d0SPeter Wemm.Fn gethostbyaddr .
206bc7413d0SPeter WemmOtherwise, queries are performed using
207bc7413d0SPeter Wemm.Tn UDP
208bc7413d0SPeter Wemmdatagrams.
209bc7413d0SPeter Wemm.Pp
210bc7413d0SPeter WemmThe
211bc7413d0SPeter Wemm.Fn endhostent
212bc7413d0SPeter Wemmfunction
213bc7413d0SPeter Wemmcloses the
214bc7413d0SPeter Wemm.Tn TCP
215bc7413d0SPeter Wemmconnection.
216c293d821SPeter Wemm.Pp
217c293d821SPeter WemmThe
218c293d821SPeter Wemm.Fn herror
219c293d821SPeter Wemmfunction writes a message to the diagnostic output consisting of the
220c293d821SPeter Wemmstring parameter
221c293d821SPeter Wemm.Fa s ,
222c634427cSRuslan Ermilovthe constant string
223c634427cSRuslan Ermilov.Qq Li ":\ " ,
224c634427cSRuslan Ermilovand a message corresponding to the value of
225c293d821SPeter Wemm.Va h_errno .
226c293d821SPeter Wemm.Pp
227c293d821SPeter WemmThe
228c293d821SPeter Wemm.Fn hstrerror
229c293d821SPeter Wemmfunction returns a string which is the message text corresponding to the
230c293d821SPeter Wemmvalue of the
231c293d821SPeter Wemm.Fa err
232c293d821SPeter Wemmparameter.
233bc7413d0SPeter Wemm.Sh FILES
234248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
235bc7413d0SPeter Wemm.It Pa /etc/hosts
236248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
237c293d821SPeter Wemm.It Pa /etc/resolv.conf
238bc7413d0SPeter Wemm.El
2394460a589SNik Clayton.Sh EXAMPLES
2404460a589SNik ClaytonPrint out the hostname associated with a specific IP address:
241c634427cSRuslan Ermilov.Bd -literal -offset indent
2424460a589SNik Claytonconst char *ipstr = "127.0.0.1";
2434460a589SNik Claytonstruct in_addr ip;
2444460a589SNik Claytonstruct hostent *hp;
2454460a589SNik Clayton
2464460a589SNik Claytonif (!inet_aton(ipstr, &ip))
2474460a589SNik Clayton	errx(1, "can't parse IP address %s", ipstr);
2484460a589SNik Clayton
2494460a589SNik Claytonif ((hp = gethostbyaddr((const char *)&ip,
2504460a589SNik Clayton    sizeof ip, AF_INET)) == NULL)
2514460a589SNik Clayton	errx(1, "no name associated with %s", ipstr);
2524460a589SNik Clayton
2534460a589SNik Claytonprintf("name associated with %s is %s\en", ipstr, hp->h_name);
254c634427cSRuslan Ermilov.Ed
255bc7413d0SPeter Wemm.Sh DIAGNOSTICS
256fdf4c7afSPeter WemmError return status from
257c293d821SPeter Wemm.Fn gethostbyname ,
258c293d821SPeter Wemm.Fn gethostbyname2
259fdf4c7afSPeter Wemmand
260bc7413d0SPeter Wemm.Fn gethostbyaddr
261c634427cSRuslan Ermilovis indicated by return of a
262c634427cSRuslan Ermilov.Dv NULL
263c634427cSRuslan Ermilovpointer.
264fdf4c7afSPeter WemmThe external integer
265bc7413d0SPeter Wemm.Va h_errno
266fdf4c7afSPeter Wemmmay then be checked to see whether this is a temporary failure
267fdf4c7afSPeter Wemmor an invalid or unknown host.
268fdf4c7afSPeter WemmThe routine
269bc7413d0SPeter Wemm.Fn herror
270fdf4c7afSPeter Wemmcan be used to print an error message describing the failure.
271fdf4c7afSPeter WemmIf its argument
272bc7413d0SPeter Wemm.Fa string
273bc7413d0SPeter Wemmis
274c634427cSRuslan Ermilov.Pf non- Dv NULL ,
275bc7413d0SPeter Wemmit is printed, followed by a colon and a space.
276fdf4c7afSPeter WemmThe error message is printed with a trailing newline.
277bc7413d0SPeter Wemm.Pp
278bc7413d0SPeter WemmThe variable
279bc7413d0SPeter Wemm.Va h_errno
280fdf4c7afSPeter Wemmcan have the following values:
281bc7413d0SPeter Wemm.Bl -tag -width HOST_NOT_FOUND
282bc7413d0SPeter Wemm.It Dv HOST_NOT_FOUND
283fdf4c7afSPeter WemmNo such host is known.
284bc7413d0SPeter Wemm.It Dv TRY_AGAIN
285fdf4c7afSPeter WemmThis is usually a temporary error
286fdf4c7afSPeter Wemmand means that the local server did not receive
287fdf4c7afSPeter Wemma response from an authoritative server.
288fdf4c7afSPeter WemmA retry at some later time may succeed.
289bc7413d0SPeter Wemm.It Dv NO_RECOVERY
290fdf4c7afSPeter WemmSome unexpected server failure was encountered.
291fdf4c7afSPeter WemmThis is a non-recoverable error.
292bc7413d0SPeter Wemm.It Dv NO_DATA
293fdf4c7afSPeter WemmThe requested name is valid but does not have an IP address;
294fdf4c7afSPeter Wemmthis is not a temporary error.
295fdf4c7afSPeter WemmThis means that the name is known to the name server but there is no address
296fdf4c7afSPeter Wemmassociated with this name.
297fdf4c7afSPeter WemmAnother type of request to the name server using this domain name
298fdf4c7afSPeter Wemmwill result in an answer;
299fdf4c7afSPeter Wemmfor example, a mail-forwarder may be registered for this domain.
300bc7413d0SPeter Wemm.El
301bc7413d0SPeter Wemm.Sh SEE ALSO
3021fed0019SArchie Cobbs.Xr getaddrinfo 3 ,
3033bc371d2SRuslan Ermilov.Xr getnameinfo 3 ,
304a289e937SRuslan Ermilov.Xr inet_aton 3 ,
305bc7413d0SPeter Wemm.Xr resolver 3 ,
306bc7413d0SPeter Wemm.Xr hosts 5 ,
307bc7413d0SPeter Wemm.Xr hostname 7 ,
308bc7413d0SPeter Wemm.Xr named 8
309bc7413d0SPeter Wemm.Sh CAVEAT
310bc7413d0SPeter WemmThe
311bc7413d0SPeter Wemm.Fn gethostent
312bc7413d0SPeter Wemmfunction
313fdf4c7afSPeter Wemmis defined, and
314bc7413d0SPeter Wemm.Fn sethostent
315fdf4c7afSPeter Wemmand
316bc7413d0SPeter Wemm.Fn endhostent
317fdf4c7afSPeter Wemmare redefined,
318fdf4c7afSPeter Wemmwhen
319bc7413d0SPeter Wemm.Xr libc 3
320fdf4c7afSPeter Wemmis built to use only the routines to lookup in
321bc7413d0SPeter Wemm.Pa /etc/hosts
322fdf4c7afSPeter Wemmand not the name server.
323bc7413d0SPeter Wemm.Pp
324bc7413d0SPeter WemmThe
325bc7413d0SPeter Wemm.Fn gethostent
326bc7413d0SPeter Wemmfunction
327fdf4c7afSPeter Wemmreads the next line of
328bc7413d0SPeter Wemm.Pa /etc/hosts ,
329fdf4c7afSPeter Wemmopening the file if necessary.
330bc7413d0SPeter Wemm.Pp
331bc7413d0SPeter WemmThe
332bc7413d0SPeter Wemm.Fn sethostent
333bc7413d0SPeter Wemmfunction
334bc7413d0SPeter Wemmopens and/or rewinds the file
335bc7413d0SPeter Wemm.Pa /etc/hosts .
336bc7413d0SPeter WemmIf the
337bc7413d0SPeter Wemm.Fa stayopen
338fdf4c7afSPeter Wemmargument is non-zero,
339bc7413d0SPeter Wemmthe file will not be closed after each call to
340c293d821SPeter Wemm.Fn gethostbyname ,
341c293d821SPeter Wemm.Fn gethostbyname2
342fdf4c7afSPeter Wemmor
343bc7413d0SPeter Wemm.Fn gethostbyaddr .
344bc7413d0SPeter Wemm.Pp
345bc7413d0SPeter WemmThe
346bc7413d0SPeter Wemm.Fn endhostent
347bc7413d0SPeter Wemmfunction
348bc7413d0SPeter Wemmcloses the file.
349bc7413d0SPeter Wemm.Sh HISTORY
350bc7413d0SPeter WemmThe
351bc7413d0SPeter Wemm.Fn herror
352bc7413d0SPeter Wemmfunction appeared in
353bc7413d0SPeter Wemm.Bx 4.3 .
354bc7413d0SPeter WemmThe
355bc7413d0SPeter Wemm.Fn endhostent ,
356bc7413d0SPeter Wemm.Fn gethostbyaddr ,
357bc7413d0SPeter Wemm.Fn gethostbyname ,
358bc7413d0SPeter Wemm.Fn gethostent ,
359bc7413d0SPeter Wemmand
360bc7413d0SPeter Wemm.Fn sethostent
361bc7413d0SPeter Wemmfunctions appeared in
362bc7413d0SPeter Wemm.Bx 4.2 .
363c293d821SPeter WemmThe
364c293d821SPeter Wemm.Fn gethostbyname2
365c634427cSRuslan Ermilovfunction first appeared in
366c634427cSRuslan Ermilov.Tn BIND
367c634427cSRuslan Ermilovversion 4.9.4.
368bc7413d0SPeter Wemm.Sh BUGS
369bc7413d0SPeter WemmThese functions use static data storage;
370bc7413d0SPeter Wemmif the data is needed for future use, it should be
371bc7413d0SPeter Wemmcopied before any subsequent calls overwrite it.
372bc7413d0SPeter WemmOnly the Internet
373fdf4c7afSPeter Wemmaddress format is currently understood.
374bda3261eSAlexander Langer.Pp
375bda3261eSAlexander Langer.Fn gethostbyname2
376bda3261eSAlexander Langercannot perform
377bda3261eSAlexander Langer.Dv AF_INET6
378bda3261eSAlexander Langerlookups over NIS.
379bda3261eSAlexander Langer.Xr getaddrinfo 3
380bda3261eSAlexander Langermust be used instead.
381