12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 2002 - 2003 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * NetGroup, Politecnico di Torino (Italy) 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * All rights reserved. 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that the following conditions 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * are met: 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * notice, this list of conditions and the following disclaimer. 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * documentation and/or other materials provided with the distribution. 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 3. Neither the name of the Politecnico di Torino nor the names of its 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * contributors may be used to endorse or promote products derived from 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * this software without specific prior written permission. 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.12.2.5 2006/06/23 02:07:27 hannes Exp $ (LBL) 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Include the appropriate OS header files on Windows and various flavors 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * of UNIX, and also define some additional items and include various 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * non-OS header files on Windows, and; this isolates most of the platform 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * differences to this one file. 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef tcpdump_stdinc_h 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define tcpdump_stdinc_h 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef WIN32 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdio.h> 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <winsock2.h> 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <Ws2tcpip.h> 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "bittypes.h" 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <ctype.h> 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <time.h> 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <io.h> 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <fcntl.h> 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/types.h> 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <net/netdb.h> /* in wpcap's Win32/include */ 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if !defined(__MINGW32__) && !defined(__WATCOMC__) 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#undef toascii 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define isascii __isascii 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define toascii __toascii 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define stat _stat 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define open _open 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define fstat _fstat 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define read _read 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define close _close 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define O_RDONLY _O_RDONLY 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef short ino_t; 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* __MINGW32__ */ 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef __MINGW32__ 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdint.h> 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Protos for missing/x.c functions (ideally <missing/addrinfo.h> 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * should be used, but it clashes with <ws2tcpip.h>). 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern const char *inet_ntop (int, const void *, char *, size_t); 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern int inet_pton (int, const char *, void *); 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectextern int inet_aton (const char *cp, struct in_addr *addr); 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef INET6_ADDRSTRLEN 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define INET6_ADDRSTRLEN 46 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef toascii 882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define toascii(c) ((c) & 0x7f) 892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef caddr_t 922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef char* caddr_t; 932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* caddr_t */ 942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define MAXHOSTNAMELEN 64 962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define NI_MAXHOST 1025 972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define snprintf _snprintf 982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define vsnprintf _vsnprintf 992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RETSIGTYPE void 1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else /* WIN32 */ 1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <ctype.h> 1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <unistd.h> 1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <netdb.h> 1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if HAVE_INTTYPES_H 1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <inttypes.h> 1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else 1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if HAVE_STDINT_H 1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <stdint.h> 1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_SYS_BITYPES_H 1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/bitypes.h> 1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/param.h> 1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/types.h> /* concession to AIX */ 1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/time.h> 1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <sys/socket.h> 1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <netinet/in.h> 1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef TIME_WITH_SYS_TIME 1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <time.h> 1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <arpa/inet.h> 1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* WIN32 */ 1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef INET6 1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "ip6.h" 1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if defined(WIN32) || defined(MSDOS) 1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_READ_TXT "rt" 1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_READ_BIN "rb" 1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_WRITE_TXT "wt" 1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_WRITE_BIN "wb" 1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#else 1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_READ_TXT "r" 1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_READ_BIN FOPEN_READ_TXT 1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_WRITE_TXT "w" 1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define FOPEN_WRITE_BIN FOPEN_WRITE_TXT 1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if defined(__GNUC__) && defined(__i386__) && !defined(__ntohl) 1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #undef ntohl 1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #undef ntohs 1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #undef htonl 1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #undef htons 1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project extern __inline__ unsigned long __ntohl (unsigned long x); 1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project extern __inline__ unsigned short __ntohs (unsigned short x); 1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define ntohl(x) __ntohl(x) 1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define ntohs(x) __ntohs(x) 1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define htonl(x) __ntohl(x) 1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project #define htons(x) __ntohs(x) 1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project extern __inline__ unsigned long __ntohl (unsigned long x) 1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project __asm__ ("xchgb %b0, %h0\n\t" /* swap lower bytes */ 1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "rorl $16, %0\n\t" /* swap words */ 1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "xchgb %b0, %h0" /* swap higher bytes */ 1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project : "=q" (x) : "0" (x)); 1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return (x); 1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project extern __inline__ unsigned short __ntohs (unsigned short x) 1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project { 1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project __asm__ ("xchgb %b0, %h0" /* swap bytes */ 1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project : "=q" (x) : "0" (x)); 1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return (x); 1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project } 1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef INET_ADDRSTRLEN 1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define INET_ADDRSTRLEN 16 1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef TRUE 1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define TRUE 1 1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef FALSE 1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define FALSE 0 1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* tcpdump_stdinc_h */ 190