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