steps to support modern FreeBSD. After Robert Watson <rwatson@FreeBSD.org> and Alec...
[arla.git] / rxdef / rx_pkt.xg
blobce5743aa1f2048b56a93ab13dfa0f3f8751d8e3a
1 /* rx_pkt.xg,v 1.3 1994/12/27 03:37:04 assar Exp */
3 /* header of a RPC packet */
5 enum rx_header_type {
6      HT_DATA = 1,
7      HT_ACK = 2,
8      HT_BUSY = 3,
9      HT_ABORT = 4,
10      HT_ACKALL = 5,
11      HT_CHAL = 6,
12      HT_RESP = 7,
13      HT_DEBUG = 8
16 /* For flags in header */
18 enum rx_header_flag {
19      HF_CLIENT_INITIATED = 1,
20      HF_REQ_ACK = 2,
21      HF_LAST = 4,
22      HF_MORE = 8
25 %#define MAXCALLS 4
27 %#define CALL_MASK (MAXCALLS-1)
28 %#define CONNID_MASK (~(MAXCALLS-1))
30 const RX_HEADER_SIZE=28;
32 struct rx_header {
33      unsigned epoch;
34      unsigned connid;           /* And channel ID */
35      unsigned callid;
36      unsigned seqno;
37      unsigned serialno;
38      u_char type;
39      u_char flags;
40      u_char status;
41      u_char secindex;
42      u_short reserved;  /* ??? verifier? */
43      u_short serviceid;
44 /* This should be the other way around according to everything but */
45 /* tcpdump */
48 enum rx_ack_reason {
49      RX_ACK_REQUESTED = 1, 
50      RX_ACK_DUPLICATE = 2,
51      RX_ACK_OUT_OF_SEQUENCE = 3,
52      RX_ACK_EXEEDS_WINDOW = 4,
53      RX_ACK_NOSPACE = 5,
54      RX_ACK_PING = 6,
55      RX_ACK_PING_RESPONSE = 7,
56      RX_ACK_DELAY = 8
59 enum rx_ack_type {
60      RX_ACK_TYPE_NACK = 0,
61      RX_ACK_TYPE_ACK = 1
64 const RXMAXACKS=255;
66 struct rx_ack_header {
67      u_short bufferspace;       /* # of packet buffers available */
68      u_short maxskew;
69      u_long firstpacket;        /* First packet in acks below */
70      u_long prevpacket;
71      u_long serial;             /* Packet that prompted this one */
72      u_char reason;             /* rx_ack_reason */
73 /*     u_char nacks;*/          /* # of acks */
74      u_char acks<u_char>;
75 /*     u_char acks[RXMAXACKS];*/        /* acks (rx_ack_type) */