1 .\" Copyright (c) 1983, 1990, 1991, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 4. Neither the name of the University nor the names of its contributors
13 .\" may be used to endorse or promote products derived from this software
14 .\" without specific prior written permission.
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" From: @(#)inet.3 8.1 (Berkeley) 6/4/93
29 .\" $FreeBSD: src/lib/libc/net/inet.3,v 1.36 2007/06/14 07:13:28 delphij Exp $
44 .Nd Internet address manipulation routines
56 .Fa "struct in_addr *pin"
60 .Fa "struct in_addr in"
69 .Fa "struct in_addr in"
77 .Fa "struct in_addr in"
82 .Fa "const void * restrict src"
83 .Fa "char * restrict dst"
89 .Fa "const char * restrict src"
90 .Fa "void * restrict dst"
98 interpret character strings representing
99 numbers expressed in the Internet standard
105 function converts a presentation format address (that is, printable form
106 as held in a character string) to network format (usually a
108 or some other internal binary representation, in network byte order).
109 It returns 1 if the address was valid for the specified address family, or
110 0 if the address was not parseable in the specified address family, or -1
111 if some system error occurred (in which case
114 This function is presently valid for
121 routine interprets the specified character string as an Internet address,
122 placing the address into the structure provided.
123 It returns 1 if the string was successfully interpreted,
124 or 0 if the string is invalid.
129 functions return numbers suitable for use
130 as Internet addresses and Internet network
131 numbers, respectively.
140 or some other binary form, in network byte order) to presentation format
141 (suitable for external display purposes).
144 argument specifies the size, in bytes, of the buffer
149 define the maximum size required to convert an address of the respective
151 It returns NULL if a system error occurs (in which case,
153 will have been set), or it returns a pointer to the destination string.
154 This function is presently valid for
161 takes an Internet address and returns an
163 string representing the address in
168 takes an Internet network number and a local
169 network address and constructs an Internet address
175 break apart Internet host addresses, returning
176 the network number and local network address part,
179 All Internet addresses are returned in network
180 order (bytes ordered from left to right).
181 All network numbers and local address parts are
182 returned as machine byte order integer values.
183 .Sh INTERNET ADDRESSES
184 Values specified using the
187 of the following forms:
188 .Bd -literal -offset indent
195 When four parts are specified, each is interpreted
196 as a byte of data and assigned, from left to right,
197 to the four bytes of an Internet address.
199 that when an Internet address is viewed as a 32-bit
200 integer quantity on the
202 the bytes referred to
208 ordered from right to left.
210 When a three part address is specified, the last
211 part is interpreted as a 16-bit quantity and placed
212 in the right-most two bytes of the network address.
213 This makes the three part address format convenient
214 for specifying Class B network addresses as
215 .Dq Li 128.net.host .
217 When a two part address is supplied, the last part
218 is interpreted as a 24-bit quantity and placed in
219 the right most three bytes of the network address.
220 This makes the two part address format convenient
221 for specifying Class A network addresses as
224 When only one part is given, the value is stored
225 directly in the network address without any byte
228 All numbers supplied as
233 may be decimal, octal, or hexadecimal, as specified
234 in the C language (i.e., a leading 0x or 0X implies
235 hexadecimal; otherwise, a leading 0 implies octal;
236 otherwise, the number is interpreted as decimal).
244 for malformed requests.
250 .It Bq Er EAFNOSUPPORT
259 was not large enough to store the presentation form of the address.
262 .Fd #include <sys/types.h>
263 .Fd #include <sys/socket.h>
264 .Fd #include <netinet/in.h>
265 .Fd #include <arpa/inet.h>
267 These include files are necessary for all functions.
271 .Xr gethostbyname 3 ,
281 .%T "IP Version 6 Addressing Architecture"
292 does not accept 1-, 2-, or 3-part dotted addresses; all four parts
293 must be specified and are interpreted only as decimal values.
294 This is a narrower input set than that accepted by
298 functions appeared in
303 (0xffffffff) is a valid broadcast address, but
305 cannot return that value without indicating failure.
308 function does not share this problem.
309 The problem of host byte ordering versus network byte ordering is
311 The string returned by
313 resides in a static memory area.
317 function should return a