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 *
5511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * @(#) $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