xref: /original-bsd/sys/nfs/rpcv2.h (revision 0842ddeb)
1 /*
2  * Copyright (c) 1989, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Rick Macklem at The University of Guelph.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)rpcv2.h	8.2 (Berkeley) 03/30/95
11  */
12 
13 
14 #ifndef _NFS_RPCV2_H_
15 #define _NFS_RPCV2_H_
16 
17 /*
18  * Definitions for Sun RPC Version 2, from
19  * "RPC: Remote Procedure Call Protocol Specification" RFC1057
20  */
21 
22 /* Version # */
23 #define	RPC_VER2	2
24 
25 /* Authentication */
26 #define	RPCAUTH_NULL	0
27 #define	RPCAUTH_UNIX	1
28 #define	RPCAUTH_SHORT	2
29 #define RPCAUTH_KERB4	4
30 #define	RPCAUTH_NQNFS	300000
31 #define	RPCAUTH_MAXSIZ	400
32 #define	RPCVERF_MAXSIZ	12	/* For Kerb, can actually be 400 */
33 #define	RPCAUTH_UNIXGIDS 16
34 
35 /*
36  * Constants associated with authentication flavours.
37  */
38 #define RPCAKN_FULLNAME	0
39 #define RPCAKN_NICKNAME	1
40 
41 /* Rpc Constants */
42 #define	RPC_CALL	0
43 #define	RPC_REPLY	1
44 #define	RPC_MSGACCEPTED	0
45 #define	RPC_MSGDENIED	1
46 #define	RPC_PROGUNAVAIL	1
47 #define	RPC_PROGMISMATCH	2
48 #define	RPC_PROCUNAVAIL	3
49 #define	RPC_GARBAGE	4		/* I like this one */
50 #define	RPC_MISMATCH	0
51 #define	RPC_AUTHERR	1
52 
53 /* Authentication failures */
54 #define	AUTH_BADCRED	1
55 #define	AUTH_REJECTCRED	2
56 #define	AUTH_BADVERF	3
57 #define	AUTH_REJECTVERF	4
58 #define	AUTH_TOOWEAK	5		/* Give em wheaties */
59 
60 /* Sizes of rpc header parts */
61 #define	RPC_SIZ		24
62 #define	RPC_REPLYSIZ	28
63 
64 /* RPC Prog definitions */
65 #define	RPCPROG_MNT	100005
66 #define	RPCMNT_VER1	1
67 #define	RPCMNT_MOUNT	1
68 #define	RPCMNT_DUMP	2
69 #define	RPCMNT_UMOUNT	3
70 #define	RPCMNT_UMNTALL	4
71 #define	RPCMNT_EXPORT	5
72 #define	RPCMNT_NAMELEN	255
73 #define	RPCMNT_PATHLEN	1024
74 #define	RPCPROG_NFS	100003
75 
76 /*
77  * Structures used for RPCAUTH_KERB4.
78  */
79 struct nfsrpc_fullverf {
80 	u_long		t1;
81 	u_long		t2;
82 	u_long		w2;
83 };
84 
85 struct nfsrpc_fullblock {
86 	u_long		t1;
87 	u_long		t2;
88 	u_long		w1;
89 	u_long		w2;
90 };
91 
92 struct nfsrpc_nickverf {
93 	u_long			kind;
94 	struct nfsrpc_fullverf	verf;
95 };
96 
97 /*
98  * and their sizes in bytes.. If sizeof (struct nfsrpc_xx) != these
99  * constants, well then things will break in mount_nfs and nfsd.
100  */
101 #define RPCX_FULLVERF	12
102 #define RPCX_FULLBLOCK	16
103 #define RPCX_NICKVERF	16
104 
105 #ifdef NFSKERB
106 XXX
107 #else
108 typedef u_char			NFSKERBKEY_T[2];
109 typedef u_char			NFSKERBKEYSCHED_T[2];
110 #endif
111 #define NFS_KERBSRV	"rcmd"		/* Kerberos Service for NFS */
112 #define NFS_KERBTTL	(30 * 60)	/* Credential ttl (sec) */
113 #define NFS_KERBCLOCKSKEW (5 * 60)	/* Clock skew (sec) */
114 #define NFS_KERBW1(t)	(*((u_long *)(&((t).dat[((t).length + 3) & ~0x3]))))
115 #endif
116