xref: /freebsd/lib/libc/net/getipnodebyname.3 (revision 24a0682c6465290759ed0b09ea16e40e7cd47053)
11bf6f719SJun-ichiro itojun Hagino.\"	$KAME: getipnodebyname.3,v 1.6 2000/08/09 21:16:17 itojun Exp $
21bf6f719SJun-ichiro itojun Hagino.\"
37d56d374SYoshinobu Inoue.\" Copyright (c) 1983, 1987, 1991, 1993
47d56d374SYoshinobu Inoue.\"	The Regents of the University of California.  All rights reserved.
57d56d374SYoshinobu Inoue.\"
67d56d374SYoshinobu Inoue.\" Redistribution and use in source and binary forms, with or without
77d56d374SYoshinobu Inoue.\" modification, are permitted provided that the following conditions
87d56d374SYoshinobu Inoue.\" are met:
97d56d374SYoshinobu Inoue.\" 1. Redistributions of source code must retain the above copyright
107d56d374SYoshinobu Inoue.\"    notice, this list of conditions and the following disclaimer.
117d56d374SYoshinobu Inoue.\" 2. Redistributions in binary form must reproduce the above copyright
127d56d374SYoshinobu Inoue.\"    notice, this list of conditions and the following disclaimer in the
137d56d374SYoshinobu Inoue.\"    documentation and/or other materials provided with the distribution.
147d56d374SYoshinobu Inoue.\" 3. All advertising materials mentioning features or use of this software
157d56d374SYoshinobu Inoue.\"    must display the following acknowledgement:
167d56d374SYoshinobu Inoue.\"	This product includes software developed by the University of
177d56d374SYoshinobu Inoue.\"	California, Berkeley and its contributors.
187d56d374SYoshinobu Inoue.\" 4. Neither the name of the University nor the names of its contributors
197d56d374SYoshinobu Inoue.\"    may be used to endorse or promote products derived from this software
207d56d374SYoshinobu Inoue.\"    without specific prior written permission.
217d56d374SYoshinobu Inoue.\"
227d56d374SYoshinobu Inoue.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
237d56d374SYoshinobu Inoue.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
247d56d374SYoshinobu Inoue.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
257d56d374SYoshinobu Inoue.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
267d56d374SYoshinobu Inoue.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
277d56d374SYoshinobu Inoue.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
287d56d374SYoshinobu Inoue.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
297d56d374SYoshinobu Inoue.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
307d56d374SYoshinobu Inoue.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
317d56d374SYoshinobu Inoue.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
327d56d374SYoshinobu Inoue.\" SUCH DAMAGE.
337d56d374SYoshinobu Inoue.\"
347d56d374SYoshinobu Inoue.\"     From: @(#)gethostbyname.3	8.4 (Berkeley) 5/25/95
351fae73b1SRuslan Ermilov.\" $FreeBSD$
367d56d374SYoshinobu Inoue.\"
3716d91771SPeter Pentchev.Dd August 6, 2004
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
5032eef9aeSRuslan Ermilov.In sys/types.h
5132eef9aeSRuslan Ermilov.In sys/socket.h
5232eef9aeSRuslan Ermilov.In 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
611fae73b1SRuslan ErmilovThe
627d56d374SYoshinobu Inoue.Fn getipnodebyname
637d56d374SYoshinobu Inoueand
647d56d374SYoshinobu Inoue.Fn getipnodebyaddr
657d56d374SYoshinobu Inouefunctions are very similar to
667d56d374SYoshinobu Inoue.Xr gethostbyname 3 ,
677d56d374SYoshinobu Inoue.Xr gethostbyname2 3
687d56d374SYoshinobu Inoueand
697d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 .
707d56d374SYoshinobu InoueThe functions cover all the functionalities provided by the older ones,
717d56d374SYoshinobu Inoueand provide better interface to programmers.
727d56d374SYoshinobu InoueThe functions require additional arguments,
735c564baeSRuslan Ermilov.Fa af ,
747d56d374SYoshinobu Inoueand
755c564baeSRuslan Ermilov.Fa flags ,
767d56d374SYoshinobu Inouefor specifying address family and operation mode.
777d56d374SYoshinobu InoueThe additional arguments allow programmer to get address for a nodename,
787d56d374SYoshinobu Inouefor specific address family
79c4d9468eSRuslan Ermilov(such as
807d56d374SYoshinobu Inoue.Dv AF_INET
817d56d374SYoshinobu Inoueor
82c4d9468eSRuslan Ermilov.Dv AF_INET6 ) .
837d56d374SYoshinobu InoueThe functions also require an additional pointer argument,
845c564baeSRuslan Ermilov.Fa error_num
857d56d374SYoshinobu Inoueto return the appropriate error code,
867d56d374SYoshinobu Inoueto support thread safe error code returns.
877d56d374SYoshinobu Inoue.Pp
887d56d374SYoshinobu InoueThe type and usage of the return value,
897d56d374SYoshinobu Inoue.Li "struct hostent"
907d56d374SYoshinobu Inoueis described in
917d56d374SYoshinobu Inoue.Xr gethostbyname 3 .
927d56d374SYoshinobu Inoue.Pp
937d56d374SYoshinobu InoueFor
947d56d374SYoshinobu Inoue.Fn getipnodebyname ,
957d56d374SYoshinobu Inouethe
965c564baeSRuslan Ermilov.Fa name
977d56d374SYoshinobu Inoueargument can be either a node name or a numeric address
987d56d374SYoshinobu Inouestring
99c4d9468eSRuslan Ermilov(i.e., a dotted-decimal IPv4 address or an IPv6 hex address).
1007d56d374SYoshinobu InoueThe
1015c564baeSRuslan Ermilov.Fa af
1027d56d374SYoshinobu Inoueargument specifies the address family, either
1037d56d374SYoshinobu Inoue.Dv AF_INET
1047d56d374SYoshinobu Inoueor
1057d56d374SYoshinobu Inoue.Dv AF_INET6 .
1067d56d374SYoshinobu InoueThe
1075c564baeSRuslan Ermilov.Fa flags
1087d56d374SYoshinobu Inoueargument specifies the types of addresses that are searched for,
1097d56d374SYoshinobu Inoueand the types of addresses that are returned.
1107d56d374SYoshinobu InoueWe note that a special flags value of
1117d56d374SYoshinobu Inoue.Dv AI_DEFAULT
112c4d9468eSRuslan Ermilov(defined below)
1137d56d374SYoshinobu Inoueshould handle most applications.
1147d56d374SYoshinobu InoueThat is, porting simple applications to use IPv6 replaces the call
1157d56d374SYoshinobu Inoue.Bd -literal -offset
1167d56d374SYoshinobu Inoue   hptr = gethostbyname(name);
1177d56d374SYoshinobu Inoue.Ed
1187d56d374SYoshinobu Inoue.Pp
1197d56d374SYoshinobu Inouewith
1207d56d374SYoshinobu Inoue.Bd -literal -offset
1217d56d374SYoshinobu Inoue   hptr = getipnodebyname(name, AF_INET6, AI_DEFAULT, &error_num);
1227d56d374SYoshinobu Inoue.Ed
1237d56d374SYoshinobu Inoue.Pp
1247d56d374SYoshinobu InoueApplications desiring finer control over the types of addresses
1257d56d374SYoshinobu Inouesearched for and returned, can specify other combinations of the
1265c564baeSRuslan Ermilov.Fa flags
1277d56d374SYoshinobu Inoueargument.
1287d56d374SYoshinobu Inoue.Pp
1297d56d374SYoshinobu InoueA
1305c564baeSRuslan Ermilov.Fa flags
1317d56d374SYoshinobu Inoueof
1327d56d374SYoshinobu Inoue.Li 0
1337d56d374SYoshinobu Inoueimplies a strict interpretation of the
1345c564baeSRuslan Ermilov.Fa af
1357d56d374SYoshinobu Inoueargument:
1367d56d374SYoshinobu Inoue.Bl -bullet
1377d56d374SYoshinobu Inoue.It
1387d56d374SYoshinobu InoueIf
1395c564baeSRuslan Ermilov.Fa flags
1407d56d374SYoshinobu Inoueis 0 and
1415c564baeSRuslan Ermilov.Fa af
1427d56d374SYoshinobu Inoueis
1437d56d374SYoshinobu Inoue.Dv AF_INET ,
1447d56d374SYoshinobu Inouethen the caller wants only IPv4 addresses.
1457d56d374SYoshinobu InoueA query is made for
1467d56d374SYoshinobu Inoue.Li A
1477d56d374SYoshinobu Inouerecords.
1487d56d374SYoshinobu InoueIf successful, the IPv4 addresses are returned and the
1497d56d374SYoshinobu Inoue.Li h_length
1507d56d374SYoshinobu Inouemember of the
1517d56d374SYoshinobu Inoue.Li hostent
1527d56d374SYoshinobu Inouestructure will be 4, else the function returns a
1537d56d374SYoshinobu Inoue.Dv NULL
1547d56d374SYoshinobu Inouepointer.
1557d56d374SYoshinobu Inoue.It
1567d56d374SYoshinobu InoueIf
1575c564baeSRuslan Ermilov.Fa flags
1587d56d374SYoshinobu Inoueis 0 and if
1595c564baeSRuslan Ermilov.Fa af
1607d56d374SYoshinobu Inoueis
1617d56d374SYoshinobu Inoue.Li AF_INET6 ,
1627d56d374SYoshinobu Inouethen the caller wants only IPv6 addresses.
1637d56d374SYoshinobu InoueA query is made for
1647d56d374SYoshinobu Inoue.Li AAAA
1657d56d374SYoshinobu Inouerecords.
1667d56d374SYoshinobu InoueIf successful, the IPv6 addresses are returned and the
1677d56d374SYoshinobu Inoue.Li h_length
1687d56d374SYoshinobu Inouemember of the
1697d56d374SYoshinobu Inoue.Li hostent
1707d56d374SYoshinobu Inouestructure will be 16, else the function returns a
1717d56d374SYoshinobu Inoue.Dv NULL
1727d56d374SYoshinobu Inouepointer.
1737d56d374SYoshinobu Inoue.El
1747d56d374SYoshinobu Inoue.Pp
1757d56d374SYoshinobu InoueOther constants can be logically-ORed into the
1765c564baeSRuslan Ermilov.Fa flags
1777d56d374SYoshinobu Inoueargument, to modify the behavior of the function.
1787d56d374SYoshinobu Inoue.Bl -bullet
1797d56d374SYoshinobu Inoue.It
1807d56d374SYoshinobu InoueIf the
1817d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
1827d56d374SYoshinobu Inoueflag is specified along with an
1835c564baeSRuslan Ermilov.Fa af
1847d56d374SYoshinobu Inoueof
1857d56d374SYoshinobu Inoue.Dv AF_INET6 ,
1867d56d374SYoshinobu Inouethen the caller will accept IPv4-mapped IPv6 addresses.
1877d56d374SYoshinobu InoueThat is, if no
1887d56d374SYoshinobu Inoue.Li AAAA
1897d56d374SYoshinobu Inouerecords are found then a query is made for
1907d56d374SYoshinobu Inoue.Li A
1917d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses
192c4d9468eSRuslan Ermilov.Li ( h_length
193c4d9468eSRuslan Ermilovwill be 16).
1947d56d374SYoshinobu InoueThe
1957d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
1967d56d374SYoshinobu Inoueflag is ignored unless
1975c564baeSRuslan Ermilov.Fa af
1987d56d374SYoshinobu Inoueequals
1997d56d374SYoshinobu Inoue.Dv AF_INET6 .
2007d56d374SYoshinobu Inoue.It
2017d56d374SYoshinobu InoueThe
2027d56d374SYoshinobu Inoue.Dv AI_V4MAPPED_CFG
2037d56d374SYoshinobu Inoueflag is exact same as the
2047d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2057d56d374SYoshinobu Inoueflag only if the kernel supports IPv4-mapped IPv6 address.
2067d56d374SYoshinobu Inoue.It
2077d56d374SYoshinobu InoueIf the
2087d56d374SYoshinobu Inoue.Dv AI_ALL
2097d56d374SYoshinobu Inoueflag is used in conjunction with the
2107d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2117d56d374SYoshinobu Inoueflag, and only used with the IPv6 address family.
2127d56d374SYoshinobu InoueWhen
2137d56d374SYoshinobu Inoue.Dv AI_ALL
2147d56d374SYoshinobu Inoueis logically or'd with
2157d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2167d56d374SYoshinobu Inoueflag then the caller wants all addresses: IPv6 and IPv4-mapped IPv6.
2177d56d374SYoshinobu InoueA query is first made for
2187d56d374SYoshinobu Inoue.Li AAAA
2197d56d374SYoshinobu Inouerecords and if successful, the
2201a0a9345SRuslan ErmilovIPv6 addresses are returned.
2211a0a9345SRuslan ErmilovAnother query is then made for
2227d56d374SYoshinobu Inoue.Li A
2237d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses.
2247d56d374SYoshinobu Inoue.Li h_length
2251a0a9345SRuslan Ermilovwill be 16.
2261a0a9345SRuslan ErmilovOnly if both queries fail does the function
2277d56d374SYoshinobu Inouereturn a
2287d56d374SYoshinobu Inoue.Dv NULL
2291a0a9345SRuslan Ermilovpointer.
2301a0a9345SRuslan ErmilovThis flag is ignored unless af equals
2311a0a9345SRuslan ErmilovAF_INET6.
2321a0a9345SRuslan ErmilovIf both
2337d56d374SYoshinobu Inoue.Dv AI_ALL
2347d56d374SYoshinobu Inoueand
2357d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2367d56d374SYoshinobu Inoueare specified,
2377d56d374SYoshinobu Inoue.Dv AI_ALL
2387d56d374SYoshinobu Inouetakes precedence.
2397d56d374SYoshinobu Inoue.It
2407d56d374SYoshinobu InoueThe
2417d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2427d56d374SYoshinobu Inoueflag specifies that a query for
2437d56d374SYoshinobu Inoue.Li AAAA
2447d56d374SYoshinobu Inouerecords
2457d56d374SYoshinobu Inoueshould occur only if the node has at least one IPv6 source
2467d56d374SYoshinobu Inoueaddress configured and a query for
2477d56d374SYoshinobu Inoue.Li A
2487d56d374SYoshinobu Inouerecords should occur only if the node has at least one IPv4 source address
2497d56d374SYoshinobu Inoueconfigured.
2507d56d374SYoshinobu Inoue.Pp
2517d56d374SYoshinobu InoueFor example, if the node has no IPv6 source addresses configured,
2527d56d374SYoshinobu Inoueand
2535c564baeSRuslan Ermilov.Fa af
2547d56d374SYoshinobu Inoueequals AF_INET6, and the node name being looked up has both
2557d56d374SYoshinobu Inoue.Li AAAA
2567d56d374SYoshinobu Inoueand
2577d56d374SYoshinobu Inoue.Li A
2587d56d374SYoshinobu Inouerecords, then:
2597d56d374SYoshinobu Inoue(a) if only
2607d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2617d56d374SYoshinobu Inoueis
2627d56d374SYoshinobu Inouespecified, the function returns a
2637d56d374SYoshinobu Inoue.Dv NULL
2647d56d374SYoshinobu Inouepointer;
2657d56d374SYoshinobu Inoue(b) if
2667d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2677d56d374SYoshinobu Inoue|
2687d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2697d56d374SYoshinobu Inoueis specified, the
2707d56d374SYoshinobu Inoue.Li A
2717d56d374SYoshinobu Inouerecords are returned as IPv4-mapped IPv6 addresses;
2727d56d374SYoshinobu Inoue.El
2737d56d374SYoshinobu Inoue.Pp
2747d56d374SYoshinobu InoueThe special flags value of
2757d56d374SYoshinobu Inoue.Dv AI_DEFAULT
2767d56d374SYoshinobu Inoueis defined as
2777d56d374SYoshinobu Inoue.Bd -literal -offset
2787d56d374SYoshinobu Inoue   #define  AI_DEFAULT  (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
2797d56d374SYoshinobu Inoue.Ed
2807d56d374SYoshinobu Inoue.Pp
2817d56d374SYoshinobu InoueWe noted that the
2827d56d374SYoshinobu Inoue.Fn getipnodebyname
2837d56d374SYoshinobu Inouefunction must allow the
2845c564baeSRuslan Ermilov.Fa name
2857d56d374SYoshinobu Inoueargument to be either a node name or a literal address string
286c4d9468eSRuslan Ermilov(i.e., a dotted-decimal IPv4 address or an IPv6 hex address).
2877d56d374SYoshinobu InoueThis saves applications from having to call
2887d56d374SYoshinobu Inoue.Xr inet_pton 3
2897d56d374SYoshinobu Inoueto handle literal address strings.
2907d56d374SYoshinobu InoueWhen the
2915c564baeSRuslan Ermilov.Fa name
2927d56d374SYoshinobu Inoueargument is a literal address string,
2937d56d374SYoshinobu Inouethe
2945c564baeSRuslan Ermilov.Fa flags
2957d56d374SYoshinobu Inoueargument is always ignored.
2967d56d374SYoshinobu Inoue.Pp
2977d56d374SYoshinobu InoueThere are four scenarios based on the type of literal address string
2987d56d374SYoshinobu Inoueand the value of the
2995c564baeSRuslan Ermilov.Fa af
3007d56d374SYoshinobu Inoueargument.
3017d56d374SYoshinobu InoueThe two simple cases are when
3025c564baeSRuslan Ermilov.Fa name
3037d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and
3045c564baeSRuslan Ermilov.Fa af
3057d56d374SYoshinobu Inoueequals
3067d56d374SYoshinobu Inoue.Dv AF_INET ,
3077d56d374SYoshinobu Inoueor when
3085c564baeSRuslan Ermilov.Fa name
3097d56d374SYoshinobu Inoueis an IPv6 hex address and
3105c564baeSRuslan Ermilov.Fa af
3117d56d374SYoshinobu Inoueequals
3127d56d374SYoshinobu Inoue.Dv AF_INET6 .
3137d56d374SYoshinobu InoueThe members of the
3147d56d374SYoshinobu Inouereturned hostent structure are:
3157d56d374SYoshinobu Inoue.Li h_name
3167d56d374SYoshinobu Inouepoints to a copy of the
3175c564baeSRuslan Ermilov.Fa name
3187d56d374SYoshinobu Inoueargument,
3197d56d374SYoshinobu Inoue.Li h_aliases
3207d56d374SYoshinobu Inoueis a
3217d56d374SYoshinobu Inoue.Dv NULL
3227d56d374SYoshinobu Inouepointer,
3237d56d374SYoshinobu Inoue.Li h_addrtype
3247d56d374SYoshinobu Inoueis a copy of the
3255c564baeSRuslan Ermilov.Fa af
3267d56d374SYoshinobu Inoueargument,
3277d56d374SYoshinobu Inoue.Li h_length
3287d56d374SYoshinobu Inoueis either 4
329c4d9468eSRuslan Ermilov(for
330c4d9468eSRuslan Ermilov.Dv AF_INET )
3317d56d374SYoshinobu Inoueor 16
332c4d9468eSRuslan Ermilov(for
333c4d9468eSRuslan Ermilov.Dv AF_INET6 ) ,
3347d56d374SYoshinobu Inoue.Li h_addr_list[0]
3357d56d374SYoshinobu Inoueis a pointer to the 4-byte or 16-byte binary address,
3367d56d374SYoshinobu Inoueand
3377d56d374SYoshinobu Inoue.Li h_addr_list[1]
3387d56d374SYoshinobu Inoueis a
3397d56d374SYoshinobu Inoue.Dv NULL
3407d56d374SYoshinobu Inouepointer.
3417d56d374SYoshinobu Inoue.Pp
3427d56d374SYoshinobu InoueWhen
3435c564baeSRuslan Ermilov.Fa name
3447d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and
3455c564baeSRuslan Ermilov.Fa af
3467d56d374SYoshinobu Inoueequals
3477d56d374SYoshinobu Inoue.Dv AF_INET6 ,
3487d56d374SYoshinobu Inoueand
3497d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
3507d56d374SYoshinobu Inoueis specified,
3517d56d374SYoshinobu Inouean IPv4-mapped IPv6 address is returned:
3527d56d374SYoshinobu Inoue.Li h_name
3537d56d374SYoshinobu Inouepoints to an IPv6 hex address containing the IPv4-mapped IPv6 address,
3547d56d374SYoshinobu Inoue.Li h_aliases
3557d56d374SYoshinobu Inoueis a
3567d56d374SYoshinobu Inoue.Dv NULL
3577d56d374SYoshinobu Inouepointer,
3587d56d374SYoshinobu Inoue.Li h_addrtype
3597d56d374SYoshinobu Inoueis
3607d56d374SYoshinobu Inoue.Dv AF_INET6 ,
3617d56d374SYoshinobu Inoue.Li h_length
3627d56d374SYoshinobu Inoueis 16,
3637d56d374SYoshinobu Inoue.Li h_addr_list[0]
3647d56d374SYoshinobu Inoueis a pointer to the 16-byte binary address, and
3657d56d374SYoshinobu Inoue.Li h_addr_list[1]
3667d56d374SYoshinobu Inoueis a
3677d56d374SYoshinobu Inoue.Dv NULL
3687d56d374SYoshinobu Inouepointer.
3697d56d374SYoshinobu Inoue.Pp
3707d56d374SYoshinobu InoueIt is an error when
3715c564baeSRuslan Ermilov.Fa name
3727d56d374SYoshinobu Inoueis an IPv6 hex address and
3735c564baeSRuslan Ermilov.Fa af
3747d56d374SYoshinobu Inoueequals
3757d56d374SYoshinobu Inoue.Dv AF_INET .
3767d56d374SYoshinobu InoueThe function's return value is a
3777d56d374SYoshinobu Inoue.Dv NULL
3787d56d374SYoshinobu Inouepointer and the value pointed to by
3795c564baeSRuslan Ermilov.Fa error_num
3807d56d374SYoshinobu Inoueequals
3817d56d374SYoshinobu Inoue.Dv HOST_NOT_FOUND .
3827d56d374SYoshinobu Inoue.Pp
3831fae73b1SRuslan ErmilovThe
3847d56d374SYoshinobu Inoue.Fn getipnodebyaddr
3851fae73b1SRuslan Ermilovfunction
3867d56d374SYoshinobu Inouetakes almost the same argument as
3877d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 ,
3887d56d374SYoshinobu Inouebut adds a pointer to return an error number.
3897d56d374SYoshinobu InoueAdditionally it takes care of IPv4-mapped IPv6 addresses,
3907d56d374SYoshinobu Inoueand IPv4-compatible IPv6 addresses.
3917d56d374SYoshinobu Inoue.Pp
3921fae73b1SRuslan ErmilovThe
3937d56d374SYoshinobu Inoue.Fn getipnodebyname
3947d56d374SYoshinobu Inoueand
3957d56d374SYoshinobu Inoue.Fn getipnodebyaddr
3961fae73b1SRuslan Ermilovfunctions
3977d56d374SYoshinobu Inouedynamically allocate the structure to be returned to the caller.
3981fae73b1SRuslan ErmilovThe
3997d56d374SYoshinobu Inoue.Fn freehostent
4001fae73b1SRuslan Ermilovfunction
4017d56d374SYoshinobu Inouereclaims memory region allocated and returned by
4027d56d374SYoshinobu Inoue.Fn getipnodebyname
4037d56d374SYoshinobu Inoueor
4047d56d374SYoshinobu Inoue.Fn getipnodebyaddr .
4057d56d374SYoshinobu Inoue.\"
4067d56d374SYoshinobu Inoue.Sh FILES
407248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
4087d56d374SYoshinobu Inoue.It Pa /etc/hosts
409248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
4107d56d374SYoshinobu Inoue.It Pa /etc/resolv.conf
4117d56d374SYoshinobu Inoue.El
4127d56d374SYoshinobu Inoue.\"
4137d56d374SYoshinobu Inoue.Sh DIAGNOSTICS
4141fae73b1SRuslan ErmilovThe
4151bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname
4167d56d374SYoshinobu Inoueand
4171bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr
4181fae73b1SRuslan Ermilovfunctions
4197d56d374SYoshinobu Inouereturns
4207d56d374SYoshinobu Inoue.Dv NULL
4217d56d374SYoshinobu Inoueon errors.
4227d56d374SYoshinobu InoueThe integer values pointed to by
4235c564baeSRuslan Ermilov.Fa error_num
4247d56d374SYoshinobu Inouemay then be checked to see whether this is a temporary failure
4257d56d374SYoshinobu Inoueor an invalid or unknown host.
4267d56d374SYoshinobu InoueThe meanings of each error code are described in
4277d56d374SYoshinobu Inoue.Xr gethostbyname 3 .
4287d56d374SYoshinobu Inoue.\"
4297d56d374SYoshinobu Inoue.Sh SEE ALSO
430808712c9SPeter Pentchev.Xr getaddrinfo 3 ,
4317d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 ,
4325521ff5aSRuslan Ermilov.Xr gethostbyname 3 ,
433808712c9SPeter Pentchev.Xr getnameinfo 3 ,
4347d56d374SYoshinobu Inoue.Xr hosts 5 ,
435248aee62SJacques Vidrine.Xr nsswitch.conf 5 ,
4367d56d374SYoshinobu Inoue.Xr services 5 ,
4377d56d374SYoshinobu Inoue.Xr hostname 7 ,
4387d56d374SYoshinobu Inoue.Xr named 8
4397d56d374SYoshinobu Inoue.Pp
4401bf6f719SJun-ichiro itojun Hagino.Rs
4411bf6f719SJun-ichiro itojun Hagino.%A R. Gilligan
4421bf6f719SJun-ichiro itojun Hagino.%A S. Thomson
4431bf6f719SJun-ichiro itojun Hagino.%A J. Bound
4441bf6f719SJun-ichiro itojun Hagino.%A W. Stevens
4451bf6f719SJun-ichiro itojun Hagino.%T Basic Socket Interface Extensions for IPv6
4461bf6f719SJun-ichiro itojun Hagino.%R RFC2553
4471bf6f719SJun-ichiro itojun Hagino.%D March 1999
4481bf6f719SJun-ichiro itojun Hagino.Re
4497d56d374SYoshinobu Inoue.\"
4507d56d374SYoshinobu Inoue.Sh STANDARDS
4511fae73b1SRuslan ErmilovThe
4527d56d374SYoshinobu Inoue.Fn getipnodebyname
4537d56d374SYoshinobu Inoueand
4547d56d374SYoshinobu Inoue.Fn getipnodebyaddr
4551fae73b1SRuslan Ermilovfunctions
4561bf6f719SJun-ichiro itojun Haginoare documented in
4571bf6f719SJun-ichiro itojun Hagino.Dq Basic Socket Interface Extensions for IPv6
458c4d9468eSRuslan Ermilov(RFC2553).
4597d56d374SYoshinobu Inoue.\"
46024a0682cSRuslan Ermilov.Sh HISTORY
46124a0682cSRuslan ErmilovThe implementation first appeared in KAME advanced networking kit.
46224a0682cSRuslan Ermilov.\"
4637d56d374SYoshinobu Inoue.Sh BUGS
46433dee819SBrian FeldmanAlthough the current implementation is otherwise thread-safe, using
46533dee819SBrian Feldmanit in conjunction with
46633dee819SBrian Feldman.Fn gethostby*
46733dee819SBrian Feldman(see
46833dee819SBrian Feldman.Xr gethostbyname 3 )
46933dee819SBrian Feldmanor
47033dee819SBrian Feldman.Xr yp 8
47133dee819SBrian Feldmanbreaks the thread-safety of both.
47233dee819SBrian Feldman.Pp
4731fae73b1SRuslan ErmilovThe
4741bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname
4751bf6f719SJun-ichiro itojun Haginoand
4761bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr
4771fae73b1SRuslan Ermilovfunctions
4781bf6f719SJun-ichiro itojun Haginodo not handle scoped IPv6 address properly.
4791bf6f719SJun-ichiro itojun HaginoIf you use these functions,
4801bf6f719SJun-ichiro itojun Haginoyour program will not be able to handle scoped IPv6 addresses.
4811bf6f719SJun-ichiro itojun HaginoFor IPv6 address manipulation,
4821bf6f719SJun-ichiro itojun Hagino.Fn getaddrinfo 3
4831bf6f719SJun-ichiro itojun Haginoand
4841bf6f719SJun-ichiro itojun Hagino.Fn getnameinfo 3
4851bf6f719SJun-ichiro itojun Haginoare recommended.
4861bf6f719SJun-ichiro itojun Hagino.Pp
4877d56d374SYoshinobu InoueThe text was shamelessly copied from RFC2553.
488