| #ifndef __PKTDRVR_H |
| #define __PKTDRVR_H |
| |
| #define PUBLIC |
| #define LOCAL static |
| |
| #define RX_BUF_SIZE ETH_MTU /* buffer size variables. NB !! */ |
| #define TX_BUF_SIZE ETH_MTU /* must be same as in pkt_rx*.* */ |
| |
| #ifdef __HIGHC__ |
| #pragma Off(Align_members) |
| #else |
| #pragma pack(1) |
| #endif |
| |
| typedef enum { /* Packet-driver classes */ |
| PD_ETHER = 1, |
| PD_PRONET10 = 2, |
| PD_IEEE8025 = 3, |
| PD_OMNINET = 4, |
| PD_APPLETALK = 5, |
| PD_SLIP = 6, |
| PD_STARTLAN = 7, |
| PD_ARCNET = 8, |
| PD_AX25 = 9, |
| PD_KISS = 10, |
| PD_IEEE8023_2 = 11, |
| PD_FDDI8022 = 12, |
| PD_X25 = 13, |
| PD_LANstar = 14, |
| PD_PPP = 18 |
| } PKT_CLASS; |
| |
| typedef enum { /* Packet-driver receive modes */ |
| PDRX_OFF = 1, /* turn off receiver */ |
| PDRX_DIRECT, /* receive only to this interface */ |
| PDRX_BROADCAST, /* DIRECT + broadcast packets */ |
| PDRX_MULTICAST1, /* BROADCAST + limited multicast */ |
| PDRX_MULTICAST2, /* BROADCAST + all multicast */ |
| PDRX_ALL_PACKETS, /* receive all packets on network */ |
| } PKT_RX_MODE; |
| |
| typedef struct { |
| char type[8]; |
| char len; |
| } PKT_FRAME; |
| |
| |
| typedef struct { |
| BYTE class; /* = 1 for DEC/Interl/Xerox Ethernet */ |
| BYTE number; /* = 0 for single LAN adapter */ |
| WORD type; /* = 13 for 3C523 */ |
| BYTE funcs; /* Basic/Extended/HiPerf functions */ |
| WORD intr; /* user interrupt vector number */ |
| WORD handle; /* Handle associated with session */ |
| BYTE name [15]; /* Name of adapter interface,ie.3C523*/ |
| BOOL quiet; /* (don't) print errors to stdout */ |
| const char *error; /* address of error string */ |
| BYTE majVer; /* Major driver implementation ver. */ |
| BYTE minVer; /* Minor driver implementation ver. */ |
| BYTE dummyLen; /* length of following data */ |
| WORD MAClength; /* HiPerformance data, N/A */ |
| WORD MTU; /* HiPerformance data, N/A */ |
| WORD multicast; /* HiPerformance data, N/A */ |
| WORD rcvrBuffers; /* valid for */ |
| WORD UMTbufs; /* High Performance drivers only */ |
| WORD postEOIintr; /* Usage ?? */ |
| } PKT_INFO; |
| |
| #define PKT_PARAM_SIZE 14 /* members majVer - postEOIintr */ |
| |
| |
| typedef struct { |
| DWORD inPackets; /* # of packets received */ |
| DWORD outPackets; /* # of packets transmitted */ |
| DWORD inBytes; /* # of bytes received */ |
| DWORD outBytes; /* # of bytes transmitted */ |
| DWORD inErrors; /* # of reception errors */ |
| DWORD outErrors; /* # of transmission errors */ |
| DWORD lost; /* # of packets lost (RX) */ |
| } PKT_STAT; |
| |
| |
| typedef struct { |
| ETHER destin; |
| ETHER source; |
| WORD proto; |
| BYTE data [TX_BUF_SIZE]; |
| } TX_ELEMENT; |
| |
| typedef struct { |
| WORD firstCount; /* # of bytes on 1st */ |
| WORD secondCount; /* and 2nd upcall */ |
| WORD handle; /* instance that upcalled */ |
| ETHER destin; /* E-net destination address */ |
| ETHER source; /* E-net source address */ |
| WORD proto; /* protocol number */ |
| BYTE data [RX_BUF_SIZE]; |
| } RX_ELEMENT; |
| |
| |
| #ifdef __HIGHC__ |
| #pragma pop(Align_members) |
| #else |
| #pragma pack() |
| #endif |
| |
| |
| /* |
| * Prototypes for publics |
| */ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| extern PKT_STAT pktStat; /* statistics for packets */ |
| extern PKT_INFO pktInfo; /* packet-driver information */ |
| |
| extern PKT_RX_MODE receiveMode; |
| extern ETHER myAddress, ethBroadcast; |
| |
| extern BOOL PktInitDriver (PKT_RX_MODE mode); |
| extern BOOL PktExitDriver (void); |
| |
| extern const char *PktGetErrorStr (int errNum); |
| extern const char *PktGetClassName (WORD class); |
| extern const char *PktRXmodeStr (PKT_RX_MODE mode); |
| extern BOOL PktSearchDriver (void); |
| extern int PktReceive (BYTE *buf, int max); |
| extern BOOL PktTransmit (const void *eth, int len); |
| extern DWORD PktRxDropped (void); |
| extern BOOL PktReleaseHandle (WORD handle); |
| extern BOOL PktTerminHandle (WORD handle); |
| extern BOOL PktResetInterface (WORD handle); |
| extern BOOL PktSetReceiverMode(PKT_RX_MODE mode); |
| extern BOOL PktGetReceiverMode(PKT_RX_MODE *mode); |
| extern BOOL PktGetStatistics (WORD handle); |
| extern BOOL PktSessStatistics (WORD handle); |
| extern BOOL PktResetStatistics(WORD handle); |
| extern BOOL PktGetAddress (ETHER *addr); |
| extern BOOL PktSetAddress (const ETHER *addr); |
| extern BOOL PktGetDriverInfo (void); |
| extern BOOL PktGetDriverParam (void); |
| extern void PktQueueBusy (BOOL busy); |
| extern WORD PktBuffersUsed (void); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __PKTDRVR_H */ |
| |