1 /* 2 * linux/include/net/sunrpc/msg_prot.h 3 * 4 * Copyright (C) 1996, Olaf Kirch <okir (at) monad.swb.de> 5 */ 6 7 #ifndef _LINUX_SUNRPC_MSGPROT_H_ 8 #define _LINUX_SUNRPC_MSGPROT_H_ 9 10 #ifdef __KERNEL__ /* user programs should get these from the rpc header files */ 11 12 #define RPC_VERSION 2 13 14 /* spec defines authentication flavor as an unsigned 32 bit integer */ 15 typedef u32 rpc_authflavor_t; 16 17 enum rpc_auth_flavors { 18 RPC_AUTH_NULL = 0, 19 RPC_AUTH_UNIX = 1, 20 RPC_AUTH_SHORT = 2, 21 RPC_AUTH_DES = 3, 22 RPC_AUTH_KRB = 4, 23 RPC_AUTH_GSS = 6, 24 RPC_AUTH_MAXFLAVOR = 8, 25 /* pseudoflavors: */ 26 RPC_AUTH_GSS_KRB5 = 390003, 27 RPC_AUTH_GSS_KRB5I = 390004, 28 RPC_AUTH_GSS_KRB5P = 390005, 29 RPC_AUTH_GSS_LKEY = 390006, 30 RPC_AUTH_GSS_LKEYI = 390007, 31 RPC_AUTH_GSS_LKEYP = 390008, 32 RPC_AUTH_GSS_SPKM = 390009, 33 RPC_AUTH_GSS_SPKMI = 390010, 34 RPC_AUTH_GSS_SPKMP = 390011, 35 }; 36 37 enum rpc_msg_type { 38 RPC_CALL = 0, 39 RPC_REPLY = 1 40 }; 41 42 enum rpc_reply_stat { 43 RPC_MSG_ACCEPTED = 0, 44 RPC_MSG_DENIED = 1 45 }; 46 47 enum rpc_accept_stat { 48 RPC_SUCCESS = 0, 49 RPC_PROG_UNAVAIL = 1, 50 RPC_PROG_MISMATCH = 2, 51 RPC_PROC_UNAVAIL = 3, 52 RPC_GARBAGE_ARGS = 4, 53 RPC_SYSTEM_ERR = 5 54 }; 55 56 enum rpc_reject_stat { 57 RPC_MISMATCH = 0, 58 RPC_AUTH_ERROR = 1 59 }; 60 61 enum rpc_auth_stat { 62 RPC_AUTH_OK = 0, 63 RPC_AUTH_BADCRED = 1, 64 RPC_AUTH_REJECTEDCRED = 2, 65 RPC_AUTH_BADVERF = 3, 66 RPC_AUTH_REJECTEDVERF = 4, 67 RPC_AUTH_TOOWEAK = 5, 68 /* RPCSEC_GSS errors */ 69 RPCSEC_GSS_CREDPROBLEM = 13, 70 RPCSEC_GSS_CTXPROBLEM = 14 71 }; 72 73 #define RPC_PMAP_PROGRAM 100000 74 #define RPC_PMAP_VERSION 2 75 #define RPC_PMAP_PORT 111 76 77 #define RPC_MAXNETNAMELEN 256 78 79 /* 80 * From RFC 1831: 81 * 82 * "A record is composed of one or more record fragments. A record 83 * fragment is a four-byte header followed by 0 to (2**31) - 1 bytes of 84 * fragment data. The bytes encode an unsigned binary number; as with 85 * XDR integers, the byte order is from highest to lowest. The number 86 * encodes two values -- a boolean which indicates whether the fragment 87 * is the last fragment of the record (bit value 1 implies the fragment 88 * is the last fragment) and a 31-bit unsigned binary value which is the 89 * length in bytes of the fragment's data. The boolean value is the 90 * highest-order bit of the header; the length is the 31 low-order bits. 91 * (Note that this record specification is NOT in XDR standard form!)" 92 * 93 * The Linux RPC client always sends its requests in a single record 94 * fragment, limiting the maximum payload size for stream transports to 95 * 2GB. 96 */ 97 98 typedef u32 rpc_fraghdr; 99 100 #define RPC_LAST_STREAM_FRAGMENT (1U << 31) 101 #define RPC_FRAGMENT_SIZE_MASK (~RPC_LAST_STREAM_FRAGMENT) 102 #define RPC_MAX_FRAGMENT_SIZE ((1U << 31) - 1) 103 104 #endif /* __KERNEL__ */ 105 #endif /* _LINUX_SUNRPC_MSGPROT_H_ */ 106