xref: /csrg-svn/sys/nfs/rpcv2.h (revision 68653)
138414Smckusick /*
263236Sbostic  * Copyright (c) 1989, 1993
363236Sbostic  *	The Regents of the University of California.  All rights reserved.
438414Smckusick  *
538414Smckusick  * This code is derived from software contributed to Berkeley by
638414Smckusick  * Rick Macklem at The University of Guelph.
738414Smckusick  *
844515Sbostic  * %sccs.include.redist.c%
938414Smckusick  *
10*68653Smckusick  *	@(#)rpcv2.h	8.2 (Berkeley) 03/30/95
1138414Smckusick  */
1238414Smckusick 
13*68653Smckusick 
14*68653Smckusick #ifndef _NFS_RPCV2_H_
15*68653Smckusick #define _NFS_RPCV2_H_
16*68653Smckusick 
1738414Smckusick /*
1838414Smckusick  * Definitions for Sun RPC Version 2, from
1939747Smckusick  * "RPC: Remote Procedure Call Protocol Specification" RFC1057
2038414Smckusick  */
2138414Smckusick 
2238414Smckusick /* Version # */
2338414Smckusick #define	RPC_VER2	2
2438414Smckusick 
2541896Smckusick /* Authentication */
2638414Smckusick #define	RPCAUTH_NULL	0
2738414Smckusick #define	RPCAUTH_UNIX	1
2838414Smckusick #define	RPCAUTH_SHORT	2
29*68653Smckusick #define RPCAUTH_KERB4	4
3052196Smckusick #define	RPCAUTH_NQNFS	300000
3141896Smckusick #define	RPCAUTH_MAXSIZ	400
32*68653Smckusick #define	RPCVERF_MAXSIZ	12	/* For Kerb, can actually be 400 */
3341896Smckusick #define	RPCAUTH_UNIXGIDS 16
3438414Smckusick 
35*68653Smckusick /*
36*68653Smckusick  * Constants associated with authentication flavours.
37*68653Smckusick  */
38*68653Smckusick #define RPCAKN_FULLNAME	0
39*68653Smckusick #define RPCAKN_NICKNAME	1
40*68653Smckusick 
4138414Smckusick /* Rpc Constants */
4238414Smckusick #define	RPC_CALL	0
4338414Smckusick #define	RPC_REPLY	1
4438414Smckusick #define	RPC_MSGACCEPTED	0
4538414Smckusick #define	RPC_MSGDENIED	1
4638414Smckusick #define	RPC_PROGUNAVAIL	1
4738414Smckusick #define	RPC_PROGMISMATCH	2
4838414Smckusick #define	RPC_PROCUNAVAIL	3
4938414Smckusick #define	RPC_GARBAGE	4		/* I like this one */
5038414Smckusick #define	RPC_MISMATCH	0
5152196Smckusick #define	RPC_AUTHERR	1
5238414Smckusick 
5338414Smckusick /* Authentication failures */
5438414Smckusick #define	AUTH_BADCRED	1
5538414Smckusick #define	AUTH_REJECTCRED	2
5638414Smckusick #define	AUTH_BADVERF	3
5738414Smckusick #define	AUTH_REJECTVERF	4
5838414Smckusick #define	AUTH_TOOWEAK	5		/* Give em wheaties */
5938414Smckusick 
6038414Smckusick /* Sizes of rpc header parts */
6138414Smckusick #define	RPC_SIZ		24
6238414Smckusick #define	RPC_REPLYSIZ	28
6338414Smckusick 
6438414Smckusick /* RPC Prog definitions */
6538414Smckusick #define	RPCPROG_MNT	100005
6638414Smckusick #define	RPCMNT_VER1	1
6738414Smckusick #define	RPCMNT_MOUNT	1
6838414Smckusick #define	RPCMNT_DUMP	2
6938414Smckusick #define	RPCMNT_UMOUNT	3
7038414Smckusick #define	RPCMNT_UMNTALL	4
7138414Smckusick #define	RPCMNT_EXPORT	5
7238414Smckusick #define	RPCMNT_NAMELEN	255
7338414Smckusick #define	RPCMNT_PATHLEN	1024
7438414Smckusick #define	RPCPROG_NFS	100003
75*68653Smckusick 
76*68653Smckusick /*
77*68653Smckusick  * Structures used for RPCAUTH_KERB4.
78*68653Smckusick  */
79*68653Smckusick struct nfsrpc_fullverf {
80*68653Smckusick 	u_long		t1;
81*68653Smckusick 	u_long		t2;
82*68653Smckusick 	u_long		w2;
83*68653Smckusick };
84*68653Smckusick 
85*68653Smckusick struct nfsrpc_fullblock {
86*68653Smckusick 	u_long		t1;
87*68653Smckusick 	u_long		t2;
88*68653Smckusick 	u_long		w1;
89*68653Smckusick 	u_long		w2;
90*68653Smckusick };
91*68653Smckusick 
92*68653Smckusick struct nfsrpc_nickverf {
93*68653Smckusick 	u_long			kind;
94*68653Smckusick 	struct nfsrpc_fullverf	verf;
95*68653Smckusick };
96*68653Smckusick 
97*68653Smckusick /*
98*68653Smckusick  * and their sizes in bytes.. If sizeof (struct nfsrpc_xx) != these
99*68653Smckusick  * constants, well then things will break in mount_nfs and nfsd.
100*68653Smckusick  */
101*68653Smckusick #define RPCX_FULLVERF	12
102*68653Smckusick #define RPCX_FULLBLOCK	16
103*68653Smckusick #define RPCX_NICKVERF	16
104*68653Smckusick 
105*68653Smckusick #ifdef NFSKERB
106*68653Smckusick XXX
107*68653Smckusick #else
108*68653Smckusick typedef u_char			NFSKERBKEY_T[2];
109*68653Smckusick typedef u_char			NFSKERBKEYSCHED_T[2];
110*68653Smckusick #endif
111*68653Smckusick #define NFS_KERBSRV	"rcmd"		/* Kerberos Service for NFS */
112*68653Smckusick #define NFS_KERBTTL	(30 * 60)	/* Credential ttl (sec) */
113*68653Smckusick #define NFS_KERBCLOCKSKEW (5 * 60)	/* Clock skew (sec) */
114*68653Smckusick #define NFS_KERBW1(t)	(*((u_long *)(&((t).dat[((t).length + 3) & ~0x3]))))
115*68653Smckusick #endif
116