Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * Copyright (c) 2010 IETF Trust and the persons identified
3 * as the document authors. All rights reserved.
4 *
5 * The document authors are identified in RFC 3530 and
6 * RFC 5661.
7 *
8 * Redistribution and use in source and binary forms, with
9 * or without modification, are permitted provided that the
10 * following conditions are met:
11 *
12 * - Redistributions of source code must retain the above
13 * copyright notice, this list of conditions and the
14 * following disclaimer.
15 *
16 * - Redistributions in binary form must reproduce the above
17 * copyright notice, this list of conditions and the
18 * following disclaimer in the documentation and/or other
19 * materials provided with the distribution.
20 *
21 * - Neither the name of Internet Society, IETF or IETF
22 * Trust, nor the names of specific contributors, may be
23 * used to endorse or promote products derived from this
24 * software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
27 * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
28 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
31 * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
32 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
34 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
36 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
37 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
38 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
39 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
40 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 */
42
43pragma header nfs4;
44
45/*
46 * Basic typedefs for RFC 1832 data type definitions
47 */
48typedef hyper int64_t;
49typedef unsigned int uint32_t;
50
51/*
52 * Basic data types
53 */
54typedef uint32_t bitmap4<>;
55
56/*
57 * Timeval
58 */
59struct nfstime4 {
60 int64_t seconds;
61 uint32_t nseconds;
62};
63
64
65/*
66 * The following content was extracted from draft-ietf-nfsv4-delstid
67 */
68
69typedef bool fattr4_offline;
70
71
72const FATTR4_OFFLINE = 83;
73
74
75struct open_arguments4 {
76 bitmap4 oa_share_access;
77 bitmap4 oa_share_deny;
78 bitmap4 oa_share_access_want;
79 bitmap4 oa_open_claim;
80 bitmap4 oa_create_mode;
81};
82
83
84enum open_args_share_access4 {
85 OPEN_ARGS_SHARE_ACCESS_READ = 1,
86 OPEN_ARGS_SHARE_ACCESS_WRITE = 2,
87 OPEN_ARGS_SHARE_ACCESS_BOTH = 3
88};
89
90
91enum open_args_share_deny4 {
92 OPEN_ARGS_SHARE_DENY_NONE = 0,
93 OPEN_ARGS_SHARE_DENY_READ = 1,
94 OPEN_ARGS_SHARE_DENY_WRITE = 2,
95 OPEN_ARGS_SHARE_DENY_BOTH = 3
96};
97
98
99enum open_args_share_access_want4 {
100 OPEN_ARGS_SHARE_ACCESS_WANT_ANY_DELEG = 3,
101 OPEN_ARGS_SHARE_ACCESS_WANT_NO_DELEG = 4,
102 OPEN_ARGS_SHARE_ACCESS_WANT_CANCEL = 5,
103 OPEN_ARGS_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL
104 = 17,
105 OPEN_ARGS_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED
106 = 18,
107 OPEN_ARGS_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 20,
108 OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 21
109};
110
111
112enum open_args_open_claim4 {
113 OPEN_ARGS_OPEN_CLAIM_NULL = 0,
114 OPEN_ARGS_OPEN_CLAIM_PREVIOUS = 1,
115 OPEN_ARGS_OPEN_CLAIM_DELEGATE_CUR = 2,
116 OPEN_ARGS_OPEN_CLAIM_DELEGATE_PREV = 3,
117 OPEN_ARGS_OPEN_CLAIM_FH = 4,
118 OPEN_ARGS_OPEN_CLAIM_DELEG_CUR_FH = 5,
119 OPEN_ARGS_OPEN_CLAIM_DELEG_PREV_FH = 6
120};
121
122
123enum open_args_createmode4 {
124 OPEN_ARGS_CREATEMODE_UNCHECKED4 = 0,
125 OPEN_ARGS_CREATE_MODE_GUARDED = 1,
126 OPEN_ARGS_CREATEMODE_EXCLUSIVE4 = 2,
127 OPEN_ARGS_CREATE_MODE_EXCLUSIVE4_1 = 3
128};
129
130
131typedef open_arguments4 fattr4_open_arguments;
132pragma public fattr4_open_arguments;
133
134
135%/*
136% * Determine what OPEN supports.
137% */
138const FATTR4_OPEN_ARGUMENTS = 86;
139
140
141
142
143const OPEN4_RESULT_NO_OPEN_STATEID = 0x00000010;
144
145
146/*
147 * attributes for the delegation times being
148 * cached and served by the "client"
149 */
150typedef nfstime4 fattr4_time_deleg_access;
151typedef nfstime4 fattr4_time_deleg_modify;
152pragma public fattr4_time_deleg_access;
153pragma public fattr4_time_deleg_modify;
154
155
156%/*
157% * New RECOMMENDED Attribute for
158% * delegation caching of times
159% */
160const FATTR4_TIME_DELEG_ACCESS = 84;
161const FATTR4_TIME_DELEG_MODIFY = 85;
162
163
164
165/* new flags for share_access field of OPEN4args */
166const OPEN4_SHARE_ACCESS_WANT_DELEG_MASK = 0xFF00;
167const OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE = 0x0000;
168const OPEN4_SHARE_ACCESS_WANT_READ_DELEG = 0x0100;
169const OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG = 0x0200;
170const OPEN4_SHARE_ACCESS_WANT_ANY_DELEG = 0x0300;
171const OPEN4_SHARE_ACCESS_WANT_NO_DELEG = 0x0400;
172const OPEN4_SHARE_ACCESS_WANT_CANCEL = 0x0500;
173
174const OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL = 0x10000;
175const OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED = 0x20000;
176const OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 0x100000;
177const OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 0x200000;
178
179enum open_delegation_type4 {
180 OPEN_DELEGATE_NONE = 0,
181 OPEN_DELEGATE_READ = 1,
182 OPEN_DELEGATE_WRITE = 2,
183 OPEN_DELEGATE_NONE_EXT = 3, /* new to v4.1 */
184 OPEN_DELEGATE_READ_ATTRS_DELEG = 4,
185 OPEN_DELEGATE_WRITE_ATTRS_DELEG = 5
186};