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