INET(3)
okay bestie, welcome to INET(3) from the Library Functions Manual โ the Internet address manipulation glow-up page. โจ
๐ NAME ๐
inet_aton, inet_addr, inet_network, inet_ntoa, inet_ntoa_r, inet_ntop, inet_pton, inet_makeaddr, inet_lnaof, inet_netof โ literally the Internet address manipulation routines. ๐
๐ LIBRARY ๐
Standard C Library (libc, -lc) โ thatโs the vibe. ๐ซถ
๐ง SYNOPSIS ๐ง
bestie, here are the exact spellings, no cap:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int
inet_aton(const char *cp, struct in_addr *pin);
in_addr_t
inet_addr(const char *cp);
in_addr_t
inet_network(const char *cp);
char *
inet_ntoa(struct in_addr in);
char *
inet_ntoa_r(struct in_addr in, char *buf, socklen_t size);
const char *
inet_ntop(int af, const void * restrict src, char * restrict dst,
socklen_t size);
int
inet_pton(int af, const char * restrict src, void * restrict dst);
struct in_addr
inet_makeaddr(in_addr_t net, in_addr_t lna);
in_addr_t
inet_lnaof(struct in_addr in);
in_addr_t
inet_netof(struct in_addr in);
๐ธ DESCRIPTION ๐ธ
Okay so inet_aton(), inet_addr(), and inet_network() interpret character strings representing numbers expressed in the Internet standard โ.โ notation. ๐
inet_pton() converts a presentation format address (that is, printable form as held in a character string) to network format (usually a struct in_addr or some other internal binary representation, in network byte order). It returns 1 if the address was valid for the specified address family, or 0 if the address was not parseable in the specified address family, or -1 if some system error occurred (in which case errno will have been set). This function is presently valid for AF_INET and AF_INET6. โจ
inet_aton() interprets the specified character string as an Internet address, placing the address into the structure provided. It returns 1 if the string was successfully interpreted, or 0 if the string is invalid. inet_addr() and inet_network() return numbers suitable for use as Internet addresses and Internet network numbers, respectively. ๐ฅ
inet_ntop() converts an address *src from network format (usually a struct in_addr or some other binary form, in network byte order) to presentation format (suitable for external display purposes). The size argument specifies the size, in bytes, of the buffer *dst. INET_ADDRSTRLEN and INET6_ADDRSTRLEN define the maximum size required to convert an address of the respective type. It returns NULL if a system error occurs (in which case, errno will have been set), or it returns a pointer to the destination string. This function is presently valid for AF_INET and AF_INET6. ๐
inet_ntoa() takes an Internet address and returns an ASCII string representing the address in โ.โ notation. inet_ntoa_r() is the reentrant version of inet_ntoa(). The deprecated routine inet_makeaddr() takes an Internet network number and a local host address on that network, and constructs an Internet address from it. It should only be assumed to work for historical class A/B/C networks. The deprecated routines inet_netof() and inet_lnaof() break apart Internet host addresses, returning the network number and local host address part, respectively, assuming the historical class A/B/C network masks. ๐จ
๐จ deprecated alert:inet_makeaddr(),inet_netof(), andinet_lnaof()are the old-school crew. The page says they are deprecated, andinet_makeaddr()should only be assumed to work for historical class A/B/C networks.
All Internet addresses are returned in network order (bytes ordered from left to right). All network numbers and local address parts are returned as machine byte order integer values. ๐
๐ INTERNET ADDRESSES (IP VERSION 4) ๐
inet_aton() and inet_addr() accept IPv4 values specified using the โ.โ notation in one of the following forms:
a.b.c.d
a.b.c
a.b
a
When four parts are specified, each is interpreted as a byte of data and assigned, from left to right, to the four bytes of an Internet address. ๐
When a three part address is specified, the last part is interpreted as a 16-bit quantity and placed in the least significant two bytes of the network address. ๐ซ
When a two part address is supplied, the last part is interpreted as a 24-bit quantity and placed in the least significant three bytes of the network address. ๐
When only one part is given, the value is stored directly in the network address without any byte rearrangement. ๐ฆ
All numbers supplied as โpartsโ in a โ.โ notation may be decimal, octal, or hexadecimal, as specified in the C language (i.e., a leading 0x or 0X implies hexadecimal; otherwise, a leading 0 implies octal; otherwise, the number is interpreted as decimal). ๐ข
Note that inet_pton() does not accept 1-, 2-, or 3-part dotted addresses; all four parts must be specified and are interpreted only as decimal values. This is a narrower input set than that accepted by inet_aton(). ๐
๐ฉบ DIAGNOSTICS ๐ฉบ
The constant INADDR_NONE is returned by inet_addr() and inet_network() for malformed requests. ๐
๐ฑ ERRORS ๐ฑ
The inet_ntop() call fails if:
[ENOSPC]โsizewas not large enough to store the presentation form of the address. ๐ซ[EAFNOSUPPORT]โ*srcwas not anAF_INETorAF_INET6family address. ๐ซ
๐ SEE ALSO ๐
byteorder(3),getaddrinfo(3),gethostbyname(3),getnameinfo(3),getnetent(3),inet_net(3),hosts(5),networks(5). ๐ซถ- IP Version 6 Addressing Architecture, RFC, 2373, July 1998. ๐
๐ STANDARDS ๐
The inet_ntop() and inet_pton() functions conform to X/Open Networking Services Issue 5.2 (โXNS5.2โ). โ
๐ฐ๏ธ HISTORY ๐ฐ๏ธ
These functions appeared in 4.2BSD. ๐
๐ BUGS ๐
The value INADDR_NONE (0xffffffff) is a valid broadcast address, but inet_addr() cannot return that value without indicating failure. The newer inet_aton() function does not share this problem. The problem of host byte ordering versus network byte ordering is confusing. The string returned by inet_ntoa() resides in a static memory area. ๐ญ
The inet_addr() function should return a struct in_addr. ๐
mwah ๐ thatโs the INET(3) tea. This page is from Debian, dated November 9, 2021. ๐
๐ฆ where this page comes from
- freebsd 15.1: base 15.1
- Copyright (c) 1983, 1990, 1991, 1993 The Regents of the University of California. All rights reserved
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms