xref: /illumos-gate/usr/src/man/man3c/inet.3c (revision bbf215553c7233fbab8a0afdf1fac74c44781867)
18a7aa2a5SYuri Pankov.\"
28a7aa2a5SYuri Pankov.\" The contents of this file are subject to the terms of the
38a7aa2a5SYuri Pankov.\" Common Development and Distribution License (the "License").
48a7aa2a5SYuri Pankov.\" You may not use this file except in compliance with the License.
58a7aa2a5SYuri Pankov.\"
68a7aa2a5SYuri Pankov.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
78a7aa2a5SYuri Pankov.\" or http://www.opensolaris.org/os/licensing.
88a7aa2a5SYuri Pankov.\" See the License for the specific language governing permissions
98a7aa2a5SYuri Pankov.\" and limitations under the License.
108a7aa2a5SYuri Pankov.\"
118a7aa2a5SYuri Pankov.\" When distributing Covered Code, include this CDDL HEADER in each
128a7aa2a5SYuri Pankov.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
138a7aa2a5SYuri Pankov.\" If applicable, add the following below this CDDL HEADER, with the
148a7aa2a5SYuri Pankov.\" fields enclosed by brackets "[]" replaced with your own identifying
158a7aa2a5SYuri Pankov.\" information: Portions Copyright [yyyy] [name of copyright owner]
168a7aa2a5SYuri Pankov.\"
178a7aa2a5SYuri Pankov.\"
188a7aa2a5SYuri Pankov.\" Copyright 1989 AT&T
198a7aa2a5SYuri Pankov.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved
208a7aa2a5SYuri Pankov.\" Copyright 2018 Nexenta Systems, Inc.
218a7aa2a5SYuri Pankov.\"
228a7aa2a5SYuri Pankov.Dd July 22, 2018
238a7aa2a5SYuri Pankov.Dt INET 3C
248a7aa2a5SYuri Pankov.Os
258a7aa2a5SYuri Pankov.Sh NAME
268a7aa2a5SYuri Pankov.Nm inet ,
278a7aa2a5SYuri Pankov.Nm inet6 ,
288a7aa2a5SYuri Pankov.Nm inet_ntop ,
298a7aa2a5SYuri Pankov.Nm inet_pton ,
308a7aa2a5SYuri Pankov.Nm inet_aton ,
318a7aa2a5SYuri Pankov.Nm inet_addr ,
328a7aa2a5SYuri Pankov.Nm inet_network ,
338a7aa2a5SYuri Pankov.Nm inet_makeaddr ,
348a7aa2a5SYuri Pankov.Nm inet_lnaof ,
358a7aa2a5SYuri Pankov.Nm inet_netof ,
368a7aa2a5SYuri Pankov.Nm inet_ntoa
378a7aa2a5SYuri Pankov.Nd Internet address manipulation
388a7aa2a5SYuri Pankov.Sh LIBRARY
398a7aa2a5SYuri Pankov.Lb libc
408a7aa2a5SYuri Pankov.Sh SYNOPSIS
418a7aa2a5SYuri Pankov.In sys/types.h
428a7aa2a5SYuri Pankov.In sys/socket.h
438a7aa2a5SYuri Pankov.In netinet/in.h
448a7aa2a5SYuri Pankov.In arpa/inet.h
458a7aa2a5SYuri Pankov.Ft const char *
468a7aa2a5SYuri Pankov.Fo inet_ntop
478a7aa2a5SYuri Pankov.Fa "int af"
488a7aa2a5SYuri Pankov.Fa "const void *addr"
498a7aa2a5SYuri Pankov.Fa "char *cp"
508a7aa2a5SYuri Pankov.Fa "size_t size"
518a7aa2a5SYuri Pankov.Fc
528a7aa2a5SYuri Pankov.Ft int
538a7aa2a5SYuri Pankov.Fo inet_pton
548a7aa2a5SYuri Pankov.Fa "int af"
558a7aa2a5SYuri Pankov.Fa "const char *cp"
568a7aa2a5SYuri Pankov.Fa "void *addr"
578a7aa2a5SYuri Pankov.Fc
588a7aa2a5SYuri Pankov.Ft int
598a7aa2a5SYuri Pankov.Fo inet_aton
608a7aa2a5SYuri Pankov.Fa "const char *cp"
618a7aa2a5SYuri Pankov.Fa "struct in_addr *addr"
628a7aa2a5SYuri Pankov.Fc
638a7aa2a5SYuri Pankov.Ft in_addr_t
648a7aa2a5SYuri Pankov.Fo inet_addr
658a7aa2a5SYuri Pankov.Fa "const char *cp"
668a7aa2a5SYuri Pankov.Fc
678a7aa2a5SYuri Pankov.Ft in_addr_t
688a7aa2a5SYuri Pankov.Fo inet_network
698a7aa2a5SYuri Pankov.Fa "const char *cp"
708a7aa2a5SYuri Pankov.Fc
718a7aa2a5SYuri Pankov.Ft struct in_addr
728a7aa2a5SYuri Pankov.Fo inet_makeaddr
738a7aa2a5SYuri Pankov.Fa "const int net"
748a7aa2a5SYuri Pankov.Fa "const int lna"
758a7aa2a5SYuri Pankov.Fc
768a7aa2a5SYuri Pankov.Ft in_addr_t
778a7aa2a5SYuri Pankov.Fo inet_lnaof
788a7aa2a5SYuri Pankov.Fa "const struct in_addr in"
798a7aa2a5SYuri Pankov.Fc
808a7aa2a5SYuri Pankov.Ft in_addr_t
818a7aa2a5SYuri Pankov.Fo inet_netof
828a7aa2a5SYuri Pankov.Fa "const struct in_addr in"
838a7aa2a5SYuri Pankov.Fc
848a7aa2a5SYuri Pankov.Ft char *
858a7aa2a5SYuri Pankov.Fo inet_ntoa
868a7aa2a5SYuri Pankov.Fa "const struct in_addr in"
878a7aa2a5SYuri Pankov.Fc
888a7aa2a5SYuri Pankov.Sh DESCRIPTION
898a7aa2a5SYuri PankovThe
908a7aa2a5SYuri Pankov.Fn inet_ntop
918a7aa2a5SYuri Pankovand
928a7aa2a5SYuri Pankov.Fn inet_pton
938a7aa2a5SYuri Pankovfunctions can manipulate both IPv4 and IPv6 addresses.
948a7aa2a5SYuri PankovThe
958a7aa2a5SYuri Pankov.Fn inet_aton ,
968a7aa2a5SYuri Pankov.Fn inet_addr ,
978a7aa2a5SYuri Pankov.Fn inet_network ,
988a7aa2a5SYuri Pankov.Fn inet_makeaddr ,
998a7aa2a5SYuri Pankov.Fn inet_lnaof ,
1008a7aa2a5SYuri Pankov.Fn inet_netof ,
1018a7aa2a5SYuri Pankovand
1028a7aa2a5SYuri Pankov.Fn inet_ntoa
1038a7aa2a5SYuri Pankovfunctions can only manipulate IPv4 addresses.
1048a7aa2a5SYuri Pankov.Pp
1058a7aa2a5SYuri PankovThe
1068a7aa2a5SYuri Pankov.Fn inet_ntop
1078a7aa2a5SYuri Pankovfunction converts a numeric address into a string suitable for presentation.
1088a7aa2a5SYuri PankovThe
1098a7aa2a5SYuri Pankov.Fa af
1108a7aa2a5SYuri Pankovargument specifies the family of the address which can be
1118a7aa2a5SYuri Pankov.Dv AF_INET
1128a7aa2a5SYuri Pankovor
1138a7aa2a5SYuri Pankov.Dv AF_INET6 .
1148a7aa2a5SYuri PankovThe
1158a7aa2a5SYuri Pankov.Fa addr
1168a7aa2a5SYuri Pankovargument points to a buffer that holds an IPv4 address if the
1178a7aa2a5SYuri Pankov.Fa af
1188a7aa2a5SYuri Pankovargument is
1198a7aa2a5SYuri Pankov.Dv AF_INET .
1208a7aa2a5SYuri PankovThe
1218a7aa2a5SYuri Pankov.Fa addr
1228a7aa2a5SYuri Pankovargument points to a buffer that holds an IPv6 address if the
1238a7aa2a5SYuri Pankov.Fa af
1248a7aa2a5SYuri Pankovargument is
1258a7aa2a5SYuri Pankov.Dv AF_INET6 .
1268a7aa2a5SYuri PankovThe address must be in network byte order.
1278a7aa2a5SYuri PankovThe
1288a7aa2a5SYuri Pankov.Fa cp
1298a7aa2a5SYuri Pankovargument points to a buffer where the function stores the resulting string.
1308a7aa2a5SYuri PankovThe application must specify a non-NULL
1318a7aa2a5SYuri Pankov.Fa cp
1328a7aa2a5SYuri Pankovargument.
1338a7aa2a5SYuri PankovThe
1348a7aa2a5SYuri Pankov.Fa size
1358a7aa2a5SYuri Pankovargument specifies the size of this buffer.
1368a7aa2a5SYuri PankovFor IPv6 addresses, the buffer must be at least 46-octets.
1378a7aa2a5SYuri PankovFor IPv4 addresses, the buffer must be at least 16-octets.
1388a7aa2a5SYuri PankovTo allow applications to easily declare buffers of the proper size to store IPv4
1398a7aa2a5SYuri Pankovand IPv6 addresses in string form, the following two constants are defined in
1408a7aa2a5SYuri Pankov.In netinet/in.h :
1418a7aa2a5SYuri Pankov.Bd -literal
1428a7aa2a5SYuri Pankov#define INET_ADDRSTRLEN    16
1438a7aa2a5SYuri Pankov#define INET6_ADDRSTRLEN   46
1448a7aa2a5SYuri Pankov.Ed
1458a7aa2a5SYuri Pankov.Pp
1468a7aa2a5SYuri PankovThe
1478a7aa2a5SYuri Pankov.Fn inet_pton
1488a7aa2a5SYuri Pankovfunction converts the standard text presentation form of a function to the
1498a7aa2a5SYuri Pankovnumeric binary form.
1508a7aa2a5SYuri PankovThe
1518a7aa2a5SYuri Pankov.Fa af
1528a7aa2a5SYuri Pankovargument specifies the family of the address.
1538a7aa2a5SYuri PankovCurrently, the
1548a7aa2a5SYuri Pankov.Dv AF_INET
1558a7aa2a5SYuri Pankovand
1568a7aa2a5SYuri Pankov.Dv AF_INET6
1578a7aa2a5SYuri Pankovaddress families are supported.
1588a7aa2a5SYuri PankovThe
1598a7aa2a5SYuri Pankov.Fa cp
1608a7aa2a5SYuri Pankovargument points to the string being passed in.
1618a7aa2a5SYuri PankovThe
1628a7aa2a5SYuri Pankov.Fa addr
1638a7aa2a5SYuri Pankovargument points to a buffer where the function stores the numeric address.
1648a7aa2a5SYuri PankovThe calling application must ensure that the buffer referred to by
1658a7aa2a5SYuri Pankov.Fa addr
1668a7aa2a5SYuri Pankovis large enough to hold the numeric address, at least 4 bytes for
1678a7aa2a5SYuri Pankov.Dv AF_INET
1688a7aa2a5SYuri Pankovor 16 bytes for
1698a7aa2a5SYuri Pankov.Dv AF_INET6 .
1708a7aa2a5SYuri Pankov.Pp
1718a7aa2a5SYuri PankovThe
1728a7aa2a5SYuri Pankov.Fn inet_aton ,
1738a7aa2a5SYuri Pankov.Fn inet_addr ,
1748a7aa2a5SYuri Pankovand
1758a7aa2a5SYuri Pankov.Fn inet_network
1768a7aa2a5SYuri Pankovfunctions interpret character strings that represent numbers expressed in the
1778a7aa2a5SYuri PankovIPv4 standard
1788a7aa2a5SYuri Pankov.Ql \&.
1798a7aa2a5SYuri Pankovnotation, returning numbers suitable for use as IPv4 addresses and IPv4 network
1808a7aa2a5SYuri Pankovnumbers, respectively.
1818a7aa2a5SYuri PankovThe
1828a7aa2a5SYuri Pankov.Fn inet_makeaddr
1838a7aa2a5SYuri Pankovfunction uses an IPv4 network number and a local network address to construct
1848a7aa2a5SYuri Pankovan IPv4 address.
1858a7aa2a5SYuri PankovThe
1868a7aa2a5SYuri Pankov.Fn inet_netof
1878a7aa2a5SYuri Pankovand
1888a7aa2a5SYuri Pankov.Fn inet_lnaof
1898a7aa2a5SYuri Pankovfunctions break apart IPv4 host addresses, then return the network number and
1908a7aa2a5SYuri Pankovlocal network address, respectively.
1918a7aa2a5SYuri Pankov.Pp
1928a7aa2a5SYuri PankovThe
1938a7aa2a5SYuri Pankov.Fn inet_ntoa
1948a7aa2a5SYuri Pankovfunction returns a pointer to a string in the base 256 notation
1958a7aa2a5SYuri Pankov.Ql d.d.d.d .
1968a7aa2a5SYuri PankovSee the following section on IPv4 addresses.
1978a7aa2a5SYuri Pankov.Pp
1988a7aa2a5SYuri PankovInternet addresses are returned in network order, bytes ordered from left to
1998a7aa2a5SYuri Pankovright.
2008a7aa2a5SYuri PankovNetwork numbers and local address parts are returned as machine format integer
2018a7aa2a5SYuri Pankovvalues.
2028a7aa2a5SYuri Pankov.Ss IPv6 Addresses
2038a7aa2a5SYuri PankovThere are three conventional forms for representing IPv6 addresses as strings:
2048a7aa2a5SYuri Pankov.Bl -enum
2058a7aa2a5SYuri Pankov.It
2068a7aa2a5SYuri PankovThe preferred form is
2078a7aa2a5SYuri Pankov.Ql x:x:x:x:x:x:x:x ,
2088a7aa2a5SYuri Pankovwhere the
2098a7aa2a5SYuri Pankov.Li x No 's
2108a7aa2a5SYuri Pankovare the
2118a7aa2a5SYuri Pankovhexadecimal values of the eight 16-bit pieces of the address.
2128a7aa2a5SYuri PankovFor example,
2138a7aa2a5SYuri Pankov.Ql 1080:0:0:0:8:800:200C:417A .
2148a7aa2a5SYuri Pankov.Pp
2158a7aa2a5SYuri PankovIt is not necessary to write the leading zeros in an individual field.
2168a7aa2a5SYuri PankovThere must be at least one numeral in every field, except when the special
2178a7aa2a5SYuri Pankovsyntax described in the following is used.
2188a7aa2a5SYuri Pankov.It
2198a7aa2a5SYuri PankovIt is common for addresses to contain long strings of zero bits in some
2208a7aa2a5SYuri Pankovmethods used to allocate certain IPv6 address styles.
2218a7aa2a5SYuri PankovA special syntax is available to compress the zeros.
2228a7aa2a5SYuri PankovThe use of
2238a7aa2a5SYuri Pankov.Ql ::
2248a7aa2a5SYuri Pankovindicates multiple groups of 16 bits of zeros.
2258a7aa2a5SYuri PankovThe
2268a7aa2a5SYuri Pankov.Ql ::
2278a7aa2a5SYuri Pankovmay only appear once in an address.
2288a7aa2a5SYuri PankovThe
2298a7aa2a5SYuri Pankov.Ql ::
2308a7aa2a5SYuri Pankovcan also be used to compress the leading and trailing zeros in an address.
2318a7aa2a5SYuri PankovFor example,
2328a7aa2a5SYuri Pankov.Ql 1080::8:800:200C:417A .
2338a7aa2a5SYuri Pankov.It
2348a7aa2a5SYuri PankovThe alternative form
2358a7aa2a5SYuri Pankov.Ql x:x:x:x:x:x:d.d.d.d
2368a7aa2a5SYuri Pankovis sometimes more convenient when dealing with a mixed environment of IPv4 and
2378a7aa2a5SYuri PankovIPv6 nodes.
2388a7aa2a5SYuri PankovThe
2398a7aa2a5SYuri Pankov.Li x No 's
2408a7aa2a5SYuri Pankovin this form represent the hexadecimal values of the six high-order 16-bit
2418a7aa2a5SYuri Pankovpieces of the address.
2428a7aa2a5SYuri PankovThe
2438a7aa2a5SYuri Pankov.Li d No 's
2448a7aa2a5SYuri Pankovrepresent the decimal values of the four low-order 8-bit pieces of the standard
2458a7aa2a5SYuri PankovIPv4 address.
2468a7aa2a5SYuri PankovFor example:
2478a7aa2a5SYuri Pankov.Bd -literal
2488a7aa2a5SYuri Pankov::FFFF:129.144.52.38 .
2498a7aa2a5SYuri Pankov::129.144.52.38
2508a7aa2a5SYuri Pankov.Ed
2518a7aa2a5SYuri Pankov.Pp
2528a7aa2a5SYuri PankovThe
2538a7aa2a5SYuri Pankov.Ql ::FFFF:d.d.d.d
2548a7aa2a5SYuri Pankovand
2558a7aa2a5SYuri Pankov.Ql ::d.d.d.d
2568a7aa2a5SYuri Pankovpieces are the general forms of an IPv4-mapped IPv6 address and an
2578a7aa2a5SYuri PankovIPv4-compatible IPv6 address.
2588a7aa2a5SYuri Pankov.Pp
2598a7aa2a5SYuri PankovThe IPv4 portion must be in the
2608a7aa2a5SYuri Pankov.Ql d.d.d.d
2618a7aa2a5SYuri Pankovform.
2628a7aa2a5SYuri PankovThe following forms are invalid:
2638a7aa2a5SYuri Pankov.Bd -literal
2648a7aa2a5SYuri Pankov::FFFF:d.d.d
2658a7aa2a5SYuri Pankov::FFFF:d.d
2668a7aa2a5SYuri Pankov::d.d.d
2678a7aa2a5SYuri Pankov::d.d
2688a7aa2a5SYuri Pankov.Ed
2698a7aa2a5SYuri Pankov.Pp
2708a7aa2a5SYuri PankovThe
2718a7aa2a5SYuri Pankov.Ql ::FFFF:d
2728a7aa2a5SYuri Pankovform is a valid but unconventional representation of the IPv4-compatible IPv6
2738a7aa2a5SYuri Pankovaddress
2748a7aa2a5SYuri Pankov.Ql ::255.255.0.d .
2758a7aa2a5SYuri Pankov.Pp
2768a7aa2a5SYuri PankovThe
2778a7aa2a5SYuri Pankov.Ql ::d
2788a7aa2a5SYuri Pankovform corresponds to the general IPv6 address
2798a7aa2a5SYuri Pankov.Ql 0:0:0:0:0:0:0:d .
2808a7aa2a5SYuri Pankov.El
2818a7aa2a5SYuri Pankov.Ss IPv4 Addresses
2828a7aa2a5SYuri PankovValues specified using
2838a7aa2a5SYuri Pankov.Ql \&.
2848a7aa2a5SYuri Pankovnotation take one of the following forms:
2858a7aa2a5SYuri Pankov.Bd -literal
2868a7aa2a5SYuri Pankovd.d.d.d
2878a7aa2a5SYuri Pankovd.d.d
2888a7aa2a5SYuri Pankovd.d
2898a7aa2a5SYuri Pankovd
2908a7aa2a5SYuri Pankov.Ed
2918a7aa2a5SYuri Pankov.Pp
2928a7aa2a5SYuri PankovWhen four parts are specified, each part is interpreted as a byte of data and
2938a7aa2a5SYuri Pankovassigned from left to right to the four bytes of an IPv4 address.
2948a7aa2a5SYuri Pankov.Pp
2958a7aa2a5SYuri PankovWhen a three-part address is specified, the last part is interpreted as a
2968a7aa2a5SYuri Pankov16-bit quantity and placed in the right most two bytes of the network address.
2978a7aa2a5SYuri PankovThe three part address format is convenient for specifying Class B network
2988a7aa2a5SYuri Pankovaddresses such as
2998a7aa2a5SYuri Pankov.Ql 128.net.host .
3008a7aa2a5SYuri Pankov.Pp
3018a7aa2a5SYuri PankovWhen a two-part address is supplied, the last part is interpreted as a 24-bit
3028a7aa2a5SYuri Pankovquantity and placed in the right most three bytes of the network address.
3038a7aa2a5SYuri PankovThe two part address format is convenient for specifying Class A network
3048a7aa2a5SYuri Pankovaddresses such as
3058a7aa2a5SYuri Pankov.Ql net.host .
3068a7aa2a5SYuri Pankov.Pp
3078a7aa2a5SYuri PankovWhen only one part is given, the value is stored directly in the network
3088a7aa2a5SYuri Pankovaddress without any byte rearrangement.
3098a7aa2a5SYuri Pankov.Pp
3108a7aa2a5SYuri PankovWith the exception of
3118a7aa2a5SYuri Pankov.Fn inet_pton ,
3128a7aa2a5SYuri Pankovnumbers supplied as parts in
3138a7aa2a5SYuri Pankov.Ql \&.
3148a7aa2a5SYuri Pankovnotation may be decimal, octal, or hexadecimal, as specified in C language.
3158a7aa2a5SYuri PankovFor example, a leading
3168a7aa2a5SYuri Pankov.Ql 0x
3178a7aa2a5SYuri Pankovor
3188a7aa2a5SYuri Pankov.Ql 0X
3198a7aa2a5SYuri Pankovimplies hexadecimal.
3208a7aa2a5SYuri PankovA leading
3218a7aa2a5SYuri Pankov.Ql 0
3228a7aa2a5SYuri Pankovimplies octal.
3238a7aa2a5SYuri PankovOtherwise, the number is interpreted as decimal.
3248a7aa2a5SYuri Pankov.Pp
3258a7aa2a5SYuri PankovFor IPv4 addresses,
3268a7aa2a5SYuri Pankov.Fn inet_pton
3278a7aa2a5SYuri Pankovaccepts only a string in standard IPv4 dot notation
3288a7aa2a5SYuri Pankov.Ql d.d.d.d .
3298a7aa2a5SYuri Pankov.Pp
3308a7aa2a5SYuri PankovEach number has one to three digits with a decimal value between 0 and 255.
3318a7aa2a5SYuri Pankov.Pp
3328a7aa2a5SYuri PankovThe
3338a7aa2a5SYuri Pankov.Fn inet_addr
3348a7aa2a5SYuri Pankovfunction has been obsoleted by
3358a7aa2a5SYuri Pankov.Fn inet_aton .
3368a7aa2a5SYuri Pankov.Sh RETURN VALUES
3378a7aa2a5SYuri PankovThe
3388a7aa2a5SYuri Pankov.Fn inet_aton
3398a7aa2a5SYuri Pankovfunction returns nonzero if the address is valid,
3408a7aa2a5SYuri Pankov.Li 0
3418a7aa2a5SYuri Pankovif the address is invalid.
3428a7aa2a5SYuri Pankov.Pp
3438a7aa2a5SYuri PankovThe
3448a7aa2a5SYuri Pankov.Fn inet_ntop
3458a7aa2a5SYuri Pankovfunction returns a pointer to the buffer that contains a string if the
3468a7aa2a5SYuri Pankovconversion succeeds.
3478a7aa2a5SYuri PankovOtherwise,
3488a7aa2a5SYuri Pankov.Dv NULL
3498a7aa2a5SYuri Pankovis returned.
3508a7aa2a5SYuri PankovUpon failure,
3518a7aa2a5SYuri Pankov.Va errno
3528a7aa2a5SYuri Pankovis set to
3538a7aa2a5SYuri Pankov.Er EAFNOSUPPORT
3548a7aa2a5SYuri Pankovif the
3558a7aa2a5SYuri Pankov.Fa af
3568a7aa2a5SYuri Pankovargument is invalid or
3578a7aa2a5SYuri Pankov.Er ENOSPC
3588a7aa2a5SYuri Pankovif the size of the result buffer is inadequate.
3598a7aa2a5SYuri Pankov.Pp
3608a7aa2a5SYuri PankovThe
3618a7aa2a5SYuri Pankov.Fn inet_pton
3628a7aa2a5SYuri Pankovfunction returns
3638a7aa2a5SYuri Pankov.Li 1
3648a7aa2a5SYuri Pankovif the conversion succeeds,
3658a7aa2a5SYuri Pankov.Li 0
3668a7aa2a5SYuri Pankovif the input is not a valid IPv4 dotted-decimal string or a valid IPv6
3678a7aa2a5SYuri Pankovaddress string.
3688a7aa2a5SYuri PankovThe function returns
3698a7aa2a5SYuri Pankov.Li -1
3708a7aa2a5SYuri Pankovwith
3718a7aa2a5SYuri Pankov.Va errno
3728a7aa2a5SYuri Pankovset to
3738a7aa2a5SYuri Pankov.Er EAFNOSUPPORT
3748a7aa2a5SYuri Pankovif the
3758a7aa2a5SYuri Pankov.Fa af
3768a7aa2a5SYuri Pankovargument is unknown.
3778a7aa2a5SYuri Pankov.Pp
3788a7aa2a5SYuri PankovThe value
3798a7aa2a5SYuri Pankov.Dv INADDR_NONE ,
3808a7aa2a5SYuri Pankovwhich is equivalent to
3818a7aa2a5SYuri Pankov.Li (in_addr_t)(-1) ,
3828a7aa2a5SYuri Pankovis returned by
3838a7aa2a5SYuri Pankov.Fn inet_addr
3848a7aa2a5SYuri Pankovand
3858a7aa2a5SYuri Pankov.Fn inet_network
3868a7aa2a5SYuri Pankovfor malformed requests.
3878a7aa2a5SYuri Pankov.Pp
3888a7aa2a5SYuri PankovThe functions
3898a7aa2a5SYuri Pankov.Fn inet_netof
3908a7aa2a5SYuri Pankovand
3918a7aa2a5SYuri Pankov.Fn inet_lnaof
3928a7aa2a5SYuri Pankovbreak apart IPv4 host addresses, returning the network number and local network
3938a7aa2a5SYuri Pankovaddress part, respectively.
3948a7aa2a5SYuri Pankov.Pp
3958a7aa2a5SYuri PankovThe function
3968a7aa2a5SYuri Pankov.Fn inet_ntoa
3978a7aa2a5SYuri Pankovreturns a pointer to a string in the base 256 notation
3988a7aa2a5SYuri Pankov.Ql d.d.d.d ,
3998a7aa2a5SYuri Pankovdescribed in the section on IPv4 addresses.
4008a7aa2a5SYuri Pankov.Sh MT-LEVEL
4018a7aa2a5SYuri Pankov.Sy Safe
4028a7aa2a5SYuri Pankov.Sh INTERFACE STABILITY
4038a7aa2a5SYuri PankovThe
4048a7aa2a5SYuri Pankov.Fn inet_ntop ,
4058a7aa2a5SYuri Pankov.Fn inet_pton ,
4068a7aa2a5SYuri Pankov.Fn inet_aton ,
4078a7aa2a5SYuri Pankov.Fn inet_addr ,
4088a7aa2a5SYuri Pankovand
4098a7aa2a5SYuri Pankov.Fn inet_network
4108a7aa2a5SYuri Pankovfunctions are
4118a7aa2a5SYuri Pankov.Sy Committed .
4128a7aa2a5SYuri PankovThe
4138a7aa2a5SYuri Pankov.Fn inet_lnaof ,
4148a7aa2a5SYuri Pankov.Fn inet_makeaddr ,
4158a7aa2a5SYuri Pankov.Fn inet_netof ,
4168a7aa2a5SYuri Pankovand
4178a7aa2a5SYuri Pankov.Fn inet_network
4188a7aa2a5SYuri Pankovfunctions are
4198a7aa2a5SYuri Pankov.Sy Obsolete Committed .
4208a7aa2a5SYuri Pankov.Sh SEE ALSO
4218a7aa2a5SYuri Pankov.Xr inet.h 3HEAD ,
4228a7aa2a5SYuri Pankov.Xr gethostbyname 3NSL ,
4238a7aa2a5SYuri Pankov.Xr getipnodebyname 3SOCKET ,
4248a7aa2a5SYuri Pankov.Xr getnetbyname 3SOCKET ,
425*bbf21555SRichard Lowe.Xr hosts 5 ,
426*bbf21555SRichard Lowe.Xr networks 5 ,
427*bbf21555SRichard Lowe.Xr attributes 7
4288a7aa2a5SYuri Pankov.Sh NOTES
4298a7aa2a5SYuri PankovThe return value from
4308a7aa2a5SYuri Pankov.Fn inet_ntoa
4318a7aa2a5SYuri Pankovpoints to a buffer which is overwritten on each call.
4328a7aa2a5SYuri PankovThis buffer is implemented as thread-specific data in multithreaded
4338a7aa2a5SYuri Pankovapplications.
4348a7aa2a5SYuri Pankov.Pp
4358a7aa2a5SYuri PankovIPv4-mapped addresses are not recommended.
4368a7aa2a5SYuri Pankov.Sh BUGS
4378a7aa2a5SYuri PankovThe problem of host byte ordering versus network byte ordering is confusing.
4388a7aa2a5SYuri Pankov.Pp
4398a7aa2a5SYuri PankovA simple way to specify Class C network addresses in a manner similar to that
4408a7aa2a5SYuri Pankovfor Class B and Class A is needed.
441