slirp.h revision 5d8f37ad78fc66901af50c762029a501561f3b23
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#include <stddef.h>
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "sockets.h"
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef _WIN32
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <inttypes.h>
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint8_t u_int8_t;
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint16_t u_int16_t;
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t u_int32_t;
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t u_int64_t;
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef char *caddr_t;
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <windows.h>
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/timeb.h>
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <iphlpapi.h>
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define O_BINARY 0
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/types.h>
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_SYS_BITYPES_H
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/bitypes.h>
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/time.h>
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef NEED_TYPEDEFS
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef char int8_t;
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned char u_int8_t;
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_SHORT == 2
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef short int16_t;
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef unsigned short u_int16_t;
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  if SIZEOF_INT == 2
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef int int16_t;
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef unsigned int u_int16_t;
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  else
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    #error Cannot find a type with sizeof() == 2
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if SIZEOF_SHORT == 4
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   typedef short int32_t;
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   typedef unsigned short u_int32_t;
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  if SIZEOF_INT == 4
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef int int32_t;
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    typedef unsigned int u_int32_t;
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  else
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    #error Cannot find a type with sizeof() == 4
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  endif
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* NEED_TYPEDEFS */
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_UNISTD_H
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <unistd.h>
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_STDLIB_H
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <stdlib.h>
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <stdio.h>
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <errno.h>
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_MEMMOVE
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define memmove(x, y, z) bcopy(y, x, z)
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TIME_WITH_SYS_TIME
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <sys/time.h>
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <time.h>
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner# ifdef HAVE_SYS_TIME_H
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  include <sys/time.h>
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  include <time.h>
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_STRING_H
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <string.h>
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# include <strings.h>
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/uio.h>
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef _P
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef NO_PROTOTYPES
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define   _P(x)   x
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#  define   _P(x)   ()
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <arpa/inet.h>
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef GETTIMEOFDAY_ONE_ARG
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define gettimeofday(x, y) gettimeofday(x)
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Systems lacking strdup() definition in <string.h>. */
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ultrix)
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectchar *strdup _P((const char *));
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Systems lacking malloc() definition in <stdlib.h>. */
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(ultrix) || defined(hcx)
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid *malloc _P((size_t arg));
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid free _P((void *ptr));
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __STDC__
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <stdarg.h>
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <varargs.h>
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Avoid conflicting with the libc insque() and remque(), which
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   have different prototypes. */
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define insque slirp_insque
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define remque slirp_remque
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef HAVE_SYS_STROPTS_H
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <sys/stropts.h>
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "debug.h"
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ip.h"
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp.h"
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp_timer.h"
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcp_var.h"
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tcpip.h"
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "udp.h"
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "icmp_var.h"
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "mbuf.h"
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "sbuf.h"
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "socket.h"
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "if.h"
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "main.h"
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "misc.h"
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ctl.h"
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef USE_PPP
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ppp/pppd.h"
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "ppp/ppp.h"
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "bootp.h"
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "tftp.h"
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "libslirp.h"
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern struct ttys *ttys_unit[MAX_INTERFACES];
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef NULL
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define NULL (void *)0
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef FULL_BOLT
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_start _P((void));
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_start _P((struct ttys *));
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef BAD_SPRINTF
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define vsprintf vsprintf_len
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define sprintf sprintf_len
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vsprintf_len _P((char *, const char *, va_list));
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int sprintf_len _P((char *, const char *, ...));
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef DECLARE_SPRINTF
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifndef BAD_SPRINTF
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vsprintf _P((char *, const char *, va_list));
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern int vfprintf _P((FILE *, const char *, va_list));
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_STRERROR
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project extern char *strerror _P((int error));
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_INDEX
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project char *index _P((const char *, int));
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef HAVE_GETHOSTID
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project long gethostid _P((void));
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid lprint _P((const char *, ...));
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DEFAULT_BAUD 115200
2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define SO_OPTIONS DO_KEEPALIVE
2245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define TCP_MAXIDLE (TCPTV_KEEPCNT * TCPTV_KEEPINTVL)
2255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* cksum.c */
2275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint cksum(struct mbuf *m, int len);
2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* if.c */
2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid if_init _P((void));
2315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid if_output _P((struct socket *, struct mbuf *));
2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ip_input.c */
2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid ip_init _P((void));
2355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid ip_input _P((struct mbuf *));
2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid ip_slowtimo _P((void));
2375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid ip_stripoptions _P((register struct mbuf *, struct mbuf *));
2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ip_output.c */
2405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint ip_output _P((struct socket *, struct mbuf *));
2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_input.c */
2435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid tcp_input _P((register struct mbuf *, int, struct socket *));
2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_mss _P((register struct tcpcb *, u_int));
2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_output.c */
2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_output _P((register struct tcpcb *));
2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_setpersist _P((register struct tcpcb *));
2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* tcp_subr.c */
2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_init _P((void));
2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_template _P((struct tcpcb *));
2535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid tcp_respond _P((struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int));
2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb * tcp_newtcpcb _P((struct socket *));
2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb * tcp_close _P((register struct tcpcb *));
2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_sockclosed _P((struct tcpcb *));
2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_fconnect _P((struct socket *));
2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid tcp_connect _P((struct socket *));
2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_attach _P((struct socket *));
2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectu_int8_t tcp_tos _P((struct socket *));
2615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint tcp_emu _P((struct socket *, struct mbuf *));
2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint tcp_ctl _P((struct socket *));
2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct tcpcb *tcp_drop(struct tcpcb *tp, int err);
2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef USE_PPP
2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MRU MINMRU
2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MRU MAXMRU
2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else
2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MIN_MRU 128
2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MAX_MRU 16384
2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _WIN32
2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define min(x,y) ((x) < (y) ? (x) : (y))
2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define max(x,y) ((x) > (y) ? (x) : (y))
2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
279