|
|
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: 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 "slirpdebug.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 "slirpmain.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: #ifndef _WIN32 ! 288: #include <netdb.h> ! 289: #endif ! 290: ! 291: #define DEFAULT_BAUD 115200 ! 292: ! 293: /* cksum.c */ ! 294: int cksum(struct mbuf *m, int len); ! 295: ! 296: /* if.c */ ! 297: void if_init _P((void)); ! 298: void if_output _P((struct socket *, struct mbuf *)); ! 299: ! 300: /* ip_input.c */ ! 301: void ip_init _P((void)); ! 302: void ip_input _P((struct mbuf *)); ! 303: static struct ip * ! 304: ip_reass(register struct ip *ip, register struct ipq *); ! 305: void ip_freef _P((struct ipq *)); ! 306: void ip_enq _P((register struct ipasfrag *, register struct ipasfrag *)); ! 307: void ip_deq _P((register struct ipasfrag *)); ! 308: void ip_slowtimo _P((void)); ! 309: void ip_stripoptions _P((register struct mbuf *, struct mbuf *)); ! 310: ! 311: /* ip_output.c */ ! 312: int ip_output _P((struct socket *, struct mbuf *)); ! 313: ! 314: /* tcp_input.c */ ! 315: int tcp_reass _P((register struct tcpcb *, register struct tcpiphdr *, struct mbuf *)); ! 316: void tcp_input _P((register struct mbuf *, int, struct socket *)); ! 317: void tcp_dooptions _P((struct tcpcb *, u_char *, int, struct tcpiphdr *)); ! 318: void tcp_xmit_timer _P((register struct tcpcb *, int)); ! 319: int tcp_mss _P((register struct tcpcb *, u_int)); ! 320: ! 321: /* tcp_output.c */ ! 322: int tcp_output _P((register struct tcpcb *)); ! 323: void tcp_setpersist _P((register struct tcpcb *)); ! 324: ! 325: /* tcp_subr.c */ ! 326: void tcp_init _P((void)); ! 327: void tcp_template _P((struct tcpcb *)); ! 328: void tcp_respond _P((struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int)); ! 329: struct tcpcb * tcp_newtcpcb _P((struct socket *)); ! 330: struct tcpcb * tcp_close _P((register struct tcpcb *)); ! 331: void tcp_drain _P((void)); ! 332: void tcp_sockclosed _P((struct tcpcb *)); ! 333: int tcp_fconnect _P((struct socket *)); ! 334: void tcp_connect _P((struct socket *)); ! 335: int tcp_attach _P((struct socket *)); ! 336: u_int8_t tcp_tos _P((struct socket *)); ! 337: int tcp_emu _P((struct socket *, struct mbuf *)); ! 338: int tcp_ctl _P((struct socket *)); ! 339: struct tcpcb *tcp_drop(struct tcpcb *tp, int err); ! 340: ! 341: #ifdef USE_PPP ! 342: #define MIN_MRU MINMRU ! 343: #define MAX_MRU MAXMRU ! 344: #else ! 345: #define MIN_MRU 128 ! 346: #define MAX_MRU 16384 ! 347: #endif ! 348: ! 349: #ifndef _WIN32 ! 350: #define min(x,y) ((x) < (y) ? (x) : (y)) ! 351: #define max(x,y) ((x) > (y) ? (x) : (y)) ! 352: #endif ! 353: ! 354: #ifdef _WIN32 ! 355: #undef errno ! 356: #define errno (WSAGetLastError()) ! 357: #endif ! 358: ! 359: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.