1191783Srmacklem/*- 2191783Srmacklem * Copyright (c) 1989, 1993 3191783Srmacklem * The Regents of the University of California. All rights reserved. 4191783Srmacklem * 5191783Srmacklem * This code is derived from software contributed to Berkeley by 6191783Srmacklem * Rick Macklem at The University of Guelph. 7191783Srmacklem * 8191783Srmacklem * Redistribution and use in source and binary forms, with or without 9191783Srmacklem * modification, are permitted provided that the following conditions 10191783Srmacklem * are met: 11191783Srmacklem * 1. Redistributions of source code must retain the above copyright 12191783Srmacklem * notice, this list of conditions and the following disclaimer. 13191783Srmacklem * 2. Redistributions in binary form must reproduce the above copyright 14191783Srmacklem * notice, this list of conditions and the following disclaimer in the 15191783Srmacklem * documentation and/or other materials provided with the distribution. 16191783Srmacklem * 4. Neither the name of the University nor the names of its contributors 17191783Srmacklem * may be used to endorse or promote products derived from this software 18191783Srmacklem * without specific prior written permission. 19191783Srmacklem * 20191783Srmacklem * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21191783Srmacklem * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22191783Srmacklem * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23191783Srmacklem * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24191783Srmacklem * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25191783Srmacklem * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26191783Srmacklem * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27191783Srmacklem * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28191783Srmacklem * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29191783Srmacklem * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30191783Srmacklem * SUCH DAMAGE. 31191783Srmacklem * 32191783Srmacklem * $FreeBSD$ 33191783Srmacklem */ 34191783Srmacklem 35191783Srmacklem#ifndef _NFS_RPCV2_H_ 36191783Srmacklem#define _NFS_RPCV2_H_ 37191783Srmacklem 38191783Srmacklem/* 39191783Srmacklem * Definitions for Sun RPC Version 2, from 40191783Srmacklem * "RPC: Remote Procedure Call Protocol Specification" RFC1057 41191783Srmacklem */ 42191783Srmacklem 43191783Srmacklem/* Version # */ 44191783Srmacklem#define RPC_VER2 2 45191783Srmacklem 46191783Srmacklem/* Authentication flavours */ 47191783Srmacklem#define RPCAUTH_NULL 0 48191783Srmacklem#define RPCAUTH_UNIX 1 49191783Srmacklem#define RPCAUTH_SHORT 2 50191783Srmacklem#define RPCAUTH_KERB4 4 51191783Srmacklem#define RPCAUTH_GSS 6 52191783Srmacklem#define RPCAUTH_GSSKRB5 390003 53191783Srmacklem#define RPCAUTH_GSSKRB5INTEGRITY 390004 54191783Srmacklem#define RPCAUTH_GSSKRB5PRIVACY 390005 55191783Srmacklem 56191783Srmacklem#define RPCAUTH_MAXSIZ 400 57191783Srmacklem#define RPCVERF_MAXSIZ 12 /* For Kerb, can actually be 400 */ 58191783Srmacklem 59191783Srmacklem/* 60191783Srmacklem * RPCAUTH_UNIX defs. 61191783Srmacklem */ 62191783Srmacklem#define RPCAUTHUNIX_MINSIZ (5 * NFSX_UNSIGNED) 63191783Srmacklem#define RPCAUTH_UNIXGIDS 16 64191783Srmacklem 65191783Srmacklem/* 66191783Srmacklem * RPCAUTH_GSS defs. 67191783Srmacklem */ 68191783Srmacklem#define RPCAUTHGSS_VERS1 1 69191783Srmacklem 70191783Srmacklem#define RPCAUTHGSS_DATA 0 71191783Srmacklem#define RPCAUTHGSS_INIT 1 72191783Srmacklem#define RPCAUTHGSS_CONTINIT 2 73191783Srmacklem#define RPCAUTHGSS_DESTROY 3 74191783Srmacklem 75191783Srmacklem#define RPCAUTHGSS_SVCNONE 1 76191783Srmacklem#define RPCAUTHGSS_SVCINTEGRITY 2 77191783Srmacklem#define RPCAUTHGSS_SVCPRIVACY 3 78191783Srmacklem 79191783Srmacklem#define RPCAUTHGSS_MAXSEQ 0x80000000 80191783Srmacklem 81191783Srmacklem#define RPCAUTHGSS_WINDOW 64 /* # of bits in u_int64_t */ 82191783Srmacklem#define RPCAUTHGSS_SEQWINDOW (RPCAUTHGSS_WINDOW + 1) 83191783Srmacklem 84191783Srmacklem#define RPCAUTHGSS_MIC 1 85191783Srmacklem#define RPCAUTHGSS_WRAP 2 86191783Srmacklem 87191783Srmacklem/* 88191783Srmacklem * Qop values for the types of security services. 89191783Srmacklem */ 90191783Srmacklem#define GSS_KERBV_QOP 0 91191783Srmacklem 92191783Srmacklem/* 93191783Srmacklem * Sizes of GSS stuff. 94191783Srmacklem */ 95191783Srmacklem#define RPCGSS_KEYSIZ 8 96191783Srmacklem 97191783Srmacklem#define GSSX_AUTHHEAD (5 * NFSX_UNSIGNED) 98191783Srmacklem#define GSSX_MYHANDLE (sizeof (long) + sizeof (u_int64_t)) 99191783Srmacklem#define GSSX_RPCHEADER (13 * NFSX_UNSIGNED + GSSX_MYHANDLE) 100191783Srmacklem#define GSSX_MINWRAP (2 * NFSX_UNSIGNED) 101191783Srmacklem#define GSSX_KERBVTOKEN 24 102191783Srmacklem#define GSSX_LOCALHANDLE (sizeof (void *)) 103191783Srmacklem 104191783Srmacklem/* 105191783Srmacklem * Stuff for the gssd. 106191783Srmacklem */ 107191783Srmacklem#define RPCPROG_GSSD 0x20101010 108191783Srmacklem#define RPCGSSD_VERS 1 109191783Srmacklem#define RPCGSSD_INIT 1 110191783Srmacklem#define RPCGSSD_CONTINIT 2 111191783Srmacklem#define RPCGSSD_CONTINITDESTROY 3 112191783Srmacklem#define RPCGSSD_CLINIT 4 113191783Srmacklem#define RPCGSSD_CLINITUID 5 114191783Srmacklem#define RPCGSSD_CLCONT 6 115191783Srmacklem#define RPCGSSD_CLCONTUID 7 116191783Srmacklem#define RPCGSSD_CLINITNAME 8 117191783Srmacklem#define RPCGSSD_CLCONTNAME 9 118191783Srmacklem 119191783Srmacklem/* 120191783Srmacklem * Stuff for the nfsuserd 121191783Srmacklem */ 122191783Srmacklem#define RPCPROG_NFSUSERD 0x21010101 123191783Srmacklem#define RPCNFSUSERD_VERS 1 124191783Srmacklem#define RPCNFSUSERD_GETUID 1 125191783Srmacklem#define RPCNFSUSERD_GETGID 2 126191783Srmacklem#define RPCNFSUSERD_GETUSER 3 127191783Srmacklem#define RPCNFSUSERD_GETGROUP 4 128191783Srmacklem 129191783Srmacklem/* 130191783Srmacklem * Some major status codes. 131191783Srmacklem */ 132191783Srmacklem#if !defined(_GSSAPI_H_) && !defined(GSSAPI_H_) && !defined(_GSSAPI_GSSAPI_H_) && !defined(_RPCSEC_GSS_H) 133191783Srmacklem#define GSS_S_COMPLETE 0x00000000 134191783Srmacklem#define GSS_S_CONTINUE_NEEDED 0x00000001 135191783Srmacklem#define GSS_S_DUPLICATE_TOKEN 0x00000002 136191783Srmacklem#define GSS_S_OLD_TOKEN 0x00000004 137191783Srmacklem#define GSS_S_UNSEQ_TOKEN 0x00000008 138191783Srmacklem#define GSS_S_GAP_TOKEN 0x00000010 139191783Srmacklem#define GSS_S_BAD_MECH 0x00010000 140191783Srmacklem#define GSS_S_BAD_NAME 0x00020000 141191783Srmacklem#define GSS_S_BAD_NAMETYPE 0x00030000 142191783Srmacklem#define GSS_S_BAD_BINDINGS 0x00040000 143191783Srmacklem#define GSS_S_BAD_STATUS 0x00050000 144191783Srmacklem#define GSS_S_BAD_MIC 0x00060000 145191783Srmacklem#define GSS_S_BAD_SIG 0x00060000 146191783Srmacklem#define GSS_S_NO_CRED 0x00070000 147191783Srmacklem#define GSS_S_NO_CONTEXT 0x00080000 148191783Srmacklem#define GSS_S_DEFECTIVE_TOKEN 0x00090000 149191783Srmacklem#define GSS_S_DEFECTIVE_CREDENTIAL 0x000a0000 150191783Srmacklem#define GSS_S_CREDENTIALS_EXPIRED 0x000b0000 151191783Srmacklem#define GSS_S_CONTEXT_EXPIRED 0x000c0000 152191783Srmacklem#define GSS_S_FAILURE 0x000d0000 153191783Srmacklem#define GSS_S_BAD_QOP 0x000e0000 154191783Srmacklem#define GSS_S_UNAUTHORIZED 0x000f0000 155191783Srmacklem#define GSS_S_UNAVAILABLE 0x00100000 156191783Srmacklem#define GSS_S_DUPLICATE_ELEMENT 0x00110000 157191783Srmacklem#define GSS_S_NAME_NOT_MN 0x00120000 158191783Srmacklem#define GSS_S_CALL_INACCESSIBLE_READ 0x01000000 159191783Srmacklem#define GSS_S_CALL_INACCESSIBLE_WRITE 0x02000000 160191783Srmacklem#define GSS_S_CALL_BAD_STRUCTURE 0x03000000 161191783Srmacklem#endif /* _GSSAPI_H_ */ 162191783Srmacklem 163191783Srmacklem/* Rpc Constants */ 164191783Srmacklem#define RPC_CALL 0 165191783Srmacklem#define RPC_REPLY 1 166191783Srmacklem#define RPC_MSGACCEPTED 0 167191783Srmacklem#define RPC_MSGDENIED 1 168191783Srmacklem#define RPC_PROGUNAVAIL 1 169191783Srmacklem#define RPC_PROGMISMATCH 2 170191783Srmacklem#define RPC_PROCUNAVAIL 3 171191783Srmacklem#define RPC_GARBAGE 4 /* I like this one */ 172191783Srmacklem#define RPC_MISMATCH 0 173191783Srmacklem#define RPC_AUTHERR 1 174191783Srmacklem 175191783Srmacklem/* Authentication failures */ 176191783Srmacklem#define AUTH_BADCRED 1 177191783Srmacklem#define AUTH_REJECTCRED 2 178191783Srmacklem#define AUTH_BADVERF 3 179191783Srmacklem#define AUTH_REJECTVERF 4 180191783Srmacklem#define AUTH_TOOWEAK 5 /* Give em wheaties */ 181191783Srmacklem#define AUTH_PROBCRED 13 182191783Srmacklem#define AUTH_CTXCRED 14 183191783Srmacklem 184191783Srmacklem/* Sizes of rpc header parts */ 185191783Srmacklem#define RPC_SIZ 24 186191783Srmacklem#define RPC_REPLYSIZ 28 187191783Srmacklem 188191783Srmacklem/* RPC Prog definitions */ 189191783Srmacklem#define RPCPROG_MNT 100005 190191783Srmacklem#define RPCMNT_VER1 1 191191783Srmacklem#define RPCMNT_VER3 3 192191783Srmacklem#define RPCMNT_MOUNT 1 193191783Srmacklem#define RPCMNT_DUMP 2 194191783Srmacklem#define RPCMNT_UMOUNT 3 195191783Srmacklem#define RPCMNT_UMNTALL 4 196191783Srmacklem#define RPCMNT_EXPORT 5 197191783Srmacklem#define RPCMNT_NAMELEN 255 198191783Srmacklem#define RPCMNT_PATHLEN 1024 199191783Srmacklem#define RPCPROG_NFS 100003 200191783Srmacklem 201191783Srmacklem/* Structs for common parts of the rpc's */ 202191783Srmacklemstruct rpcv2_time { 203191783Srmacklem u_int32_t rpc_sec; 204191783Srmacklem u_int32_t rpc_usec; 205191783Srmacklem}; 206191783Srmacklem 207191783Srmacklem#endif /* _NFS_RPCV2_H_ */ 208