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