Merge branch 'vendor/MDOCML'
[dragonfly.git] / contrib / tcpdump / rx.h
1 /*
2  * Copyright: (c) 2000 United States Government as represented by the
3  *      Secretary of the Navy. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  *   1. Redistributions of source code must retain the above copyright
10  *      notice, this list of conditions and the following disclaimer.
11  *   2. Redistributions in binary form must reproduce the above copyright
12  *      notice, this list of conditions and the following disclaimer in
13  *      the documentation and/or other materials provided with the
14  *      distribution.
15  *   3. The names of the authors may not be used to endorse or promote
16  *      products derived from this software without specific prior
17  *      written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22  */
23 /*
24  * Rx protocol format
25  *
26  * $Id: rx.h,v 1.8 2002-12-11 07:14:11 guy Exp $
27  */
28
29 #define FS_RX_PORT      7000
30 #define CB_RX_PORT      7001
31 #define PROT_RX_PORT    7002
32 #define VLDB_RX_PORT    7003
33 #define KAUTH_RX_PORT   7004
34 #define VOL_RX_PORT     7005
35 #define ERROR_RX_PORT   7006            /* Doesn't seem to be used */
36 #define BOS_RX_PORT     7007
37
38 #ifndef AFSNAMEMAX
39 #define AFSNAMEMAX 256
40 #endif
41
42 #ifndef AFSOPAQUEMAX
43 #define AFSOPAQUEMAX 1024
44 #endif
45
46 #define PRNAMEMAX 64
47 #define VLNAMEMAX 65
48 #define KANAMEMAX 64
49 #define BOSNAMEMAX 256
50
51 #define PRSFS_READ              1 /* Read files */
52 #define PRSFS_WRITE             2 /* Write files */
53 #define PRSFS_INSERT            4 /* Insert files into a directory */
54 #define PRSFS_LOOKUP            8 /* Lookup files into a directory */
55 #define PRSFS_DELETE            16 /* Delete files */
56 #define PRSFS_LOCK              32 /* Lock files */
57 #define PRSFS_ADMINISTER        64 /* Change ACL's */
58
59 struct rx_header {
60         u_int32_t epoch;
61         u_int32_t cid;
62         u_int32_t callNumber;
63         u_int32_t seq;
64         u_int32_t serial;
65         u_int8_t type;
66 #define RX_PACKET_TYPE_DATA             1
67 #define RX_PACKET_TYPE_ACK              2
68 #define RX_PACKET_TYPE_BUSY             3
69 #define RX_PACKET_TYPE_ABORT            4
70 #define RX_PACKET_TYPE_ACKALL           5
71 #define RX_PACKET_TYPE_CHALLENGE        6
72 #define RX_PACKET_TYPE_RESPONSE         7
73 #define RX_PACKET_TYPE_DEBUG            8
74 #define RX_PACKET_TYPE_PARAMS           9
75 #define RX_PACKET_TYPE_VERSION          13
76         u_int8_t flags;
77 #define RX_CLIENT_INITIATED     1
78 #define RX_REQUEST_ACK          2
79 #define RX_LAST_PACKET          4
80 #define RX_MORE_PACKETS         8
81 #define RX_FREE_PACKET          16
82 #define RX_SLOW_START_OK        32
83 #define RX_JUMBO_PACKET         32
84         u_int8_t userStatus;
85         u_int8_t securityIndex;
86         u_int16_t spare;                /* How clever: even though the AFS */
87         u_int16_t serviceId;            /* header files indicate that the */
88 };                                      /* serviceId is first, it's really */
89                                         /* encoded _after_ the spare field */
90                                         /* I wasted a day figuring that out! */
91
92 #define NUM_RX_FLAGS 7
93
94 #define RX_MAXACKS 255
95
96 struct rx_ackPacket {
97         u_int16_t bufferSpace;          /* Number of packet buffers available */
98         u_int16_t maxSkew;              /* Max diff between ack'd packet and */
99                                         /* highest packet received */
100         u_int32_t firstPacket;          /* The first packet in ack list */
101         u_int32_t previousPacket;       /* Previous packet recv'd (obsolete) */
102         u_int32_t serial;               /* # of packet that prompted the ack */
103         u_int8_t reason;                /* Reason for acknowledgement */
104         u_int8_t nAcks;                 /* Number of acknowledgements */
105         u_int8_t acks[RX_MAXACKS];      /* Up to RX_MAXACKS acknowledgements */
106 };
107
108 /*
109  * Values for the acks array
110  */
111
112 #define RX_ACK_TYPE_NACK        0       /* Don't have this packet */
113 #define RX_ACK_TYPE_ACK         1       /* I have this packet */