inet_pton()--Convert IPv4
and IPv6 Addresses Between Text and Binary Form
Syntax
#include <sys/socket.h>
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
Service Program Name: QSOSRV2
Default Public Authority: *USE
Threadsafe: Yes
The inet_pton() function converts an address in
its standard text presentation form into its numeric binary form.
Parameters
- af
- (Input) Specifies the family of the address to be converted. Currently the
AF_INET and AF_INET6 address families are supported.
- src
- (Input) The pointer to the null-terminated character string that contains
the text presentation form of an IPv4 address if the af parameter is
AF_INET, or the text presentation form of an IPv6 address if the af
parameter is AF_INET6. See usage notes for the supported formats.
- dst
- (Output) The pointer to a buffer into which the function stores the
numeric address. The calling application must ensure that the buffer referred
to by dst is large enough to hold the numeric address (4 bytes
for AF_INET or 16 bytes for AF_INET6).
Authorities
No authorization is required.
Return Value
inet_pton() returns an integer. Possible values are:
- 1 (successful)
- 0 (unsuccessful--input is not a valid IPv4 dotted-decimal string or a valid
IPv6 address string)
- -1 (unsuccessful--see errno)
If successful, the buffer pointed at by dst will be updated with
the numeric address.
Error Conditions
When inet_pton() fails with a -1, errno will be set
to:
- [EAFNOSUPPORT]
The address family is not supported.
- [EINVAL]
Parameter is not valid.
- [EFAULT]
The system detected an address which was not
valid while attempting to access the src or dst
parameter.
Usage Notes
- If the af parameter of inet_pton() is
AF_INET, the src string must be in the standard IPv4 dotted-decimal
form:
- ddd.ddd.ddd.ddd
where ddd is a one to three digit decimal number between 0 and 255 (see the
inet_addr() definition). The
inet_pton function does not accept other formats
(such as the octal numbers, hexadecimal numbers, and fewer than four numbers
that inet_addr() accepts).
-
If the af parameter of inet_pton is
AF_INET6, the src string must be in one of the following IPv6
text forms:
- The preferred form is x:x:x:x:x:x:x:x, where the 'x's are
the hexadecimal values of the eight 16-bit pieces of the address. Leading zeros
in individual fields can be omitted, but there must be at least one value in
every field.
- A string of contiguous zero fields in the preferred form can be shown as
"::". The "::" can only appear once in an address. Unspecified addresses
(0:0:0:0:0:0:0:0) may be represented simply as "::".
- A third form that is sometimes more convenient when dealing with a mixed
environment of IPv4 and IPv6 nodes is x:x:x:x:x:x:d.d.d.d,
where the "x"s are the hexadecimal values of the six high-order 16-bit pieces
of the address, and the "d"s are the decimal values of the four low-order 8-bit
pieces of the address (standard IPv4 representation).
-
The above IPv6 text forms may include an appended zone
indicator (if preceded by a % character) and/or an appended prefix length
(if preceded by a / character). In these cases, the % or / will be treated
the same as a null terminator.
- A trailing space will be treated the same as a null terminator.
- The default coded character set identifier (CCSID) currently in effect for the job
will be
used to convert the characters found at src (to allow the hexadecimal
values to be entered in lower case).
Related Information
- inet_addr()--Translate Full Address to 32-bit IP
Address
- inet_ntop()--Convert IPv4 and IPv6 Addresses
Between Binary and Text Form
API introduced: V5R2