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