xref: /freebsd/lib/libc/net/getipnodebyname.3 (revision dc36d6f9bb1753f3808552f3afd30eda9a7b206a)
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.
14fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
157d56d374SYoshinobu Inoue.\"    may be used to endorse or promote products derived from this software
167d56d374SYoshinobu Inoue.\"    without specific prior written permission.
177d56d374SYoshinobu Inoue.\"
187d56d374SYoshinobu Inoue.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
197d56d374SYoshinobu Inoue.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
207d56d374SYoshinobu Inoue.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
217d56d374SYoshinobu Inoue.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
227d56d374SYoshinobu Inoue.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
237d56d374SYoshinobu Inoue.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
247d56d374SYoshinobu Inoue.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
257d56d374SYoshinobu Inoue.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
267d56d374SYoshinobu Inoue.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
277d56d374SYoshinobu Inoue.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
287d56d374SYoshinobu Inoue.\" SUCH DAMAGE.
297d56d374SYoshinobu Inoue.\"
30*4a3c598fSFernando Apesteguía.Dd June 27, 2022
317d56d374SYoshinobu Inoue.Dt GETIPNODEBYNAME 3
321bf6f719SJun-ichiro itojun Hagino.Os
337d56d374SYoshinobu Inoue.\"
347d56d374SYoshinobu Inoue.Sh NAME
357d56d374SYoshinobu Inoue.Nm getipnodebyname ,
367d56d374SYoshinobu Inoue.Nm getipnodebyaddr ,
377d56d374SYoshinobu Inoue.Nm freehostent
387d56d374SYoshinobu Inoue.Nd nodename-to-address and address-to-nodename translation
397d56d374SYoshinobu Inoue.\"
4025bb73e0SAlexey Zelkin.Sh LIBRARY
4125bb73e0SAlexey Zelkin.Lb libc
427d56d374SYoshinobu Inoue.Sh SYNOPSIS
4332eef9aeSRuslan Ermilov.In sys/types.h
4432eef9aeSRuslan Ermilov.In sys/socket.h
4532eef9aeSRuslan Ermilov.In netdb.h
467d56d374SYoshinobu Inoue.Ft "struct hostent *"
477d56d374SYoshinobu Inoue.Fn getipnodebyname "const char *name" "int af" "int flags" "int *error_num"
487d56d374SYoshinobu Inoue.Ft "struct hostent *"
497d56d374SYoshinobu Inoue.Fn getipnodebyaddr "const void *src" "size_t len" "int af" "int *error_num"
507d56d374SYoshinobu Inoue.Ft void
517d56d374SYoshinobu Inoue.Fn freehostent "struct hostent *ptr"
527d56d374SYoshinobu Inoue.\"
537d56d374SYoshinobu Inoue.Sh DESCRIPTION
541fae73b1SRuslan ErmilovThe
557d56d374SYoshinobu Inoue.Fn getipnodebyname
567d56d374SYoshinobu Inoueand
577d56d374SYoshinobu Inoue.Fn getipnodebyaddr
587d56d374SYoshinobu Inouefunctions are very similar to
597d56d374SYoshinobu Inoue.Xr gethostbyname 3 ,
607d56d374SYoshinobu Inoue.Xr gethostbyname2 3
617d56d374SYoshinobu Inoueand
627d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 .
637d56d374SYoshinobu InoueThe functions cover all the functionalities provided by the older ones,
647d56d374SYoshinobu Inoueand provide better interface to programmers.
657d56d374SYoshinobu InoueThe functions require additional arguments,
665c564baeSRuslan Ermilov.Fa af ,
677d56d374SYoshinobu Inoueand
685c564baeSRuslan Ermilov.Fa flags ,
697d56d374SYoshinobu Inouefor specifying address family and operation mode.
707d56d374SYoshinobu InoueThe additional arguments allow programmer to get address for a nodename,
717d56d374SYoshinobu Inouefor specific address family
72c4d9468eSRuslan Ermilov(such as
737d56d374SYoshinobu Inoue.Dv AF_INET
747d56d374SYoshinobu Inoueor
75c4d9468eSRuslan Ermilov.Dv AF_INET6 ) .
767d56d374SYoshinobu InoueThe functions also require an additional pointer argument,
775c564baeSRuslan Ermilov.Fa error_num
787d56d374SYoshinobu Inoueto return the appropriate error code,
797d56d374SYoshinobu Inoueto support thread safe error code returns.
807d56d374SYoshinobu Inoue.Pp
817d56d374SYoshinobu InoueThe type and usage of the return value,
827d56d374SYoshinobu Inoue.Li "struct hostent"
837d56d374SYoshinobu Inoueis described in
847d56d374SYoshinobu Inoue.Xr gethostbyname 3 .
857d56d374SYoshinobu Inoue.Pp
867d56d374SYoshinobu InoueFor
877d56d374SYoshinobu Inoue.Fn getipnodebyname ,
887d56d374SYoshinobu Inouethe
895c564baeSRuslan Ermilov.Fa name
907d56d374SYoshinobu Inoueargument can be either a node name or a numeric address
917d56d374SYoshinobu Inouestring
92c4d9468eSRuslan Ermilov(i.e., a dotted-decimal IPv4 address or an IPv6 hex address).
937d56d374SYoshinobu InoueThe
945c564baeSRuslan Ermilov.Fa af
957d56d374SYoshinobu Inoueargument specifies the address family, either
967d56d374SYoshinobu Inoue.Dv AF_INET
977d56d374SYoshinobu Inoueor
987d56d374SYoshinobu Inoue.Dv AF_INET6 .
997d56d374SYoshinobu InoueThe
1005c564baeSRuslan Ermilov.Fa flags
1017d56d374SYoshinobu Inoueargument specifies the types of addresses that are searched for,
1027d56d374SYoshinobu Inoueand the types of addresses that are returned.
1037d56d374SYoshinobu InoueWe note that a special flags value of
1047d56d374SYoshinobu Inoue.Dv AI_DEFAULT
105c4d9468eSRuslan Ermilov(defined below)
1067d56d374SYoshinobu Inoueshould handle most applications.
1077d56d374SYoshinobu InoueThat is, porting simple applications to use IPv6 replaces the call
10846355096SJoel Dahl.Bd -literal -offset indent
1097d56d374SYoshinobu Inouehptr = gethostbyname(name);
1107d56d374SYoshinobu Inoue.Ed
1117d56d374SYoshinobu Inoue.Pp
1127d56d374SYoshinobu Inouewith
11346355096SJoel Dahl.Bd -literal -offset indent
1147d56d374SYoshinobu Inouehptr = getipnodebyname(name, AF_INET6, AI_DEFAULT, &error_num);
1157d56d374SYoshinobu Inoue.Ed
1167d56d374SYoshinobu Inoue.Pp
1177d56d374SYoshinobu InoueApplications desiring finer control over the types of addresses
1187d56d374SYoshinobu Inouesearched for and returned, can specify other combinations of the
1195c564baeSRuslan Ermilov.Fa flags
1207d56d374SYoshinobu Inoueargument.
1217d56d374SYoshinobu Inoue.Pp
1227d56d374SYoshinobu InoueA
1235c564baeSRuslan Ermilov.Fa flags
1247d56d374SYoshinobu Inoueof
1257d56d374SYoshinobu Inoue.Li 0
1267d56d374SYoshinobu Inoueimplies a strict interpretation of the
1275c564baeSRuslan Ermilov.Fa af
1287d56d374SYoshinobu Inoueargument:
1297d56d374SYoshinobu Inoue.Bl -bullet
1307d56d374SYoshinobu Inoue.It
1317d56d374SYoshinobu InoueIf
1325c564baeSRuslan Ermilov.Fa flags
1337d56d374SYoshinobu Inoueis 0 and
1345c564baeSRuslan Ermilov.Fa af
1357d56d374SYoshinobu Inoueis
1367d56d374SYoshinobu Inoue.Dv AF_INET ,
1377d56d374SYoshinobu Inouethen the caller wants only IPv4 addresses.
1387d56d374SYoshinobu InoueA query is made for
1397d56d374SYoshinobu Inoue.Li A
1407d56d374SYoshinobu Inouerecords.
1417d56d374SYoshinobu InoueIf successful, the IPv4 addresses are returned and the
1427d56d374SYoshinobu Inoue.Li h_length
1437d56d374SYoshinobu Inouemember of the
1447d56d374SYoshinobu Inoue.Li hostent
1457d56d374SYoshinobu Inouestructure will be 4, else the function returns a
1467d56d374SYoshinobu Inoue.Dv NULL
1477d56d374SYoshinobu Inouepointer.
1487d56d374SYoshinobu Inoue.It
1497d56d374SYoshinobu InoueIf
1505c564baeSRuslan Ermilov.Fa flags
1517d56d374SYoshinobu Inoueis 0 and if
1525c564baeSRuslan Ermilov.Fa af
1537d56d374SYoshinobu Inoueis
1547d56d374SYoshinobu Inoue.Li AF_INET6 ,
1557d56d374SYoshinobu Inouethen the caller wants only IPv6 addresses.
1567d56d374SYoshinobu InoueA query is made for
1577d56d374SYoshinobu Inoue.Li AAAA
1587d56d374SYoshinobu Inouerecords.
1597d56d374SYoshinobu InoueIf successful, the IPv6 addresses are returned and the
1607d56d374SYoshinobu Inoue.Li h_length
1617d56d374SYoshinobu Inouemember of the
1627d56d374SYoshinobu Inoue.Li hostent
1637d56d374SYoshinobu Inouestructure will be 16, else the function returns a
1647d56d374SYoshinobu Inoue.Dv NULL
1657d56d374SYoshinobu Inouepointer.
1667d56d374SYoshinobu Inoue.El
1677d56d374SYoshinobu Inoue.Pp
1687d56d374SYoshinobu InoueOther constants can be logically-ORed into the
1695c564baeSRuslan Ermilov.Fa flags
1707d56d374SYoshinobu Inoueargument, to modify the behavior of the function.
1717d56d374SYoshinobu Inoue.Bl -bullet
1727d56d374SYoshinobu Inoue.It
1737d56d374SYoshinobu InoueIf the
1747d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
1757d56d374SYoshinobu Inoueflag is specified along with an
1765c564baeSRuslan Ermilov.Fa af
1777d56d374SYoshinobu Inoueof
1787d56d374SYoshinobu Inoue.Dv AF_INET6 ,
1797d56d374SYoshinobu Inouethen the caller will accept IPv4-mapped IPv6 addresses.
1807d56d374SYoshinobu InoueThat is, if no
1817d56d374SYoshinobu Inoue.Li AAAA
1827d56d374SYoshinobu Inouerecords are found then a query is made for
1837d56d374SYoshinobu Inoue.Li A
1847d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses
185c4d9468eSRuslan Ermilov.Li ( h_length
186c4d9468eSRuslan Ermilovwill be 16).
1877d56d374SYoshinobu InoueThe
1887d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
1897d56d374SYoshinobu Inoueflag is ignored unless
1905c564baeSRuslan Ermilov.Fa af
1917d56d374SYoshinobu Inoueequals
1927d56d374SYoshinobu Inoue.Dv AF_INET6 .
1937d56d374SYoshinobu Inoue.It
1947d56d374SYoshinobu InoueThe
1957d56d374SYoshinobu Inoue.Dv AI_V4MAPPED_CFG
1967d56d374SYoshinobu Inoueflag is exact same as the
1977d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
1987d56d374SYoshinobu Inoueflag only if the kernel supports IPv4-mapped IPv6 address.
1997d56d374SYoshinobu Inoue.It
2007d56d374SYoshinobu InoueIf the
2017d56d374SYoshinobu Inoue.Dv AI_ALL
2027d56d374SYoshinobu Inoueflag is used in conjunction with the
2037d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2047d56d374SYoshinobu Inoueflag, and only used with the IPv6 address family.
2057d56d374SYoshinobu InoueWhen
2067d56d374SYoshinobu Inoue.Dv AI_ALL
2077d56d374SYoshinobu Inoueis logically or'd with
2087d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2097d56d374SYoshinobu Inoueflag then the caller wants all addresses: IPv6 and IPv4-mapped IPv6.
2107d56d374SYoshinobu InoueA query is first made for
2117d56d374SYoshinobu Inoue.Li AAAA
2127d56d374SYoshinobu Inouerecords and if successful, the
2131a0a9345SRuslan ErmilovIPv6 addresses are returned.
2141a0a9345SRuslan ErmilovAnother query is then made for
2157d56d374SYoshinobu Inoue.Li A
2167d56d374SYoshinobu Inouerecords and any found are returned as IPv4-mapped IPv6 addresses.
2177d56d374SYoshinobu Inoue.Li h_length
2181a0a9345SRuslan Ermilovwill be 16.
2191a0a9345SRuslan ErmilovOnly if both queries fail does the function
2207d56d374SYoshinobu Inouereturn a
2217d56d374SYoshinobu Inoue.Dv NULL
2221a0a9345SRuslan Ermilovpointer.
2231a0a9345SRuslan ErmilovThis flag is ignored unless af equals
2241a0a9345SRuslan ErmilovAF_INET6.
2251a0a9345SRuslan ErmilovIf both
2267d56d374SYoshinobu Inoue.Dv AI_ALL
2277d56d374SYoshinobu Inoueand
2287d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2297d56d374SYoshinobu Inoueare specified,
2307d56d374SYoshinobu Inoue.Dv AI_ALL
2317d56d374SYoshinobu Inouetakes precedence.
2327d56d374SYoshinobu Inoue.It
2337d56d374SYoshinobu InoueThe
2347d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2357d56d374SYoshinobu Inoueflag specifies that a query for
2367d56d374SYoshinobu Inoue.Li AAAA
2377d56d374SYoshinobu Inouerecords
2387d56d374SYoshinobu Inoueshould occur only if the node has at least one IPv6 source
2397d56d374SYoshinobu Inoueaddress configured and a query for
2407d56d374SYoshinobu Inoue.Li A
2417d56d374SYoshinobu Inouerecords should occur only if the node has at least one IPv4 source address
2427d56d374SYoshinobu Inoueconfigured.
2437d56d374SYoshinobu Inoue.Pp
2447d56d374SYoshinobu InoueFor example, if the node has no IPv6 source addresses configured,
2457d56d374SYoshinobu Inoueand
2465c564baeSRuslan Ermilov.Fa af
2477d56d374SYoshinobu Inoueequals AF_INET6, and the node name being looked up has both
2487d56d374SYoshinobu Inoue.Li AAAA
2497d56d374SYoshinobu Inoueand
2507d56d374SYoshinobu Inoue.Li A
2517d56d374SYoshinobu Inouerecords, then:
2527d56d374SYoshinobu Inoue(a) if only
2537d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2547d56d374SYoshinobu Inoueis
2557d56d374SYoshinobu Inouespecified, the function returns a
2567d56d374SYoshinobu Inoue.Dv NULL
2577d56d374SYoshinobu Inouepointer;
2587d56d374SYoshinobu Inoue(b) if
2597d56d374SYoshinobu Inoue.Dv AI_ADDRCONFIG
2607d56d374SYoshinobu Inoue|
2617d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
2627d56d374SYoshinobu Inoueis specified, the
2637d56d374SYoshinobu Inoue.Li A
2647d56d374SYoshinobu Inouerecords are returned as IPv4-mapped IPv6 addresses;
2657d56d374SYoshinobu Inoue.El
2667d56d374SYoshinobu Inoue.Pp
2677d56d374SYoshinobu InoueThe special flags value of
2687d56d374SYoshinobu Inoue.Dv AI_DEFAULT
2697d56d374SYoshinobu Inoueis defined as
27046355096SJoel Dahl.Bd -literal -offset indent
2717d56d374SYoshinobu Inoue#define  AI_DEFAULT  (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
2727d56d374SYoshinobu Inoue.Ed
2737d56d374SYoshinobu Inoue.Pp
2747d56d374SYoshinobu InoueWe noted that the
2757d56d374SYoshinobu Inoue.Fn getipnodebyname
2767d56d374SYoshinobu Inouefunction must allow the
2775c564baeSRuslan Ermilov.Fa name
2787d56d374SYoshinobu Inoueargument to be either a node name or a literal address string
279c4d9468eSRuslan Ermilov(i.e., a dotted-decimal IPv4 address or an IPv6 hex address).
2807d56d374SYoshinobu InoueThis saves applications from having to call
2817d56d374SYoshinobu Inoue.Xr inet_pton 3
2827d56d374SYoshinobu Inoueto handle literal address strings.
2837d56d374SYoshinobu InoueWhen the
2845c564baeSRuslan Ermilov.Fa name
2857d56d374SYoshinobu Inoueargument is a literal address string,
2867d56d374SYoshinobu Inouethe
2875c564baeSRuslan Ermilov.Fa flags
2887d56d374SYoshinobu Inoueargument is always ignored.
2897d56d374SYoshinobu Inoue.Pp
2907d56d374SYoshinobu InoueThere are four scenarios based on the type of literal address string
2917d56d374SYoshinobu Inoueand the value of the
2925c564baeSRuslan Ermilov.Fa af
2937d56d374SYoshinobu Inoueargument.
2947d56d374SYoshinobu InoueThe two simple cases are when
2955c564baeSRuslan Ermilov.Fa name
2967d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and
2975c564baeSRuslan Ermilov.Fa af
2987d56d374SYoshinobu Inoueequals
2997d56d374SYoshinobu Inoue.Dv AF_INET ,
3007d56d374SYoshinobu Inoueor when
3015c564baeSRuslan Ermilov.Fa name
3027d56d374SYoshinobu Inoueis an IPv6 hex address and
3035c564baeSRuslan Ermilov.Fa af
3047d56d374SYoshinobu Inoueequals
3057d56d374SYoshinobu Inoue.Dv AF_INET6 .
3067d56d374SYoshinobu InoueThe members of the
3077d56d374SYoshinobu Inouereturned hostent structure are:
3087d56d374SYoshinobu Inoue.Li h_name
3097d56d374SYoshinobu Inouepoints to a copy of the
3105c564baeSRuslan Ermilov.Fa name
3117d56d374SYoshinobu Inoueargument,
3127d56d374SYoshinobu Inoue.Li h_aliases
3137d56d374SYoshinobu Inoueis a
3147d56d374SYoshinobu Inoue.Dv NULL
3157d56d374SYoshinobu Inouepointer,
3167d56d374SYoshinobu Inoue.Li h_addrtype
3177d56d374SYoshinobu Inoueis a copy of the
3185c564baeSRuslan Ermilov.Fa af
3197d56d374SYoshinobu Inoueargument,
3207d56d374SYoshinobu Inoue.Li h_length
3217d56d374SYoshinobu Inoueis either 4
322c4d9468eSRuslan Ermilov(for
323c4d9468eSRuslan Ermilov.Dv AF_INET )
3247d56d374SYoshinobu Inoueor 16
325c4d9468eSRuslan Ermilov(for
326c4d9468eSRuslan Ermilov.Dv AF_INET6 ) ,
3277d56d374SYoshinobu Inoue.Li h_addr_list[0]
3287d56d374SYoshinobu Inoueis a pointer to the 4-byte or 16-byte binary address,
3297d56d374SYoshinobu Inoueand
3307d56d374SYoshinobu Inoue.Li h_addr_list[1]
3317d56d374SYoshinobu Inoueis a
3327d56d374SYoshinobu Inoue.Dv NULL
3337d56d374SYoshinobu Inouepointer.
3347d56d374SYoshinobu Inoue.Pp
3357d56d374SYoshinobu InoueWhen
3365c564baeSRuslan Ermilov.Fa name
3377d56d374SYoshinobu Inoueis a dotted-decimal IPv4 address and
3385c564baeSRuslan Ermilov.Fa af
3397d56d374SYoshinobu Inoueequals
3407d56d374SYoshinobu Inoue.Dv AF_INET6 ,
3417d56d374SYoshinobu Inoueand
3427d56d374SYoshinobu Inoue.Dv AI_V4MAPPED
3437d56d374SYoshinobu Inoueis specified,
3447d56d374SYoshinobu Inouean IPv4-mapped IPv6 address is returned:
3457d56d374SYoshinobu Inoue.Li h_name
3467d56d374SYoshinobu Inouepoints to an IPv6 hex address containing the IPv4-mapped IPv6 address,
3477d56d374SYoshinobu Inoue.Li h_aliases
3487d56d374SYoshinobu Inoueis a
3497d56d374SYoshinobu Inoue.Dv NULL
3507d56d374SYoshinobu Inouepointer,
3517d56d374SYoshinobu Inoue.Li h_addrtype
3527d56d374SYoshinobu Inoueis
3537d56d374SYoshinobu Inoue.Dv AF_INET6 ,
3547d56d374SYoshinobu Inoue.Li h_length
3557d56d374SYoshinobu Inoueis 16,
3567d56d374SYoshinobu Inoue.Li h_addr_list[0]
3577d56d374SYoshinobu Inoueis a pointer to the 16-byte binary address, and
3587d56d374SYoshinobu Inoue.Li h_addr_list[1]
3597d56d374SYoshinobu Inoueis a
3607d56d374SYoshinobu Inoue.Dv NULL
3617d56d374SYoshinobu Inouepointer.
3627d56d374SYoshinobu Inoue.Pp
3637d56d374SYoshinobu InoueIt is an error when
3645c564baeSRuslan Ermilov.Fa name
3657d56d374SYoshinobu Inoueis an IPv6 hex address and
3665c564baeSRuslan Ermilov.Fa af
3677d56d374SYoshinobu Inoueequals
3687d56d374SYoshinobu Inoue.Dv AF_INET .
3697d56d374SYoshinobu InoueThe function's return value is a
3707d56d374SYoshinobu Inoue.Dv NULL
3717d56d374SYoshinobu Inouepointer and the value pointed to by
3725c564baeSRuslan Ermilov.Fa error_num
3737d56d374SYoshinobu Inoueequals
3747d56d374SYoshinobu Inoue.Dv HOST_NOT_FOUND .
3757d56d374SYoshinobu Inoue.Pp
3761fae73b1SRuslan ErmilovThe
3777d56d374SYoshinobu Inoue.Fn getipnodebyaddr
3781fae73b1SRuslan Ermilovfunction
3797d56d374SYoshinobu Inouetakes almost the same argument as
3807d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 ,
3817d56d374SYoshinobu Inouebut adds a pointer to return an error number.
3827d56d374SYoshinobu InoueAdditionally it takes care of IPv4-mapped IPv6 addresses,
3837d56d374SYoshinobu Inoueand IPv4-compatible IPv6 addresses.
3847d56d374SYoshinobu Inoue.Pp
3851fae73b1SRuslan ErmilovThe
3867d56d374SYoshinobu Inoue.Fn getipnodebyname
3877d56d374SYoshinobu Inoueand
3887d56d374SYoshinobu Inoue.Fn getipnodebyaddr
3891fae73b1SRuslan Ermilovfunctions
3907d56d374SYoshinobu Inouedynamically allocate the structure to be returned to the caller.
3911fae73b1SRuslan ErmilovThe
3927d56d374SYoshinobu Inoue.Fn freehostent
3931fae73b1SRuslan Ermilovfunction
3947d56d374SYoshinobu Inouereclaims memory region allocated and returned by
3957d56d374SYoshinobu Inoue.Fn getipnodebyname
3967d56d374SYoshinobu Inoueor
3977d56d374SYoshinobu Inoue.Fn getipnodebyaddr .
3987d56d374SYoshinobu Inoue.\"
3997d56d374SYoshinobu Inoue.Sh FILES
400248aee62SJacques Vidrine.Bl -tag -width /etc/nsswitch.conf -compact
4017d56d374SYoshinobu Inoue.It Pa /etc/hosts
402248aee62SJacques Vidrine.It Pa /etc/nsswitch.conf
4037d56d374SYoshinobu Inoue.It Pa /etc/resolv.conf
4047d56d374SYoshinobu Inoue.El
4057d56d374SYoshinobu Inoue.\"
4067d56d374SYoshinobu Inoue.Sh DIAGNOSTICS
4071fae73b1SRuslan ErmilovThe
4081bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname
4097d56d374SYoshinobu Inoueand
4101bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr
4111fae73b1SRuslan Ermilovfunctions
4127d56d374SYoshinobu Inouereturns
4137d56d374SYoshinobu Inoue.Dv NULL
4147d56d374SYoshinobu Inoueon errors.
4157d56d374SYoshinobu InoueThe integer values pointed to by
4165c564baeSRuslan Ermilov.Fa error_num
4177d56d374SYoshinobu Inouemay then be checked to see whether this is a temporary failure
4187d56d374SYoshinobu Inoueor an invalid or unknown host.
4197d56d374SYoshinobu InoueThe meanings of each error code are described in
4207d56d374SYoshinobu Inoue.Xr gethostbyname 3 .
4217d56d374SYoshinobu Inoue.\"
4227d56d374SYoshinobu Inoue.Sh SEE ALSO
423808712c9SPeter Pentchev.Xr getaddrinfo 3 ,
4247d56d374SYoshinobu Inoue.Xr gethostbyaddr 3 ,
4255521ff5aSRuslan Ermilov.Xr gethostbyname 3 ,
426808712c9SPeter Pentchev.Xr getnameinfo 3 ,
4277d56d374SYoshinobu Inoue.Xr hosts 5 ,
428248aee62SJacques Vidrine.Xr nsswitch.conf 5 ,
4297d56d374SYoshinobu Inoue.Xr services 5 ,
430942e234dSFernando Apesteguía.Xr hostname 7
4317d56d374SYoshinobu Inoue.Pp
4321bf6f719SJun-ichiro itojun Hagino.Rs
4331bf6f719SJun-ichiro itojun Hagino.%A R. Gilligan
4341bf6f719SJun-ichiro itojun Hagino.%A S. Thomson
4351bf6f719SJun-ichiro itojun Hagino.%A J. Bound
4361bf6f719SJun-ichiro itojun Hagino.%A W. Stevens
4371bf6f719SJun-ichiro itojun Hagino.%T Basic Socket Interface Extensions for IPv6
4381bf6f719SJun-ichiro itojun Hagino.%R RFC2553
4391bf6f719SJun-ichiro itojun Hagino.%D March 1999
4401bf6f719SJun-ichiro itojun Hagino.Re
4417d56d374SYoshinobu Inoue.\"
4427d56d374SYoshinobu Inoue.Sh STANDARDS
4431fae73b1SRuslan ErmilovThe
4447d56d374SYoshinobu Inoue.Fn getipnodebyname
4457d56d374SYoshinobu Inoueand
4467d56d374SYoshinobu Inoue.Fn getipnodebyaddr
4471fae73b1SRuslan Ermilovfunctions
4481bf6f719SJun-ichiro itojun Haginoare documented in
4491bf6f719SJun-ichiro itojun Hagino.Dq Basic Socket Interface Extensions for IPv6
450c4d9468eSRuslan Ermilov(RFC2553).
4517d56d374SYoshinobu Inoue.\"
45224a0682cSRuslan Ermilov.Sh HISTORY
45324a0682cSRuslan ErmilovThe implementation first appeared in KAME advanced networking kit.
45424a0682cSRuslan Ermilov.\"
4557d56d374SYoshinobu Inoue.Sh BUGS
4561fae73b1SRuslan ErmilovThe
4571bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyname
4581bf6f719SJun-ichiro itojun Haginoand
4591bf6f719SJun-ichiro itojun Hagino.Fn getipnodebyaddr
4601fae73b1SRuslan Ermilovfunctions
4611bf6f719SJun-ichiro itojun Haginodo not handle scoped IPv6 address properly.
4621bf6f719SJun-ichiro itojun HaginoIf you use these functions,
4631bf6f719SJun-ichiro itojun Haginoyour program will not be able to handle scoped IPv6 addresses.
4641bf6f719SJun-ichiro itojun HaginoFor IPv6 address manipulation,
4651bf6f719SJun-ichiro itojun Hagino.Fn getaddrinfo 3
4661bf6f719SJun-ichiro itojun Haginoand
4671bf6f719SJun-ichiro itojun Hagino.Fn getnameinfo 3
4681bf6f719SJun-ichiro itojun Haginoare recommended.
4691bf6f719SJun-ichiro itojun Hagino.Pp
4707d56d374SYoshinobu InoueThe text was shamelessly copied from RFC2553.
471