xref: /freebsd/lib/libc/net/inet.3 (revision 12bd931d8c64ad2d5e78c7ab917efbff326152ca)
158f0484fSRodney W. Grimes.\" Copyright (c) 1983, 1990, 1991, 1993
258f0484fSRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
358f0484fSRodney W. Grimes.\"
458f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
558f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions
658f0484fSRodney W. Grimes.\" are met:
758f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
858f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
958f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
1058f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
1158f0484fSRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
12fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
1358f0484fSRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
1458f0484fSRodney W. Grimes.\"    without specific prior written permission.
1558f0484fSRodney W. Grimes.\"
1658f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1758f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1858f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1958f0484fSRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2058f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2158f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2258f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2358f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2458f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2558f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2658f0484fSRodney W. Grimes.\" SUCH DAMAGE.
2758f0484fSRodney W. Grimes.\"
28538e8768SGarrett Wollman.\"     From: @(#)inet.3	8.1 (Berkeley) 6/4/93
297f3dea24SPeter Wemm.\" $FreeBSD$
3058f0484fSRodney W. Grimes.\"
31*12bd931dSMike Karels.Dd November 9, 2021
3258f0484fSRodney W. Grimes.Dt INET 3
33a307d598SRuslan Ermilov.Os
3458f0484fSRodney W. Grimes.Sh NAME
3558f0484fSRodney W. Grimes.Nm inet_aton ,
3658f0484fSRodney W. Grimes.Nm inet_addr ,
3758f0484fSRodney W. Grimes.Nm inet_network ,
3858f0484fSRodney W. Grimes.Nm inet_ntoa ,
390c927cddSXin LI.Nm inet_ntoa_r ,
4089482e46SYoshinobu Inoue.Nm inet_ntop ,
4189482e46SYoshinobu Inoue.Nm inet_pton ,
4258f0484fSRodney W. Grimes.Nm inet_makeaddr ,
4358f0484fSRodney W. Grimes.Nm inet_lnaof ,
4458f0484fSRodney W. Grimes.Nm inet_netof
4558f0484fSRodney W. Grimes.Nd Internet address manipulation routines
4625bb73e0SAlexey Zelkin.Sh LIBRARY
4725bb73e0SAlexey Zelkin.Lb libc
4858f0484fSRodney W. Grimes.Sh SYNOPSIS
4932eef9aeSRuslan Ermilov.In sys/types.h
5032eef9aeSRuslan Ermilov.In sys/socket.h
5132eef9aeSRuslan Ermilov.In netinet/in.h
5232eef9aeSRuslan Ermilov.In arpa/inet.h
5358f0484fSRodney W. Grimes.Ft int
54433671e3SBruce Evans.Fn inet_aton "const char *cp" "struct in_addr *pin"
552da24fa6SHajimu UMEMOTO.Ft in_addr_t
56433671e3SBruce Evans.Fn inet_addr "const char *cp"
572da24fa6SHajimu UMEMOTO.Ft in_addr_t
58433671e3SBruce Evans.Fn inet_network "const char *cp"
5958f0484fSRodney W. Grimes.Ft char *
6058f0484fSRodney W. Grimes.Fn inet_ntoa "struct in_addr in"
610c927cddSXin LI.Ft char *
620c927cddSXin LI.Fo inet_ntoa_r
630c927cddSXin LI.Fa "struct in_addr in"
640c927cddSXin LI.Fa "char *buf"
650bb263dfSXin LI.Fa "socklen_t size"
660c927cddSXin LI.Fc
6789482e46SYoshinobu Inoue.Ft const char *
687cfcd027SRobert Drehmel.Fo inet_ntop
697cfcd027SRobert Drehmel.Fa "int af"
707cfcd027SRobert Drehmel.Fa "const void * restrict src"
717cfcd027SRobert Drehmel.Fa "char * restrict dst"
727cfcd027SRobert Drehmel.Fa "socklen_t size"
737cfcd027SRobert Drehmel.Fc
7489482e46SYoshinobu Inoue.Ft int
75b7dbaf7bSRobert Drehmel.Fn inet_pton "int af" "const char * restrict src" "void * restrict dst"
7658f0484fSRodney W. Grimes.Ft struct in_addr
772da24fa6SHajimu UMEMOTO.Fn inet_makeaddr "in_addr_t net" "in_addr_t lna"
782da24fa6SHajimu UMEMOTO.Ft in_addr_t
7958f0484fSRodney W. Grimes.Fn inet_lnaof "struct in_addr in"
802da24fa6SHajimu UMEMOTO.Ft in_addr_t
8158f0484fSRodney W. Grimes.Fn inet_netof "struct in_addr in"
8258f0484fSRodney W. Grimes.Sh DESCRIPTION
8358f0484fSRodney W. GrimesThe routines
8458f0484fSRodney W. Grimes.Fn inet_aton ,
8558f0484fSRodney W. Grimes.Fn inet_addr
8658f0484fSRodney W. Grimesand
8758f0484fSRodney W. Grimes.Fn inet_network
8858f0484fSRodney W. Grimesinterpret character strings representing
8958f0484fSRodney W. Grimesnumbers expressed in the Internet standard
9042635956SRuslan Ermilov.Ql .\&
9158f0484fSRodney W. Grimesnotation.
9289482e46SYoshinobu Inoue.Pp
9389482e46SYoshinobu InoueThe
9489482e46SYoshinobu Inoue.Fn inet_pton
9589482e46SYoshinobu Inouefunction converts a presentation format address (that is, printable form
9689482e46SYoshinobu Inoueas held in a character string) to network format (usually a
9789482e46SYoshinobu Inoue.Ft struct in_addr
9889482e46SYoshinobu Inoueor some other internal binary representation, in network byte order).
9989482e46SYoshinobu InoueIt returns 1 if the address was valid for the specified address family, or
1000227791bSRuslan Ermilov0 if the address was not parseable in the specified address family, or -1
10189482e46SYoshinobu Inoueif some system error occurred (in which case
10289482e46SYoshinobu Inoue.Va errno
10389482e46SYoshinobu Inouewill have been set).
10489482e46SYoshinobu InoueThis function is presently valid for
10589482e46SYoshinobu Inoue.Dv AF_INET
10689482e46SYoshinobu Inoueand
10789482e46SYoshinobu Inoue.Dv AF_INET6 .
10889482e46SYoshinobu Inoue.Pp
10958f0484fSRodney W. GrimesThe
11058f0484fSRodney W. Grimes.Fn inet_aton
11158f0484fSRodney W. Grimesroutine interprets the specified character string as an Internet address,
11258f0484fSRodney W. Grimesplacing the address into the structure provided.
11358f0484fSRodney W. GrimesIt returns 1 if the string was successfully interpreted,
11458f0484fSRodney W. Grimesor 0 if the string is invalid.
11558f0484fSRodney W. GrimesThe
11658f0484fSRodney W. Grimes.Fn inet_addr
11758f0484fSRodney W. Grimesand
11858f0484fSRodney W. Grimes.Fn inet_network
11958f0484fSRodney W. Grimesfunctions return numbers suitable for use
12058f0484fSRodney W. Grimesas Internet addresses and Internet network
12158f0484fSRodney W. Grimesnumbers, respectively.
12289482e46SYoshinobu Inoue.Pp
12389482e46SYoshinobu InoueThe function
12489482e46SYoshinobu Inoue.Fn inet_ntop
1253c6ba09bSBruce M Simpsonconverts an address
1263c6ba09bSBruce M Simpson.Fa *src
1273c6ba09bSBruce M Simpsonfrom network format
1283c6ba09bSBruce M Simpson(usually a
12989482e46SYoshinobu Inoue.Ft struct in_addr
13089482e46SYoshinobu Inoueor some other binary form, in network byte order) to presentation format
13189482e46SYoshinobu Inoue(suitable for external display purposes).
1323c6ba09bSBruce M SimpsonThe
1333c6ba09bSBruce M Simpson.Fa size
1343c6ba09bSBruce M Simpsonargument specifies the size, in bytes, of the buffer
1353c6ba09bSBruce M Simpson.Fa *dst .
13602023242SMax Laier.Dv INET_ADDRSTRLEN
13702023242SMax Laierand
13802023242SMax Laier.Dv INET6_ADDRSTRLEN
13902023242SMax Laierdefine the maximum size required to convert an address of the respective
14002023242SMax Laiertype.
14189482e46SYoshinobu InoueIt returns NULL if a system error occurs (in which case,
14289482e46SYoshinobu Inoue.Va errno
14389482e46SYoshinobu Inouewill have been set), or it returns a pointer to the destination string.
14489482e46SYoshinobu InoueThis function is presently valid for
14589482e46SYoshinobu Inoue.Dv AF_INET
14689482e46SYoshinobu Inoueand
14789482e46SYoshinobu Inoue.Dv AF_INET6 .
14889482e46SYoshinobu Inoue.Pp
14958f0484fSRodney W. GrimesThe routine
15058f0484fSRodney W. Grimes.Fn inet_ntoa
15158f0484fSRodney W. Grimestakes an Internet address and returns an
15258f0484fSRodney W. Grimes.Tn ASCII
15358f0484fSRodney W. Grimesstring representing the address in
15442635956SRuslan Ermilov.Ql .\&
1551a0a9345SRuslan Ermilovnotation.
1561a0a9345SRuslan ErmilovThe routine
1570c927cddSXin LI.Fn inet_ntoa_r
1580c927cddSXin LIis the reentrant version of
1590c927cddSXin LI.Fn inet_ntoa .
160*12bd931dSMike KarelsThe deprecated routine
16158f0484fSRodney W. Grimes.Fn inet_makeaddr
16258f0484fSRodney W. Grimestakes an Internet network number and a local
163*12bd931dSMike Karelshost address on that network, and constructs an Internet address
1641a0a9345SRuslan Ermilovfrom it.
165*12bd931dSMike KarelsIt should only be assumed to work for historical class A/B/C networks.
166*12bd931dSMike KarelsThe deprecated routines
16758f0484fSRodney W. Grimes.Fn inet_netof
16858f0484fSRodney W. Grimesand
16958f0484fSRodney W. Grimes.Fn inet_lnaof
17058f0484fSRodney W. Grimesbreak apart Internet host addresses, returning
171*12bd931dSMike Karelsthe network number and local host address part,
172*12bd931dSMike Karelsrespectively,
173*12bd931dSMike Karelsassuming the historical class A/B/C network masks.
17458f0484fSRodney W. Grimes.Pp
17558f0484fSRodney W. GrimesAll Internet addresses are returned in network
17658f0484fSRodney W. Grimesorder (bytes ordered from left to right).
17758f0484fSRodney W. GrimesAll network numbers and local address parts are
1787125977bSRuslan Ermilovreturned as machine byte order integer values.
17958f0484fSRodney W. Grimes.Sh INTERNET ADDRESSES
18058f0484fSRodney W. GrimesValues specified using the
18142635956SRuslan Ermilov.Ql .\&
18258f0484fSRodney W. Grimesnotation take one
18358f0484fSRodney W. Grimesof the following forms:
18458f0484fSRodney W. Grimes.Bd -literal -offset indent
18558f0484fSRodney W. Grimesa.b.c.d
18658f0484fSRodney W. Grimesa.b.c
18758f0484fSRodney W. Grimesa.b
18858f0484fSRodney W. Grimesa
18958f0484fSRodney W. Grimes.Ed
19058f0484fSRodney W. Grimes.Pp
19158f0484fSRodney W. GrimesWhen four parts are specified, each is interpreted
19258f0484fSRodney W. Grimesas a byte of data and assigned, from left to right,
1931a0a9345SRuslan Ermilovto the four bytes of an Internet address.
1941a0a9345SRuslan ErmilovNote
19558f0484fSRodney W. Grimesthat when an Internet address is viewed as a 32-bit
19658f0484fSRodney W. Grimesinteger quantity on the
19758f0484fSRodney W. Grimes.Tn VAX
19858f0484fSRodney W. Grimesthe bytes referred to
19958f0484fSRodney W. Grimesabove appear as
20058f0484fSRodney W. Grimes.Dq Li d.c.b.a .
20158f0484fSRodney W. GrimesThat is,
20258f0484fSRodney W. Grimes.Tn VAX
20358f0484fSRodney W. Grimesbytes are
20458f0484fSRodney W. Grimesordered from right to left.
20558f0484fSRodney W. Grimes.Pp
20658f0484fSRodney W. GrimesWhen a three part address is specified, the last
20758f0484fSRodney W. Grimespart is interpreted as a 16-bit quantity and placed
208*12bd931dSMike Karelsin the least significant two bytes of the network address.
20958f0484fSRodney W. Grimes.Pp
21058f0484fSRodney W. GrimesWhen a two part address is supplied, the last part
21158f0484fSRodney W. Grimesis interpreted as a 24-bit quantity and placed in
212*12bd931dSMike Karelsthe least significant three bytes of the network address.
21358f0484fSRodney W. Grimes.Pp
21458f0484fSRodney W. GrimesWhen only one part is given, the value is stored
21558f0484fSRodney W. Grimesdirectly in the network address without any byte
21658f0484fSRodney W. Grimesrearrangement.
21758f0484fSRodney W. Grimes.Pp
21858f0484fSRodney W. GrimesAll numbers supplied as
21958f0484fSRodney W. Grimes.Dq parts
22058f0484fSRodney W. Grimesin a
22142635956SRuslan Ermilov.Ql .\&
22258f0484fSRodney W. Grimesnotation
22358f0484fSRodney W. Grimesmay be decimal, octal, or hexadecimal, as specified
22458f0484fSRodney W. Grimesin the C language (i.e., a leading 0x or 0X implies
22558f0484fSRodney W. Grimeshexadecimal; otherwise, a leading 0 implies octal;
22658f0484fSRodney W. Grimesotherwise, the number is interpreted as decimal).
22758f0484fSRodney W. Grimes.Sh DIAGNOSTICS
22858f0484fSRodney W. GrimesThe constant
22958f0484fSRodney W. Grimes.Dv INADDR_NONE
23058f0484fSRodney W. Grimesis returned by
23158f0484fSRodney W. Grimes.Fn inet_addr
23258f0484fSRodney W. Grimesand
23358f0484fSRodney W. Grimes.Fn inet_network
23458f0484fSRodney W. Grimesfor malformed requests.
2353c6ba09bSBruce M Simpson.Sh ERRORS
2363c6ba09bSBruce M SimpsonThe
2373c6ba09bSBruce M Simpson.Fn inet_ntop
2383c6ba09bSBruce M Simpsoncall fails if:
2393c6ba09bSBruce M Simpson.Bl -tag -width Er
2403c6ba09bSBruce M Simpson.It Bq Er ENOSPC
2413c6ba09bSBruce M Simpson.Fa size
2423c6ba09bSBruce M Simpsonwas not large enough to store the presentation form of the address.
2433c6ba09bSBruce M Simpson.It Bq Er EAFNOSUPPORT
2443c6ba09bSBruce M Simpson.Fa *src
24533992dc0SRuslan Ermilovwas not an
24633992dc0SRuslan Ermilov.Dv AF_INET
24733992dc0SRuslan Ermilovor
24833992dc0SRuslan Ermilov.Dv AF_INET6
24933992dc0SRuslan Ermilovfamily address.
2503c6ba09bSBruce M Simpson.El
25158f0484fSRodney W. Grimes.Sh SEE ALSO
25281a3cb97SRuslan Ermilov.Xr byteorder 3 ,
25367228c46SBruce M Simpson.Xr getaddrinfo 3 ,
25458f0484fSRodney W. Grimes.Xr gethostbyname 3 ,
25567228c46SBruce M Simpson.Xr getnameinfo 3 ,
25658f0484fSRodney W. Grimes.Xr getnetent 3 ,
25781a3cb97SRuslan Ermilov.Xr inet_net 3 ,
25858f0484fSRodney W. Grimes.Xr hosts 5 ,
25913608f66SWolfram Schneider.Xr networks 5
26089482e46SYoshinobu Inoue.Rs
26189482e46SYoshinobu Inoue.%R RFC
26289482e46SYoshinobu Inoue.%N 2373
26389482e46SYoshinobu Inoue.%D July 1998
26489482e46SYoshinobu Inoue.%T "IP Version 6 Addressing Architecture"
26589482e46SYoshinobu Inoue.Re
26689482e46SYoshinobu Inoue.Sh STANDARDS
26789482e46SYoshinobu InoueThe
268563f6bdeSRuslan Ermilov.Fn inet_ntop
26989482e46SYoshinobu Inoueand
270563f6bdeSRuslan Ermilov.Fn inet_pton
27189482e46SYoshinobu Inouefunctions conform to
27233dfeb89SRuslan Ermilov.St -xns5.2 .
27389482e46SYoshinobu InoueNote that
274563f6bdeSRuslan Ermilov.Fn inet_pton
27589482e46SYoshinobu Inouedoes not accept 1-, 2-, or 3-part dotted addresses; all four parts
2762d69bc9bSCrist J. Clarkmust be specified and are interpreted only as decimal values.
27789482e46SYoshinobu InoueThis is a narrower input set than that accepted by
278563f6bdeSRuslan Ermilov.Fn inet_aton .
27958f0484fSRodney W. Grimes.Sh HISTORY
28058f0484fSRodney W. GrimesThese
28158f0484fSRodney W. Grimesfunctions appeared in
28258f0484fSRodney W. Grimes.Bx 4.2 .
28358f0484fSRodney W. Grimes.Sh BUGS
28458f0484fSRodney W. GrimesThe value
28558f0484fSRodney W. Grimes.Dv INADDR_NONE
28658f0484fSRodney W. Grimes(0xffffffff) is a valid broadcast address, but
28758f0484fSRodney W. Grimes.Fn inet_addr
28858f0484fSRodney W. Grimescannot return that value without indicating failure.
28958f0484fSRodney W. GrimesThe newer
29058f0484fSRodney W. Grimes.Fn inet_aton
29158f0484fSRodney W. Grimesfunction does not share this problem.
29258f0484fSRodney W. GrimesThe problem of host byte ordering versus network byte ordering is
29358f0484fSRodney W. Grimesconfusing.
29458f0484fSRodney W. GrimesThe string returned by
29558f0484fSRodney W. Grimes.Fn inet_ntoa
29658f0484fSRodney W. Grimesresides in a static memory area.
29758f0484fSRodney W. Grimes.Pp
2980f0eddbbSRuslan ErmilovThe
2990f0eddbbSRuslan Ermilov.Fn inet_addr
3000f0eddbbSRuslan Ermilovfunction should return a
30158f0484fSRodney W. Grimes.Fa struct in_addr .
302