1/* 2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 23/* 24 * Copyright (c) 1989, 1993 25 * The Regents of the University of California. All rights reserved. 26 * 27 * This code is derived from software contributed to Berkeley by 28 * Rick Macklem at The University of Guelph. 29 * 30 * Redistribution and use in source and binary forms, with or without 31 * modification, are permitted provided that the following conditions 32 * are met: 33 * 1. Redistributions of source code must retain the above copyright 34 * notice, this list of conditions and the following disclaimer. 35 * 2. Redistributions in binary form must reproduce the above copyright 36 * notice, this list of conditions and the following disclaimer in the 37 * documentation and/or other materials provided with the distribution. 38 * 3. All advertising materials mentioning features or use of this software 39 * must display the following acknowledgement: 40 * This product includes software developed by the University of 41 * California, Berkeley and its contributors. 42 * 4. Neither the name of the University nor the names of its contributors 43 * may be used to endorse or promote products derived from this software 44 * without specific prior written permission. 45 * 46 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 47 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 48 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 49 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 50 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 51 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 52 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 53 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 54 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 55 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 56 * SUCH DAMAGE. 57 * 58 * @(#)rpcv2.h 8.2 (Berkeley) 3/30/95 59 * FreeBSD-Id: rpcv2.h,v 1.8 1997/05/11 18:05:39 tegge Exp $ 60 */ 61 62 63#ifndef _NFS_RPCV2_H_ 64#define _NFS_RPCV2_H_ 65 66#include <sys/appleapiopts.h> 67 68#ifdef __APPLE_API_PRIVATE 69/* 70 * Definitions for Sun RPC Version 2, from 71 * "RPC: Remote Procedure Call Protocol Specification" RFC1057 72 */ 73 74/* Version # */ 75#define RPC_VER2 2 76 77/* Authentication */ 78#define RPCAUTH_NULL 0 79#define RPCAUTH_UNIX 1 80#define RPCAUTH_SHORT 2 81#define RPCAUTH_KERB4 4 82#define RPCAUTH_MAXSIZ 400 83#define RPCVERF_MAXSIZ 12 /* For Kerb, can actually be 400 */ 84#define RPCAUTH_UNIXGIDS 16 85 86/* 87 * Constants associated with authentication flavours. 88 */ 89#define RPCAKN_FULLNAME 0 90#define RPCAKN_NICKNAME 1 91 92/* Rpc Constants */ 93#define RPC_CALL 0 94#define RPC_REPLY 1 95#define RPC_MSGACCEPTED 0 96#define RPC_MSGDENIED 1 97#define RPC_PROGUNAVAIL 1 98#define RPC_PROGMISMATCH 2 99#define RPC_PROCUNAVAIL 3 100#define RPC_GARBAGE 4 /* I like this one */ 101#define RPC_SYSTEM_ERR 5 102#define RPC_MISMATCH 0 103#define RPC_AUTHERR 1 104 105/* Authentication failures */ 106#define AUTH_BADCRED 1 107#define AUTH_REJECTCRED 2 108#define AUTH_BADVERF 3 109#define AUTH_REJECTVERF 4 110#define AUTH_TOOWEAK 5 /* Give em wheaties */ 111 112/* Sizes of rpc header parts */ 113#define RPC_SIZ 24 114#define RPC_REPLYSIZ 28 115 116/* RPC Prog definitions */ 117#define RPCPROG_MNT 100005 118#define RPCMNT_VER1 1 119#define RPCMNT_VER3 3 120#define RPCMNT_MOUNT 1 121#define RPCMNT_DUMP 2 122#define RPCMNT_UMOUNT 3 123#define RPCMNT_UMNTALL 4 124#define RPCMNT_EXPORT 5 125#define RPCMNT_NAMELEN 255 126#define RPCMNT_PATHLEN 1024 127#define RPCPROG_NFS 100003 128 129/* 130 * Structures used for RPCAUTH_KERB4. 131 */ 132struct nfsrpc_fullverf { 133 u_long t1; 134 u_long t2; 135 u_long w2; 136}; 137 138struct nfsrpc_fullblock { 139 u_long t1; 140 u_long t2; 141 u_long w1; 142 u_long w2; 143}; 144 145struct nfsrpc_nickverf { 146 u_long kind; 147 struct nfsrpc_fullverf verf; 148}; 149 150/* 151 * and their sizes in bytes.. If sizeof (struct nfsrpc_xx) != these 152 * constants, well then things will break in mount_nfs and nfsd. 153 */ 154#define RPCX_FULLVERF 12 155#define RPCX_FULLBLOCK 16 156#define RPCX_NICKVERF 16 157 158#if NFSKERB 159XXX 160#else 161typedef u_char NFSKERBKEY_T[2]; 162typedef u_char NFSKERBKEYSCHED_T[2]; 163#endif 164#define NFS_KERBSRV "rcmd" /* Kerberos Service for NFS */ 165#define NFS_KERBTTL (30 * 60) /* Credential ttl (sec) */ 166#define NFS_KERBCLOCKSKEW (5 * 60) /* Clock skew (sec) */ 167#define NFS_KERBW1(t) (*((u_long *)(&((t).dat[((t).length + 3) & ~0x3])))) 168 169#endif /* __APPLE_API_PRIVATE */ 170#endif /* _NFS_RPCV2_H_ */ 171

