18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef __COMMON_H__ 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define __COMMON_H__ 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CONFIG_QEMU 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//#define DEBUG 1 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// Uncomment the following line to enable SLIRP statistics printing in Qemu 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//#define LOG_ENABLED 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef LOG_ENABLED 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define STAT(expr) expr 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#else 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define STAT(expr) do { } while(0) 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef CONFIG_QEMU 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "version.h" 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "config-host.h" 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "slirp_config.h" 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef _WIN32 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <inttypes.h> 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint8_t u_int8_t; 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint16_t u_int16_t; 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t u_int32_t; 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t u_int64_t; 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef char *caddr_t; 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <windows.h> 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <winsock2.h> 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <ws2tcpip.h> 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/timeb.h> 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <iphlpapi.h> 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define EWOULDBLOCK WSAEWOULDBLOCK 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define EINPROGRESS WSAEINPROGRESS 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define ENOTCONN WSAENOTCONN 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define EHOSTUNREACH WSAEHOSTUNREACH 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define ENETUNREACH WSAENETUNREACH 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define ECONNREFUSED WSAECONNREFUSED 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define ioctlsocket ioctl 465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# define closesocket(s) close(s) 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define O_BINARY 0 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/types.h> 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_SYS_BITYPES_H 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/bitypes.h> 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/time.h> 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef NEED_TYPEDEFS 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef char int8_t; 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned char u_int8_t; 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_SHORT == 2 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef short int16_t; 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef unsigned short u_int16_t; 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_INT == 2 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef int int16_t; 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef unsigned int u_int16_t; 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project #error Cannot find a type with sizeof() == 2 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_SHORT == 4 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef short int32_t; 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef unsigned short u_int32_t; 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_INT == 4 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef int int32_t; 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project typedef unsigned int u_int32_t; 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project #error Cannot find a type with sizeof() == 4 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* NEED_TYPEDEFS */ 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_UNISTD_H 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <unistd.h> 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_STDLIB_H 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <stdlib.h> 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <stdio.h> 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <errno.h> 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_MEMMOVE 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define memmove(x, y, z) bcopy(y, x, z) 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TIME_WITH_SYS_TIME 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/time.h> 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <time.h> 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 1055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# ifdef HAVE_SYS_TIME_H 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/time.h> 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <time.h> 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_STRING_H 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <string.h> 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <strings.h> 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/uio.h> 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef _P 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef NO_PROTOTYPES 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define _P(x) x 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define _P(x) () 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32 1305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <netinet/in.h> 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <arpa/inet.h> 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef GETTIMEOFDAY_ONE_ARG 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define gettimeofday(x, y) gettimeofday(x) 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Systems lacking strdup() definition in <string.h>. */ 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ultrix) 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectchar *strdup _P((const char *)); 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Systems lacking malloc() definition in <stdlib.h>. */ 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ultrix) || defined(hcx) 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid *malloc _P((size_t arg)); 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid free _P((void *ptr)); 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef HAVE_INET_ATON 1505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint inet_aton _P((const char *cp, struct in_addr *ia)); 1515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <fcntl.h> 1545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef NO_UNIX_SOCKETS 1555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <sys/un.h> 1565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <signal.h> 1585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef HAVE_SYS_SIGNAL_H 1595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <sys/signal.h> 1605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef _WIN32 1625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <sys/socket.h> 1635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#if defined(HAVE_SYS_IOCTL_H) 1665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <sys/ioctl.h> 1675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef HAVE_SYS_SELECT_H 1705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <sys/select.h> 1715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef HAVE_SYS_WAIT_H 1745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <sys/wait.h> 1755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef HAVE_SYS_FILIO_H 1785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# include <sys/filio.h> 1795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef USE_PPP 1825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <ppp/slirppp.h> 1835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 1845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __STDC__ 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <stdarg.h> 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <varargs.h> 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <sys/stat.h> 1925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Avoid conflicting with the libc insque() and remque(), which 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project have different prototypes. */ 1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define insque slirp_insque 1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define remque slirp_remque 1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_SYS_STROPTS_H 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/stropts.h> 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "debug.h" 2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ip.h" 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp.h" 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp_timer.h" 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp_var.h" 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcpip.h" 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "udp.h" 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "icmp_var.h" 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "mbuf.h" 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "sbuf.h" 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "socket.h" 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "if.h" 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "main.h" 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "misc.h" 2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ctl.h" 2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef USE_PPP 2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ppp/pppd.h" 2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ppp/ppp.h" 2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "bootp.h" 2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tftp.h" 2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "libslirp.h" 2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct ttys *ttys_unit[MAX_INTERFACES]; 2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef NULL 2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NULL (void *)0 2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef FULL_BOLT 2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_start _P((void)); 2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_start _P((struct ttys *)); 2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef BAD_SPRINTF 2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define vsprintf vsprintf_len 2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define sprintf sprintf_len 2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vsprintf_len _P((char *, const char *, va_list)); 2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int sprintf_len _P((char *, const char *, ...)); 2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef DECLARE_SPRINTF 2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef BAD_SPRINTF 2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vsprintf _P((char *, const char *, va_list)); 2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vfprintf _P((FILE *, const char *, va_list)); 2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_STRERROR 2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern char *strerror _P((int error)); 2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_INDEX 2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char *index _P((const char *, int)); 2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_GETHOSTID 2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project long gethostid _P((void)); 2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid lprint _P((const char *, ...)); 2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef _WIN32 2685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <netdb.h> 2695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DEFAULT_BAUD 115200 2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SO_OPTIONS DO_KEEPALIVE 2745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define TCP_MAXIDLE (TCPTV_KEEPCNT * TCPTV_KEEPINTVL) 2755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* cksum.c */ 2775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint cksum(struct mbuf *m, int len); 2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* if.c */ 2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_init _P((void)); 2815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid if_output _P((struct socket *, struct mbuf *)); 2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ip_input.c */ 2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid ip_init _P((void)); 2855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid ip_input _P((struct mbuf *)); 2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid ip_slowtimo _P((void)); 2875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid ip_stripoptions _P((register struct mbuf *, struct mbuf *)); 2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ip_output.c */ 2905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint ip_output _P((struct socket *, struct mbuf *)); 2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_input.c */ 2935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid tcp_input _P((register struct mbuf *, int, struct socket *)); 2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_mss _P((register struct tcpcb *, u_int)); 2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_output.c */ 2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_output _P((register struct tcpcb *)); 2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_setpersist _P((register struct tcpcb *)); 2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_subr.c */ 3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_init _P((void)); 3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_template _P((struct tcpcb *)); 3035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid tcp_respond _P((struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int)); 3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb * tcp_newtcpcb _P((struct socket *)); 3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb * tcp_close _P((register struct tcpcb *)); 3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_sockclosed _P((struct tcpcb *)); 3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_fconnect _P((struct socket *)); 3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_connect _P((struct socket *)); 3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_attach _P((struct socket *)); 3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectu_int8_t tcp_tos _P((struct socket *)); 3115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint tcp_emu _P((struct socket *, struct mbuf *)); 3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_ctl _P((struct socket *)); 3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb *tcp_drop(struct tcpcb *tp, int err); 3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef USE_PPP 3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MRU MINMRU 3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MRU MAXMRU 3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MRU 128 3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MRU 16384 3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32 3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define min(x,y) ((x) < (y) ? (x) : (y)) 3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define max(x,y) ((x) > (y) ? (x) : (y)) 3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifdef _WIN32 3295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef errno 3305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define errno (WSAGetLastError()) 3315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 3325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 334