xref: /aosp_15_r20/external/libpcap/msdos/pktdrvr.h (revision 8b26181f966a6af5cf6981a6f474313de533bb28)
1*8b26181fSAndroid Build Coastguard Worker #ifndef __PKTDRVR_H
2*8b26181fSAndroid Build Coastguard Worker #define __PKTDRVR_H
3*8b26181fSAndroid Build Coastguard Worker 
4*8b26181fSAndroid Build Coastguard Worker #define PUBLIC
5*8b26181fSAndroid Build Coastguard Worker #define LOCAL        static
6*8b26181fSAndroid Build Coastguard Worker 
7*8b26181fSAndroid Build Coastguard Worker #define RX_BUF_SIZE  ETH_MTU   /* buffer size variables. NB !! */
8*8b26181fSAndroid Build Coastguard Worker #define TX_BUF_SIZE  ETH_MTU   /* must be same as in pkt_rx*.* */
9*8b26181fSAndroid Build Coastguard Worker 
10*8b26181fSAndroid Build Coastguard Worker #ifdef __HIGHC__
11*8b26181fSAndroid Build Coastguard Worker #pragma Off(Align_members)
12*8b26181fSAndroid Build Coastguard Worker #else
13*8b26181fSAndroid Build Coastguard Worker #pragma pack(1)
14*8b26181fSAndroid Build Coastguard Worker #endif
15*8b26181fSAndroid Build Coastguard Worker 
16*8b26181fSAndroid Build Coastguard Worker typedef enum  {                /* Packet-driver classes */
17*8b26181fSAndroid Build Coastguard Worker         PD_ETHER      = 1,
18*8b26181fSAndroid Build Coastguard Worker         PD_PRONET10   = 2,
19*8b26181fSAndroid Build Coastguard Worker         PD_IEEE8025   = 3,
20*8b26181fSAndroid Build Coastguard Worker         PD_OMNINET    = 4,
21*8b26181fSAndroid Build Coastguard Worker         PD_APPLETALK  = 5,
22*8b26181fSAndroid Build Coastguard Worker         PD_SLIP       = 6,
23*8b26181fSAndroid Build Coastguard Worker         PD_STARTLAN   = 7,
24*8b26181fSAndroid Build Coastguard Worker         PD_ARCNET     = 8,
25*8b26181fSAndroid Build Coastguard Worker         PD_AX25       = 9,
26*8b26181fSAndroid Build Coastguard Worker         PD_KISS       = 10,
27*8b26181fSAndroid Build Coastguard Worker         PD_IEEE8023_2 = 11,
28*8b26181fSAndroid Build Coastguard Worker         PD_FDDI8022   = 12,
29*8b26181fSAndroid Build Coastguard Worker         PD_X25        = 13,
30*8b26181fSAndroid Build Coastguard Worker         PD_LANstar    = 14,
31*8b26181fSAndroid Build Coastguard Worker         PD_PPP        = 18
32*8b26181fSAndroid Build Coastguard Worker       } PKT_CLASS;
33*8b26181fSAndroid Build Coastguard Worker 
34*8b26181fSAndroid Build Coastguard Worker typedef enum  {             /* Packet-driver receive modes    */
35*8b26181fSAndroid Build Coastguard Worker         PDRX_OFF    = 1,    /* turn off receiver              */
36*8b26181fSAndroid Build Coastguard Worker         PDRX_DIRECT,        /* receive only to this interface */
37*8b26181fSAndroid Build Coastguard Worker         PDRX_BROADCAST,     /* DIRECT + broadcast packets     */
38*8b26181fSAndroid Build Coastguard Worker         PDRX_MULTICAST1,    /* BROADCAST + limited multicast  */
39*8b26181fSAndroid Build Coastguard Worker         PDRX_MULTICAST2,    /* BROADCAST + all multicast      */
40*8b26181fSAndroid Build Coastguard Worker         PDRX_ALL_PACKETS,   /* receive all packets on network */
41*8b26181fSAndroid Build Coastguard Worker       } PKT_RX_MODE;
42*8b26181fSAndroid Build Coastguard Worker 
43*8b26181fSAndroid Build Coastguard Worker typedef struct {
44*8b26181fSAndroid Build Coastguard Worker         char type[8];
45*8b26181fSAndroid Build Coastguard Worker         char len;
46*8b26181fSAndroid Build Coastguard Worker       } PKT_FRAME;
47*8b26181fSAndroid Build Coastguard Worker 
48*8b26181fSAndroid Build Coastguard Worker 
49*8b26181fSAndroid Build Coastguard Worker typedef struct {
50*8b26181fSAndroid Build Coastguard Worker         BYTE  class;        /* = 1 for DEC/Interl/Xerox Ethernet */
51*8b26181fSAndroid Build Coastguard Worker         BYTE  number;       /* = 0 for single LAN adapter        */
52*8b26181fSAndroid Build Coastguard Worker         WORD  type;         /* = 13 for 3C523                    */
53*8b26181fSAndroid Build Coastguard Worker         BYTE  funcs;        /* Basic/Extended/HiPerf functions   */
54*8b26181fSAndroid Build Coastguard Worker         WORD  intr;         /* user interrupt vector number      */
55*8b26181fSAndroid Build Coastguard Worker         WORD  handle;       /* Handle associated with session    */
56*8b26181fSAndroid Build Coastguard Worker         BYTE  name [15];    /* Name of adapter interface,ie.3C523*/
57*8b26181fSAndroid Build Coastguard Worker         BOOL  quiet;        /* (don't) print errors to stdout    */
58*8b26181fSAndroid Build Coastguard Worker         const char *error;  /* address of error string           */
59*8b26181fSAndroid Build Coastguard Worker         BYTE  majVer;       /* Major driver implementation ver.  */
60*8b26181fSAndroid Build Coastguard Worker         BYTE  minVer;       /* Minor driver implementation ver.  */
61*8b26181fSAndroid Build Coastguard Worker         BYTE  dummyLen;     /* length of following data          */
62*8b26181fSAndroid Build Coastguard Worker         WORD  MAClength;    /* HiPerformance data, N/A           */
63*8b26181fSAndroid Build Coastguard Worker         WORD  MTU;          /* HiPerformance data, N/A           */
64*8b26181fSAndroid Build Coastguard Worker         WORD  multicast;    /* HiPerformance data, N/A           */
65*8b26181fSAndroid Build Coastguard Worker         WORD  rcvrBuffers;  /* valid for                         */
66*8b26181fSAndroid Build Coastguard Worker         WORD  UMTbufs;      /*   High Performance drivers only   */
67*8b26181fSAndroid Build Coastguard Worker         WORD  postEOIintr;  /*                  Usage ??         */
68*8b26181fSAndroid Build Coastguard Worker       } PKT_INFO;
69*8b26181fSAndroid Build Coastguard Worker 
70*8b26181fSAndroid Build Coastguard Worker #define PKT_PARAM_SIZE  14    /* members majVer - postEOIintr */
71*8b26181fSAndroid Build Coastguard Worker 
72*8b26181fSAndroid Build Coastguard Worker 
73*8b26181fSAndroid Build Coastguard Worker typedef struct {
74*8b26181fSAndroid Build Coastguard Worker         DWORD inPackets;          /* # of packets received    */
75*8b26181fSAndroid Build Coastguard Worker         DWORD outPackets;         /* # of packets transmitted */
76*8b26181fSAndroid Build Coastguard Worker         DWORD inBytes;            /* # of bytes received      */
77*8b26181fSAndroid Build Coastguard Worker         DWORD outBytes;           /* # of bytes transmitted   */
78*8b26181fSAndroid Build Coastguard Worker         DWORD inErrors;           /* # of reception errors    */
79*8b26181fSAndroid Build Coastguard Worker         DWORD outErrors;          /* # of transmission errors */
80*8b26181fSAndroid Build Coastguard Worker         DWORD lost;               /* # of packets lost (RX)   */
81*8b26181fSAndroid Build Coastguard Worker       } PKT_STAT;
82*8b26181fSAndroid Build Coastguard Worker 
83*8b26181fSAndroid Build Coastguard Worker 
84*8b26181fSAndroid Build Coastguard Worker typedef struct {
85*8b26181fSAndroid Build Coastguard Worker         ETHER destin;
86*8b26181fSAndroid Build Coastguard Worker         ETHER source;
87*8b26181fSAndroid Build Coastguard Worker         WORD  proto;
88*8b26181fSAndroid Build Coastguard Worker         BYTE  data [TX_BUF_SIZE];
89*8b26181fSAndroid Build Coastguard Worker       } TX_ELEMENT;
90*8b26181fSAndroid Build Coastguard Worker 
91*8b26181fSAndroid Build Coastguard Worker typedef struct {
92*8b26181fSAndroid Build Coastguard Worker         WORD  firstCount;         /* # of bytes on 1st         */
93*8b26181fSAndroid Build Coastguard Worker         WORD  secondCount;        /* and 2nd upcall            */
94*8b26181fSAndroid Build Coastguard Worker         WORD  handle;             /* instance that upcalled    */
95*8b26181fSAndroid Build Coastguard Worker         ETHER destin;             /* E-net destination address */
96*8b26181fSAndroid Build Coastguard Worker         ETHER source;             /* E-net source address      */
97*8b26181fSAndroid Build Coastguard Worker         WORD  proto;              /* protocol number           */
98*8b26181fSAndroid Build Coastguard Worker         BYTE  data [RX_BUF_SIZE];
99*8b26181fSAndroid Build Coastguard Worker       } RX_ELEMENT;
100*8b26181fSAndroid Build Coastguard Worker 
101*8b26181fSAndroid Build Coastguard Worker 
102*8b26181fSAndroid Build Coastguard Worker #ifdef __HIGHC__
103*8b26181fSAndroid Build Coastguard Worker #pragma pop(Align_members)
104*8b26181fSAndroid Build Coastguard Worker #else
105*8b26181fSAndroid Build Coastguard Worker #pragma pack()
106*8b26181fSAndroid Build Coastguard Worker #endif
107*8b26181fSAndroid Build Coastguard Worker 
108*8b26181fSAndroid Build Coastguard Worker 
109*8b26181fSAndroid Build Coastguard Worker /*
110*8b26181fSAndroid Build Coastguard Worker  * Prototypes for publics
111*8b26181fSAndroid Build Coastguard Worker  */
112*8b26181fSAndroid Build Coastguard Worker 
113*8b26181fSAndroid Build Coastguard Worker #ifdef __cplusplus
114*8b26181fSAndroid Build Coastguard Worker extern "C" {
115*8b26181fSAndroid Build Coastguard Worker #endif
116*8b26181fSAndroid Build Coastguard Worker 
117*8b26181fSAndroid Build Coastguard Worker extern PKT_STAT    pktStat;     /* statistics for packets */
118*8b26181fSAndroid Build Coastguard Worker extern PKT_INFO    pktInfo;     /* packet-driver information */
119*8b26181fSAndroid Build Coastguard Worker 
120*8b26181fSAndroid Build Coastguard Worker extern PKT_RX_MODE receiveMode;
121*8b26181fSAndroid Build Coastguard Worker extern ETHER       myAddress, ethBroadcast;
122*8b26181fSAndroid Build Coastguard Worker 
123*8b26181fSAndroid Build Coastguard Worker extern BOOL  PktInitDriver (PKT_RX_MODE mode);
124*8b26181fSAndroid Build Coastguard Worker extern BOOL  PktExitDriver (void);
125*8b26181fSAndroid Build Coastguard Worker 
126*8b26181fSAndroid Build Coastguard Worker extern const char *PktGetErrorStr    (int errNum);
127*8b26181fSAndroid Build Coastguard Worker extern const char *PktGetClassName   (WORD class);
128*8b26181fSAndroid Build Coastguard Worker extern const char *PktRXmodeStr      (PKT_RX_MODE mode);
129*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktSearchDriver   (void);
130*8b26181fSAndroid Build Coastguard Worker extern int         PktReceive        (BYTE *buf, int max);
131*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktTransmit       (const void *eth, int len);
132*8b26181fSAndroid Build Coastguard Worker extern DWORD       PktRxDropped      (void);
133*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktReleaseHandle  (WORD handle);
134*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktTerminHandle   (WORD handle);
135*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktResetInterface (WORD handle);
136*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktSetReceiverMode(PKT_RX_MODE  mode);
137*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktGetReceiverMode(PKT_RX_MODE *mode);
138*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktGetStatistics  (WORD handle);
139*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktSessStatistics (WORD handle);
140*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktResetStatistics(WORD handle);
141*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktGetAddress     (ETHER *addr);
142*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktSetAddress     (const ETHER *addr);
143*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktGetDriverInfo  (void);
144*8b26181fSAndroid Build Coastguard Worker extern BOOL        PktGetDriverParam (void);
145*8b26181fSAndroid Build Coastguard Worker extern void        PktQueueBusy      (BOOL busy);
146*8b26181fSAndroid Build Coastguard Worker extern WORD        PktBuffersUsed    (void);
147*8b26181fSAndroid Build Coastguard Worker 
148*8b26181fSAndroid Build Coastguard Worker #ifdef __cplusplus
149*8b26181fSAndroid Build Coastguard Worker }
150*8b26181fSAndroid Build Coastguard Worker #endif
151*8b26181fSAndroid Build Coastguard Worker 
152*8b26181fSAndroid Build Coastguard Worker #endif /* __PKTDRVR_H */
153*8b26181fSAndroid Build Coastguard Worker 
154