1.\" $OpenBSD: inet_addr.3,v 1.1 2014/04/19 11:18:01 guenther Exp $ 2.\" $NetBSD: inet.3,v 1.7 1997/06/18 02:25:24 lukem Exp $ 3.\" 4.\" Copyright (c) 1983, 1990, 1991, 1993 5.\" The Regents of the University of California. All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 3. Neither the name of the University nor the names of its contributors 16.\" may be used to endorse or promote products derived from this software 17.\" without specific prior written permission. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29.\" SUCH DAMAGE. 30.\" 31.\" @(#)inet.3 8.1 (Berkeley) 6/4/93 32.\" 33.Dd $Mdocdate: April 19 2014 $ 34.Dt INET_ADDR 3 35.Os 36.Sh NAME 37.Nm inet_aton , 38.Nm inet_addr , 39.Nm inet_network , 40.Nm inet_ntoa 41.Nd Internet Protocol version 4 (IPv4) address manipulation routines 42.Sh SYNOPSIS 43.In arpa/inet.h 44.Ft int 45.Fn inet_aton "const char *cp" "struct in_addr *addr" 46.Ft in_addr_t 47.Fn inet_addr "const char *cp" 48.Ft in_addr_t 49.Fn inet_network "const char *cp" 50.Ft char * 51.Fn inet_ntoa "struct in_addr in" 52.Sh DESCRIPTION 53The functions presented here only support IPv4 addresses. 54In order to support IPv6 addresses as well, 55.Xr inet_ntop 3 56and 57.Xr inet_pton 3 58should be used rather than the functions presented here. 59Scoped IPv6 addresses are supported via 60.Xr getaddrinfo 3 61and 62.Xr getnameinfo 3 . 63.Pp 64The routines 65.Fn inet_aton , 66.Fn inet_addr , 67and 68.Fn inet_network 69interpret character strings representing 70numbers expressed in the Internet standard 71.Dq dot 72notation. 73.Pp 74The 75.Fn inet_aton 76routine interprets the specified character string as an Internet address, 77placing the address into the structure provided. 78It returns 1 if the string was successfully interpreted, 79or 0 if the string was invalid. 80.Pp 81The 82.Fn inet_addr 83and 84.Fn inet_network 85functions return numbers suitable for use 86as Internet addresses and Internet network 87numbers, respectively. 88Both functions return the constant 89.Dv INADDR_NONE 90if the specified character string is malformed. 91.Pp 92The routine 93.Fn inet_ntoa 94takes an Internet address and returns an 95ASCII string representing the address in dot notation. 96.Pp 97All Internet addresses are returned in network 98order (bytes ordered from left to right). 99All network numbers and local address parts are 100returned as machine format integer values. 101.Sh INTERNET ADDRESSES (IP VERSION 4) 102Values specified using dot notation take one of the following forms: 103.Bd -literal -offset indent 104a.b.c.d 105a.b.c 106a.b 107a 108.Ed 109.Pp 110When four parts are specified, each is interpreted 111as a byte of data and assigned, from left to right, 112to the four bytes of an Internet address. 113Note that when an Internet address is viewed as a 32-bit 114integer quantity on a system that uses little-endian 115byte order 116(such as the Intel 386, 486 and Pentium processors) 117the bytes referred to above appear as 118.Dq Li d.c.b.a . 119That is, little-endian bytes are ordered from right to left. 120.Pp 121When a three part address is specified, the last 122part is interpreted as a 16-bit quantity and placed 123in the rightmost two bytes of the network address. 124This makes the three part address format convenient 125for specifying Class B network addresses as 126.Dq Li 128.net.host . 127.Pp 128When a two part address is supplied, the last part 129is interpreted as a 24-bit quantity and placed in 130the rightmost three bytes of the network address. 131This makes the two part address format convenient 132for specifying Class A network addresses as 133.Dq Li net.host . 134.Pp 135When only one part is given, the value is stored 136directly in the network address without any byte 137rearrangement. 138.Pp 139All numbers supplied as 140.Dq parts 141in a dot notation 142may be decimal, octal, or hexadecimal, as specified 143in the C language (i.e., a leading 0x or 0X implies 144hexadecimal; a leading 0 implies octal; 145otherwise, the number is interpreted as decimal). 146.Sh SEE ALSO 147.Xr byteorder 3 , 148.Xr gethostbyname 3 , 149.Xr getnetent 3 , 150.Xr inet_lnaof 3 , 151.Xr inet_net 3 , 152.Xr inet_ntop 3 , 153.Xr hosts 5 , 154.Xr networks 5 155.Sh STANDARDS 156The 157.Nm inet_addr 158and 159.Nm inet_aton 160functions conform to 161.St -p1003.1-2008 . 162.Sh HISTORY 163The 164.Nm inet_addr 165and 166.Nm inet_network 167functions appeared in 168.Bx 4.2 . 169The 170.Nm inet_aton 171and 172.Nm inet_ntoa 173functions appeared in 174.Bx 4.3 . 175.Sh BUGS 176The value 177.Dv INADDR_NONE 178(0xffffffff) is a valid broadcast address, but 179.Fn inet_addr 180cannot return that value without indicating failure. 181Also, 182.Fn inet_addr 183should have been designed to return a 184.Li struct in_addr . 185The newer 186.Fn inet_aton 187function does not share these problems, and almost all existing code 188should be modified to use 189.Fn inet_aton 190instead. 191.Pp 192The problem of host byte ordering versus network byte ordering is 193confusing. 194.Pp 195The string returned by 196.Fn inet_ntoa 197resides in a static memory area. 198