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