pktdrvr.h 5.2 KB

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