| Commit | Line | Data |
|---|---|---|
| c8cf0f94 PA |
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 */ |