Check for SYS/GL during library init. Reason is that
[AROS.git] / workbench / network / stacks / AROSTCP / bsdsocket / api / amiga_libtables.c
blobcaaf9617b7a1e2f44f6ff5bda3de699b51264dc2
1 /*
2 * Copyright (C) 1993 AmiTCP/IP Group, <amitcp-group@hut.fi>
3 * Helsinki University of Technology, Finland.
4 * All rights reserved.
5 * Copyright (C) 2005 - 2007 The AROS Dev Team
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
19 * MA 02111-1307, USA.
23 #include <conf.h>
25 #include <aros/libcall.h>
26 #include <exec/types.h>
27 #include <sys/param.h>
28 #include <api/amiga_raf.h>
30 typedef VOID (* f_void)();
33 * Null used in both function tables
35 extern VOID AROS_SLIB_ENTRY(Null, LIB, 0)(VOID);
38 * "declarations" for ExecLibraryList_funcTable functions.
39 */
41 extern VOID AROS_SLIB_ENTRY(Open, ELL, 1)();
42 extern VOID AROS_SLIB_ENTRY(Expunge, ELL, 3)();
44 f_void ExecLibraryList_funcTable[] = {
45 #ifdef __MORPHOS__
46 (f_void)FUNCARRAY_32BIT_NATIVE,
47 #endif
48 AROS_SLIB_ENTRY(Open, ELL, 1),
49 AROS_SLIB_ENTRY(Null, LIB, 0), /* ELL_Close() is never called */
50 AROS_SLIB_ENTRY(Expunge, ELL, 3),
51 AROS_SLIB_ENTRY(Null, LIB, 0), /* ELL_Reserved() */
52 (f_void)-1
56 * "declarations" for userLibrary_funcTable functions.
57 */
58 void AROS_SLIB_ENTRY(Close, UL, 2)(void);
59 void AROS_SLIB_ENTRY(socket, UL, 5)(void);
60 void AROS_SLIB_ENTRY(bind, UL, 6)(void);
61 void AROS_SLIB_ENTRY(listen, UL, 7)(void);
62 void AROS_SLIB_ENTRY(accept, UL, 8)(void);
63 void AROS_SLIB_ENTRY(connect, UL, 9)(void);
64 void AROS_SLIB_ENTRY(sendto, UL, 10)(void);
65 void AROS_SLIB_ENTRY(send, UL, 11)(void);
66 void AROS_SLIB_ENTRY(recvfrom, UL, 12)(void);
67 void AROS_SLIB_ENTRY(recv, UL, 13)(void);
68 void AROS_SLIB_ENTRY(shutdown, UL, 14)(void);
69 void AROS_SLIB_ENTRY(setsockopt, UL, 15)(void);
70 void AROS_SLIB_ENTRY(getsockopt, UL, 16)(void);
71 void AROS_SLIB_ENTRY(getsockname, UL, 17)(void);
72 void AROS_SLIB_ENTRY(getpeername, UL, 18)(void);
74 void AROS_SLIB_ENTRY(IoctlSocket, UL, 19)(void);
75 void AROS_SLIB_ENTRY(CloseSocket, UL, 20)(void);
76 void AROS_SLIB_ENTRY(WaitSelect, UL, 21)(void);
77 void AROS_SLIB_ENTRY(SetSocketSignals, UL, 22)(void);
78 void AROS_SLIB_ENTRY(getdtablesize, UL, 23)(void);
80 void AROS_SLIB_ENTRY(ObtainSocket, UL, 24)(void);
81 void AROS_SLIB_ENTRY(ReleaseSocket, UL, 25)(void);
82 void AROS_SLIB_ENTRY(ReleaseCopyOfSocket, UL, 26)(void);
83 void AROS_SLIB_ENTRY(Errno, UL, 27)(void);
84 void AROS_SLIB_ENTRY(SetErrnoPtr, UL, 28)(void);
86 void AROS_SLIB_ENTRY(Inet_NtoA, UL, 29)(void);
87 void AROS_SLIB_ENTRY(inet_addr, UL, 30)(void);
88 void AROS_SLIB_ENTRY(Inet_LnaOf, UL, 31)(void);
89 void AROS_SLIB_ENTRY(Inet_NetOf, UL, 32)(void);
90 void AROS_SLIB_ENTRY(Inet_MakeAddr, UL, 33)(void);
91 void AROS_SLIB_ENTRY(inet_network, UL, 34)(void);
93 void AROS_SLIB_ENTRY(gethostbyname, UL, 35)(void);
94 void AROS_SLIB_ENTRY(gethostbyaddr, UL, 36)(void);
95 void AROS_SLIB_ENTRY(getnetbyname, UL, 37)(void);
96 void AROS_SLIB_ENTRY(getnetbyaddr, UL, 38)(void);
97 void AROS_SLIB_ENTRY(getservbyname, UL, 39)(void);
98 void AROS_SLIB_ENTRY(getservbyport, UL, 40)(void);
99 void AROS_SLIB_ENTRY(getprotobyname, UL, 41)(void);
100 void AROS_SLIB_ENTRY(getprotobynumber, UL, 42)(void);
101 void AROS_SLIB_ENTRY(Syslog, UL, 43)(void);
103 /* bsdsocket.library 2 extensions */
104 void AROS_SLIB_ENTRY(Dup2Socket, UL, 44)(void);
106 /* bsdsocket.library 3 extensions */
107 void AROS_SLIB_ENTRY(sendmsg, UL, 45)(void);
108 void AROS_SLIB_ENTRY(recvmsg, UL, 46)(void);
109 void AROS_SLIB_ENTRY(gethostname, UL, 47)(void);
110 void AROS_SLIB_ENTRY(gethostid, UL, 48)(void);
111 void AROS_SLIB_ENTRY(SocketBaseTagList, UL, 49)(void);
113 /* bsdsocket.library 4 extensions */
114 void AROS_SLIB_ENTRY(GetSocketEvents, UL, 50)(void);
116 #if defined(__CONFIG_ROADSHOW__)
117 /* Roadshow extensions */
118 void AROS_SLIB_ENTRY(bpf_open, UL, 61)(void);
119 void AROS_SLIB_ENTRY(bpf_close, UL, 62)(void);
120 void AROS_SLIB_ENTRY(bpf_read, UL, 63)(void);
121 void AROS_SLIB_ENTRY(bpf_write, UL, 64)(void);
122 void AROS_SLIB_ENTRY(bpf_set_notify_mask, UL, 65)(void);
123 void AROS_SLIB_ENTRY(bpf_set_interrupt_mask, UL, 66)(void);
124 void AROS_SLIB_ENTRY(bpf_ioctl, UL, 67)(void);
125 void AROS_SLIB_ENTRY(bpf_data_waiting, UL, 68)(void);
126 void AROS_SLIB_ENTRY(AddRouteTagList, UL, 69)(void);
127 void AROS_SLIB_ENTRY(DeleteRouteTagList, UL, 70)(void);
128 void AROS_SLIB_ENTRY(ChangeRouteTagList, UL, 71)(void);
129 void AROS_SLIB_ENTRY(FreeRouteInfo, UL, 72)(void);
130 void AROS_SLIB_ENTRY(GetRouteInfo, UL, 73)(void);
131 void AROS_SLIB_ENTRY(AddInterfaceTagList, UL, 74)(void);
132 void AROS_SLIB_ENTRY(ConfigureInterfaceTagList, UL, 75)(void);
133 void AROS_SLIB_ENTRY(ReleaseInterfaceList, UL, 76)(void);
134 void AROS_SLIB_ENTRY(ObtainInterfaceList, UL, 77)(void);
135 void AROS_SLIB_ENTRY(QueryInterfaceTagList, UL, 78)(void);
136 void AROS_SLIB_ENTRY(CreateAddrAllocMessageA, UL, 79)(void);
137 void AROS_SLIB_ENTRY(DeleteAddrAllocMessage, UL, 80)(void);
138 void AROS_SLIB_ENTRY(BeginInterfaceConfig, UL, 81)(void);
139 void AROS_SLIB_ENTRY(AbortInterfaceConfig, UL, 82)(void);
140 void AROS_SLIB_ENTRY(AddNetMonitorHookTagList, UL, 83)(void);
141 void AROS_SLIB_ENTRY(RemoveNetMonitorHook, UL, 84)(void);
142 void AROS_SLIB_ENTRY(GetNetworkStatistics, UL, 85)(void);
143 void AROS_SLIB_ENTRY(AddDomainNameServer, UL, 86)(void);
144 void AROS_SLIB_ENTRY(RemoveDomainNameServer, UL, 87)(void);
145 void AROS_SLIB_ENTRY(ReleaseDomainNameServerList, UL, 88)(void);
146 void AROS_SLIB_ENTRY(ObtainDomainNameServerList, UL, 89)(void);
147 void AROS_SLIB_ENTRY(setnetent, UL, 90)(void);
148 void AROS_SLIB_ENTRY(endnetent, UL, 91)(void);
149 void AROS_SLIB_ENTRY(getnetent, UL, 92)(void);
150 void AROS_SLIB_ENTRY(setprotoent, UL, 93)(void);
151 void AROS_SLIB_ENTRY(endprotoent, UL, 94)(void);
152 void AROS_SLIB_ENTRY(getprotoent, UL, 95)(void);
153 void AROS_SLIB_ENTRY(setservent, UL, 96)(void);
154 void AROS_SLIB_ENTRY(endservent, UL, 97)(void);
155 void AROS_SLIB_ENTRY(getservent, UL, 98)(void);
156 void AROS_SLIB_ENTRY(inet_aton, UL, 99)(void);
157 #endif
159 /* TODO: following functions are not implemented yet */
161 f_void UserLibrary_funcTable[] = {
162 #ifdef __MORPHOS__
163 (f_void)FUNCARRAY_32BIT_NATIVE,
164 #endif
165 AROS_SLIB_ENTRY(Null, LIB, 0), /* Open() */
166 AROS_SLIB_ENTRY(Close, UL, 2),
167 AROS_SLIB_ENTRY(Null, LIB, 0), /* Expunge() */
168 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved() */
169 AROS_SLIB_ENTRY(socket, UL, 5),
170 AROS_SLIB_ENTRY(bind, UL, 6),
171 AROS_SLIB_ENTRY(listen, UL, 7),
172 AROS_SLIB_ENTRY(accept, UL, 8),
173 AROS_SLIB_ENTRY(connect, UL, 9),
174 AROS_SLIB_ENTRY(sendto, UL, 10),
175 AROS_SLIB_ENTRY(send, UL, 11),
176 AROS_SLIB_ENTRY(recvfrom, UL, 12),
177 AROS_SLIB_ENTRY(recv, UL, 13),
178 AROS_SLIB_ENTRY(shutdown, UL, 14),
179 AROS_SLIB_ENTRY(setsockopt, UL, 15),
180 AROS_SLIB_ENTRY(getsockopt, UL, 16),
181 AROS_SLIB_ENTRY(getsockname, UL, 17),
182 AROS_SLIB_ENTRY(getpeername, UL, 18),
184 AROS_SLIB_ENTRY(IoctlSocket, UL, 19),
185 AROS_SLIB_ENTRY(CloseSocket, UL, 20),
186 AROS_SLIB_ENTRY(WaitSelect, UL, 21),
187 AROS_SLIB_ENTRY(SetSocketSignals, UL, 22),
188 AROS_SLIB_ENTRY(getdtablesize, UL, 23), /* from V3 on */
189 /* SetDTableSize, */
190 AROS_SLIB_ENTRY(ObtainSocket, UL, 24),
191 AROS_SLIB_ENTRY(ReleaseSocket, UL, 25),
192 AROS_SLIB_ENTRY(ReleaseCopyOfSocket, UL, 26),
193 AROS_SLIB_ENTRY(Errno, UL, 27),
194 AROS_SLIB_ENTRY(SetErrnoPtr, UL, 28),
196 AROS_SLIB_ENTRY(Inet_NtoA, UL, 29),
197 AROS_SLIB_ENTRY(inet_addr, UL, 30),
198 AROS_SLIB_ENTRY(Inet_LnaOf, UL, 31),
199 AROS_SLIB_ENTRY(Inet_NetOf, UL, 32),
200 AROS_SLIB_ENTRY(Inet_MakeAddr, UL, 33),
201 AROS_SLIB_ENTRY(inet_network, UL, 34),
203 AROS_SLIB_ENTRY(gethostbyname, UL, 35),
204 AROS_SLIB_ENTRY(gethostbyaddr, UL, 36),
205 AROS_SLIB_ENTRY(getnetbyname, UL, 37),
206 AROS_SLIB_ENTRY(getnetbyaddr, UL, 38),
207 AROS_SLIB_ENTRY(getservbyname, UL, 39),
208 AROS_SLIB_ENTRY(getservbyport, UL, 40),
209 AROS_SLIB_ENTRY(getprotobyname, UL, 41),
210 AROS_SLIB_ENTRY(getprotobynumber, UL, 42),
211 AROS_SLIB_ENTRY(Syslog, UL, 43),
213 /* bsdsocket.library 2 extensions */
214 AROS_SLIB_ENTRY(Dup2Socket, UL, 44),
216 /* bsdsocket.library 3 extensions */
217 AROS_SLIB_ENTRY(sendmsg, UL, 45),
218 AROS_SLIB_ENTRY(recvmsg, UL, 46),
219 AROS_SLIB_ENTRY(gethostname, UL, 47),
220 AROS_SLIB_ENTRY(gethostid, UL, 48),
221 AROS_SLIB_ENTRY(SocketBaseTagList, UL, 49),
223 /* bsdsocket.library 4 extensions */
224 AROS_SLIB_ENTRY(GetSocketEvents, UL, 50),
226 #if defined(__CONFIG_ROADSHOW__)
227 /* Roadshow extensions */
228 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved1() */
229 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved2() */
230 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved3() */
231 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved4() */
232 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved5() */
233 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved6() */
234 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved7() */
235 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved8() */
236 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved9() */
237 AROS_SLIB_ENTRY(Null, LIB, 0), /* Reserved10() */
238 AROS_SLIB_ENTRY(bpf_open, UL, 61),
239 AROS_SLIB_ENTRY(bpf_close, UL, 62),
240 AROS_SLIB_ENTRY(bpf_read, UL, 63),
241 AROS_SLIB_ENTRY(bpf_write, UL, 64),
242 AROS_SLIB_ENTRY(bpf_set_notify_mask, UL, 65),
243 AROS_SLIB_ENTRY(bpf_set_interrupt_mask, UL, 66),
244 AROS_SLIB_ENTRY(bpf_ioctl, UL, 67),
245 AROS_SLIB_ENTRY(bpf_data_waiting, UL, 68),
246 AROS_SLIB_ENTRY(AddRouteTagList, UL, 69),
247 AROS_SLIB_ENTRY(DeleteRouteTagList, UL, 70),
248 AROS_SLIB_ENTRY(ChangeRouteTagList, UL, 71),
249 AROS_SLIB_ENTRY(FreeRouteInfo, UL, 72),
250 AROS_SLIB_ENTRY(GetRouteInfo, UL, 73),
251 AROS_SLIB_ENTRY(AddInterfaceTagList, UL, 74),
252 AROS_SLIB_ENTRY(ConfigureInterfaceTagList, UL, 75),
253 AROS_SLIB_ENTRY(ReleaseInterfaceList, UL, 76),
254 AROS_SLIB_ENTRY(ObtainInterfaceList, UL, 77),
255 AROS_SLIB_ENTRY(QueryInterfaceTagList, UL, 78),
256 AROS_SLIB_ENTRY(CreateAddrAllocMessageA, UL, 79),
257 AROS_SLIB_ENTRY(DeleteAddrAllocMessage, UL, 80),
258 AROS_SLIB_ENTRY(BeginInterfaceConfig, UL, 81),
259 AROS_SLIB_ENTRY(AbortInterfaceConfig, UL, 82),
260 AROS_SLIB_ENTRY(AddNetMonitorHookTagList, UL, 83),
261 AROS_SLIB_ENTRY(RemoveNetMonitorHook, UL, 84),
262 AROS_SLIB_ENTRY(GetNetworkStatistics, UL, 85),
263 AROS_SLIB_ENTRY(AddDomainNameServer, UL, 86),
264 AROS_SLIB_ENTRY(RemoveDomainNameServer, UL, 87),
265 AROS_SLIB_ENTRY(ReleaseDomainNameServerList, UL, 88),
266 AROS_SLIB_ENTRY(ObtainDomainNameServerList, UL, 89),
267 AROS_SLIB_ENTRY(setnetent, UL, 90),
268 AROS_SLIB_ENTRY(endnetent, UL, 91),
269 AROS_SLIB_ENTRY(getnetent, UL, 92),
270 AROS_SLIB_ENTRY(setprotoent, UL, 93),
271 AROS_SLIB_ENTRY(endprotoent, UL, 94),
272 AROS_SLIB_ENTRY(getprotoent, UL, 95),
273 AROS_SLIB_ENTRY(setservent, UL, 96),
274 AROS_SLIB_ENTRY(endservent, UL, 97),
275 AROS_SLIB_ENTRY(getservent, UL, 98),
276 AROS_SLIB_ENTRY(inet_aton, UL, 99),
277 #endif
278 /* TODO: Following functions are not implemented yet */
280 (f_void)-1