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 359ec7b004SRick Macklem #ifndef _NFS_RPCV2_H_ 369ec7b004SRick Macklem #define _NFS_RPCV2_H_ 379ec7b004SRick Macklem 389ec7b004SRick Macklem /* 399ec7b004SRick Macklem * Definitions for Sun RPC Version 2, from 409ec7b004SRick Macklem * "RPC: Remote Procedure Call Protocol Specification" RFC1057 419ec7b004SRick Macklem */ 429ec7b004SRick Macklem 439ec7b004SRick Macklem /* Version # */ 449ec7b004SRick Macklem #define RPC_VER2 2 459ec7b004SRick Macklem 469ec7b004SRick Macklem /* Authentication flavours */ 479ec7b004SRick Macklem #define RPCAUTH_NULL 0 489ec7b004SRick Macklem #define RPCAUTH_UNIX 1 499ec7b004SRick Macklem #define RPCAUTH_SHORT 2 509ec7b004SRick Macklem #define RPCAUTH_KERB4 4 519ec7b004SRick Macklem #define RPCAUTH_GSS 6 529ec7b004SRick Macklem #define RPCAUTH_GSSKRB5 390003 539ec7b004SRick Macklem #define RPCAUTH_GSSKRB5INTEGRITY 390004 549ec7b004SRick Macklem #define RPCAUTH_GSSKRB5PRIVACY 390005 559ec7b004SRick Macklem 569ec7b004SRick Macklem #define RPCAUTH_MAXSIZ 400 579ec7b004SRick Macklem #define RPCVERF_MAXSIZ 12 /* For Kerb, can actually be 400 */ 589ec7b004SRick Macklem 599ec7b004SRick Macklem /* 609ec7b004SRick Macklem * RPCAUTH_UNIX defs. 619ec7b004SRick Macklem */ 629ec7b004SRick Macklem #define RPCAUTHUNIX_MINSIZ (5 * NFSX_UNSIGNED) 639ec7b004SRick Macklem #define RPCAUTH_UNIXGIDS 16 649ec7b004SRick Macklem 659ec7b004SRick Macklem /* 669ec7b004SRick Macklem * RPCAUTH_GSS defs. 679ec7b004SRick Macklem */ 689ec7b004SRick Macklem #define RPCAUTHGSS_VERS1 1 699ec7b004SRick Macklem 709ec7b004SRick Macklem #define RPCAUTHGSS_DATA 0 719ec7b004SRick Macklem #define RPCAUTHGSS_INIT 1 729ec7b004SRick Macklem #define RPCAUTHGSS_CONTINIT 2 739ec7b004SRick Macklem #define RPCAUTHGSS_DESTROY 3 749ec7b004SRick Macklem 759ec7b004SRick Macklem #define RPCAUTHGSS_SVCNONE 1 769ec7b004SRick Macklem #define RPCAUTHGSS_SVCINTEGRITY 2 779ec7b004SRick Macklem #define RPCAUTHGSS_SVCPRIVACY 3 789ec7b004SRick Macklem 799ec7b004SRick Macklem #define RPCAUTHGSS_MAXSEQ 0x80000000 809ec7b004SRick Macklem 819ec7b004SRick Macklem #define RPCAUTHGSS_WINDOW 64 /* # of bits in u_int64_t */ 829ec7b004SRick Macklem #define RPCAUTHGSS_SEQWINDOW (RPCAUTHGSS_WINDOW + 1) 839ec7b004SRick Macklem 849ec7b004SRick Macklem #define RPCAUTHGSS_MIC 1 859ec7b004SRick Macklem #define RPCAUTHGSS_WRAP 2 869ec7b004SRick Macklem 879ec7b004SRick Macklem /* 889ec7b004SRick Macklem * Qop values for the types of security services. 899ec7b004SRick Macklem */ 909ec7b004SRick Macklem #define GSS_KERBV_QOP 0 919ec7b004SRick Macklem 929ec7b004SRick Macklem /* 939ec7b004SRick Macklem * Sizes of GSS stuff. 949ec7b004SRick Macklem */ 959ec7b004SRick Macklem #define RPCGSS_KEYSIZ 8 969ec7b004SRick Macklem 979ec7b004SRick Macklem #define GSSX_AUTHHEAD (5 * NFSX_UNSIGNED) 989ec7b004SRick Macklem #define GSSX_MYHANDLE (sizeof (long) + sizeof (u_int64_t)) 999ec7b004SRick Macklem #define GSSX_RPCHEADER (13 * NFSX_UNSIGNED + GSSX_MYHANDLE) 1009ec7b004SRick Macklem #define GSSX_MINWRAP (2 * NFSX_UNSIGNED) 1019ec7b004SRick Macklem #define GSSX_KERBVTOKEN 24 1029ec7b004SRick Macklem #define GSSX_LOCALHANDLE (sizeof (void *)) 1039ec7b004SRick Macklem 1049ec7b004SRick Macklem /* 1059ec7b004SRick Macklem * Stuff for the gssd. 1069ec7b004SRick Macklem */ 1079ec7b004SRick Macklem #define RPCPROG_GSSD 0x20101010 1089ec7b004SRick Macklem #define RPCGSSD_VERS 1 1099ec7b004SRick Macklem #define RPCGSSD_INIT 1 1109ec7b004SRick Macklem #define RPCGSSD_CONTINIT 2 1119ec7b004SRick Macklem #define RPCGSSD_CONTINITDESTROY 3 1129ec7b004SRick Macklem #define RPCGSSD_CLINIT 4 1139ec7b004SRick Macklem #define RPCGSSD_CLINITUID 5 1149ec7b004SRick Macklem #define RPCGSSD_CLCONT 6 1159ec7b004SRick Macklem #define RPCGSSD_CLCONTUID 7 1169ec7b004SRick Macklem #define RPCGSSD_CLINITNAME 8 1179ec7b004SRick Macklem #define RPCGSSD_CLCONTNAME 9 1189ec7b004SRick Macklem 1199ec7b004SRick Macklem /* 1209ec7b004SRick Macklem * Stuff for the nfsuserd 1219ec7b004SRick Macklem */ 1229ec7b004SRick Macklem #define RPCPROG_NFSUSERD 0x21010101 1239ec7b004SRick Macklem #define RPCNFSUSERD_VERS 1 1249ec7b004SRick Macklem #define RPCNFSUSERD_GETUID 1 1259ec7b004SRick Macklem #define RPCNFSUSERD_GETGID 2 1269ec7b004SRick Macklem #define RPCNFSUSERD_GETUSER 3 1279ec7b004SRick Macklem #define RPCNFSUSERD_GETGROUP 4 1289ec7b004SRick Macklem 1299ec7b004SRick Macklem /* 1309ec7b004SRick Macklem * Some major status codes. 1319ec7b004SRick Macklem */ 1329ec7b004SRick Macklem #if !defined(_GSSAPI_H_) && !defined(GSSAPI_H_) && !defined(_GSSAPI_GSSAPI_H_) && !defined(_RPCSEC_GSS_H) 1339ec7b004SRick Macklem #define GSS_S_COMPLETE 0x00000000 1349ec7b004SRick Macklem #define GSS_S_CONTINUE_NEEDED 0x00000001 1359ec7b004SRick Macklem #define GSS_S_DUPLICATE_TOKEN 0x00000002 1369ec7b004SRick Macklem #define GSS_S_OLD_TOKEN 0x00000004 1379ec7b004SRick Macklem #define GSS_S_UNSEQ_TOKEN 0x00000008 1389ec7b004SRick Macklem #define GSS_S_GAP_TOKEN 0x00000010 1399ec7b004SRick Macklem #define GSS_S_BAD_MECH 0x00010000 1409ec7b004SRick Macklem #define GSS_S_BAD_NAME 0x00020000 1419ec7b004SRick Macklem #define GSS_S_BAD_NAMETYPE 0x00030000 1429ec7b004SRick Macklem #define GSS_S_BAD_BINDINGS 0x00040000 1439ec7b004SRick Macklem #define GSS_S_BAD_STATUS 0x00050000 1449ec7b004SRick Macklem #define GSS_S_BAD_MIC 0x00060000 1459ec7b004SRick Macklem #define GSS_S_BAD_SIG 0x00060000 1469ec7b004SRick Macklem #define GSS_S_NO_CRED 0x00070000 1479ec7b004SRick Macklem #define GSS_S_NO_CONTEXT 0x00080000 1489ec7b004SRick Macklem #define GSS_S_DEFECTIVE_TOKEN 0x00090000 1499ec7b004SRick Macklem #define GSS_S_DEFECTIVE_CREDENTIAL 0x000a0000 1509ec7b004SRick Macklem #define GSS_S_CREDENTIALS_EXPIRED 0x000b0000 1519ec7b004SRick Macklem #define GSS_S_CONTEXT_EXPIRED 0x000c0000 1529ec7b004SRick Macklem #define GSS_S_FAILURE 0x000d0000 1539ec7b004SRick Macklem #define GSS_S_BAD_QOP 0x000e0000 1549ec7b004SRick Macklem #define GSS_S_UNAUTHORIZED 0x000f0000 1559ec7b004SRick Macklem #define GSS_S_UNAVAILABLE 0x00100000 1569ec7b004SRick Macklem #define GSS_S_DUPLICATE_ELEMENT 0x00110000 1579ec7b004SRick Macklem #define GSS_S_NAME_NOT_MN 0x00120000 1589ec7b004SRick Macklem #define GSS_S_CALL_INACCESSIBLE_READ 0x01000000 1599ec7b004SRick Macklem #define GSS_S_CALL_INACCESSIBLE_WRITE 0x02000000 1609ec7b004SRick Macklem #define GSS_S_CALL_BAD_STRUCTURE 0x03000000 1619ec7b004SRick Macklem #endif /* _GSSAPI_H_ */ 1629ec7b004SRick Macklem 1639ec7b004SRick Macklem /* Rpc Constants */ 1649ec7b004SRick Macklem #define RPC_CALL 0 1659ec7b004SRick Macklem #define RPC_REPLY 1 1669ec7b004SRick Macklem #define RPC_MSGACCEPTED 0 1679ec7b004SRick Macklem #define RPC_MSGDENIED 1 1689ec7b004SRick Macklem #define RPC_PROGUNAVAIL 1 1699ec7b004SRick Macklem #define RPC_PROGMISMATCH 2 1709ec7b004SRick Macklem #define RPC_PROCUNAVAIL 3 1719ec7b004SRick Macklem #define RPC_GARBAGE 4 /* I like this one */ 1729ec7b004SRick Macklem #define RPC_MISMATCH 0 1739ec7b004SRick Macklem #define RPC_AUTHERR 1 1749ec7b004SRick Macklem 1759ec7b004SRick Macklem /* Authentication failures */ 1769ec7b004SRick Macklem #define AUTH_BADCRED 1 1779ec7b004SRick Macklem #define AUTH_REJECTCRED 2 1789ec7b004SRick Macklem #define AUTH_BADVERF 3 1799ec7b004SRick Macklem #define AUTH_REJECTVERF 4 1809ec7b004SRick Macklem #define AUTH_TOOWEAK 5 /* Give em wheaties */ 1819ec7b004SRick Macklem #define AUTH_PROBCRED 13 1829ec7b004SRick Macklem #define AUTH_CTXCRED 14 1839ec7b004SRick Macklem 1849ec7b004SRick Macklem /* Sizes of rpc header parts */ 1859ec7b004SRick Macklem #define RPC_SIZ 24 1869ec7b004SRick Macklem #define RPC_REPLYSIZ 28 1879ec7b004SRick Macklem 1889ec7b004SRick Macklem /* RPC Prog definitions */ 1899ec7b004SRick Macklem #define RPCPROG_MNT 100005 1909ec7b004SRick Macklem #define RPCMNT_VER1 1 1919ec7b004SRick Macklem #define RPCMNT_VER3 3 1929ec7b004SRick Macklem #define RPCMNT_MOUNT 1 1939ec7b004SRick Macklem #define RPCMNT_DUMP 2 1949ec7b004SRick Macklem #define RPCMNT_UMOUNT 3 1959ec7b004SRick Macklem #define RPCMNT_UMNTALL 4 1969ec7b004SRick Macklem #define RPCMNT_EXPORT 5 1979ec7b004SRick Macklem #define RPCMNT_NAMELEN 255 1989ec7b004SRick Macklem #define RPCMNT_PATHLEN 1024 1999ec7b004SRick Macklem #define RPCPROG_NFS 100003 2009ec7b004SRick Macklem 2019ec7b004SRick Macklem /* Structs for common parts of the rpc's */ 2029ec7b004SRick Macklem struct rpcv2_time { 2039ec7b004SRick Macklem u_int32_t rpc_sec; 2049ec7b004SRick Macklem u_int32_t rpc_usec; 2059ec7b004SRick Macklem }; 2069ec7b004SRick Macklem 2079ec7b004SRick Macklem #endif /* _NFS_RPCV2_H_ */ 208