Blame view

fs/nfsd/xdr3.h 7.91 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
  /*
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
6
7
8
   * XDR types for NFSv3 in nfsd.
   *
   * Copyright (C) 1996-1998, Olaf Kirch <okir@monad.swb.de>
   */
  
  #ifndef _LINUX_NFSD_XDR3_H
  #define _LINUX_NFSD_XDR3_H
9a74af213   Boaz Harrosh   nfsd: Move privat...
9
  #include "xdr.h"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10
11
12
13
14
15
16
17
18
19
20
  
  struct nfsd3_sattrargs {
  	struct svc_fh		fh;
  	struct iattr		attrs;
  	int			check_guard;
  	time_t			guardtime;
  };
  
  struct nfsd3_diropargs {
  	struct svc_fh		fh;
  	char *			name;
29d5e5553   Chuck Lever   NFSD: File name l...
21
  	unsigned int		len;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
22
23
24
25
26
27
28
29
30
31
32
  };
  
  struct nfsd3_accessargs {
  	struct svc_fh		fh;
  	unsigned int		access;
  };
  
  struct nfsd3_readargs {
  	struct svc_fh		fh;
  	__u64			offset;
  	__u32			count;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
37
38
39
40
  	int			vlen;
  };
  
  struct nfsd3_writeargs {
  	svc_fh			fh;
  	__u64			offset;
  	__u32			count;
  	int			stable;
0ba7536d5   NeilBrown   [PATCH] knfsd: Fi...
41
  	__u32			len;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
43
44
45
46
47
  	int			vlen;
  };
  
  struct nfsd3_createargs {
  	struct svc_fh		fh;
  	char *			name;
29d5e5553   Chuck Lever   NFSD: File name l...
48
  	unsigned int		len;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
49
50
  	int			createmode;
  	struct iattr		attrs;
91f07168c   Al Viro   [PATCH] xdr annot...
51
  	__be32 *		verf;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
55
56
  };
  
  struct nfsd3_mknodargs {
  	struct svc_fh		fh;
  	char *			name;
29d5e5553   Chuck Lever   NFSD: File name l...
57
  	unsigned int		len;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
58
59
60
61
62
63
64
65
  	__u32			ftype;
  	__u32			major, minor;
  	struct iattr		attrs;
  };
  
  struct nfsd3_renameargs {
  	struct svc_fh		ffh;
  	char *			fname;
29d5e5553   Chuck Lever   NFSD: File name l...
66
  	unsigned int		flen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
  	struct svc_fh		tfh;
  	char *			tname;
29d5e5553   Chuck Lever   NFSD: File name l...
69
  	unsigned int		tlen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
72
73
74
75
76
77
78
79
80
  };
  
  struct nfsd3_readlinkargs {
  	struct svc_fh		fh;
  	char *			buffer;
  };
  
  struct nfsd3_linkargs {
  	struct svc_fh		ffh;
  	struct svc_fh		tfh;
  	char *			tname;
29d5e5553   Chuck Lever   NFSD: File name l...
81
  	unsigned int		tlen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
82
83
84
85
86
  };
  
  struct nfsd3_symlinkargs {
  	struct svc_fh		ffh;
  	char *			fname;
29d5e5553   Chuck Lever   NFSD: File name l...
87
  	unsigned int		flen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
88
  	char *			tname;
48b4ba3fd   Chuck Lever   NFSD: Path name l...
89
  	unsigned int		tlen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
90
91
92
93
94
95
96
97
  	struct iattr		attrs;
  };
  
  struct nfsd3_readdirargs {
  	struct svc_fh		fh;
  	__u64			cookie;
  	__u32			dircount;
  	__u32			count;
91f07168c   Al Viro   [PATCH] xdr annot...
98
99
  	__be32 *		verf;
  	__be32 *		buffer;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
100
101
102
103
104
105
106
  };
  
  struct nfsd3_commitargs {
  	struct svc_fh		fh;
  	__u64			offset;
  	__u32			count;
  };
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
107
108
109
110
111
112
113
114
115
116
117
118
  struct nfsd3_getaclargs {
  	struct svc_fh		fh;
  	int			mask;
  };
  
  struct posix_acl;
  struct nfsd3_setaclargs {
  	struct svc_fh		fh;
  	int			mask;
  	struct posix_acl	*acl_access;
  	struct posix_acl	*acl_default;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
119
  struct nfsd3_attrstat {
91f07168c   Al Viro   [PATCH] xdr annot...
120
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
121
  	struct svc_fh		fh;
a334de286   David Shaw   [PATCH] knfsd: ch...
122
  	struct kstat            stat;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
123
124
125
126
  };
  
  /* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */
  struct nfsd3_diropres  {
91f07168c   Al Viro   [PATCH] xdr annot...
127
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
128
129
130
131
132
  	struct svc_fh		dirfh;
  	struct svc_fh		fh;
  };
  
  struct nfsd3_accessres {
91f07168c   Al Viro   [PATCH] xdr annot...
133
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
134
135
136
137
138
  	struct svc_fh		fh;
  	__u32			access;
  };
  
  struct nfsd3_readlinkres {
91f07168c   Al Viro   [PATCH] xdr annot...
139
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
140
141
142
143
144
  	struct svc_fh		fh;
  	__u32			len;
  };
  
  struct nfsd3_readres {
91f07168c   Al Viro   [PATCH] xdr annot...
145
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
146
147
148
149
150
151
  	struct svc_fh		fh;
  	unsigned long		count;
  	int			eof;
  };
  
  struct nfsd3_writeres {
91f07168c   Al Viro   [PATCH] xdr annot...
152
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
153
154
155
156
157
158
  	struct svc_fh		fh;
  	unsigned long		count;
  	int			committed;
  };
  
  struct nfsd3_renameres {
91f07168c   Al Viro   [PATCH] xdr annot...
159
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
160
161
162
163
164
  	struct svc_fh		ffh;
  	struct svc_fh		tfh;
  };
  
  struct nfsd3_linkres {
91f07168c   Al Viro   [PATCH] xdr annot...
165
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
166
167
168
169
170
  	struct svc_fh		tfh;
  	struct svc_fh		fh;
  };
  
  struct nfsd3_readdirres {
91f07168c   Al Viro   [PATCH] xdr annot...
171
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
172
173
  	struct svc_fh		fh;
  	int			count;
91f07168c   Al Viro   [PATCH] xdr annot...
174
  	__be32			verf[2];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
175
176
  
  	struct readdir_cd	common;
91f07168c   Al Viro   [PATCH] xdr annot...
177
  	__be32 *		buffer;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
178
  	int			buflen;
91f07168c   Al Viro   [PATCH] xdr annot...
179
180
  	__be32 *		offset;
  	__be32 *		offset1;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
181
182
183
184
185
  	struct svc_rqst *	rqstp;
  
  };
  
  struct nfsd3_fsstatres {
91f07168c   Al Viro   [PATCH] xdr annot...
186
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
187
188
189
190
191
  	struct kstatfs		stats;
  	__u32			invarsec;
  };
  
  struct nfsd3_fsinfores {
91f07168c   Al Viro   [PATCH] xdr annot...
192
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
193
194
195
196
197
198
199
200
201
202
203
204
  	__u32			f_rtmax;
  	__u32			f_rtpref;
  	__u32			f_rtmult;
  	__u32			f_wtmax;
  	__u32			f_wtpref;
  	__u32			f_wtmult;
  	__u32			f_dtpref;
  	__u64			f_maxfilesize;
  	__u32			f_properties;
  };
  
  struct nfsd3_pathconfres {
91f07168c   Al Viro   [PATCH] xdr annot...
205
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
206
207
208
209
210
211
212
213
214
  	__u32			p_link_max;
  	__u32			p_name_max;
  	__u32			p_no_trunc;
  	__u32			p_chown_restricted;
  	__u32			p_case_insensitive;
  	__u32			p_case_preserving;
  };
  
  struct nfsd3_commitres {
91f07168c   Al Viro   [PATCH] xdr annot...
215
  	__be32			status;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
216
217
  	struct svc_fh		fh;
  };
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
218
  struct nfsd3_getaclres {
91f07168c   Al Viro   [PATCH] xdr annot...
219
  	__be32			status;
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
220
221
222
223
224
  	struct svc_fh		fh;
  	int			mask;
  	struct posix_acl	*acl_access;
  	struct posix_acl	*acl_default;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
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
  /* dummy type for release */
  struct nfsd3_fhandle_pair {
  	__u32			dummy;
  	struct svc_fh		fh1;
  	struct svc_fh		fh2;
  };
  
  /*
   * Storage requirements for XDR arguments and results.
   */
  union nfsd3_xdrstore {
  	struct nfsd3_sattrargs		sattrargs;
  	struct nfsd3_diropargs		diropargs;
  	struct nfsd3_readargs		readargs;
  	struct nfsd3_writeargs		writeargs;
  	struct nfsd3_createargs		createargs;
  	struct nfsd3_renameargs		renameargs;
  	struct nfsd3_linkargs		linkargs;
  	struct nfsd3_symlinkargs	symlinkargs;
  	struct nfsd3_readdirargs	readdirargs;
  	struct nfsd3_diropres 		diropres;
  	struct nfsd3_accessres		accessres;
  	struct nfsd3_readlinkres	readlinkres;
  	struct nfsd3_readres		readres;
  	struct nfsd3_writeres		writeres;
  	struct nfsd3_renameres		renameres;
  	struct nfsd3_linkres		linkres;
  	struct nfsd3_readdirres		readdirres;
  	struct nfsd3_fsstatres		fsstatres;
  	struct nfsd3_fsinfores		fsinfores;
  	struct nfsd3_pathconfres	pathconfres;
  	struct nfsd3_commitres		commitres;
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
257
  	struct nfsd3_getaclres		getaclres;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
258
259
260
  };
  
  #define NFS3_SVC_XDRSIZE		sizeof(union nfsd3_xdrstore)
91f07168c   Al Viro   [PATCH] xdr annot...
261
262
  int nfs3svc_decode_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *);
  int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
263
  				struct nfsd3_sattrargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
264
  int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
265
  				struct nfsd3_diropargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
266
  int nfs3svc_decode_accessargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
267
  				struct nfsd3_accessargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
268
  int nfs3svc_decode_readargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
269
  				struct nfsd3_readargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
270
  int nfs3svc_decode_writeargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
271
  				struct nfsd3_writeargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
272
  int nfs3svc_decode_createargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
273
  				struct nfsd3_createargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
274
  int nfs3svc_decode_mkdirargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
275
  				struct nfsd3_createargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
276
  int nfs3svc_decode_mknodargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
277
  				struct nfsd3_mknodargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
278
  int nfs3svc_decode_renameargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
279
  				struct nfsd3_renameargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
280
  int nfs3svc_decode_readlinkargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
281
  				struct nfsd3_readlinkargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
282
  int nfs3svc_decode_linkargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
283
  				struct nfsd3_linkargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
284
  int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
285
  				struct nfsd3_symlinkargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
286
  int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
287
  				struct nfsd3_readdirargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
288
  int nfs3svc_decode_readdirplusargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
289
  				struct nfsd3_readdirargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
290
  int nfs3svc_decode_commitargs(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
291
  				struct nfsd3_commitargs *);
91f07168c   Al Viro   [PATCH] xdr annot...
292
293
  int nfs3svc_encode_voidres(struct svc_rqst *, __be32 *, void *);
  int nfs3svc_encode_attrstat(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
294
  				struct nfsd3_attrstat *);
91f07168c   Al Viro   [PATCH] xdr annot...
295
  int nfs3svc_encode_wccstat(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
296
  				struct nfsd3_attrstat *);
91f07168c   Al Viro   [PATCH] xdr annot...
297
  int nfs3svc_encode_diropres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
298
  				struct nfsd3_diropres *);
91f07168c   Al Viro   [PATCH] xdr annot...
299
  int nfs3svc_encode_accessres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
300
  				struct nfsd3_accessres *);
91f07168c   Al Viro   [PATCH] xdr annot...
301
  int nfs3svc_encode_readlinkres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
302
  				struct nfsd3_readlinkres *);
91f07168c   Al Viro   [PATCH] xdr annot...
303
304
305
  int nfs3svc_encode_readres(struct svc_rqst *, __be32 *, struct nfsd3_readres *);
  int nfs3svc_encode_writeres(struct svc_rqst *, __be32 *, struct nfsd3_writeres *);
  int nfs3svc_encode_createres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
306
  				struct nfsd3_diropres *);
91f07168c   Al Viro   [PATCH] xdr annot...
307
  int nfs3svc_encode_renameres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
308
  				struct nfsd3_renameres *);
91f07168c   Al Viro   [PATCH] xdr annot...
309
  int nfs3svc_encode_linkres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
310
  				struct nfsd3_linkres *);
91f07168c   Al Viro   [PATCH] xdr annot...
311
  int nfs3svc_encode_readdirres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
312
  				struct nfsd3_readdirres *);
91f07168c   Al Viro   [PATCH] xdr annot...
313
  int nfs3svc_encode_fsstatres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
314
  				struct nfsd3_fsstatres *);
91f07168c   Al Viro   [PATCH] xdr annot...
315
  int nfs3svc_encode_fsinfores(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
316
  				struct nfsd3_fsinfores *);
91f07168c   Al Viro   [PATCH] xdr annot...
317
  int nfs3svc_encode_pathconfres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
318
  				struct nfsd3_pathconfres *);
91f07168c   Al Viro   [PATCH] xdr annot...
319
  int nfs3svc_encode_commitres(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
320
  				struct nfsd3_commitres *);
91f07168c   Al Viro   [PATCH] xdr annot...
321
  int nfs3svc_release_fhandle(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
322
  				struct nfsd3_attrstat *);
91f07168c   Al Viro   [PATCH] xdr annot...
323
  int nfs3svc_release_fhandle2(struct svc_rqst *, __be32 *,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
324
  				struct nfsd3_fhandle_pair *);
a0ad13ef6   NeilBrown   [PATCH] knfsd: Fi...
325
326
  int nfs3svc_encode_entry(void *, const char *name,
  				int namlen, loff_t offset, u64 ino,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
327
  				unsigned int);
a0ad13ef6   NeilBrown   [PATCH] knfsd: Fi...
328
329
  int nfs3svc_encode_entry_plus(void *, const char *name,
  				int namlen, loff_t offset, u64 ino,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
330
  				unsigned int);
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
331
  /* Helper functions for NFSv3 ACL code */
91f07168c   Al Viro   [PATCH] xdr annot...
332
  __be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p,
a257cdd0e   Andreas Gruenbacher   [PATCH] NFSD: Add...
333
  				struct svc_fh *fhp);
91f07168c   Al Viro   [PATCH] xdr annot...
334
  __be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
335
336
337
  
  
  #endif /* _LINUX_NFSD_XDR3_H */