You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.2 KiB
153 lines
5.2 KiB
#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 */ |
|
|
|
|