Home | History | Annotate | Line # | Download | only in common
rpcv2.h revision 1.1
      1  1.1  dholland /*	$NetBSD: rpcv2.h,v 1.1 2013/09/30 07:19:42 dholland Exp $	*/
      2  1.1  dholland /*-
      3  1.1  dholland  * Copyright (c) 1989, 1993
      4  1.1  dholland  *	The Regents of the University of California.  All rights reserved.
      5  1.1  dholland  *
      6  1.1  dholland  * This code is derived from software contributed to Berkeley by
      7  1.1  dholland  * Rick Macklem at The University of Guelph.
      8  1.1  dholland  *
      9  1.1  dholland  * Redistribution and use in source and binary forms, with or without
     10  1.1  dholland  * modification, are permitted provided that the following conditions
     11  1.1  dholland  * are met:
     12  1.1  dholland  * 1. Redistributions of source code must retain the above copyright
     13  1.1  dholland  *    notice, this list of conditions and the following disclaimer.
     14  1.1  dholland  * 2. Redistributions in binary form must reproduce the above copyright
     15  1.1  dholland  *    notice, this list of conditions and the following disclaimer in the
     16  1.1  dholland  *    documentation and/or other materials provided with the distribution.
     17  1.1  dholland  * 4. Neither the name of the University nor the names of its contributors
     18  1.1  dholland  *    may be used to endorse or promote products derived from this software
     19  1.1  dholland  *    without specific prior written permission.
     20  1.1  dholland  *
     21  1.1  dholland  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     22  1.1  dholland  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     23  1.1  dholland  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     24  1.1  dholland  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     25  1.1  dholland  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     26  1.1  dholland  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     27  1.1  dholland  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     28  1.1  dholland  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     29  1.1  dholland  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     30  1.1  dholland  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     31  1.1  dholland  * SUCH DAMAGE.
     32  1.1  dholland  *
     33  1.1  dholland  * FreeBSD: head/sys/fs/nfs/rpcv2.h 191783 2009-05-04 15:23:58Z rmacklem
     34  1.1  dholland  * $NetBSD: rpcv2.h,v 1.1 2013/09/30 07:19:42 dholland Exp $
     35  1.1  dholland  */
     36  1.1  dholland 
     37  1.1  dholland #ifndef _NFS_RPCV2_H_
     38  1.1  dholland #define	_NFS_RPCV2_H_
     39  1.1  dholland 
     40  1.1  dholland /*
     41  1.1  dholland  * Definitions for Sun RPC Version 2, from
     42  1.1  dholland  * "RPC: Remote Procedure Call Protocol Specification" RFC1057
     43  1.1  dholland  */
     44  1.1  dholland 
     45  1.1  dholland /* Version # */
     46  1.1  dholland #define	RPC_VER2		2
     47  1.1  dholland 
     48  1.1  dholland /* Authentication flavours */
     49  1.1  dholland #define	RPCAUTH_NULL			0
     50  1.1  dholland #define	RPCAUTH_UNIX			1
     51  1.1  dholland #define	RPCAUTH_SHORT			2
     52  1.1  dholland #define	RPCAUTH_KERB4			4
     53  1.1  dholland #define	RPCAUTH_GSS			6
     54  1.1  dholland #define	RPCAUTH_GSSKRB5			390003
     55  1.1  dholland #define	RPCAUTH_GSSKRB5INTEGRITY	390004
     56  1.1  dholland #define	RPCAUTH_GSSKRB5PRIVACY		390005
     57  1.1  dholland 
     58  1.1  dholland #define	RPCAUTH_MAXSIZ		400
     59  1.1  dholland #define	RPCVERF_MAXSIZ	12	/* For Kerb, can actually be 400 */
     60  1.1  dholland 
     61  1.1  dholland /*
     62  1.1  dholland  * RPCAUTH_UNIX defs.
     63  1.1  dholland  */
     64  1.1  dholland #define	RPCAUTHUNIX_MINSIZ	(5 * NFSX_UNSIGNED)
     65  1.1  dholland #define	RPCAUTH_UNIXGIDS 16
     66  1.1  dholland 
     67  1.1  dholland /*
     68  1.1  dholland  * RPCAUTH_GSS defs.
     69  1.1  dholland  */
     70  1.1  dholland #define	RPCAUTHGSS_VERS1	1
     71  1.1  dholland 
     72  1.1  dholland #define	RPCAUTHGSS_DATA		0
     73  1.1  dholland #define	RPCAUTHGSS_INIT		1
     74  1.1  dholland #define	RPCAUTHGSS_CONTINIT	2
     75  1.1  dholland #define	RPCAUTHGSS_DESTROY	3
     76  1.1  dholland 
     77  1.1  dholland #define	RPCAUTHGSS_SVCNONE	1
     78  1.1  dholland #define	RPCAUTHGSS_SVCINTEGRITY	2
     79  1.1  dholland #define	RPCAUTHGSS_SVCPRIVACY	3
     80  1.1  dholland 
     81  1.1  dholland #define	RPCAUTHGSS_MAXSEQ	0x80000000
     82  1.1  dholland 
     83  1.1  dholland #define	RPCAUTHGSS_WINDOW	64	/* # of bits in u_int64_t */
     84  1.1  dholland #define	RPCAUTHGSS_SEQWINDOW	(RPCAUTHGSS_WINDOW + 1)
     85  1.1  dholland 
     86  1.1  dholland #define	RPCAUTHGSS_MIC		1
     87  1.1  dholland #define	RPCAUTHGSS_WRAP		2
     88  1.1  dholland 
     89  1.1  dholland /*
     90  1.1  dholland  * Qop values for the types of security services.
     91  1.1  dholland  */
     92  1.1  dholland #define	GSS_KERBV_QOP		0
     93  1.1  dholland 
     94  1.1  dholland /*
     95  1.1  dholland  * Sizes of GSS stuff.
     96  1.1  dholland  */
     97  1.1  dholland #define	RPCGSS_KEYSIZ		8
     98  1.1  dholland 
     99  1.1  dholland #define	GSSX_AUTHHEAD	(5 * NFSX_UNSIGNED)
    100  1.1  dholland #define	GSSX_MYHANDLE	(sizeof (long) + sizeof (u_int64_t))
    101  1.1  dholland #define	GSSX_RPCHEADER	(13 * NFSX_UNSIGNED + GSSX_MYHANDLE)
    102  1.1  dholland #define	GSSX_MINWRAP	(2 * NFSX_UNSIGNED)
    103  1.1  dholland #define	GSSX_KERBVTOKEN	24
    104  1.1  dholland #define	GSSX_LOCALHANDLE (sizeof (void *))
    105  1.1  dholland 
    106  1.1  dholland /*
    107  1.1  dholland  * Stuff for the gssd.
    108  1.1  dholland  */
    109  1.1  dholland #define	RPCPROG_GSSD		0x20101010
    110  1.1  dholland #define	RPCGSSD_VERS		1
    111  1.1  dholland #define	RPCGSSD_INIT		1
    112  1.1  dholland #define	RPCGSSD_CONTINIT	2
    113  1.1  dholland #define	RPCGSSD_CONTINITDESTROY	3
    114  1.1  dholland #define	RPCGSSD_CLINIT		4
    115  1.1  dholland #define	RPCGSSD_CLINITUID	5
    116  1.1  dholland #define	RPCGSSD_CLCONT		6
    117  1.1  dholland #define	RPCGSSD_CLCONTUID	7
    118  1.1  dholland #define	RPCGSSD_CLINITNAME	8
    119  1.1  dholland #define	RPCGSSD_CLCONTNAME	9
    120  1.1  dholland 
    121  1.1  dholland /*
    122  1.1  dholland  * Stuff for the nfsuserd
    123  1.1  dholland  */
    124  1.1  dholland #define	RPCPROG_NFSUSERD	0x21010101
    125  1.1  dholland #define	RPCNFSUSERD_VERS	1
    126  1.1  dholland #define	RPCNFSUSERD_GETUID	1
    127  1.1  dholland #define	RPCNFSUSERD_GETGID	2
    128  1.1  dholland #define	RPCNFSUSERD_GETUSER	3
    129  1.1  dholland #define	RPCNFSUSERD_GETGROUP	4
    130  1.1  dholland 
    131  1.1  dholland /*
    132  1.1  dholland  * Some major status codes.
    133  1.1  dholland  */
    134  1.1  dholland #if !defined(_GSSAPI_H_) && !defined(GSSAPI_H_) && !defined(_GSSAPI_GSSAPI_H_) && !defined(_RPCSEC_GSS_H)
    135  1.1  dholland #define	 GSS_S_COMPLETE                  0x00000000
    136  1.1  dholland #define	 GSS_S_CONTINUE_NEEDED           0x00000001
    137  1.1  dholland #define	 GSS_S_DUPLICATE_TOKEN           0x00000002
    138  1.1  dholland #define	 GSS_S_OLD_TOKEN                 0x00000004
    139  1.1  dholland #define	 GSS_S_UNSEQ_TOKEN               0x00000008
    140  1.1  dholland #define	 GSS_S_GAP_TOKEN                 0x00000010
    141  1.1  dholland #define	 GSS_S_BAD_MECH                  0x00010000
    142  1.1  dholland #define	 GSS_S_BAD_NAME                  0x00020000
    143  1.1  dholland #define	 GSS_S_BAD_NAMETYPE              0x00030000
    144  1.1  dholland #define	 GSS_S_BAD_BINDINGS              0x00040000
    145  1.1  dholland #define	 GSS_S_BAD_STATUS                0x00050000
    146  1.1  dholland #define	 GSS_S_BAD_MIC                   0x00060000
    147  1.1  dholland #define	 GSS_S_BAD_SIG                   0x00060000
    148  1.1  dholland #define	 GSS_S_NO_CRED                   0x00070000
    149  1.1  dholland #define	 GSS_S_NO_CONTEXT                0x00080000
    150  1.1  dholland #define	 GSS_S_DEFECTIVE_TOKEN           0x00090000
    151  1.1  dholland #define	 GSS_S_DEFECTIVE_CREDENTIAL      0x000a0000
    152  1.1  dholland #define	 GSS_S_CREDENTIALS_EXPIRED       0x000b0000
    153  1.1  dholland #define	 GSS_S_CONTEXT_EXPIRED           0x000c0000
    154  1.1  dholland #define	 GSS_S_FAILURE                   0x000d0000
    155  1.1  dholland #define	 GSS_S_BAD_QOP                   0x000e0000
    156  1.1  dholland #define	 GSS_S_UNAUTHORIZED              0x000f0000
    157  1.1  dholland #define	 GSS_S_UNAVAILABLE               0x00100000
    158  1.1  dholland #define	 GSS_S_DUPLICATE_ELEMENT         0x00110000
    159  1.1  dholland #define	 GSS_S_NAME_NOT_MN               0x00120000
    160  1.1  dholland #define	 GSS_S_CALL_INACCESSIBLE_READ    0x01000000
    161  1.1  dholland #define	 GSS_S_CALL_INACCESSIBLE_WRITE   0x02000000
    162  1.1  dholland #define	 GSS_S_CALL_BAD_STRUCTURE        0x03000000
    163  1.1  dholland #endif	/* _GSSAPI_H_ */
    164  1.1  dholland 
    165  1.1  dholland /* Rpc Constants */
    166  1.1  dholland #define	RPC_CALL	0
    167  1.1  dholland #define	RPC_REPLY	1
    168  1.1  dholland #define	RPC_MSGACCEPTED	0
    169  1.1  dholland #define	RPC_MSGDENIED	1
    170  1.1  dholland #define	RPC_PROGUNAVAIL	1
    171  1.1  dholland #define	RPC_PROGMISMATCH	2
    172  1.1  dholland #define	RPC_PROCUNAVAIL	3
    173  1.1  dholland #define	RPC_GARBAGE	4		/* I like this one */
    174  1.1  dholland #define	RPC_MISMATCH	0
    175  1.1  dholland #define	RPC_AUTHERR	1
    176  1.1  dholland 
    177  1.1  dholland /* Authentication failures */
    178  1.1  dholland #define	AUTH_BADCRED	1
    179  1.1  dholland #define	AUTH_REJECTCRED	2
    180  1.1  dholland #define	AUTH_BADVERF	3
    181  1.1  dholland #define	AUTH_REJECTVERF	4
    182  1.1  dholland #define	AUTH_TOOWEAK	5		/* Give em wheaties */
    183  1.1  dholland #define	AUTH_PROBCRED	13
    184  1.1  dholland #define	AUTH_CTXCRED	14
    185  1.1  dholland 
    186  1.1  dholland /* Sizes of rpc header parts */
    187  1.1  dholland #define	RPC_SIZ		24
    188  1.1  dholland #define	RPC_REPLYSIZ	28
    189  1.1  dholland 
    190  1.1  dholland /* RPC Prog definitions */
    191  1.1  dholland #define	RPCPROG_MNT	100005
    192  1.1  dholland #define	RPCMNT_VER1	1
    193  1.1  dholland #define	RPCMNT_VER3	3
    194  1.1  dholland #define	RPCMNT_MOUNT	1
    195  1.1  dholland #define	RPCMNT_DUMP	2
    196  1.1  dholland #define	RPCMNT_UMOUNT	3
    197  1.1  dholland #define	RPCMNT_UMNTALL	4
    198  1.1  dholland #define	RPCMNT_EXPORT	5
    199  1.1  dholland #define	RPCMNT_NAMELEN	255
    200  1.1  dholland #define	RPCMNT_PATHLEN	1024
    201  1.1  dholland #define	RPCPROG_NFS	100003
    202  1.1  dholland 
    203  1.1  dholland /* Structs for common parts of the rpc's */
    204  1.1  dholland struct rpcv2_time {
    205  1.1  dholland 	u_int32_t rpc_sec;
    206  1.1  dholland 	u_int32_t rpc_usec;
    207  1.1  dholland };
    208  1.1  dholland 
    209  1.1  dholland #endif	/* _NFS_RPCV2_H_ */
    210