1 #ifndef CLIB_BSDSOCKET_PROTOS_H
2 #define CLIB_BSDSOCKET_PROTOS_H
5 Copyright © 1995-2017, The AROS Development Team. All rights reserved.
8 #include <aros/libcall.h>
10 #include <sys/select.h>
13 AROS_LPA(int, domain
, D0
),
14 AROS_LPA(int, type
, D1
),
15 AROS_LPA(int, protocol
, D2
),
16 LIBBASETYPEPTR
, SocketBase
, 5, BSDSocket
20 AROS_LPA(struct sockaddr
*, name
, A0
),
21 AROS_LPA(socklen_t
, namelen
, D1
),
22 LIBBASETYPEPTR
, SocketBase
, 6, BSDSocket
26 AROS_LPA(int, backlog
, D1
),
27 LIBBASETYPEPTR
, SocketBase
, 7, BSDSocket
31 AROS_LPA(struct sockaddr
*, addr
, A0
),
32 AROS_LPA(socklen_t
*, addrlen
, A1
),
33 LIBBASETYPEPTR
, SocketBase
, 8, BSDSocket
35 AROS_LP3(int, connect
,
37 AROS_LPA(struct sockaddr
*, name
, A0
),
38 AROS_LPA(socklen_t
, namelen
, D1
),
39 LIBBASETYPEPTR
, SocketBase
, 9, BSDSocket
43 AROS_LPA(const void *, msg
, A0
),
44 AROS_LPA(int, len
, D1
),
45 AROS_LPA(int, flags
, D2
),
46 AROS_LPA(const struct sockaddr
*, to
, A1
),
47 AROS_LPA(socklen_t
, tolen
, D3
),
48 LIBBASETYPEPTR
, SocketBase
, 10, BSDSocket
52 AROS_LPA(const void *, msg
, A0
),
53 AROS_LPA(int, len
, D1
),
54 AROS_LPA(int, flags
, D2
),
55 LIBBASETYPEPTR
, SocketBase
, 11, BSDSocket
57 AROS_LP6(int, recvfrom
,
59 AROS_LPA(void *, buf
, A0
),
60 AROS_LPA(int, len
, D1
),
61 AROS_LPA(int, flags
, D2
),
62 AROS_LPA(struct sockaddr
*, from
, A1
),
63 AROS_LPA(socklen_t
*, fromlen
, A2
),
64 LIBBASETYPEPTR
, SocketBase
, 12, BSDSocket
68 AROS_LPA(void *, buf
, A0
),
69 AROS_LPA(int, len
, D1
),
70 AROS_LPA(int, flags
, D2
),
71 LIBBASETYPEPTR
, SocketBase
, 13, BSDSocket
73 AROS_LP2(int, shutdown
,
75 AROS_LPA(int, how
, D1
),
76 LIBBASETYPEPTR
, SocketBase
, 14, BSDSocket
78 AROS_LP5(int, setsockopt
,
80 AROS_LPA(int, level
, D1
),
81 AROS_LPA(int, optname
, D2
),
82 AROS_LPA(void *, optval
, A0
),
83 AROS_LPA(socklen_t
, optlen
, D3
),
84 LIBBASETYPEPTR
, SocketBase
, 15, BSDSocket
86 AROS_LP5(int, getsockopt
,
88 AROS_LPA(int, level
, D1
),
89 AROS_LPA(int, optname
, D2
),
90 AROS_LPA(void *, optval
, A0
),
91 AROS_LPA(socklen_t
*, optlen
, A1
),
92 LIBBASETYPEPTR
, SocketBase
, 16, BSDSocket
94 AROS_LP3(int, getsockname
,
96 AROS_LPA(struct sockaddr
*, name
, A0
),
97 AROS_LPA(socklen_t
*, namelen
, A1
),
98 LIBBASETYPEPTR
, SocketBase
, 17, BSDSocket
100 AROS_LP3(int, getpeername
,
101 AROS_LPA(int, s
, D0
),
102 AROS_LPA(struct sockaddr
*, name
, A0
),
103 AROS_LPA(socklen_t
*, namelen
, A1
),
104 LIBBASETYPEPTR
, SocketBase
, 18, BSDSocket
106 AROS_LP3(int, IoctlSocket
,
107 AROS_LPA(int, s
, D0
),
108 AROS_LPA(unsigned long, request
, D1
),
109 AROS_LPA(char *, argp
, A0
),
110 LIBBASETYPEPTR
, SocketBase
, 19, BSDSocket
112 AROS_LP1(int, CloseSocket
,
113 AROS_LPA(int, s
, D0
),
114 LIBBASETYPEPTR
, SocketBase
, 20, BSDSocket
116 AROS_LP6(int, WaitSelect
,
117 AROS_LPA(int, nfds
, D0
),
118 AROS_LPA(fd_set
*, readfds
, A0
),
119 AROS_LPA(fd_set
*, writefds
, A1
),
120 AROS_LPA(fd_set
*, exceptfds
, A2
),
121 AROS_LPA(struct timeval
*, timeout
, A3
),
122 AROS_LPA(ULONG
*, sigmask
, D1
),
123 LIBBASETYPEPTR
, SocketBase
, 21, BSDSocket
125 AROS_LP3(void, SetSocketSignals
,
126 AROS_LPA(ULONG
, intrmask
, D0
),
127 AROS_LPA(ULONG
, iomask
, D1
),
128 AROS_LPA(ULONG
, urgmask
, D2
),
129 LIBBASETYPEPTR
, SocketBase
, 22, BSDSocket
131 AROS_LP0(int, getdtablesize
,
132 LIBBASETYPEPTR
, SocketBase
, 23, BSDSocket
134 AROS_LP4(LONG
, ObtainSocket
,
135 AROS_LPA(LONG
, id
, D0
),
136 AROS_LPA(LONG
, domain
, D1
),
137 AROS_LPA(LONG
, type
, D2
),
138 AROS_LPA(LONG
, protocol
, D3
),
139 LIBBASETYPEPTR
, SocketBase
, 24, BSDSocket
141 AROS_LP2(LONG
, ReleaseSocket
,
142 AROS_LPA(LONG
, sd
, D0
),
143 AROS_LPA(LONG
, id
, D1
),
144 LIBBASETYPEPTR
, SocketBase
, 25, BSDSocket
146 AROS_LP2(LONG
, ReleaseCopyOfSocket
,
147 AROS_LPA(LONG
, sd
, D0
),
148 AROS_LPA(LONG
, id
, D1
),
149 LIBBASETYPEPTR
, SocketBase
, 26, BSDSocket
151 AROS_LP0(LONG
, Errno
,
152 LIBBASETYPEPTR
, SocketBase
, 27, BSDSocket
154 AROS_LP2(void, SetErrnoPtr
,
155 AROS_LPA(void *, ptr
, A0
),
156 AROS_LPA(int, size
, D0
),
157 LIBBASETYPEPTR
, SocketBase
, 28, BSDSocket
159 AROS_LP1(char *, Inet_NtoA
,
160 AROS_LPA(unsigned long, in
, D0
),
161 LIBBASETYPEPTR
, SocketBase
, 29, BSDSocket
163 AROS_LP1(unsigned long, inet_addr
,
164 AROS_LPA(const char *, cp
, A0
),
165 LIBBASETYPEPTR
, SocketBase
, 30, BSDSocket
167 AROS_LP1(unsigned long, Inet_LnaOf
,
168 AROS_LPA(unsigned long, in
, D0
),
169 LIBBASETYPEPTR
, SocketBase
, 31, BSDSocket
171 AROS_LP1(unsigned long, Inet_NetOf
,
172 AROS_LPA(unsigned long, in
, D0
),
173 LIBBASETYPEPTR
, SocketBase
, 32, BSDSocket
175 AROS_LP2(unsigned long, Inet_MakeAddr
,
176 AROS_LPA(int, net
, D0
),
177 AROS_LPA(int, lna
, D1
),
178 LIBBASETYPEPTR
, SocketBase
, 33, BSDSocket
180 AROS_LP1(unsigned long, inet_network
,
181 AROS_LPA(const char *, cp
, A0
),
182 LIBBASETYPEPTR
, SocketBase
, 34, BSDSocket
184 AROS_LP1(struct hostent
*, gethostbyname
,
185 AROS_LPA(const char *, name
, A0
),
186 LIBBASETYPEPTR
, SocketBase
, 35, BSDSocket
188 AROS_LP3(struct hostent
*, gethostbyaddr
,
189 AROS_LPA(const void *, addr
, A0
),
190 AROS_LPA(int, len
, D0
),
191 AROS_LPA(int, type
, D1
),
192 LIBBASETYPEPTR
, SocketBase
, 36, BSDSocket
194 AROS_LP1(struct netent
*, getnetbyname
,
195 AROS_LPA(const char *, name
, A0
),
196 LIBBASETYPEPTR
, SocketBase
, 37, BSDSocket
198 AROS_LP2(struct netent
*, getnetbyaddr
,
199 AROS_LPA(long, net
, D0
),
200 AROS_LPA(int, type
, D1
),
201 LIBBASETYPEPTR
, SocketBase
, 38, BSDSocket
203 AROS_LP2(struct servent
*, getservbyname
,
204 AROS_LPA(char *, name
, A0
),
205 AROS_LPA(char *, proto
, A1
),
206 LIBBASETYPEPTR
, SocketBase
, 39, BSDSocket
208 AROS_LP2(struct servent
*, getservbyport
,
209 AROS_LPA(int, port
, D0
),
210 AROS_LPA(char *, proto
, A0
),
211 LIBBASETYPEPTR
, SocketBase
, 40, BSDSocket
213 AROS_LP1(struct protoent
*, getprotobyname
,
214 AROS_LPA(char *, name
, A0
),
215 LIBBASETYPEPTR
, SocketBase
, 41, BSDSocket
217 AROS_LP1(struct protoent
*, getprotobynumber
,
218 AROS_LPA(int, proto
, D0
),
219 LIBBASETYPEPTR
, SocketBase
, 42, BSDSocket
221 AROS_LP3(void, vsyslog
,
222 AROS_LPA(int, level
, D0
),
223 AROS_LPA(const char *, format
, A0
),
224 AROS_LPA(IPTR
*, args
, A1
),
225 LIBBASETYPEPTR
, SocketBase
, 43, BSDSocket
227 AROS_LP2(int, Dup2Socket
,
228 AROS_LPA(int, fd1
, D0
),
229 AROS_LPA(int, fd2
, D1
),
230 LIBBASETYPEPTR
, SocketBase
, 44, BSDSocket
232 AROS_LP3(int, sendmsg
,
233 AROS_LPA(int, s
, D0
),
234 AROS_LPA(const struct msghdr
*, msg
, A0
),
235 AROS_LPA(int, flags
, D1
),
236 LIBBASETYPEPTR
, SocketBase
, 45, BSDSocket
238 AROS_LP3(int, recvmsg
,
239 AROS_LPA(int, s
, D0
),
240 AROS_LPA(struct msghdr
*, msg
, A0
),
241 AROS_LPA(int, flags
, D1
),
242 LIBBASETYPEPTR
, SocketBase
, 46, BSDSocket
244 AROS_LP2(int, gethostname
,
245 AROS_LPA(char *, name
, A0
),
246 AROS_LPA(int, namelen
, D0
),
247 LIBBASETYPEPTR
, SocketBase
, 47, BSDSocket
249 AROS_LP0(long, gethostid
,
250 LIBBASETYPEPTR
, SocketBase
, 48, BSDSocket
252 AROS_LP1(ULONG
, SocketBaseTagList
,
253 AROS_LPA(struct TagItem
*, tagList
, A0
),
254 LIBBASETYPEPTR
, SocketBase
, 49, BSDSocket
256 AROS_LP1(LONG
, GetSocketEvents
,
257 AROS_LPA(ULONG
*, eventsp
, A0
),
258 LIBBASETYPEPTR
, SocketBase
, 50, BSDSocket
261 /* RoadShow Extensions .. */
262 #if defined(__CONFIG_ROADSHOW__)
263 AROS_LP1(long, bpf_open
,
264 AROS_LPA(long, channel
, D0
),
265 LIBBASETYPEPTR
, SocketBase
, 61, BSDSocket
267 AROS_LP1(long, bpf_close
,
268 AROS_LPA(long, handle
, D0
),
269 LIBBASETYPEPTR
, SocketBase
, 62, BSDSocket
271 AROS_LP3(long, bpf_read
,
272 AROS_LPA(long, handle
, D0
),
273 AROS_LPA(void *, buffer
, A0
),
274 AROS_LPA(long, len
, D1
),
275 LIBBASETYPEPTR
, SocketBase
, 63, BSDSocket
277 AROS_LP3(long, bpf_write
,
278 AROS_LPA(long, handle
, D0
),
279 AROS_LPA(void *, buffer
, A0
),
280 AROS_LPA(long, len
, D1
),
281 LIBBASETYPEPTR
, SocketBase
, 64, BSDSocket
283 AROS_LP2(long, bpf_set_notify_mask
,
284 AROS_LPA(long, handle
, D0
),
285 AROS_LPA(unsigned long, mask
, D1
),
286 LIBBASETYPEPTR
, SocketBase
, 65, BSDSocket
288 AROS_LP2(long, bpf_set_interrupt_mask
,
289 AROS_LPA(long, handle
, D0
),
290 AROS_LPA(unsigned long, mask
, D1
),
291 LIBBASETYPEPTR
, SocketBase
, 66, BSDSocket
293 AROS_LP3(long, bpf_ioctl
,
294 AROS_LPA(long, handle
, D0
),
295 AROS_LPA(unsigned long, request
, D1
),
296 AROS_LPA(char *, argp
, A0
),
297 LIBBASETYPEPTR
, SocketBase
, 67, BSDSocket
299 AROS_LP1(long, bpf_data_waiting
,
300 AROS_LPA(long, handle
, D0
),
301 LIBBASETYPEPTR
, SocketBase
, 68, BSDSocket
303 AROS_LP1(long, AddRouteTagList
,
304 AROS_LPA(struct TagItem
*, tags
, A0
),
305 LIBBASETYPEPTR
, SocketBase
, 69, BSDSocket
307 AROS_LP1(long, DeleteRouteTagList
,
308 AROS_LPA(struct TagItem
*, tags
, A0
),
309 LIBBASETYPEPTR
, SocketBase
, 70, BSDSocket
311 AROS_LP1(long, ChangeRouteTagList
,
312 AROS_LPA(struct TagItem
*, tags
, A0
),
313 LIBBASETYPEPTR
, SocketBase
, 71, BSDSocket
315 AROS_LP1(void, FreeRouteInfo
,
316 AROS_LPA(struct rt_msghdr
*, table
, A0
),
317 LIBBASETYPEPTR
, SocketBase
, 72, BSDSocket
319 AROS_LP2(struct rt_msghdr
*, GetRouteInfo
,
320 AROS_LPA(LONG
, address_family
, D0
),
321 AROS_LPA(LONG
, flags
, D1
),
322 LIBBASETYPEPTR
, SocketBase
, 73, BSDSocket
324 AROS_LP4(long, AddInterfaceTagList
,
325 AROS_LPA(STRPTR
, name
, A0
),
326 AROS_LPA(STRPTR
, device
, A1
),
327 AROS_LPA(long, unit
, D0
),
328 AROS_LPA(struct TagItem
*, tags
, A2
),
329 LIBBASETYPEPTR
, SocketBase
, 74, BSDSocket
331 AROS_LP2(long, ConfigureInterfaceTagList
,
332 AROS_LPA(STRPTR
, name
, A0
),
333 AROS_LPA(struct TagItem
*, tags
, A1
),
334 LIBBASETYPEPTR
, SocketBase
, 75, BSDSocket
336 AROS_LP1(void, ReleaseInterfaceList
,
337 AROS_LPA(struct List
*, list
, A0
),
338 LIBBASETYPEPTR
, SocketBase
, 76, BSDSocket
340 AROS_LP0(struct List
*, ObtainInterfaceList
,
341 LIBBASETYPEPTR
, SocketBase
, 77, BSDSocket
343 AROS_LP2(long, QueryInterfaceTagList
,
344 AROS_LPA(STRPTR
, name
, A0
),
345 AROS_LPA(struct TagItem
*, tags
, A1
),
346 LIBBASETYPEPTR
, SocketBase
, 78, BSDSocket
348 AROS_LP5(LONG
, CreateAddrAllocMessageA
,
349 AROS_LPA(LONG
, version
, D0
),
350 AROS_LPA(LONG
, protocol
, D1
),
351 AROS_LPA(STRPTR
, interface_name
, A0
),
352 AROS_LPA(struct AddressAllocationMessage
*, result_ptr
, A1
),
353 AROS_LPA(struct TagItem
*, tags
, A2
),
354 LIBBASETYPEPTR
, SocketBase
, 79, BSDSocket
356 AROS_LP1(void, DeleteAddrAllocMessage
,
357 AROS_LPA(struct AddressAllocationMessage
*, message
, A0
),
358 LIBBASETYPEPTR
, SocketBase
, 80, BSDSocket
360 AROS_LP1(void, BeginInterfaceConfig
,
361 AROS_LPA(struct AddressAllocationMessage
*, message
, A0
),
362 LIBBASETYPEPTR
, SocketBase
, 81, BSDSocket
364 AROS_LP1(void, AbortInterfaceConfig
,
365 AROS_LPA(struct AddressAllocationMessage
*, message
, A0
),
366 LIBBASETYPEPTR
, SocketBase
, 82, BSDSocket
368 AROS_LP3(long, AddNetMonitorHookTagList
,
369 AROS_LPA(long, type
, D0
),
370 AROS_LPA(struct Hook
*, hook
, A0
),
371 AROS_LPA(struct TagItem
*, tags
, A1
),
372 LIBBASETYPEPTR
, SocketBase
, 83, BSDSocket
374 AROS_LP1(void, RemoveNetMonitorHook
,
375 AROS_LPA(struct Hook
*, hook
, A0
),
376 LIBBASETYPEPTR
, SocketBase
, 84, BSDSocket
378 AROS_LP4(LONG
, GetNetworkStatistics
,
379 AROS_LPA(LONG
, type
, D0
),
380 AROS_LPA(LONG
, version
, D1
),
381 AROS_LPA(APTR
, destination
, A0
),
382 AROS_LPA(LONG
, size
, D2
),
383 LIBBASETYPEPTR
, SocketBase
, 85, BSDSocket
385 AROS_LP1(LONG
, AddDomainNameServer
,
386 AROS_LPA(STRPTR
, address
, A0
),
387 LIBBASETYPEPTR
, SocketBase
, 86, BSDSocket
389 AROS_LP1(LONG
, RemoveDomainNameServer
,
390 AROS_LPA(STRPTR
, address
, A0
),
391 LIBBASETYPEPTR
, SocketBase
, 87, BSDSocket
393 AROS_LP1(void, ReleaseDomainNameServerList
,
394 AROS_LPA(struct List
*, list
, A0
),
395 LIBBASETYPEPTR
, SocketBase
, 88, BSDSocket
397 AROS_LP0(struct List
*, ObtainDomainNameServerList
,
398 LIBBASETYPEPTR
, SocketBase
, 89, BSDSocket
400 AROS_LP1(void, setnetent
,
401 AROS_LPA(int, stayopen
, D0
),
402 LIBBASETYPEPTR
, SocketBase
, 90, BSDSocket
404 AROS_LP0(void, endnetent
,
405 LIBBASETYPEPTR
, SocketBase
, 91, BSDSocket
407 AROS_LP0(struct netent
*, getnetent
,
408 LIBBASETYPEPTR
, SocketBase
, 92, BSDSocket
410 AROS_LP1(void, setprotoent
,
411 AROS_LPA(int, stayopen
, D0
),
412 LIBBASETYPEPTR
, SocketBase
, 93, BSDSocket
414 AROS_LP0(void, endprotoent
,
415 LIBBASETYPEPTR
, SocketBase
, 94, BSDSocket
417 AROS_LP0(struct protoent
*, getprotoent
,
418 LIBBASETYPEPTR
, SocketBase
, 95, BSDSocket
420 AROS_LP1(void, setservent
,
421 AROS_LPA(int, stayopen
, D0
),
422 LIBBASETYPEPTR
, SocketBase
, 96, BSDSocket
424 AROS_LP0(void, endservent
,
425 LIBBASETYPEPTR
, SocketBase
, 97, BSDSocket
427 AROS_LP0(struct servent
*, getservent
,
428 LIBBASETYPEPTR
, SocketBase
, 98, BSDSocket
430 AROS_LP2(LONG
, inet_aton
,
431 AROS_LPA(STRPTR
, cp
, A0
),
432 AROS_LPA(struct in_addr
*, addr
, A1
),
433 LIBBASETYPEPTR
, SocketBase
, 99, BSDSocket
435 #endif /* __CONFIG_ROADSHOW__ */
439 * Stubs to wrap some *nix socket functions
440 * Should they be protected by __BSD_VISIBLE?
442 #define inet_ntoa(addr) Inet_NtoA(((struct in_addr)addr).s_addr)
443 #ifndef POSIXC_SELECT
444 static inline int select(int nfds
, fd_set
*rfds
, fd_set
*wfds
, fd_set
*efds
, struct timeval
*timeout
) {return WaitSelect(nfds
,rfds
,wfds
,efds
,timeout
,NULL
);};
445 #endif /* !POSIXC_SELECT */
448 #endif /* CLIB_BSDSOCKET_PROTOS_H */