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