Annotation of sys/nfs/rpcv2.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: rpcv2.h,v 1.6 2003/06/02 23:28:20 millert Exp $ */
2: /* $NetBSD: rpcv2.h,v 1.8 1996/02/18 11:54:11 fvdl Exp $ */
3:
4: /*
5: * Copyright (c) 1989, 1993
6: * The Regents of the University of California. All rights reserved.
7: *
8: * This code is derived from software contributed to Berkeley by
9: * Rick Macklem at The University of Guelph.
10: *
11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions and the following disclaimer.
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in the
18: * documentation and/or other materials provided with the distribution.
19: * 3. Neither the name of the University nor the names of its contributors
20: * may be used to endorse or promote products derived from this software
21: * without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: *
35: * @(#)rpcv2.h 8.2 (Berkeley) 3/30/95
36: */
37:
38:
39: #ifndef _NFS_RPCV2_H_
40: #define _NFS_RPCV2_H_
41:
42: /*
43: * Definitions for Sun RPC Version 2, from
44: * "RPC: Remote Procedure Call Protocol Specification" RFC1057
45: */
46:
47: /* Version # */
48: #define RPC_VER2 2
49:
50: /* Authentication */
51: #define RPCAUTH_NULL 0
52: #define RPCAUTH_UNIX 1
53: #define RPCAUTH_SHORT 2
54: #define RPCAUTH_KERB4 4
55: #define RPCAUTH_NQNFS 300000
56: #define RPCAUTH_MAXSIZ 400
57: #define RPCVERF_MAXSIZ 12 /* For Kerb, can actually be 400 */
58: #define RPCAUTH_UNIXGIDS 16
59:
60: /*
61: * Constants associated with authentication flavours.
62: */
63: #define RPCAKN_FULLNAME 0
64: #define RPCAKN_NICKNAME 1
65:
66: /* Rpc Constants */
67: #define RPC_CALL 0
68: #define RPC_REPLY 1
69: #define RPC_MSGACCEPTED 0
70: #define RPC_MSGDENIED 1
71: #define RPC_PROGUNAVAIL 1
72: #define RPC_PROGMISMATCH 2
73: #define RPC_PROCUNAVAIL 3
74: #define RPC_GARBAGE 4 /* I like this one */
75: #define RPC_MISMATCH 0
76: #define RPC_AUTHERR 1
77:
78: /* Authentication failures */
79: #define AUTH_BADCRED 1
80: #define AUTH_REJECTCRED 2
81: #define AUTH_BADVERF 3
82: #define AUTH_REJECTVERF 4
83: #define AUTH_TOOWEAK 5 /* Give em wheaties */
84:
85: /* Sizes of rpc header parts */
86: #define RPC_SIZ 24
87: #define RPC_REPLYSIZ 28
88:
89: /* RPC Prog definitions */
90: #define RPCPROG_MNT 100005
91: #define RPCMNT_VER1 1
92: #define RPCMNT_VER3 3
93: #define RPCMNT_MOUNT 1
94: #define RPCMNT_DUMP 2
95: #define RPCMNT_UMOUNT 3
96: #define RPCMNT_UMNTALL 4
97: #define RPCMNT_EXPORT 5
98: #define RPCMNT_NAMELEN 255
99: #define RPCMNT_PATHLEN 1024
100: #define RPCPROG_NFS 100003
101:
102: /* Structs for common parts of the rpc's */
103: struct rpcv2_time {
104: u_int32_t rpc_sec;
105: u_int32_t rpc_usec;
106: };
107:
108: /*
109: * Structures used for RPCAUTH_KERB4.
110: */
111: struct nfsrpc_fullverf {
112: u_int32_t t1;
113: u_int32_t t2;
114: u_int32_t w2;
115: };
116:
117: struct nfsrpc_fullblock {
118: u_int32_t t1;
119: u_int32_t t2;
120: u_int32_t w1;
121: u_int32_t w2;
122: };
123:
124: struct nfsrpc_nickverf {
125: u_int32_t kind;
126: struct nfsrpc_fullverf verf;
127: };
128:
129: /*
130: * and their sizes in bytes.. If sizeof (struct nfsrpc_xx) != these
131: * constants, well then things will break in mount_nfs and nfsd.
132: */
133: #define RPCX_FULLVERF 12
134: #define RPCX_FULLBLOCK 16
135: #define RPCX_NICKVERF 16
136:
137: typedef u_char NFSKERBKEY_T[2];
138: typedef u_char NFSKERBKEYSCHED_T[2];
139: #define NFS_KERBTTL (30 * 60) /* Credential ttl (sec) */
140: #define NFS_KERBCLOCKSKEW (5 * 60) /* Clock skew (sec) */
141: #define NFS_KERBW1(t) (*((u_long *)(&((t).dat[((t).length + 3) & ~0x3]))))
142: #endif
CVSweb