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