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