spx.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef __NET_SPX_H
  2. #define __NET_SPX_H
  3. #include <net/ipx.h>
  4. struct spxhdr
  5. { __u8 cctl;
  6. __u8 dtype;
  7. #define SPX_DTYPE_ECONN 0xFE /* Finished */
  8. #define SPX_DTYPE_ECACK 0xFF /* Ok */
  9. __u16 sconn; /* Connection ID */
  10. __u16 dconn; /* Connection ID */
  11. __u16 sequence;
  12. __u16 ackseq;
  13. __u16 allocseq;
  14. };
  15. struct ipxspxhdr
  16. { struct ipxhdr ipx;
  17. struct spxhdr spx;
  18. };
  19. #define SPX_SYS_PKT_LEN (sizeof(struct ipxspxhdr))
  20. #ifdef __KERNEL__
  21. struct spx_opt
  22. { int state;
  23. int sndbuf;
  24. int retries; /* Number of WD retries */
  25. int retransmits; /* Number of retransmits */
  26. int max_retries;
  27. int wd_interval;
  28. void *owner;
  29. __u16 dest_connid; /* Net order */
  30. __u16 source_connid; /* Net order */
  31. __u16 sequence; /* Host order - our current pkt # */
  32. __u16 alloc; /* Host order - max seq we can rcv now */
  33. __u16 rmt_ack; /* Host order - last pkt ACKd by remote */
  34. __u16 rmt_seq;
  35. __u16 acknowledge;
  36. __u16 rmt_alloc; /* Host order - max seq remote can handle now */
  37. ipx_address dest_addr;
  38. ipx_address source_addr;
  39. struct timer_list watchdog; /* Idle watch */
  40. struct timer_list retransmit; /* Retransmit timer */
  41. struct sk_buff_head     rcv_queue;
  42. struct sk_buff_head transmit_queue;
  43. struct sk_buff_head     retransmit_queue;
  44. };
  45. /* Packet connectino control defines */
  46. #define CCTL_SPXII_XHD  0x01    /* SPX2 extended header */
  47. #define CCTL_SPX_UNKNOWN 0x02   /* Unknown (unused ??) */
  48. #define CCTL_SPXII_NEG  0x04    /* Negotiate size */
  49. #define CCTL_SPXII      0x08    /* Set for SPX2 */
  50. #define CCTL_EOM        0x10    /* End of message marker */
  51. #define CCTL_URG        0x20    /* Urgent marker in SPP (not used in SPX?) */
  52. #define CCTL_ACK        0x40    /* Send me an ACK */
  53. #define CCTL_CTL        0x80    /* Control message */
  54. #define CCTL_SYS        CCTL_CTL        /* Spec uses CCTL_SYS */
  55. /* Connection state defines */
  56. #define SPX_CLOSED 7
  57. #define SPX_CONNECTING 8
  58. #define SPX_CONNECTED 9
  59. /* Packet transmit types - Internal */
  60. #define DATA 0 /* Data */
  61. #define ACK 1 /* Data ACK */
  62. #define WDACK 2 /* WD ACK */
  63. #define CONACK 3 /* Connection Request ACK */
  64. #define CONREQ 4 /* Connection Request */
  65. #define WDREQ 5 /* WD Request */
  66. #define DISCON 6 /* Informed Disconnect */
  67. #define DISACK 7 /* Informed Disconnect ACK */
  68. #define RETRAN 8 /* Int. Retransmit of packet */
  69. #define TQUEUE 9 /* Int. Transmit of a queued packet */
  70. /*
  71.  * These are good canidates for IOcontrol calls
  72.  */
  73. /* Watchdog defines */
  74. #define VERIFY_TIMEOUT  3 * HZ
  75. #define ABORT_TIMEOUT   30 * HZ
  76. /* Packet retransmit defines */
  77. #define RETRY_COUNT     10
  78. #define RETRY_TIME      1 * HZ
  79. #define MAX_RETRY_DELAY 5 * HZ
  80. #endif /* __KERNEL__ */
  81. #endif /* def __NET_SPX_H */