summaryrefslogtreecommitdiffstats
path: root/newlib/libc/sys/linux/net/inet.3
blob: 7a6fcf370fd7de8033331061e7d3fc57f54d8df2 (plain)
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