11bf6f719SJun-ichiro itojun Hagino.\" $FreeBSD$ 21bf6f719SJun-ichiro itojun Hagino.\" $KAME: getipnodebyname.3,v 1.6 2000/08/09 21:16:17 itojun Exp $ 31bf6f719SJun-ichiro itojun Hagino.\" 47d56d374SYoshinobu Inoue.\" Copyright (c) 1983, 1987, 1991, 1993 57d56d374SYoshinobu Inoue.\" The Regents of the University of California. All rights reserved. 67d56d374SYoshinobu Inoue.\" 77d56d374SYoshinobu Inoue.\" Redistribution and use in source and binary forms, with or without 87d56d374SYoshinobu Inoue.\" modification, are permitted provided that the following conditions 97d56d374SYoshinobu Inoue.\" are met: 107d56d374SYoshinobu Inoue.\" 1. Redistributions of source code must retain the above copyright 117d56d374SYoshinobu Inoue.\" notice, this list of conditions and the following disclaimer. 127d56d374SYoshinobu Inoue.\" 2. Redistributions in binary form must reproduce the above copyright 137d56d374SYoshinobu Inoue.\" notice, this list of conditions and the following disclaimer in the 147d56d374SYoshinobu Inoue.\" documentation and/or other materials provided with the distribution. 157d56d374SYoshinobu Inoue.\" 3. All advertising materials mentioning features or use of this software 167d56d374SYoshinobu Inoue.\" must display the following acknowledgement: 177d56d374SYoshinobu Inoue.\" This product includes software developed by the University of 187d56d374SYoshinobu Inoue.\" California, Berkeley and its contributors. 197d56d374SYoshinobu Inoue.\" 4. Neither the name of the University nor the names of its contributors 207d56d374SYoshinobu Inoue.\" may be used to endorse or promote products derived from this software 217d56d374SYoshinobu Inoue.\" without specific prior written permission. 227d56d374SYoshinobu Inoue.\" 237d56d374SYoshinobu Inoue.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 247d56d374SYoshinobu Inoue.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 257d56d374SYoshinobu Inoue.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 267d56d374SYoshinobu Inoue.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 277d56d374SYoshinobu Inoue.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 287d56d374SYoshinobu Inoue.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 297d56d374SYoshinobu Inoue.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 307d56d374SYoshinobu Inoue.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 317d56d374SYoshinobu Inoue.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 327d56d374SYoshinobu Inoue.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 337d56d374SYoshinobu Inoue.\" SUCH DAMAGE. 347d56d374SYoshinobu Inoue.\" 357d56d374SYoshinobu Inoue.\" From: @(#)gethostbyname.3 8.4 (Berkeley) 5/25/95 367d56d374SYoshinobu Inoue.\" 377d56d374SYoshinobu Inoue.Dd May 25, 1995 387d56d374SYoshinobu Inoue.Dt GETIPNODEBYNAME 3 391bf6f719SJun-ichiro itojun Hagino.Os 407d56d374SYoshinobu Inoue.\" 417d56d374SYoshinobu Inoue.Sh NAME 427d56d374SYoshinobu Inoue.Nm getipnodebyname , 437d56d374SYoshinobu Inoue.Nm getipnodebyaddr , 447d56d374SYoshinobu Inoue.Nm freehostent 457d56d374SYoshinobu Inoue.Nd nodename-to-address and address-to-nodename translation 467d56d374SYoshinobu Inoue.\" 4725bb73e0SAlexey Zelkin.Sh LIBRARY 4825bb73e0SAlexey Zelkin.Lb libc 497d56d374SYoshinobu Inoue.Sh SYNOPSIS 506e79d3e3SBruce Evans.Fd #include <sys/types.h> 517d56d374SYoshinobu Inoue.Fd #include <sys/socket.h> 527d56d374SYoshinobu Inoue.Fd #include <netdb.h> 537d56d374SYoshinobu Inoue.Ft "struct hostent *" 547d56d374SYoshinobu Inoue.Fn getipnodebyname "const char *name" "int af" "int flags" "int *error_num" 557d56d374SYoshinobu Inoue.Ft "struct hostent *" 567d56d374SYoshinobu Inoue.Fn getipnodebyaddr "const void *src" "size_t len" "int af" "int *error_num" 577d56d374SYoshinobu Inoue.Ft void 587d56d374SYoshinobu Inoue.Fn freehostent "struct hostent *ptr" 597d56d374SYoshinobu Inoue.\" 607d56d374SYoshinobu Inoue.Sh DESCRIPTION 617d56d374SYoshinobu Inoue.Fn getipnodebyname 627d56d374SYoshinobu Inoueand 637d56d374SYoshinobu Inoue.Fn getipnodebyaddr 647d56d374SYoshinobu Inouefunctions are very similar to 657d56d374SYoshinobu Inoue.Xr gethostbyname 3 , 667d56d374SYoshinobu Inoue.Xr gethostbyname2 3 677d56d374SYoshinobu Inoueand 687d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 . 697d56d374SYoshinobu InoueThe functions cover all the functionalities provided by the older ones, 707d56d374SYoshinobu Inoueand provide better interface to programmers. 717d56d374SYoshinobu InoueThe functions require additional arguments, 727d56d374SYoshinobu Inoue.Ar af , 737d56d374SYoshinobu Inoueand 747d56d374SYoshinobu Inoue.Ar flags , 757d56d374SYoshinobu Inouefor specifying address family and operation mode. 767d56d374SYoshinobu InoueThe additional arguments allow programmer to get address for a nodename, 777d56d374SYoshinobu Inouefor specific address family 787d56d374SYoshinobu Inoue.Po 797d56d374SYoshinobu Inouesuch as 807d56d374SYoshinobu Inoue.Dv AF_INET 817d56d374SYoshinobu Inoueor 827d56d374SYoshinobu Inoue.Dv AF_INET6 837d56d374SYoshinobu Inoue.Pc . 847d56d374SYoshinobu InoueThe functions also require an additional pointer argument, 857d56d374SYoshinobu Inoue.Ar error_num 867d56d374SYoshinobu Inoueto return the appropriate error code, 877d56d374SYoshinobu Inoueto support thread safe error code returns. 887d56d374SYoshinobu Inoue.Pp 897d56d374SYoshinobu InoueThe type and usage of the return value, 907d56d374SYoshinobu Inoue.Li "struct hostent" 917d56d374SYoshinobu Inoueis described in 927d56d374SYoshinobu Inoue.Xr gethostbyname 3 . 937d56d374SYoshinobu Inoue.Pp 947d56d374SYoshinobu InoueFor 957d56d374SYoshinobu Inoue.Fn getipnodebyname , 967d56d374SYoshinobu Inouethe 977d56d374SYoshinobu Inoue.Ar name 987d56d374SYoshinobu Inoueargument can be either a node name or a numeric address 997d56d374SYoshinobu Inouestring 1007d56d374SYoshinobu Inoue.Po 1017d56d374SYoshinobu Inouei.e., a dotted-decimal IPv4 address or an IPv6 hex address 1027d56d374SYoshinobu Inoue.Pc . 1037d56d374SYoshinobu InoueThe 1047d56d374SYoshinobu Inoue.Ar af 1057d56d374SYoshinobu Inoueargument specifies the address family, either 1067d56d374SYoshinobu Inoue.Dv AF_INET 1077d56d374SYoshinobu Inoueor 1087d56d374SYoshinobu Inoue.Dv AF_INET6 . 1097d56d374SYoshinobu InoueThe 1107d56d374SYoshinobu Inoue.Ar flags 1117d56d374SYoshinobu Inoueargument specifies the types of addresses that are searched for, 1127d56d374SYoshinobu Inoueand the types of addresses that are returned. 1137d56d374SYoshinobu InoueWe note that a special flags value of 1147d56d374SYoshinobu Inoue.Dv AI_DEFAULT 1157d56d374SYoshinobu Inoue.Pq defined below 1167d56d374SYoshinobu Inoueshould handle most applications. 1177d56d374SYoshinobu InoueThat is, porting simple applications to use IPv6 replaces the call 1187d56d374SYoshinobu Inoue.Bd -literal -offset 1197d56d374SYoshinobu Inoue hptr = gethostbyname(name); 1207d56d374SYoshinobu Inoue.Ed 1217d56d374SYoshinobu Inoue.Pp 1227d56d374SYoshinobu Inouewith 1237d56d374SYoshinobu Inoue.Bd -literal -offset 1247d56d374SYoshinobu Inoue hptr = getipnodebyname(name, AF_INET6, AI_DEFAULT, &error_num); 1257d56d374SYoshinobu Inoue.Ed 1267d56d374SYoshinobu Inoue.Pp 1277d56d374SYoshinobu InoueApplications desiring finer control over the types of addresses 1287d56d374SYoshinobu Inouesearched for and returned, can specify other combinations of the 1297d56d374SYoshinobu Inoue.Ar flags 1307d56d374SYoshinobu Inoueargument. 1317d56d374SYoshinobu Inoue.Pp 1327d56d374SYoshinobu InoueA 1337d56d374SYoshinobu Inoue.Ar flags 1347d56d374SYoshinobu Inoueof 1357d56d374SYoshinobu Inoue.Li 0 1367d56d374SYoshinobu Inoueimplies a strict interpretation of the 1377d56d374SYoshinobu Inoue.Ar af 1387d56d374SYoshinobu Inoueargument: 1397d56d374SYoshinobu Inoue.Bl -bullet 1407d56d374SYoshinobu Inoue.It 1417d56d374SYoshinobu InoueIf 1427d56d374SYoshinobu Inoue.Ar flags 1437d56d374SYoshinobu Inoueis 0 and 1447d56d374SYoshinobu Inoue.Ar af 1457d56d374SYoshinobu Inoueis 1467d56d374SYoshinobu Inoue.Dv AF_INET , 1477d56d374SYoshinobu Inouethen the caller wants only IPv4 addresses. 1487d56d374SYoshinobu InoueA query is made for 1497d56d374SYoshinobu Inoue.Li A 1507d56d374SYoshinobu Inouerecords. 1517d56d374SYoshinobu InoueIf successful, the IPv4 addresses are returned and the 1527d56d374SYoshinobu Inoue.Li h_length 1537d56d374SYoshinobu Inouemember of the 1547d56d374SYoshinobu Inoue.Li hostent 1557d56d374SYoshinobu Inouestructure will be 4, else the function returns a 1567d56d374SYoshinobu Inoue.Dv NULL 1577d56d374SYoshinobu Inouepointer. 1587d56d374SYoshinobu Inoue.It 1597d56d374SYoshinobu InoueIf 1607d56d374SYoshinobu Inoue.Ar flags 1617d56d374SYoshinobu Inoueis 0 and if 1627d56d374SYoshinobu Inoue.Ar af 1637d56d374SYoshinobu Inoueis 1647d56d374SYoshinobu Inoue.Li AF_INET6 , 1657d56d374SYoshinobu Inouethen the caller wants only IPv6 addresses. 1667d56d374SYoshinobu InoueA query is made for 1677d56d374SYoshinobu Inoue.Li AAAA 1687d56d374SYoshinobu Inouerecords. 1697d56d374SYoshinobu InoueIf successful, the IPv6 addresses are returned and the 1707d56d374SYoshinobu Inoue.Li h_length 1717d56d374SYoshinobu Inouemember of the 1727d56d374SYoshinobu Inoue.Li hostent 1737d56d374SYoshinobu Inouestructure will be 16, else the function returns a 1747d56d374SYoshinobu Inoue.Dv NULL 1757d56d374SYoshinobu Inouepointer. 1767d56d374SYoshinobu Inoue.El 1777d56d374SYoshinobu Inoue.Pp 1787d56d374SYoshinobu InoueOther constants can be logically-ORed into the 1797d56d374SYoshinobu Inoue.Ar flags 1807d56d374SYoshinobu Inoueargument, to modify the behavior of the function. 1817d56d374SYoshinobu Inoue.Bl -bullet 1827d56d374SYoshinobu Inoue.It 1837d56d374SYoshinobu InoueIf the 1847d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 1857d56d374SYoshinobu Inoueflag is specified along with an 1867d56d374SYoshinobu Inoue.Ar af 1877d56d374SYoshinobu Inoueof 1887d56d374SYoshinobu Inoue.Dv AF_INET6 , 1897d56d374SYoshinobu Inouethen the caller will accept IPv4-mapped IPv6 addresses. 1907d56d374SYoshinobu InoueThat is, if no 1917d56d374SYoshinobu Inoue.Li AAAA 1927d56d374SYoshinobu Inouerecords are found then a query is made for 1937d56d374SYoshinobu Inoue.Li A 1947d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses 1957d56d374SYoshinobu Inoue.Po 1967d56d374SYoshinobu Inoue.Li h_length 1977d56d374SYoshinobu Inouewill be 16 1987d56d374SYoshinobu Inoue.Pc . 1997d56d374SYoshinobu InoueThe 2007d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2017d56d374SYoshinobu Inoueflag is ignored unless 2027d56d374SYoshinobu Inoue.Ar af 2037d56d374SYoshinobu Inoueequals 2047d56d374SYoshinobu Inoue.Dv AF_INET6 . 2057d56d374SYoshinobu Inoue.It 2067d56d374SYoshinobu InoueThe 2077d56d374SYoshinobu Inoue.Dv AI_V4MAPPED_CFG 2087d56d374SYoshinobu Inoueflag is exact same as the 2097d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2107d56d374SYoshinobu Inoueflag only if the kernel supports IPv4-mapped IPv6 address. 2117d56d374SYoshinobu Inoue.It 2127d56d374SYoshinobu InoueIf the 2137d56d374SYoshinobu Inoue.Dv AI_ALL 2147d56d374SYoshinobu Inoueflag is used in conjunction with the 2157d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2167d56d374SYoshinobu Inoueflag, and only used with the IPv6 address family. 2177d56d374SYoshinobu InoueWhen 2187d56d374SYoshinobu Inoue.Dv AI_ALL 2197d56d374SYoshinobu Inoueis logically or'd with 2207d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2217d56d374SYoshinobu Inoueflag then the caller wants all addresses: IPv6 and IPv4-mapped IPv6. 2227d56d374SYoshinobu InoueA query is first made for 2237d56d374SYoshinobu Inoue.Li AAAA 2247d56d374SYoshinobu Inouerecords and if successful, the 2257d56d374SYoshinobu InoueIPv6 addresses are returned. Another query is then made for 2267d56d374SYoshinobu Inoue.Li A 2277d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses. 2287d56d374SYoshinobu Inoue.Li h_length 2297d56d374SYoshinobu Inouewill be 16. Only if both queries fail does the function 2307d56d374SYoshinobu Inouereturn a 2317d56d374SYoshinobu Inoue.Dv NULL 2327d56d374SYoshinobu Inouepointer. This flag is ignored unless af equals 2337d56d374SYoshinobu InoueAF_INET6. If both 2347d56d374SYoshinobu Inoue.Dv AI_ALL 2357d56d374SYoshinobu Inoueand 2367d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2377d56d374SYoshinobu Inoueare specified, 2387d56d374SYoshinobu Inoue.Dv AI_ALL 2397d56d374SYoshinobu Inouetakes precedence. 2407d56d374SYoshinobu Inoue.It 2417d56d374SYoshinobu InoueThe 2427d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG 2437d56d374SYoshinobu Inoueflag specifies that a query for 2447d56d374SYoshinobu Inoue.Li AAAA 2457d56d374SYoshinobu Inouerecords 2467d56d374SYoshinobu Inoueshould occur only if the node has at least one IPv6 source 2477d56d374SYoshinobu Inoueaddress configured and a query for 2487d56d374SYoshinobu Inoue.Li A 2497d56d374SYoshinobu Inouerecords should occur only if the node has at least one IPv4 source address 2507d56d374SYoshinobu Inoueconfigured. 2517d56d374SYoshinobu Inoue.Pp 2527d56d374SYoshinobu InoueFor example, if the node has no IPv6 source addresses configured, 2537d56d374SYoshinobu Inoueand 2547d56d374SYoshinobu Inoue.Ar af 2557d56d374SYoshinobu Inoueequals AF_INET6, and the node name being looked up has both 2567d56d374SYoshinobu Inoue.Li AAAA 2577d56d374SYoshinobu Inoueand 2587d56d374SYoshinobu Inoue.Li A 2597d56d374SYoshinobu Inouerecords, then: 2607d56d374SYoshinobu Inoue(a) if only 2617d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG 2627d56d374SYoshinobu Inoueis 2637d56d374SYoshinobu Inouespecified, the function returns a 2647d56d374SYoshinobu Inoue.Dv NULL 2657d56d374SYoshinobu Inouepointer; 2667d56d374SYoshinobu Inoue(b) if 2677d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG 2687d56d374SYoshinobu Inoue| 2697d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 2707d56d374SYoshinobu Inoueis specified, the 2717d56d374SYoshinobu Inoue.Li A 2727d56d374SYoshinobu Inouerecords are returned as IPv4-mapped IPv6 addresses; 2737d56d374SYoshinobu Inoue.El 2747d56d374SYoshinobu Inoue.Pp 2757d56d374SYoshinobu InoueThe special flags value of 2767d56d374SYoshinobu Inoue.Dv AI_DEFAULT 2777d56d374SYoshinobu Inoueis defined as 2787d56d374SYoshinobu Inoue.Bd -literal -offset 2797d56d374SYoshinobu Inoue #define AI_DEFAULT (AI_V4MAPPED_CFG | AI_ADDRCONFIG) 2807d56d374SYoshinobu Inoue.Ed 2817d56d374SYoshinobu Inoue.Pp 2827d56d374SYoshinobu InoueWe noted that the 2837d56d374SYoshinobu Inoue.Fn getipnodebyname 2847d56d374SYoshinobu Inouefunction must allow the 2857d56d374SYoshinobu Inoue.Ar name 2867d56d374SYoshinobu Inoueargument to be either a node name or a literal address string 2877d56d374SYoshinobu Inoue.Po 2887d56d374SYoshinobu Inouei.e., a dotted-decimal IPv4 address or an IPv6 hex address 2897d56d374SYoshinobu Inoue.Pc . 2907d56d374SYoshinobu InoueThis saves applications from having to call 2917d56d374SYoshinobu Inoue.Xr inet_pton 3 2927d56d374SYoshinobu Inoueto handle literal address strings. 2937d56d374SYoshinobu InoueWhen the 2947d56d374SYoshinobu Inoue.Ar name 2957d56d374SYoshinobu Inoueargument is a literal address string, 2967d56d374SYoshinobu Inouethe 2977d56d374SYoshinobu Inoue.Ar flags 2987d56d374SYoshinobu Inoueargument is always ignored. 2997d56d374SYoshinobu Inoue.Pp 3007d56d374SYoshinobu InoueThere are four scenarios based on the type of literal address string 3017d56d374SYoshinobu Inoueand the value of the 3027d56d374SYoshinobu Inoue.Ar af 3037d56d374SYoshinobu Inoueargument. 3047d56d374SYoshinobu InoueThe two simple cases are when 3057d56d374SYoshinobu Inoue.Ar name 3067d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and 3077d56d374SYoshinobu Inoue.Ar af 3087d56d374SYoshinobu Inoueequals 3097d56d374SYoshinobu Inoue.Dv AF_INET , 3107d56d374SYoshinobu Inoueor when 3117d56d374SYoshinobu Inoue.Ar name 3127d56d374SYoshinobu Inoueis an IPv6 hex address and 3137d56d374SYoshinobu Inoue.Ar af 3147d56d374SYoshinobu Inoueequals 3157d56d374SYoshinobu Inoue.Dv AF_INET6 . 3167d56d374SYoshinobu InoueThe members of the 3177d56d374SYoshinobu Inouereturned hostent structure are: 3187d56d374SYoshinobu Inoue.Li h_name 3197d56d374SYoshinobu Inouepoints to a copy of the 3207d56d374SYoshinobu Inoue.Ar name 3217d56d374SYoshinobu Inoueargument, 3227d56d374SYoshinobu Inoue.Li h_aliases 3237d56d374SYoshinobu Inoueis a 3247d56d374SYoshinobu Inoue.Dv NULL 3257d56d374SYoshinobu Inouepointer, 3267d56d374SYoshinobu Inoue.Li h_addrtype 3277d56d374SYoshinobu Inoueis a copy of the 3287d56d374SYoshinobu Inoue.Ar af 3297d56d374SYoshinobu Inoueargument, 3307d56d374SYoshinobu Inoue.Li h_length 3317d56d374SYoshinobu Inoueis either 4 3327d56d374SYoshinobu Inoue.Po 3337d56d374SYoshinobu Inouefor 3347d56d374SYoshinobu Inoue.Dv AF_INET 3357d56d374SYoshinobu Inoue.Pc 3367d56d374SYoshinobu Inoueor 16 3377d56d374SYoshinobu Inoue.Po 3387d56d374SYoshinobu Inouefor 3397d56d374SYoshinobu Inoue.Dv AF_INET6 3407d56d374SYoshinobu Inoue.Pc , 3417d56d374SYoshinobu Inoue.Li h_addr_list[0] 3427d56d374SYoshinobu Inoueis a pointer to the 4-byte or 16-byte binary address, 3437d56d374SYoshinobu Inoueand 3447d56d374SYoshinobu Inoue.Li h_addr_list[1] 3457d56d374SYoshinobu Inoueis a 3467d56d374SYoshinobu Inoue.Dv NULL 3477d56d374SYoshinobu Inouepointer. 3487d56d374SYoshinobu Inoue.Pp 3497d56d374SYoshinobu InoueWhen 3507d56d374SYoshinobu Inoue.Ar name 3517d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and 3527d56d374SYoshinobu Inoue.Ar af 3537d56d374SYoshinobu Inoueequals 3547d56d374SYoshinobu Inoue.Dv AF_INET6 , 3557d56d374SYoshinobu Inoueand 3567d56d374SYoshinobu Inoue.Dv AI_V4MAPPED 3577d56d374SYoshinobu Inoueis specified, 3587d56d374SYoshinobu Inouean IPv4-mapped IPv6 address is returned: 3597d56d374SYoshinobu Inoue.Li h_name 3607d56d374SYoshinobu Inouepoints to an IPv6 hex address containing the IPv4-mapped IPv6 address, 3617d56d374SYoshinobu Inoue.Li h_aliases 3627d56d374SYoshinobu Inoueis a 3637d56d374SYoshinobu Inoue.Dv NULL 3647d56d374SYoshinobu Inouepointer, 3657d56d374SYoshinobu Inoue.Li h_addrtype 3667d56d374SYoshinobu Inoueis 3677d56d374SYoshinobu Inoue.Dv AF_INET6 , 3687d56d374SYoshinobu Inoue.Li h_length 3697d56d374SYoshinobu Inoueis 16, 3707d56d374SYoshinobu Inoue.Li h_addr_list[0] 3717d56d374SYoshinobu Inoueis a pointer to the 16-byte binary address, and 3727d56d374SYoshinobu Inoue.Li h_addr_list[1] 3737d56d374SYoshinobu Inoueis a 3747d56d374SYoshinobu Inoue.Dv NULL 3757d56d374SYoshinobu Inouepointer. 3767d56d374SYoshinobu Inoue.Pp 3777d56d374SYoshinobu InoueIt is an error when 3787d56d374SYoshinobu Inoue.Ar name 3797d56d374SYoshinobu Inoueis an IPv6 hex address and 3807d56d374SYoshinobu Inoue.Ar af 3817d56d374SYoshinobu Inoueequals 3827d56d374SYoshinobu Inoue.Dv AF_INET . 3837d56d374SYoshinobu InoueThe function's return value is a 3847d56d374SYoshinobu Inoue.Dv NULL 3857d56d374SYoshinobu Inouepointer and the value pointed to by 3867d56d374SYoshinobu Inoue.Ar error_num 3877d56d374SYoshinobu Inoueequals 3887d56d374SYoshinobu Inoue.Dv HOST_NOT_FOUND . 3897d56d374SYoshinobu Inoue.Pp 3907d56d374SYoshinobu Inoue.Fn getipnodebyaddr 3917d56d374SYoshinobu Inouetakes almost the same argument as 3927d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 , 3937d56d374SYoshinobu Inouebut adds a pointer to return an error number. 3947d56d374SYoshinobu InoueAdditionally it takes care of IPv4-mapped IPv6 addresses, 3957d56d374SYoshinobu Inoueand IPv4-compatible IPv6 addresses. 3967d56d374SYoshinobu Inoue.Pp 3977d56d374SYoshinobu Inoue.Fn getipnodebyname 3987d56d374SYoshinobu Inoueand 3997d56d374SYoshinobu Inoue.Fn getipnodebyaddr 4007d56d374SYoshinobu Inouedynamically allocate the structure to be returned to the caller. 4017d56d374SYoshinobu Inoue.Fn freehostent 4027d56d374SYoshinobu Inouereclaims memory region allocated and returned by 4037d56d374SYoshinobu Inoue.Fn getipnodebyname 4047d56d374SYoshinobu Inoueor 4057d56d374SYoshinobu Inoue.Fn getipnodebyaddr . 4067d56d374SYoshinobu Inoue.\" 4077d56d374SYoshinobu Inoue.Sh FILES 408248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact 4097d56d374SYoshinobu Inoue.It Pa /etc/hosts 410248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf 4117d56d374SYoshinobu Inoue.It Pa /etc/resolv.conf 4127d56d374SYoshinobu Inoue.El 4137d56d374SYoshinobu Inoue.\" 4147d56d374SYoshinobu Inoue.Sh DIAGNOSTICS 4151bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname 4167d56d374SYoshinobu Inoueand 4171bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr 4187d56d374SYoshinobu Inouereturns 4197d56d374SYoshinobu Inoue.Dv NULL 4207d56d374SYoshinobu Inoueon errors. 4217d56d374SYoshinobu InoueThe integer values pointed to by 4227d56d374SYoshinobu Inoue.Ar error_num 4237d56d374SYoshinobu Inouemay then be checked to see whether this is a temporary failure 4247d56d374SYoshinobu Inoueor an invalid or unknown host. 4257d56d374SYoshinobu InoueThe meanings of each error code are described in 4267d56d374SYoshinobu Inoue.Xr gethostbyname 3 . 4277d56d374SYoshinobu Inoue.\" 4287d56d374SYoshinobu Inoue.Sh SEE ALSO 4297d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 , 4305521ff5aSRuslan Ermilov.Xr gethostbyname 3 , 4317d56d374SYoshinobu Inoue.Xr hosts 5 , 432248aee62SJacques Vidrine.Xr nsswitch.conf 5 , 4337d56d374SYoshinobu Inoue.Xr services 5 , 4347d56d374SYoshinobu Inoue.Xr hostname 7 , 4357d56d374SYoshinobu Inoue.Xr named 8 4367d56d374SYoshinobu Inoue.Pp 4371bf6f719SJun-ichiro itojun Hagino.Rs 4381bf6f719SJun-ichiro itojun Hagino.%A R. Gilligan 4391bf6f719SJun-ichiro itojun Hagino.%A S. Thomson 4401bf6f719SJun-ichiro itojun Hagino.%A J. Bound 4411bf6f719SJun-ichiro itojun Hagino.%A W. Stevens 4421bf6f719SJun-ichiro itojun Hagino.%T Basic Socket Interface Extensions for IPv6 4431bf6f719SJun-ichiro itojun Hagino.%R RFC2553 4441bf6f719SJun-ichiro itojun Hagino.%D March 1999 4451bf6f719SJun-ichiro itojun Hagino.Re 4467d56d374SYoshinobu Inoue.\" 4477d56d374SYoshinobu Inoue.Sh HISTORY 4487d56d374SYoshinobu InoueThe implementation first appeared in KAME advanced networking kit. 4497d56d374SYoshinobu Inoue.\" 4507d56d374SYoshinobu Inoue.Sh STANDARDS 4517d56d374SYoshinobu Inoue.Fn getipnodebyname 4527d56d374SYoshinobu Inoueand 4537d56d374SYoshinobu Inoue.Fn getipnodebyaddr 4541bf6f719SJun-ichiro itojun Haginoare documented in 4551bf6f719SJun-ichiro itojun Hagino.Dq Basic Socket Interface Extensions for IPv6 4567d56d374SYoshinobu Inoue.Pq RFC2553 . 4577d56d374SYoshinobu Inoue.\" 4587d56d374SYoshinobu Inoue.Sh BUGS 4591bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname 4601bf6f719SJun-ichiro itojun Haginoand 4611bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr 4621bf6f719SJun-ichiro itojun Haginodo not handle scoped IPv6 address properly. 4631bf6f719SJun-ichiro itojun HaginoIf you use these functions, 4641bf6f719SJun-ichiro itojun Haginoyour program will not be able to handle scoped IPv6 addresses. 4651bf6f719SJun-ichiro itojun HaginoFor IPv6 address manipulation, 4661bf6f719SJun-ichiro itojun Hagino.Fn getaddrinfo 3 4671bf6f719SJun-ichiro itojun Haginoand 4681bf6f719SJun-ichiro itojun Hagino.Fn getnameinfo 3 4691bf6f719SJun-ichiro itojun Haginoare recommended. 4701bf6f719SJun-ichiro itojun Hagino.Pp 4711bf6f719SJun-ichiro itojun HaginoThe current implementation is not thread-safe. 4721bf6f719SJun-ichiro itojun Hagino.Pp 4737d56d374SYoshinobu InoueThe text was shamelessly copied from RFC2553. 474