blob: 08898ae8685f9ed54c703ce63810135f35c3a552 [file] [log] [blame]
JP Abgrall511eca32014-02-12 13:46:45 -08001#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