home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / tcpipsrc / pktdrvr.h < prev    next >
Text File  |  1990-11-10  |  3KB  |  119 lines

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