pktdrvr.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _PKTDRVR_H
  2. #define _PKTDRVR_H
  3. #ifndef _MBUF_H
  4. #include "mbuf.h"
  5. #endif
  6. #ifndef _IFACE_H
  7. #include "iface.h"
  8. #endif
  9. #define PK_MAX 3 /* Add extra interrupt hooks if you increase this */
  10. /* Packet driver interface classes */
  11. #define CL_NONE 0
  12. #define CL_ETHERNET 1
  13. #define CL_PRONET_10 2
  14. #define CL_IEEE8025 3
  15. #define CL_OMNINET 4
  16. #define CL_APPLETALK 5
  17. #define CL_SERIAL_LINE 6
  18. #define CL_STARLAN 7
  19. #define CL_ARCNET 8
  20. #define CL_AX25 9
  21. #define CL_KISS 10
  22. #define CL_IEEE8023 11
  23. #define CL_FDDI  12
  24. #define CL_INTERNET_X25 13
  25. #define CL_LANSTAR 14
  26. #define CL_SLFP  15
  27. #define CL_NETROM 16
  28. #define CL_PPP 17
  29. #define CL_QTSO 18
  30. #define NCLASS 19
  31. #ifdef MSDOS
  32. /* Packet driver interface types (not a complete list) */
  33. #define TC500 1
  34. #define PC2000 10
  35. #define WD8003 14
  36. #define PC8250 15
  37. #define ANYTYPE 0xffff
  38. /* Packet driver function call numbers. From Appendix B. */
  39. #define DRIVER_INFO 1
  40. #define ACCESS_TYPE 2
  41. #define RELEASE_TYPE 3
  42. #define SEND_PKT 4
  43. #define TERMINATE 5
  44. #define GET_ADDRESS 6
  45. #define RESET_INTERFACE 7
  46. #define GET_PARAMETERS 10
  47. #define AS_SEND_PKT 11
  48. #define SET_RCV_MODE 20
  49. #define GET_RCV_MODE 21
  50. #define SET_MULTICAST_LIST 22
  51. #define GET_MULTICAST_LIST 23
  52. #define GET_STATISTICS 24
  53. #define SET_ADDRESS 25
  54. /* Packet driver error return codes. From Appendix C. */
  55. #define NO_ERROR 0
  56. #define BAD_HANDLE 1 /* invalid handle number */
  57. #define NO_CLASS 2 /* no interfaces of specified class found */
  58. #define NO_TYPE 3 /* no interfaces of specified type found */
  59. #define NO_NUMBER 4 /* no interfaces of specified number found */
  60. #define BAD_TYPE 5 /* bad packet type specified */
  61. #define NO_MULTICAST 6 /* this interface does not support multicast */
  62. #define CANT_TERMINATE 7 /* this packet driver cannot terminate */
  63. #define BAD_MODE 8 /* an invalid receiver mode was specified */
  64. #define NO_SPACE 9 /* operation failed because of insufficient space */
  65. #define TYPE_INUSE 10 /* the type had previously been accessed, and not released */
  66. #define BAD_COMMAND 11 /* the command was out of range, or not implemented */
  67. #define CANT_SEND 12 /* the packet couldn't be sent (usually hardware error) */
  68. #define CANT_SET 13 /* hardware address couldn't be changed (> 1 handle open) */
  69. #define BAD_ADDRESS 14 /* hardware address has bad length or format */
  70. #define CANT_RESET 15 /* couldn't reset interface (> 1 handle open) */
  71. typedef union {
  72. struct {
  73. uint8 lo;
  74. uint8 hi;
  75. } byte;
  76. unsigned short word;
  77. } ureg;
  78. #define CARRY_FLAG 0x1
  79. struct pktdrvr {
  80. int class; /* Interface class (ether/slip/etc) */
  81. int intno; /* Interrupt vector */
  82. short handle1; /* Driver handle(s) */
  83. short handle2;
  84. short handle3;
  85. struct mbuf *buffer; /* Currently allocated rx buffer */
  86. struct iface *iface;
  87. };
  88. extern struct pktdrvr Pktdrvr[];
  89. /* In pktdrvr.c: */
  90. uint8 *pkint(int dev,unsigned short cx, unsigned short ax);
  91. void pk_tx(int dev,void *arg1,void *unused);
  92. int pk_send(struct mbuf **bpp,struct iface *iface,int32 gateway,uint8 tos);
  93. extern char Pkt_sig[];
  94. /* In pkvec.asm: */
  95. INTERRUPT pkvec0(void);
  96. INTERRUPT pkvec1(void);
  97. INTERRUPT pkvec2(void);
  98. #endif /* MSDOS */
  99. #endif /* _PKTDRVR_H */