ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/slirp/slirp.h
Revision: 1.8
Committed: 2012-04-21T16:51:23Z (12 years ago) by asvitkine
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.7: +2 -2 lines
Log Message:
Apparently this change allows compilation with clang.
Patch by "Madd the Sane" (http://sourceforge.net/users/madd_the_sane)

File Contents

# Content
1 #ifndef __COMMON_H__
2 #define __COMMON_H__
3
4 #define CONFIG_QEMU
5
6 #define DEBUG 1
7
8 #ifndef CONFIG_QEMU
9 #include "version.h"
10 #endif
11 #include "config.h"
12 #include "slirp_config.h"
13
14 #ifdef _WIN32
15 # include <inttypes.h>
16
17 typedef uint8_t u_int8_t;
18 typedef uint16_t u_int16_t;
19 typedef uint32_t u_int32_t;
20 typedef uint64_t u_int64_t;
21 typedef char *caddr_t;
22 typedef int socklen_t;
23 typedef unsigned long ioctlsockopt_t;
24
25 # include <windows.h>
26 # include <winsock2.h>
27 # include <sys/timeb.h>
28 # include <iphlpapi.h>
29
30 # define USE_FIONBIO 1
31 # define EWOULDBLOCK WSAEWOULDBLOCK
32 # define EINPROGRESS WSAEINPROGRESS
33 # define ENOTCONN WSAENOTCONN
34 # define EHOSTUNREACH WSAEHOSTUNREACH
35 # define ENETUNREACH WSAENETUNREACH
36 # define ECONNREFUSED WSAECONNREFUSED
37
38 /* Basilisk II Router defines those */
39 # define udp_read_completion slirp_udp_read_completion
40 # define write_udp slirp_write_udp
41 # define init_udp slirp_init_udp
42 # define final_udp slirp_final_udp
43 #else
44 typedef int ioctlsockopt_t;
45 # define ioctlsocket ioctl
46 # define closesocket(s) close(s)
47 # define O_BINARY 0
48 #endif
49
50 #include <sys/types.h>
51 #ifdef HAVE_SYS_BITYPES_H
52 # include <sys/bitypes.h>
53 #endif
54 #ifdef HAVE_STDINT_H
55 # include <stdint.h>
56 #endif
57
58 #include <sys/time.h>
59
60 #ifdef NEED_TYPEDEFS
61 typedef char int8_t;
62 typedef unsigned char u_int8_t;
63
64 # if SIZEOF_SHORT == 2
65 typedef short int16_t;
66 typedef unsigned short u_int16_t;
67 # else
68 # if SIZEOF_INT == 2
69 typedef int int16_t;
70 typedef unsigned int u_int16_t;
71 # else
72 #error Cannot find a type with sizeof() == 2
73 # endif
74 # endif
75
76 # if SIZEOF_SHORT == 4
77 typedef short int32_t;
78 typedef unsigned short u_int32_t;
79 # else
80 # if SIZEOF_INT == 4
81 typedef int int32_t;
82 typedef unsigned int u_int32_t;
83 # else
84 #error Cannot find a type with sizeof() == 4
85 # endif
86 # endif
87 #endif /* NEED_TYPEDEFS */
88
89 /* Basilisk II types glue */
90 typedef u_int8_t uint8;
91 typedef u_int16_t uint16;
92 typedef u_int32_t uint32;
93
94 #ifdef HAVE_UNISTD_H
95 # include <unistd.h>
96 #endif
97
98 #ifdef HAVE_STDLIB_H
99 # include <stdlib.h>
100 #endif
101
102 #include <stdio.h>
103 #include <errno.h>
104
105 #ifndef HAVE_MEMMOVE
106 #define memmove(x, y, z) bcopy(y, x, z)
107 #endif
108
109 #if TIME_WITH_SYS_TIME
110 # include <sys/time.h>
111 # include <time.h>
112 #else
113 # if HAVE_SYS_TIME_H
114 # include <sys/time.h>
115 # else
116 # include <time.h>
117 # endif
118 #endif
119
120 #ifdef HAVE_STRING_H
121 # include <string.h>
122 #else
123 # include <strings.h>
124 #endif
125
126 #ifndef _WIN32
127 #include <sys/uio.h>
128 #endif
129
130 #ifndef _P
131 #ifndef NO_PROTOTYPES
132 # define _P(x) x
133 #else
134 # define _P(x) ()
135 #endif
136 #endif
137
138 #ifndef _WIN32
139 #include <netinet/in.h>
140 #include <arpa/inet.h>
141 #endif
142
143 #ifdef GETTIMEOFDAY_ONE_ARG
144 #define gettimeofday(x, y) gettimeofday(x)
145 #endif
146
147 /* Systems lacking strdup() definition in <string.h>. */
148 #if defined(ultrix)
149 char *strdup _P((const char *));
150 #endif
151
152 /* Systems lacking malloc() definition in <stdlib.h>. */
153 #if defined(ultrix) || defined(hcx)
154 void *malloc _P((size_t arg));
155 void free _P((void *ptr));
156 #endif
157
158 #ifndef HAVE_INET_ATON
159 int inet_aton _P((const char *cp, struct in_addr *ia));
160 #endif
161
162 #include <fcntl.h>
163 #ifndef NO_UNIX_SOCKETS
164 #include <sys/un.h>
165 #endif
166 #include <signal.h>
167 #ifdef HAVE_SYS_SIGNAL_H
168 # include <sys/signal.h>
169 #endif
170 #ifndef _WIN32
171 #include <sys/socket.h>
172 #endif
173
174 #if defined(HAVE_SYS_IOCTL_H)
175 # include <sys/ioctl.h>
176 #endif
177
178 #ifdef HAVE_SYS_SELECT_H
179 # include <sys/select.h>
180 #endif
181
182 #ifdef HAVE_SYS_WAIT_H
183 # include <sys/wait.h>
184 #endif
185
186 #ifdef HAVE_SYS_FILIO_H
187 # include <sys/filio.h>
188 #endif
189
190 #ifdef USE_PPP
191 #include <ppp/slirppp.h>
192 #endif
193
194 #ifdef __STDC__
195 #include <stdarg.h>
196 #else
197 #include <varargs.h>
198 #endif
199
200 #include <sys/stat.h>
201
202 /* Avoid conflicting with the libc insque() and remque(), which
203 have different prototypes. */
204 #define insque slirp_insque
205 #define remque slirp_remque
206
207 #ifdef HAVE_SYS_STROPTS_H
208 #include <sys/stropts.h>
209 #endif
210
211 #include "debug.h"
212
213 #if defined __GNUC__
214 #define PACKED__ __attribute__ ((packed))
215 #elif defined __sgi
216 #define PRAGMA_PACK_SUPPORTED 1
217 #define PACKED__
218 #else
219 #error "Packed attribute or pragma shall be supported"
220 #endif
221
222 #include "ip.h"
223 #include "tcp.h"
224 #include "tcp_timer.h"
225 #include "tcp_var.h"
226 #include "tcpip.h"
227 #include "udp.h"
228 #include "icmp_var.h"
229 #include "mbuf.h"
230 #include "sbuf.h"
231 #include "socket.h"
232 #include "if.h"
233 #include "main.h"
234 #include "misc.h"
235 #include "ctl.h"
236 #ifdef USE_PPP
237 #include "ppp/pppd.h"
238 #include "ppp/ppp.h"
239 #endif
240
241 #include "bootp.h"
242 #include "tftp.h"
243 #include "libslirp.h"
244
245 extern struct ttys *ttys_unit[MAX_INTERFACES];
246
247 #ifndef NULL
248 #define NULL (void *)0
249 #endif
250
251 #ifndef FULL_BOLT
252 void if_start _P((void));
253 #else
254 void if_start _P((struct ttys *));
255 #endif
256
257 #ifdef BAD_SPRINTF
258 # define vsprintf vsprintf_len
259 # define sprintf sprintf_len
260 extern int vsprintf_len _P((char *, const char *, va_list));
261 extern int sprintf_len _P((char *, const char *, ...));
262 #endif
263
264 #ifdef DECLARE_SPRINTF
265 # ifndef BAD_SPRINTF
266 extern int vsprintf _P((char *, const char *, va_list));
267 # endif
268 extern int vfprintf _P((FILE *, const char *, va_list));
269 #endif
270
271 #ifndef HAVE_STRERROR
272 extern char *strerror _P((int error));
273 #endif
274
275 #ifndef HAVE_INDEX
276 char *index _P((const char *, int));
277 #endif
278
279 #ifndef HAVE_GETHOSTID
280 long gethostid _P((void));
281 #endif
282
283 void lprint _P((const char *, ...));
284
285 extern int do_echo;
286
287 #if SIZEOF_CHAR_P == 4
288 # define insque_32 insque
289 # define remque_32 remque
290 #else
291 extern inline void insque_32 _P((void *, void *));
292 extern inline void remque_32 _P((void *));
293 #endif
294
295 #ifndef _WIN32
296 #include <netdb.h>
297 #endif
298
299 #define DEFAULT_BAUD 115200
300
301 /* cksum.c */
302 int cksum(struct mbuf *m, int len);
303
304 /* if.c */
305 void if_init _P((void));
306 void if_output _P((struct socket *, struct mbuf *));
307
308 /* ip_input.c */
309 void ip_init _P((void));
310 void ip_input _P((struct mbuf *));
311 struct ip * ip_reass _P((register struct ipasfrag *, register struct ipq *));
312 void ip_freef _P((struct ipq *));
313 void ip_enq _P((register struct ipasfrag *, register struct ipasfrag *));
314 void ip_deq _P((register struct ipasfrag *));
315 void ip_slowtimo _P((void));
316 void ip_stripoptions _P((register struct mbuf *, struct mbuf *));
317
318 /* ip_output.c */
319 int ip_output _P((struct socket *, struct mbuf *));
320
321 /* tcp_input.c */
322 int tcp_reass _P((register struct tcpcb *, register struct tcpiphdr *, struct mbuf *));
323 void tcp_input _P((register struct mbuf *, int, struct socket *));
324 void tcp_dooptions _P((struct tcpcb *, u_char *, int, struct tcpiphdr *));
325 void tcp_xmit_timer _P((register struct tcpcb *, int));
326 int tcp_mss _P((register struct tcpcb *, u_int));
327
328 /* tcp_output.c */
329 int tcp_output _P((register struct tcpcb *));
330 void tcp_setpersist _P((register struct tcpcb *));
331
332 /* tcp_subr.c */
333 void tcp_init _P((void));
334 void tcp_template _P((struct tcpcb *));
335 void tcp_respond _P((struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int));
336 struct tcpcb * tcp_newtcpcb _P((struct socket *));
337 struct tcpcb * tcp_close _P((register struct tcpcb *));
338 void tcp_drain _P((void));
339 void tcp_sockclosed _P((struct tcpcb *));
340 int tcp_fconnect _P((struct socket *));
341 void tcp_connect _P((struct socket *));
342 int tcp_attach _P((struct socket *));
343 u_int8_t tcp_tos _P((struct socket *));
344 int tcp_emu _P((struct socket *, struct mbuf *));
345 int tcp_ctl _P((struct socket *));
346 struct tcpcb *tcp_drop(struct tcpcb *tp, int err);
347
348 #ifdef USE_PPP
349 #define MIN_MRU MINMRU
350 #define MAX_MRU MAXMRU
351 #else
352 #define MIN_MRU 128
353 #define MAX_MRU 16384
354 #endif
355
356 #ifndef _WIN32
357 #define min(x,y) ((x) < (y) ? (x) : (y))
358 #define max(x,y) ((x) > (y) ? (x) : (y))
359 #endif
360
361 #ifdef _WIN32
362 #undef errno
363 #define errno (WSAGetLastError())
364 #endif
365
366 #endif