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