1478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project/* 2478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project * Internal details for libpcap on DOS. 3478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project * 32-bit targets: djgpp, Pharlap or DOS4GW. 4478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project * 5478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project * @(#) $Header: /tcpdump/master/libpcap/pcap-dos.h,v 1.1 2004/12/18 08:52:10 guy Exp $ (LBL) 6478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project */ 7478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 8478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifndef __PCAP_DOS_H 9478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define __PCAP_DOS_H 10478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 11478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef __DJGPP__ 12478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#include <pc.h> /* simple non-conio kbhit */ 13478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#else 14478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#include <conio.h> 15478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 16478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 17478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projecttypedef int BOOL; 18478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projecttypedef unsigned char BYTE; 19478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projecttypedef unsigned short WORD; 20478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projecttypedef unsigned long DWORD; 21478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projecttypedef BYTE ETHER[6]; 22478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 23478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ETH_ALEN sizeof(ETHER) /* Ether address length */ 24478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ETH_HLEN (2*ETH_ALEN+2) /* Ether header length */ 25478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ETH_MTU 1500 26478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ETH_MIN 60 27478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ETH_MAX (ETH_MTU+ETH_HLEN) 28478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 29478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifndef TRUE 30478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define TRUE 1 31478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define FALSE 0 32478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 33478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 34478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define PHARLAP 1 35478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define DJGPP 2 36478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define DOS4GW 4 37478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 38478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef __DJGPP__ 39478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #undef DOSX 40478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define DOSX DJGPP 41478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 42478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 43478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef __WATCOMC__ 44478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #undef DOSX 45478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define DOSX DOS4GW 46478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 47478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 48478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef __HIGHC__ 49478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #include <pharlap.h> 50478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #undef DOSX 51478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define DOSX PHARLAP 52478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define inline 53478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#else 54478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef unsigned int UINT; 55478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 56478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 57478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 58478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#if defined(__GNUC__) || defined(__HIGHC__) 59478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef unsigned long long uint64; 60478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef unsigned long long QWORD; 61478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 62478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 63478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#if defined(__WATCOMC__) 64478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef unsigned __int64 uint64; 65478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef unsigned __int64 QWORD; 66478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 67478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 68478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define ARGSUSED(x) (void) x 69478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 70478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#if defined (__SMALL__) || defined(__LARGE__) 71478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define DOSX 0 72478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 73478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#elif !defined(DOSX) 74478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #error DOSX not defined; 1 = PharLap, 2 = djgpp, 4 = DOS4GW 75478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 76478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 77478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef __HIGHC__ 78478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define min(a,b) _min(a,b) 79478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define max(a,b) _max(a,b) 80478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 81478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 82478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifndef min 83478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define min(a,b) ((a) < (b) ? (a) : (b)) 84478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 85478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 86478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifndef max 87478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define max(a,b) ((a) < (b) ? (b) : (a)) 88478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 89478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 90478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#if !defined(_U_) && defined(__GNUC__) 91478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define _U_ __attribute__((unused)) 92478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 93478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 94478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifndef _U_ 95478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#define _U_ 96478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 97478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 98478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#if defined(USE_32BIT_DRIVERS) 99478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #include "msdos/pm_drvr/lock.h" 100478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 101478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #ifndef RECEIVE_QUEUE_SIZE 102478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define RECEIVE_QUEUE_SIZE 60 103478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #endif 104478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 105478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #ifndef RECEIVE_BUF_SIZE 106478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define RECEIVE_BUF_SIZE (ETH_MAX+20) 107478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #endif 108478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 109478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device el2_dev LOCKED_VAR; /* 3Com EtherLink II */ 110478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device el3_dev LOCKED_VAR; /* EtherLink III */ 111478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device tc59_dev LOCKED_VAR; /* 3Com Vortex Card (?) */ 112478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device tc515_dev LOCKED_VAR; 113478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device tc90x_dev LOCKED_VAR; 114478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device tc90bcx_dev LOCKED_VAR; 115478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device wd_dev LOCKED_VAR; 116478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device ne_dev LOCKED_VAR; 117478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device acct_dev LOCKED_VAR; 118478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device cs89_dev LOCKED_VAR; 119478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern struct device rtl8139_dev LOCKED_VAR; 120478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 121478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project struct rx_ringbuf { 122478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project volatile int in_index; /* queue index head */ 123478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int out_index; /* queue index tail */ 124478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int elem_size; /* size of each element */ 125478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int num_elem; /* number of elements */ 126478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project char *buf_start; /* start of buffer pool */ 127478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project }; 128478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 129478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project struct rx_elem { 130478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD size; /* size copied to this element */ 131478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project BYTE data[ETH_MAX+10]; /* add some margin. data[0] should be */ 132478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project }; /* dword aligned */ 133478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 134478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern BYTE *get_rxbuf (int len) LOCKED_FUNC; 135478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern int peek_rxbuf (BYTE **buf); 136478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project extern int release_rxbuf (BYTE *buf); 137478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 138478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#else 139478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define LOCKED_VAR 140478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define LOCKED_FUNC 141478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 142478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project struct device { 143478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project const char *name; 144478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project const char *long_name; 145478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD base_addr; /* device I/O address */ 146478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int irq; /* device IRQ number */ 147478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int dma; /* DMA channel */ 148478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD mem_start; /* shared mem start */ 149478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD mem_end; /* shared mem end */ 150478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rmem_start; /* shmem "recv" start */ 151478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rmem_end; /* shared "recv" end */ 152478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 153478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project struct device *next; /* next device in list */ 154478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 155478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project /* interface service routines */ 156478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*probe)(struct device *dev); 157478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*open) (struct device *dev); 158478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project void (*close)(struct device *dev); 159478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*xmit) (struct device *dev, const void *buf, int len); 160478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project void *(*get_stats)(struct device *dev); 161478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project void (*set_multicast_list)(struct device *dev); 162478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 163478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project /* driver-to-pcap receive buffer routines */ 164478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*copy_rx_buf) (BYTE *buf, int max); /* rx-copy (pktdrvr only) */ 165478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project BYTE *(*get_rx_buf) (int len); /* rx-buf fetch/enqueue */ 166478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*peek_rx_buf) (BYTE **buf); /* rx-non-copy at queue */ 167478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project int (*release_rx_buf) (BYTE *buf); /* release after peek */ 168478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 169478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project WORD flags; /* Low-level status flags. */ 170478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project void *priv; /* private data */ 171478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project }; 172478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 173478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project /* 174478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project * Network device statistics 175478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project */ 176478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project typedef struct net_device_stats { 177478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_packets; /* total packets received */ 178478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_packets; /* total packets transmitted */ 179478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_bytes; /* total bytes received */ 180478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_bytes; /* total bytes transmitted */ 181478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_errors; /* bad packets received */ 182478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_errors; /* packet transmit problems */ 183478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_dropped; /* no space in Rx buffers */ 184478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_dropped; /* no space available for Tx */ 185478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD multicast; /* multicast packets received */ 186478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 187478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project /* detailed rx_errors: */ 188478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_length_errors; 189478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_over_errors; /* recv'r overrun error */ 190478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_osize_errors; /* recv'r over-size error */ 191478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_crc_errors; /* recv'd pkt with crc error */ 192478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_frame_errors; /* recv'd frame alignment error */ 193478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_fifo_errors; /* recv'r fifo overrun */ 194478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD rx_missed_errors; /* recv'r missed packet */ 195478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 196478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project /* detailed tx_errors */ 197478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_aborted_errors; 198478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_carrier_errors; 199478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_fifo_errors; 200478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_heartbeat_errors; 201478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_window_errors; 202478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_collisions; 203478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project DWORD tx_jabbers; 204478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project } NET_STATS; 205478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 206478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 207478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projectextern struct device *active_dev LOCKED_VAR; 208478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projectextern const struct device *dev_base LOCKED_VAR; 209478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projectextern struct device *probed_dev; 210478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 211478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projectextern int pcap_pkt_debug; 212478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 213478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Projectextern void _w32_os_yield (void); /* Watt-32's misc.c */ 214478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 215478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#ifdef NDEBUG 216478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define PCAP_ASSERT(x) ((void)0) 217478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 218478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#else 219478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project void pcap_assert (const char *what, const char *file, unsigned line); 220478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 221478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project #define PCAP_ASSERT(x) do { \ 222478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project if (!(x)) \ 223478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project pcap_assert (#x, __FILE__, __LINE__); \ 224478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project } while (0) 225478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif 226478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project 227478ab6c8b5bc982589be32eae1e5736efe721b58The Android Open Source Project#endif /* __PCAP_DOS_H */ 228