xref: /freebsd/lib/libc/net/gethostbyname.3 (revision c634427cd5f36638ae6002f83e098e15ada8a136)
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
37bc7413d0SPeter Wemm.Os BSD 4.2
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
70bc7413d0SPeter WemmThe
71c293d821SPeter Wemm.Fn gethostbyname ,
72c293d821SPeter Wemm.Fn gethostbyname2
73fdf4c7afSPeter Wemmand
74bc7413d0SPeter Wemm.Fn gethostbyaddr
75bc7413d0SPeter Wemmfunctions
76fdf4c7afSPeter Wemmeach return a pointer to an object with the
77fdf4c7afSPeter Wemmfollowing structure describing an internet host
78fdf4c7afSPeter Wemmreferenced by name or by address, respectively.
794460a589SNik Clayton.Pp
804460a589SNik ClaytonThe
814460a589SNik Clayton.Fa name
824460a589SNik Claytonparameter passed to
834460a589SNik Clayton.Fn gethostbyname
844460a589SNik Claytonor
854460a589SNik Clayton.Fn gethostbyname2
86c634427cSRuslan Ermilovshould point to a
87c634427cSRuslan Ermilov.Dv NUL Ns -terminated
88c634427cSRuslan Ermilovhostname.
894460a589SNik ClaytonThe
904460a589SNik Clayton.Fa addr
914460a589SNik Claytonparameter passed to
924460a589SNik Clayton.Fn gethostbyaddr
934460a589SNik Claytonshould point to an address which is
944460a589SNik Clayton.Fa len
954460a589SNik Claytonbytes long,
964460a589SNik Claytonin binary form
97c634427cSRuslan Ermilov(i.e. not an IP address in human readable
98c634427cSRuslan Ermilov.Tn ASCII
99c634427cSRuslan Ermilovform).
1004460a589SNik ClaytonThe
1014460a589SNik Clayton.Fa type
1024460a589SNik Claytonparameter specifies the address family
103c634427cSRuslan Ermilov(e.g.\&
104c634427cSRuslan Ermilov.Dv AF_INET , AF_INET6 ,
105c634427cSRuslan Ermilovetc.) of this address.
1064460a589SNik Clayton.Pp
1074460a589SNik ClaytonThe structure returned contains either the information obtained from the name
1084460a589SNik Claytonserver,
109bc7413d0SPeter Wemm.Xr named 8 ,
110248aee62SJacques Vidrinebroken-out fields from a line in
111248aee62SJacques Vidrine.Pa /etc/hosts ,
112248aee62SJacques Vidrineor database entries supplied by the
113248aee62SJacques Vidrine.Xr yp 4
114248aee62SJacques Vidrinesystem.
115248aee62SJacques VidrineThe order of the lookups is controlled by the
116248aee62SJacques Vidrine.Sq hosts
117248aee62SJacques Vidrineentry in
118248aee62SJacques Vidrine.Xr nsswitch.conf 5 .
119bc7413d0SPeter Wemm.Bd -literal
120fdf4c7afSPeter Wemmstruct	hostent {
121fdf4c7afSPeter Wemm	char	*h_name;	/* official name of host */
122fdf4c7afSPeter Wemm	char	**h_aliases;	/* alias list */
123fdf4c7afSPeter Wemm	int	h_addrtype;	/* host address type */
124fdf4c7afSPeter Wemm	int	h_length;	/* length of address */
125fdf4c7afSPeter Wemm	char	**h_addr_list;	/* list of addresses from name server */
126fdf4c7afSPeter Wemm};
127fdf4c7afSPeter Wemm#define	h_addr  h_addr_list[0]	/* address, for backward compatibility */
128bc7413d0SPeter Wemm.Ed
129bc7413d0SPeter Wemm.Pp
130fdf4c7afSPeter WemmThe members of this structure are:
131bc7413d0SPeter Wemm.Bl -tag -width h_addr_list
132c634427cSRuslan Ermilov.It Va h_name
133fdf4c7afSPeter WemmOfficial name of the host.
134c634427cSRuslan Ermilov.It Va h_aliases
135c634427cSRuslan ErmilovA
136c634427cSRuslan Ermilov.Dv NULL Ns -terminated
137c634427cSRuslan Ermilovarray of alternate names for the host.
138c634427cSRuslan Ermilov.It Va h_addrtype
139c293d821SPeter WemmThe type of address being returned; usually
140bc7413d0SPeter Wemm.Dv AF_INET .
141c634427cSRuslan Ermilov.It Va h_length
142fdf4c7afSPeter WemmThe length, in bytes, of the address.
143c634427cSRuslan Ermilov.It Va h_addr_list
144c634427cSRuslan ErmilovA
145c634427cSRuslan Ermilov.Dv NULL Ns -terminated
146c634427cSRuslan Ermilovarray of network addresses for the host.
147fdf4c7afSPeter WemmHost addresses are returned in network byte order.
148c634427cSRuslan Ermilov.It Va h_addr
149bc7413d0SPeter WemmThe first address in
150c634427cSRuslan Ermilov.Va h_addr_list ;
151bc7413d0SPeter Wemmthis is for backward compatibility.
152c293d821SPeter Wemm.El
153bc7413d0SPeter Wemm.Pp
154fdf4c7afSPeter WemmWhen using the nameserver,
155bc7413d0SPeter Wemm.Fn gethostbyname
156c293d821SPeter Wemmand
157aec5b6f6SAlexey Zelkin.Fn gethostbyname2
158fdf4c7afSPeter Wemmwill search for the named host in the current domain and its parents
159fdf4c7afSPeter Wemmunless the name ends in a dot.
160bc7413d0SPeter WemmIf the name contains no dot, and if the environment variable
161bc7413d0SPeter Wemm.Dq Ev HOSTALIASES
162fdf4c7afSPeter Wemmcontains the name of an alias file, the alias file will first be searched
163fdf4c7afSPeter Wemmfor an alias matching the input name.
164fdf4c7afSPeter WemmSee
165bc7413d0SPeter Wemm.Xr hostname 7
166fdf4c7afSPeter Wemmfor the domain search procedure and the alias file format.
167bc7413d0SPeter Wemm.Pp
168bc7413d0SPeter WemmThe
169c293d821SPeter Wemm.Fn gethostbyname2
170c293d821SPeter Wemmfunction is an evolution of
171c293d821SPeter Wemm.Fn gethostbyname
172c293d821SPeter Wemmwhich is intended to allow lookups in address families other than
173c293d821SPeter Wemm.Dv AF_INET ,
174c293d821SPeter Wemmfor example
175c293d821SPeter Wemm.Dv AF_INET6 .
176c293d821SPeter Wemm.Pp
177c293d821SPeter WemmThe
178bc7413d0SPeter Wemm.Fn sethostent
179bc7413d0SPeter Wemmfunction
180bc7413d0SPeter Wemmmay be used to request the use of a connected
181bc7413d0SPeter Wemm.Tn TCP
182bc7413d0SPeter Wemmsocket for queries.
183fdf4c7afSPeter WemmIf the
184bc7413d0SPeter Wemm.Fa stayopen
185fdf4c7afSPeter Wemmflag is non-zero,
186bc7413d0SPeter Wemmthis sets the option to send all queries to the name server using
187bc7413d0SPeter Wemm.Tn TCP
188fdf4c7afSPeter Wemmand to retain the connection after each call to
189c293d821SPeter Wemm.Fn gethostbyname ,
190c293d821SPeter Wemm.Fn gethostbyname2
191fdf4c7afSPeter Wemmor
192bc7413d0SPeter Wemm.Fn gethostbyaddr .
193bc7413d0SPeter WemmOtherwise, queries are performed using
194bc7413d0SPeter Wemm.Tn UDP
195bc7413d0SPeter Wemmdatagrams.
196bc7413d0SPeter Wemm.Pp
197bc7413d0SPeter WemmThe
198bc7413d0SPeter Wemm.Fn endhostent
199bc7413d0SPeter Wemmfunction
200bc7413d0SPeter Wemmcloses the
201bc7413d0SPeter Wemm.Tn TCP
202bc7413d0SPeter Wemmconnection.
203c293d821SPeter Wemm.Pp
204c293d821SPeter WemmThe
205c293d821SPeter Wemm.Fn herror
206c293d821SPeter Wemmfunction writes a message to the diagnostic output consisting of the
207c293d821SPeter Wemmstring parameter
208c293d821SPeter Wemm.Fa s ,
209c634427cSRuslan Ermilovthe constant string
210c634427cSRuslan Ermilov.Qq Li ":\ " ,
211c634427cSRuslan Ermilovand a message corresponding to the value of
212c293d821SPeter Wemm.Va h_errno .
213c293d821SPeter Wemm.Pp
214c293d821SPeter WemmThe
215c293d821SPeter Wemm.Fn hstrerror
216c293d821SPeter Wemmfunction returns a string which is the message text corresponding to the
217c293d821SPeter Wemmvalue of the
218c293d821SPeter Wemm.Fa err
219c293d821SPeter Wemmparameter.
220bc7413d0SPeter Wemm.Sh FILES
221248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
222bc7413d0SPeter Wemm.It Pa /etc/hosts
223248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
224c293d821SPeter Wemm.It Pa /etc/resolv.conf
225bc7413d0SPeter Wemm.El
2264460a589SNik Clayton.Sh EXAMPLES
2274460a589SNik ClaytonPrint out the hostname associated with a specific IP address:
228c634427cSRuslan Ermilov.Bd -literal -offset indent
2294460a589SNik Claytonconst char *ipstr = "127.0.0.1";
2304460a589SNik Claytonstruct in_addr ip;
2314460a589SNik Claytonstruct hostent *hp;
2324460a589SNik Clayton
2334460a589SNik Claytonif (!inet_aton(ipstr, &ip))
2344460a589SNik Clayton	errx(1, "can't parse IP address %s", ipstr);
2354460a589SNik Clayton
2364460a589SNik Claytonif ((hp = gethostbyaddr((const char *)&ip,
2374460a589SNik Clayton    sizeof ip, AF_INET)) == NULL)
2384460a589SNik Clayton	errx(1, "no name associated with %s", ipstr);
2394460a589SNik Clayton
2404460a589SNik Claytonprintf("name associated with %s is %s\en", ipstr, hp->h_name);
241c634427cSRuslan Ermilov.Ed
242bc7413d0SPeter Wemm.Sh DIAGNOSTICS
243fdf4c7afSPeter WemmError return status from
244c293d821SPeter Wemm.Fn gethostbyname ,
245c293d821SPeter Wemm.Fn gethostbyname2
246fdf4c7afSPeter Wemmand
247bc7413d0SPeter Wemm.Fn gethostbyaddr
248c634427cSRuslan Ermilovis indicated by return of a
249c634427cSRuslan Ermilov.Dv NULL
250c634427cSRuslan Ermilovpointer.
251fdf4c7afSPeter WemmThe external integer
252bc7413d0SPeter Wemm.Va h_errno
253fdf4c7afSPeter Wemmmay then be checked to see whether this is a temporary failure
254fdf4c7afSPeter Wemmor an invalid or unknown host.
255fdf4c7afSPeter WemmThe routine
256bc7413d0SPeter Wemm.Fn herror
257fdf4c7afSPeter Wemmcan be used to print an error message describing the failure.
258fdf4c7afSPeter WemmIf its argument
259bc7413d0SPeter Wemm.Fa string
260bc7413d0SPeter Wemmis
261c634427cSRuslan Ermilov.Pf non- Dv NULL ,
262bc7413d0SPeter Wemmit is printed, followed by a colon and a space.
263fdf4c7afSPeter WemmThe error message is printed with a trailing newline.
264bc7413d0SPeter Wemm.Pp
265bc7413d0SPeter WemmThe variable
266bc7413d0SPeter Wemm.Va h_errno
267fdf4c7afSPeter Wemmcan have the following values:
268bc7413d0SPeter Wemm.Bl -tag -width HOST_NOT_FOUND
269bc7413d0SPeter Wemm.It Dv HOST_NOT_FOUND
270fdf4c7afSPeter WemmNo such host is known.
271bc7413d0SPeter Wemm.It Dv TRY_AGAIN
272fdf4c7afSPeter WemmThis is usually a temporary error
273fdf4c7afSPeter Wemmand means that the local server did not receive
274fdf4c7afSPeter Wemma response from an authoritative server.
275fdf4c7afSPeter WemmA retry at some later time may succeed.
276bc7413d0SPeter Wemm.It Dv NO_RECOVERY
277fdf4c7afSPeter WemmSome unexpected server failure was encountered.
278fdf4c7afSPeter WemmThis is a non-recoverable error.
279bc7413d0SPeter Wemm.It Dv NO_DATA
280fdf4c7afSPeter WemmThe requested name is valid but does not have an IP address;
281fdf4c7afSPeter Wemmthis is not a temporary error.
282fdf4c7afSPeter WemmThis means that the name is known to the name server but there is no address
283fdf4c7afSPeter Wemmassociated with this name.
284fdf4c7afSPeter WemmAnother type of request to the name server using this domain name
285fdf4c7afSPeter Wemmwill result in an answer;
286fdf4c7afSPeter Wemmfor example, a mail-forwarder may be registered for this domain.
287bc7413d0SPeter Wemm.El
288bc7413d0SPeter Wemm.Sh SEE ALSO
2894460a589SNik Clayton.Xr inet_aton 3 ,
290bc7413d0SPeter Wemm.Xr resolver 3 ,
291bc7413d0SPeter Wemm.Xr hosts 5 ,
292bc7413d0SPeter Wemm.Xr hostname 7 ,
293bc7413d0SPeter Wemm.Xr named 8
294bc7413d0SPeter Wemm.Sh CAVEAT
295bc7413d0SPeter WemmThe
296bc7413d0SPeter Wemm.Fn gethostent
297bc7413d0SPeter Wemmfunction
298fdf4c7afSPeter Wemmis defined, and
299bc7413d0SPeter Wemm.Fn sethostent
300fdf4c7afSPeter Wemmand
301bc7413d0SPeter Wemm.Fn endhostent
302fdf4c7afSPeter Wemmare redefined,
303fdf4c7afSPeter Wemmwhen
304bc7413d0SPeter Wemm.Xr libc 3
305fdf4c7afSPeter Wemmis built to use only the routines to lookup in
306bc7413d0SPeter Wemm.Pa /etc/hosts
307fdf4c7afSPeter Wemmand not the name server.
308bc7413d0SPeter Wemm.Pp
309bc7413d0SPeter WemmThe
310bc7413d0SPeter Wemm.Fn gethostent
311bc7413d0SPeter Wemmfunction
312fdf4c7afSPeter Wemmreads the next line of
313bc7413d0SPeter Wemm.Pa /etc/hosts ,
314fdf4c7afSPeter Wemmopening the file if necessary.
315bc7413d0SPeter Wemm.Pp
316bc7413d0SPeter WemmThe
317bc7413d0SPeter Wemm.Fn sethostent
318bc7413d0SPeter Wemmfunction
319bc7413d0SPeter Wemmopens and/or rewinds the file
320bc7413d0SPeter Wemm.Pa /etc/hosts .
321bc7413d0SPeter WemmIf the
322bc7413d0SPeter Wemm.Fa stayopen
323fdf4c7afSPeter Wemmargument is non-zero,
324bc7413d0SPeter Wemmthe file will not be closed after each call to
325c293d821SPeter Wemm.Fn gethostbyname ,
326c293d821SPeter Wemm.Fn gethostbyname2
327fdf4c7afSPeter Wemmor
328bc7413d0SPeter Wemm.Fn gethostbyaddr .
329bc7413d0SPeter Wemm.Pp
330bc7413d0SPeter WemmThe
331bc7413d0SPeter Wemm.Fn endhostent
332bc7413d0SPeter Wemmfunction
333bc7413d0SPeter Wemmcloses the file.
334bc7413d0SPeter Wemm.Sh HISTORY
335bc7413d0SPeter WemmThe
336bc7413d0SPeter Wemm.Fn herror
337bc7413d0SPeter Wemmfunction appeared in
338bc7413d0SPeter Wemm.Bx 4.3 .
339bc7413d0SPeter WemmThe
340bc7413d0SPeter Wemm.Fn endhostent ,
341bc7413d0SPeter Wemm.Fn gethostbyaddr ,
342bc7413d0SPeter Wemm.Fn gethostbyname ,
343bc7413d0SPeter Wemm.Fn gethostent ,
344bc7413d0SPeter Wemmand
345bc7413d0SPeter Wemm.Fn sethostent
346bc7413d0SPeter Wemmfunctions appeared in
347bc7413d0SPeter Wemm.Bx 4.2 .
348c293d821SPeter WemmThe
349c293d821SPeter Wemm.Fn gethostbyname2
350c634427cSRuslan Ermilovfunction first appeared in
351c634427cSRuslan Ermilov.Tn BIND
352c634427cSRuslan Ermilovversion 4.9.4.
353bc7413d0SPeter Wemm.Sh BUGS
354bc7413d0SPeter WemmThese functions use static data storage;
355bc7413d0SPeter Wemmif the data is needed for future use, it should be
356bc7413d0SPeter Wemmcopied before any subsequent calls overwrite it.
357bc7413d0SPeter WemmOnly the Internet
358fdf4c7afSPeter Wemmaddress format is currently understood.
359