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