| #ifndef __NET_SPX_H |
| #define __NET_SPX_H |
| |
| #include <net/ipx.h> |
| |
| struct spxhdr |
| { __u8 cctl; |
| __u8 dtype; |
| #define SPX_DTYPE_ECONN 0xFE /* Finished */ |
| #define SPX_DTYPE_ECACK 0xFF /* Ok */ |
| __u16 sconn; /* Connection ID */ |
| __u16 dconn; /* Connection ID */ |
| __u16 sequence; |
| __u16 ackseq; |
| __u16 allocseq; |
| }; |
| |
| struct ipxspxhdr |
| { struct ipxhdr ipx; |
| struct spxhdr spx; |
| }; |
| |
| #define SPX_SYS_PKT_LEN (sizeof(struct ipxspxhdr)) |
| |
| #ifdef __KERNEL__ |
| struct spx_opt |
| { int state; |
| int sndbuf; |
| int retries; /* Number of WD retries */ |
| int retransmits; /* Number of retransmits */ |
| int max_retries; |
| int wd_interval; |
| void *owner; |
| __u16 dest_connid; /* Net order */ |
| __u16 source_connid; /* Net order */ |
| __u16 sequence; /* Host order - our current pkt # */ |
| __u16 alloc; /* Host order - max seq we can rcv now */ |
| __u16 rmt_ack; /* Host order - last pkt ACKd by remote */ |
| __u16 rmt_seq; |
| __u16 acknowledge; |
| __u16 rmt_alloc; /* Host order - max seq remote can handle now */ |
| ipx_address dest_addr; |
| ipx_address source_addr; |
| struct timer_list watchdog; /* Idle watch */ |
| struct timer_list retransmit; /* Retransmit timer */ |
| struct sk_buff_head rcv_queue; |
| struct sk_buff_head transmit_queue; |
| struct sk_buff_head retransmit_queue; |
| }; |
| |
| /* Packet connectino control defines */ |
| #define CCTL_SPXII_XHD 0x01 /* SPX2 extended header */ |
| #define CCTL_SPX_UNKNOWN 0x02 /* Unknown (unused ??) */ |
| #define CCTL_SPXII_NEG 0x04 /* Negotiate size */ |
| #define CCTL_SPXII 0x08 /* Set for SPX2 */ |
| #define CCTL_EOM 0x10 /* End of message marker */ |
| #define CCTL_URG 0x20 /* Urgent marker in SPP (not used in SPX?) */ |
| #define CCTL_ACK 0x40 /* Send me an ACK */ |
| #define CCTL_CTL 0x80 /* Control message */ |
| #define CCTL_SYS CCTL_CTL /* Spec uses CCTL_SYS */ |
| |
| /* Connection state defines */ |
| #define SPX_CLOSED 7 |
| #define SPX_CONNECTING 8 |
| #define SPX_CONNECTED 9 |
| |
| /* Packet transmit types - Internal */ |
| #define DATA 0 /* Data */ |
| #define ACK 1 /* Data ACK */ |
| #define WDACK 2 /* WD ACK */ |
| #define CONACK 3 /* Connection Request ACK */ |
| #define CONREQ 4 /* Connection Request */ |
| #define WDREQ 5 /* WD Request */ |
| #define DISCON 6 /* Informed Disconnect */ |
| #define DISACK 7 /* Informed Disconnect ACK */ |
| #define RETRAN 8 /* Int. Retransmit of packet */ |
| #define TQUEUE 9 /* Int. Transmit of a queued packet */ |
| |
| /* |
| * These are good canidates for IOcontrol calls |
| */ |
| |
| /* Watchdog defines */ |
| #define VERIFY_TIMEOUT 3 * HZ |
| #define ABORT_TIMEOUT 30 * HZ |
| |
| /* Packet retransmit defines */ |
| #define RETRY_COUNT 10 |
| #define RETRY_TIME 1 * HZ |
| #define MAX_RETRY_DELAY 5 * HZ |
| |
| #endif /* __KERNEL__ */ |
| #endif /* def __NET_SPX_H */ |