19ec7b004SRick Macklem /*- 2*51369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 3*51369649SPedro F. Giffuni * 49ec7b004SRick Macklem * Copyright (c) 1989, 1993 59ec7b004SRick Macklem * The Regents of the University of California. All rights reserved. 69ec7b004SRick Macklem * 79ec7b004SRick Macklem * This code is derived from software contributed to Berkeley by 89ec7b004SRick Macklem * Rick Macklem at The University of Guelph. 99ec7b004SRick Macklem * 109ec7b004SRick Macklem * Redistribution and use in source and binary forms, with or without 119ec7b004SRick Macklem * modification, are permitted provided that the following conditions 129ec7b004SRick Macklem * are met: 139ec7b004SRick Macklem * 1. Redistributions of source code must retain the above copyright 149ec7b004SRick Macklem * notice, this list of conditions and the following disclaimer. 159ec7b004SRick Macklem * 2. Redistributions in binary form must reproduce the above copyright 169ec7b004SRick Macklem * notice, this list of conditions and the following disclaimer in the 179ec7b004SRick Macklem * documentation and/or other materials provided with the distribution. 18fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 199ec7b004SRick Macklem * may be used to endorse or promote products derived from this software 209ec7b004SRick Macklem * without specific prior written permission. 219ec7b004SRick Macklem * 229ec7b004SRick Macklem * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 239ec7b004SRick Macklem * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 249ec7b004SRick Macklem * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 259ec7b004SRick Macklem * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 269ec7b004SRick Macklem * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 279ec7b004SRick Macklem * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 289ec7b004SRick Macklem * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 299ec7b004SRick Macklem * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 309ec7b004SRick Macklem * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 319ec7b004SRick Macklem * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 329ec7b004SRick Macklem * SUCH DAMAGE. 339ec7b004SRick Macklem * 349ec7b004SRick Macklem * $FreeBSD$ 359ec7b004SRick Macklem */ 369ec7b004SRick Macklem 379ec7b004SRick Macklem #ifndef _NFS_RPCV2_H_ 389ec7b004SRick Macklem #define _NFS_RPCV2_H_ 399ec7b004SRick Macklem 409ec7b004SRick Macklem /* 419ec7b004SRick Macklem * Definitions for Sun RPC Version 2, from 429ec7b004SRick Macklem * "RPC: Remote Procedure Call Protocol Specification" RFC1057 439ec7b004SRick Macklem */ 449ec7b004SRick Macklem 459ec7b004SRick Macklem /* Version # */ 469ec7b004SRick Macklem #define RPC_VER2 2 479ec7b004SRick Macklem 489ec7b004SRick Macklem /* Authentication flavours */ 499ec7b004SRick Macklem #define RPCAUTH_NULL 0 509ec7b004SRick Macklem #define RPCAUTH_UNIX 1 519ec7b004SRick Macklem #define RPCAUTH_SHORT 2 529ec7b004SRick Macklem #define RPCAUTH_KERB4 4 539ec7b004SRick Macklem #define RPCAUTH_GSS 6 549ec7b004SRick Macklem #define RPCAUTH_GSSKRB5 390003 559ec7b004SRick Macklem #define RPCAUTH_GSSKRB5INTEGRITY 390004 569ec7b004SRick Macklem #define RPCAUTH_GSSKRB5PRIVACY 390005 579ec7b004SRick Macklem 589ec7b004SRick Macklem #define RPCAUTH_MAXSIZ 400 599ec7b004SRick Macklem #define RPCVERF_MAXSIZ 12 /* For Kerb, can actually be 400 */ 609ec7b004SRick Macklem 619ec7b004SRick Macklem /* 629ec7b004SRick Macklem * RPCAUTH_UNIX defs. 639ec7b004SRick Macklem */ 649ec7b004SRick Macklem #define RPCAUTHUNIX_MINSIZ (5 * NFSX_UNSIGNED) 659ec7b004SRick Macklem #define RPCAUTH_UNIXGIDS 16 669ec7b004SRick Macklem 679ec7b004SRick Macklem /* 689ec7b004SRick Macklem * RPCAUTH_GSS defs. 699ec7b004SRick Macklem */ 709ec7b004SRick Macklem #define RPCAUTHGSS_VERS1 1 719ec7b004SRick Macklem 729ec7b004SRick Macklem #define RPCAUTHGSS_DATA 0 739ec7b004SRick Macklem #define RPCAUTHGSS_INIT 1 749ec7b004SRick Macklem #define RPCAUTHGSS_CONTINIT 2 759ec7b004SRick Macklem #define RPCAUTHGSS_DESTROY 3 769ec7b004SRick Macklem 779ec7b004SRick Macklem #define RPCAUTHGSS_SVCNONE 1 789ec7b004SRick Macklem #define RPCAUTHGSS_SVCINTEGRITY 2 799ec7b004SRick Macklem #define RPCAUTHGSS_SVCPRIVACY 3 809ec7b004SRick Macklem 819ec7b004SRick Macklem #define RPCAUTHGSS_MAXSEQ 0x80000000 829ec7b004SRick Macklem 839ec7b004SRick Macklem #define RPCAUTHGSS_WINDOW 64 /* # of bits in u_int64_t */ 849ec7b004SRick Macklem #define RPCAUTHGSS_SEQWINDOW (RPCAUTHGSS_WINDOW + 1) 859ec7b004SRick Macklem 869ec7b004SRick Macklem #define RPCAUTHGSS_MIC 1 879ec7b004SRick Macklem #define RPCAUTHGSS_WRAP 2 889ec7b004SRick Macklem 899ec7b004SRick Macklem /* 909ec7b004SRick Macklem * Qop values for the types of security services. 919ec7b004SRick Macklem */ 929ec7b004SRick Macklem #define GSS_KERBV_QOP 0 939ec7b004SRick Macklem 949ec7b004SRick Macklem /* 959ec7b004SRick Macklem * Sizes of GSS stuff. 969ec7b004SRick Macklem */ 979ec7b004SRick Macklem #define RPCGSS_KEYSIZ 8 989ec7b004SRick Macklem 999ec7b004SRick Macklem #define GSSX_AUTHHEAD (5 * NFSX_UNSIGNED) 1009ec7b004SRick Macklem #define GSSX_MYHANDLE (sizeof (long) + sizeof (u_int64_t)) 1019ec7b004SRick Macklem #define GSSX_RPCHEADER (13 * NFSX_UNSIGNED + GSSX_MYHANDLE) 1029ec7b004SRick Macklem #define GSSX_MINWRAP (2 * NFSX_UNSIGNED) 1039ec7b004SRick Macklem #define GSSX_KERBVTOKEN 24 1049ec7b004SRick Macklem #define GSSX_LOCALHANDLE (sizeof (void *)) 1059ec7b004SRick Macklem 1069ec7b004SRick Macklem /* 1079ec7b004SRick Macklem * Stuff for the gssd. 1089ec7b004SRick Macklem */ 1099ec7b004SRick Macklem #define RPCPROG_GSSD 0x20101010 1109ec7b004SRick Macklem #define RPCGSSD_VERS 1 1119ec7b004SRick Macklem #define RPCGSSD_INIT 1 1129ec7b004SRick Macklem #define RPCGSSD_CONTINIT 2 1139ec7b004SRick Macklem #define RPCGSSD_CONTINITDESTROY 3 1149ec7b004SRick Macklem #define RPCGSSD_CLINIT 4 1159ec7b004SRick Macklem #define RPCGSSD_CLINITUID 5 1169ec7b004SRick Macklem #define RPCGSSD_CLCONT 6 1179ec7b004SRick Macklem #define RPCGSSD_CLCONTUID 7 1189ec7b004SRick Macklem #define RPCGSSD_CLINITNAME 8 1199ec7b004SRick Macklem #define RPCGSSD_CLCONTNAME 9 1209ec7b004SRick Macklem 1219ec7b004SRick Macklem /* 1229ec7b004SRick Macklem * Stuff for the nfsuserd 1239ec7b004SRick Macklem */ 1249ec7b004SRick Macklem #define RPCPROG_NFSUSERD 0x21010101 1259ec7b004SRick Macklem #define RPCNFSUSERD_VERS 1 1269ec7b004SRick Macklem #define RPCNFSUSERD_GETUID 1 1279ec7b004SRick Macklem #define RPCNFSUSERD_GETGID 2 1289ec7b004SRick Macklem #define RPCNFSUSERD_GETUSER 3 1299ec7b004SRick Macklem #define RPCNFSUSERD_GETGROUP 4 1309ec7b004SRick Macklem 1319ec7b004SRick Macklem /* 1329ec7b004SRick Macklem * Some major status codes. 1339ec7b004SRick Macklem */ 1349ec7b004SRick Macklem #if !defined(_GSSAPI_H_) && !defined(GSSAPI_H_) && !defined(_GSSAPI_GSSAPI_H_) && !defined(_RPCSEC_GSS_H) 1359ec7b004SRick Macklem #define GSS_S_COMPLETE 0x00000000 1369ec7b004SRick Macklem #define GSS_S_CONTINUE_NEEDED 0x00000001 1379ec7b004SRick Macklem #define GSS_S_DUPLICATE_TOKEN 0x00000002 1389ec7b004SRick Macklem #define GSS_S_OLD_TOKEN 0x00000004 1399ec7b004SRick Macklem #define GSS_S_UNSEQ_TOKEN 0x00000008 1409ec7b004SRick Macklem #define GSS_S_GAP_TOKEN 0x00000010 1419ec7b004SRick Macklem #define GSS_S_BAD_MECH 0x00010000 1429ec7b004SRick Macklem #define GSS_S_BAD_NAME 0x00020000 1439ec7b004SRick Macklem #define GSS_S_BAD_NAMETYPE 0x00030000 1449ec7b004SRick Macklem #define GSS_S_BAD_BINDINGS 0x00040000 1459ec7b004SRick Macklem #define GSS_S_BAD_STATUS 0x00050000 1469ec7b004SRick Macklem #define GSS_S_BAD_MIC 0x00060000 1479ec7b004SRick Macklem #define GSS_S_BAD_SIG 0x00060000 1489ec7b004SRick Macklem #define GSS_S_NO_CRED 0x00070000 1499ec7b004SRick Macklem #define GSS_S_NO_CONTEXT 0x00080000 1509ec7b004SRick Macklem #define GSS_S_DEFECTIVE_TOKEN 0x00090000 1519ec7b004SRick Macklem #define GSS_S_DEFECTIVE_CREDENTIAL 0x000a0000 1529ec7b004SRick Macklem #define GSS_S_CREDENTIALS_EXPIRED 0x000b0000 1539ec7b004SRick Macklem #define GSS_S_CONTEXT_EXPIRED 0x000c0000 1549ec7b004SRick Macklem #define GSS_S_FAILURE 0x000d0000 1559ec7b004SRick Macklem #define GSS_S_BAD_QOP 0x000e0000 1569ec7b004SRick Macklem #define GSS_S_UNAUTHORIZED 0x000f0000 1579ec7b004SRick Macklem #define GSS_S_UNAVAILABLE 0x00100000 1589ec7b004SRick Macklem #define GSS_S_DUPLICATE_ELEMENT 0x00110000 1599ec7b004SRick Macklem #define GSS_S_NAME_NOT_MN 0x00120000 1609ec7b004SRick Macklem #define GSS_S_CALL_INACCESSIBLE_READ 0x01000000 1619ec7b004SRick Macklem #define GSS_S_CALL_INACCESSIBLE_WRITE 0x02000000 1629ec7b004SRick Macklem #define GSS_S_CALL_BAD_STRUCTURE 0x03000000 1639ec7b004SRick Macklem #endif /* _GSSAPI_H_ */ 1649ec7b004SRick Macklem 1659ec7b004SRick Macklem /* Rpc Constants */ 1669ec7b004SRick Macklem #define RPC_CALL 0 1679ec7b004SRick Macklem #define RPC_REPLY 1 1689ec7b004SRick Macklem #define RPC_MSGACCEPTED 0 1699ec7b004SRick Macklem #define RPC_MSGDENIED 1 1709ec7b004SRick Macklem #define RPC_PROGUNAVAIL 1 1719ec7b004SRick Macklem #define RPC_PROGMISMATCH 2 1729ec7b004SRick Macklem #define RPC_PROCUNAVAIL 3 1739ec7b004SRick Macklem #define RPC_GARBAGE 4 /* I like this one */ 1749ec7b004SRick Macklem #define RPC_MISMATCH 0 1759ec7b004SRick Macklem #define RPC_AUTHERR 1 1769ec7b004SRick Macklem 1779ec7b004SRick Macklem /* Authentication failures */ 1789ec7b004SRick Macklem #define AUTH_BADCRED 1 1799ec7b004SRick Macklem #define AUTH_REJECTCRED 2 1809ec7b004SRick Macklem #define AUTH_BADVERF 3 1819ec7b004SRick Macklem #define AUTH_REJECTVERF 4 1829ec7b004SRick Macklem #define AUTH_TOOWEAK 5 /* Give em wheaties */ 1839ec7b004SRick Macklem #define AUTH_PROBCRED 13 1849ec7b004SRick Macklem #define AUTH_CTXCRED 14 1859ec7b004SRick Macklem 1869ec7b004SRick Macklem /* Sizes of rpc header parts */ 1879ec7b004SRick Macklem #define RPC_SIZ 24 1889ec7b004SRick Macklem #define RPC_REPLYSIZ 28 1899ec7b004SRick Macklem 1909ec7b004SRick Macklem /* RPC Prog definitions */ 1919ec7b004SRick Macklem #define RPCPROG_MNT 100005 1929ec7b004SRick Macklem #define RPCMNT_VER1 1 1939ec7b004SRick Macklem #define RPCMNT_VER3 3 1949ec7b004SRick Macklem #define RPCMNT_MOUNT 1 1959ec7b004SRick Macklem #define RPCMNT_DUMP 2 1969ec7b004SRick Macklem #define RPCMNT_UMOUNT 3 1979ec7b004SRick Macklem #define RPCMNT_UMNTALL 4 1989ec7b004SRick Macklem #define RPCMNT_EXPORT 5 1999ec7b004SRick Macklem #define RPCMNT_NAMELEN 255 2009ec7b004SRick Macklem #define RPCMNT_PATHLEN 1024 2019ec7b004SRick Macklem #define RPCPROG_NFS 100003 2029ec7b004SRick Macklem 2039ec7b004SRick Macklem /* Structs for common parts of the rpc's */ 2049ec7b004SRick Macklem struct rpcv2_time { 2059ec7b004SRick Macklem u_int32_t rpc_sec; 2069ec7b004SRick Macklem u_int32_t rpc_usec; 2079ec7b004SRick Macklem }; 2089ec7b004SRick Macklem 2099ec7b004SRick Macklem #endif /* _NFS_RPCV2_H_ */ 210