#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 */ | |