This repository was archived by the owner on Jan 16, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy pathgenfs_prot.x
439 lines (363 loc) · 7.22 KB
/
genfs_prot.x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
/* $Id$ */
#include "nfs3_prot.h"
struct genfs_fh {
opaque data<NFS3_FHSIZE>;
};
struct genfs_attr {
ftype3 type;
uint32 mode;
uint32 nlink;
uint32 uid;
uint32 gid;
uint64 size;
uint64 used;
specdata3 rdev;
uint64 fsid;
uint64 fileid;
nfstime3 atime;
nfstime3 mtime;
nfstime3 ctime;
uint32 expire;
};
#if RFC_SYNTAX
union genfs_opt_attr switch (bool present) {
case TRUE:
genfs_attr attributes;
case FALSE:
void;
};
#else /* !RFC_SYNTAX */
typedef genfs_attr *genfs_opt_attr;
#endif /* !RFC_SYNTAX */
typedef pre_op_attr genfs_opt_wattr;
struct genfs_wcc {
genfs_opt_wattr before;
genfs_opt_attr after;
};
#if RFC_SYNTAX
union genfs_opt_fh switch (bool present) {
case TRUE:
genfs_fh handle;
case FALSE:
void;
};
#else /* !RFC_SYNTAX */
typedef genfs_fh *genfs_opt_fh;
#endif /* !RFC_SYNTAX */
struct genfs_diropargs {
genfs_fh dir;
filename3 name;
};
struct genfs_diropresok {
genfs_opt_fh obj;
genfs_opt_attr obj_attributes;
genfs_wcc dir_wcc;
};
union genfs_diropres switch (nfsstat3 status) {
case NFS3_OK:
genfs_diropresok resok;
default:
genfs_wcc resfail; /* Directory attributes */
};
union genfs_wccstat switch (nfsstat3 status) {
#ifndef UNION_ONLY_DEFAULT
case -1:
void;
#endif /* !UNION_ONLY_DEFAULT */
default:
genfs_wcc wcc;
};
union genfs_getattrres switch (nfsstat3 status) {
case NFS3_OK:
genfs_attr attributes;
default:
void;
};
struct genfs_setattrargs {
genfs_fh object;
sattr3 new_attributes;
sattrguard3 guard;
};
struct genfs_lookupresok {
genfs_fh object;
genfs_opt_attr obj_attributes;
genfs_opt_attr dir_attributes;
};
union genfs_lookupres switch (nfsstat3 status) {
case NFS3_OK:
genfs_lookupresok resok;
default:
genfs_opt_attr resfail; /* Directory attributes */
};
struct genfs_accessargs {
genfs_fh object;
uint32 access;
};
struct genfs_accessresok {
genfs_opt_attr obj_attributes;
uint32 access;
};
union genfs_accessres switch (nfsstat3 status) {
case NFS3_OK:
genfs_accessresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_readlinkresok {
genfs_opt_attr symlink_attributes;
nfspath3 data;
};
union genfs_readlinkres switch (nfsstat3 status) {
case NFS3_OK:
genfs_readlinkresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_readargs {
genfs_fh file;
uint64 offset;
uint32 count;
};
struct genfs_readresok {
genfs_opt_attr file_attributes;
uint32 count;
bool eof;
opaque data<>;
};
union genfs_readres switch (nfsstat3 status) {
case NFS3_OK:
genfs_readresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_writeargs {
genfs_fh file;
uint64 offset;
uint32 count;
stable_how stable;
opaque data<>;
};
struct genfs_writeresok {
genfs_wcc file_wcc;
uint32 count;
stable_how committed;
writeverf3 verf;
};
union genfs_writeres switch (nfsstat3 status) {
case NFS3_OK:
genfs_writeresok resok;
default:
genfs_wcc resfail;
};
struct genfs_createargs {
genfs_diropargs where;
createhow3 how;
};
struct genfs_mkdirargs {
genfs_diropargs where;
sattr3 attributes;
};
struct genfs_symlinkargs {
genfs_diropargs where;
symlinkdata3 symlink;
};
struct devicedata3 {
sattr3 dev_attributes;
specdata3 spec;
};
struct genfs_mknodargs {
genfs_diropargs where;
mknoddata3 what;
};
struct genfs_renameargs {
genfs_diropargs from;
genfs_diropargs to;
};
struct genfs_renamewcc {
genfs_wcc fromdir_wcc;
genfs_wcc todir_wcc;
};
union genfs_renameres switch (nfsstat3 status) {
#ifndef UNION_ONLY_DEFAULT
case -1:
void;
#endif /* !UNION_ONLY_DEFAULT */
default:
genfs_renamewcc res;
};
struct genfs_linkargs {
genfs_fh file;
genfs_diropargs link;
};
struct genfs_linkwcc {
genfs_opt_attr file_attributes;
genfs_wcc linkdir_wcc;
};
union genfs_linkres switch (nfsstat3 status) {
#ifndef UNION_ONLY_DEFAULT
case -1:
void;
#endif /* !UNION_ONLY_DEFAULT */
default:
genfs_linkwcc res;
};
struct genfs_readdirargs {
genfs_fh dir;
uint64 cookie;
cookieverf3 cookieverf;
uint32 count;
};
struct genfs_readdirresok {
genfs_opt_attr dir_attributes;
cookieverf3 cookieverf;
dirlist3 reply;
};
union genfs_readdirres switch (nfsstat3 status) {
case NFS3_OK:
genfs_readdirresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_readdirplusargs {
genfs_fh dir;
uint64 cookie;
cookieverf3 cookieverf;
uint32 dircount;
uint32 maxcount;
};
struct genfs_entryplus {
uint64 fileid;
filename3 name;
uint64 cookie;
genfs_opt_attr name_attributes;
genfs_opt_fh name_handle;
genfs_entryplus *nextentry;
};
struct genfs_dirlistplus {
genfs_entryplus *entries;
bool eof;
};
struct genfs_readdirplusresok {
genfs_opt_attr dir_attributes;
cookieverf3 cookieverf;
genfs_dirlistplus reply;
};
union genfs_readdirplusres switch (nfsstat3 status) {
case NFS3_OK:
genfs_readdirplusresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_fsstatresok {
genfs_opt_attr obj_attributes;
uint64 tbytes;
uint64 fbytes;
uint64 abytes;
uint64 tfiles;
uint64 ffiles;
uint64 afiles;
uint32 invarsec;
};
union genfs_fsstatres switch (nfsstat3 status) {
case NFS3_OK:
genfs_fsstatresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_fsinforesok {
genfs_opt_attr obj_attributes;
uint32 rtmax;
uint32 rtpref;
uint32 rtmult;
uint32 wtmax;
uint32 wtpref;
uint32 wtmult;
uint32 dtpref;
uint64 maxfilesize;
nfstime3 time_delta;
uint32 properties;
};
union genfs_fsinfores switch (nfsstat3 status) {
case NFS3_OK:
genfs_fsinforesok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_pathconfresok {
genfs_opt_attr obj_attributes;
uint32 linkmax;
uint32 name_max;
bool no_trunc;
bool chown_restricted;
bool case_insensitive;
bool case_preserving;
};
union genfs_pathconfres switch (nfsstat3 status) {
case NFS3_OK:
genfs_pathconfresok resok;
default:
genfs_opt_attr resfail;
};
struct genfs_commitargs {
genfs_fh file;
uint64 offset;
uint32 count;
};
struct genfs_commitresok {
genfs_wcc file_wcc;
writeverf3 verf;
};
union genfs_commitres switch (nfsstat3 status) {
case NFS3_OK:
genfs_commitresok resok;
default:
genfs_wcc resfail;
};
program GENFS_PROGRAM {
version GENFSNFS_VERS {
void
GENFS_NULL (void) = 0;
genfs_getattrres
GENFS_GETATTR (genfs_fh) = 1;
genfs_wccstat
GENFS_SETATTR (genfs_setattrargs) = 2;
genfs_lookupres
GENFS_LOOKUP (genfs_diropargs) = 3;
genfs_accessres
GENFS_ACCESS (genfs_accessargs) = 4;
genfs_readlinkres
GENFS_READLINK (genfs_fh) = 5;
genfs_readres
GENFS_READ (genfs_readargs) = 6;
genfs_writeres
GENFS_WRITE (genfs_writeargs) = 7;
genfs_diropres
GENFS_CREATE (genfs_createargs) = 8;
genfs_diropres
GENFS_MKDIR (genfs_mkdirargs) = 9;
genfs_diropres
GENFS_SYMLINK (genfs_symlinkargs) = 10;
genfs_diropres
GENFS_MKNOD (genfs_mknodargs) = 11;
genfs_wccstat
GENFS_REMOVE (genfs_diropargs) = 12;
genfs_wccstat
GENFS_RMDIR (genfs_diropargs) = 13;
genfs_renameres
GENFS_RENAME (genfs_renameargs) = 14;
genfs_linkres
GENFS_LINK (genfs_linkargs) = 15;
genfs_readdirres
GENFS_READDIR (genfs_readdirargs) = 16;
genfs_readdirplusres
GENFS_READDIRPLUS (genfs_readdirplusargs) = 17;
genfs_fsstatres
GENFS_FSSTAT (genfs_fh) = 18;
genfs_fsinfores
GENFS_FSINFO (genfs_fh) = 19;
genfs_pathconfres
GENFS_PATHCONF (genfs_fh) = 20;
genfs_commitres
GENFS_COMMIT (genfs_commitargs) = 21;
} = 1;
} = 344428;