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