1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
|
INET(3) BSD Library Functions Manual INET(3)
NAME
inet_aton, inet_addr, inet_network, inet_ntoa, inet_ntop, inet_pton, inet_makeaddr,
inet_lnaof, inet_netof -- Internet address manipulation routines
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#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);
const char *
inet_ntop(int af, const void *src, char *dst, socklen_t size);
int
inet_pton(int af, const char *src, void *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
The routines inet_aton(), inet_addr() and inet_network() interpret character strings repre-
senting numbers expressed in the Internet standard '.' notation.
The inet_pton() function 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 inter-
nal binary representation, in network byte order). It returns 1 if the address was valid
for the specified address family, or 0 if the address wasn't parseable in the specified ad-
dress 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.
The inet_aton() routine interprets the specified character string as an Internet address,
placing the address into the structure provided. It returns 1 if the string was success-
fully interpreted, or 0 if the string is invalid. The inet_addr() and inet_network() func-
tions return numbers suitable for use as Internet addresses and Internet network numbers,
respectively.
The function inet_ntop() converts an address from network format (usually a struct in_addr
or some other binary form, in network byte order) to presentation format (suitable for ex-
ternal display purposes). 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.
The routine inet_ntoa() takes an Internet address and returns an ASCII string representing
the address in '.' notation. The routine inet_makeaddr() takes an Internet network number
and a local network address and constructs an Internet address from it. The routines
inet_netof() and inet_lnaof() break apart Internet host addresses, returning the network
number and local network address part, respectively.
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 val-
ues.
INTERNET ADDRESSES
Values specified using the '.' notation take 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. Note that when an Internet address is
viewed as a 32-bit integer quantity on the VAX the bytes referred to above appear as
"d.c.b.a". That is, VAX bytes are ordered from right to left.
When a three part address is specified, the last part is interpreted as a 16-bit quantity
and placed in the right-most two bytes of the network address. This makes the three part
address format convenient for specifying Class B network addresses as "128.net.host".
When a two part address is supplied, the last part is interpreted as a 24-bit quantity and
placed in the right most three bytes of the network address. This makes the two part ad-
dress format convenient for specifying Class A network addresses as "net.host".
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).
The inet_aton() and inet_ntoa() functions are semi-deprecated in favor of the addr2ascii(3)
family. However, since those functions are not yet widely implemented, portable programs
cannot rely on their presence and will continue to use the inet(3) functions for some time.
DIAGNOSTICS
The constant INADDR_NONE is returned by inet_addr() and inet_network() for malformed re-
quests.
SEE ALSO
addr2ascii(3), byteorder(3), gethostbyname(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"). 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().
HISTORY
These functions appeared in 4.2BSD.
BUGS
The value INADDR_NONE (0xffffffff) is a valid broadcast address, but inet_addr() cannot re-
turn 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.
Inet_addr should return a struct in_addr.
BSD June 17, 1996 BSD
|