1*31bdb48aSchristos /*	$NetBSD: am_xdr_func.h,v 1.1.1.3 2015/01/17 16:34:18 christos Exp $	*/
2a53f50b9Schristos 
3a53f50b9Schristos /*
4*31bdb48aSchristos  * Copyright (c) 1997-2014 Erez Zadok
5a53f50b9Schristos  * Copyright (c) 1990 Jan-Simon Pendry
6a53f50b9Schristos  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
7a53f50b9Schristos  * Copyright (c) 1990 The Regents of the University of California.
8a53f50b9Schristos  * All rights reserved.
9a53f50b9Schristos  *
10a53f50b9Schristos  * This code is derived from software contributed to Berkeley by
11a53f50b9Schristos  * Jan-Simon Pendry at Imperial College, London.
12a53f50b9Schristos  *
13a53f50b9Schristos  * Redistribution and use in source and binary forms, with or without
14a53f50b9Schristos  * modification, are permitted provided that the following conditions
15a53f50b9Schristos  * are met:
16a53f50b9Schristos  * 1. Redistributions of source code must retain the above copyright
17a53f50b9Schristos  *    notice, this list of conditions and the following disclaimer.
18a53f50b9Schristos  * 2. Redistributions in binary form must reproduce the above copyright
19a53f50b9Schristos  *    notice, this list of conditions and the following disclaimer in the
20a53f50b9Schristos  *    documentation and/or other materials provided with the distribution.
21*31bdb48aSchristos  * 3. Neither the name of the University nor the names of its contributors
22a53f50b9Schristos  *    may be used to endorse or promote products derived from this software
23a53f50b9Schristos  *    without specific prior written permission.
24a53f50b9Schristos  *
25a53f50b9Schristos  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26a53f50b9Schristos  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27a53f50b9Schristos  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28a53f50b9Schristos  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29a53f50b9Schristos  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30a53f50b9Schristos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31a53f50b9Schristos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32a53f50b9Schristos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33a53f50b9Schristos  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34a53f50b9Schristos  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35a53f50b9Schristos  * SUCH DAMAGE.
36a53f50b9Schristos  *
37a53f50b9Schristos  *
38a53f50b9Schristos  * File: am-utils/include/am_xdr_func.h
39a53f50b9Schristos  *
40a53f50b9Schristos  */
41a53f50b9Schristos 
42a53f50b9Schristos #ifdef HAVE_FS_NFS3
43a53f50b9Schristos 
44a53f50b9Schristos #define AM_MOUNTVERS3 ((unsigned long)(3))
45a53f50b9Schristos 
46*31bdb48aSchristos #define AM_FHSIZE3 64		/* size in bytes of a file handle (v3) */
47*31bdb48aSchristos #define AM_NFS3_WRITEVERFSIZE 8
48*31bdb48aSchristos #define AM_NFS3_CREATEVERFSIZE 8
49*31bdb48aSchristos #define AM_NFS3_COOKIEVERFSIZE 8
50*31bdb48aSchristos #define AM_ACCESS3_READ 0x0001
51*31bdb48aSchristos #define AM_ACCESS3_LOOKUP 0x0002
52*31bdb48aSchristos #define AM_ACCESS3_MODIFY 0x0004
53*31bdb48aSchristos #define AM_ACCESS3_EXTEND 0x0008
54*31bdb48aSchristos #define AM_ACCESS3_DELETE 0x0010
55*31bdb48aSchristos #define AM_ACCESS3_EXECUTE 0x0020
56*31bdb48aSchristos #define AM_FSF3_LINK 0x0001
57*31bdb48aSchristos #define AM_FSF3_SYMLINK 0x0002
58*31bdb48aSchristos #define AM_FSF3_HOMOGENEOUS 0x0008
59*31bdb48aSchristos #define AM_FSF3_CANSETTIME 0x0010
60*31bdb48aSchristos 
61*31bdb48aSchristos typedef char am_cookieverf3[AM_NFS3_COOKIEVERFSIZE];
62*31bdb48aSchristos 
63*31bdb48aSchristos typedef u_quad_t uint64;
64*31bdb48aSchristos 
65*31bdb48aSchristos typedef uint64 am_cookie3;
66*31bdb48aSchristos 
67a53f50b9Schristos /* NFSv3 handle */
68a53f50b9Schristos struct am_nfs_fh3 {
69a53f50b9Schristos   u_int am_fh3_length;
70a53f50b9Schristos   char am_fh3_data[AM_FHSIZE3];
71a53f50b9Schristos };
72a53f50b9Schristos typedef struct am_nfs_fh3 am_nfs_fh3;
73a53f50b9Schristos 
74a53f50b9Schristos #define AM_NFSPROC3_LOOKUP ((u_long) 3)
75a53f50b9Schristos enum am_nfsstat3 {
76a53f50b9Schristos 	AM_NFS3_OK = 0,
77a53f50b9Schristos 	AM_NFS3ERR_PERM = 1,
78a53f50b9Schristos 	AM_NFS3ERR_NOENT = 2,
79a53f50b9Schristos 	AM_NFS3ERR_IO = 5,
80a53f50b9Schristos 	AM_NFS3ERR_NXIO = 6,
81a53f50b9Schristos 	AM_NFS3ERR_ACCES = 13,
82a53f50b9Schristos 	AM_NFS3ERR_EXIST = 17,
83a53f50b9Schristos 	AM_NFS3ERR_XDEV = 18,
84a53f50b9Schristos 	AM_NFS3ERR_NODEV = 19,
85a53f50b9Schristos 	AM_NFS3ERR_NOTDIR = 20,
86a53f50b9Schristos 	AM_NFS3ERR_ISDIR = 21,
87a53f50b9Schristos 	AM_NFS3ERR_INVAL = 22,
88a53f50b9Schristos 	AM_NFS3ERR_FBIG = 27,
89a53f50b9Schristos 	AM_NFS3ERR_NOSPC = 28,
90a53f50b9Schristos 	AM_NFS3ERR_ROFS = 30,
91a53f50b9Schristos 	AM_NFS3ERR_MLINK = 31,
92a53f50b9Schristos 	AM_NFS3ERR_NAMETOOLONG = 63,
93a53f50b9Schristos 	AM_NFS3ERR_NOTEMPTY = 66,
94a53f50b9Schristos 	AM_NFS3ERR_DQUOT = 69,
95a53f50b9Schristos 	AM_NFS3ERR_STALE = 70,
96a53f50b9Schristos 	AM_NFS3ERR_REMOTE = 71,
97a53f50b9Schristos 	AM_NFS3ERR_BADHANDLE = 10001,
98a53f50b9Schristos 	AM_NFS3ERR_NOT_SYNC = 10002,
99a53f50b9Schristos 	AM_NFS3ERR_BAD_COOKIE = 10003,
100a53f50b9Schristos 	AM_NFS3ERR_NOTSUPP = 10004,
101a53f50b9Schristos 	AM_NFS3ERR_TOOSMALL = 10005,
102a53f50b9Schristos 	AM_NFS3ERR_SERVERFAULT = 10006,
103a53f50b9Schristos 	AM_NFS3ERR_BADTYPE = 10007,
104a53f50b9Schristos 	AM_NFS3ERR_JUKEBOX = 10008
105a53f50b9Schristos };
106a53f50b9Schristos typedef enum am_nfsstat3 am_nfsstat3;
107a53f50b9Schristos 
108a53f50b9Schristos typedef struct {
109a53f50b9Schristos   u_int fhandle3_len;
110a53f50b9Schristos   char *fhandle3_val;
111a53f50b9Schristos } am_fhandle3;
112a53f50b9Schristos 
113a53f50b9Schristos enum am_mountstat3 {
114a53f50b9Schristos        AM_MNT3_OK = 0,
115a53f50b9Schristos        AM_MNT3ERR_PERM = 1,
116a53f50b9Schristos        AM_MNT3ERR_NOENT = 2,
117a53f50b9Schristos        AM_MNT3ERR_IO = 5,
118a53f50b9Schristos        AM_MNT3ERR_ACCES = 13,
119a53f50b9Schristos        AM_MNT3ERR_NOTDIR = 20,
120a53f50b9Schristos        AM_MNT3ERR_INVAL = 22,
121a53f50b9Schristos        AM_MNT3ERR_NAMETOOLONG = 63,
122a53f50b9Schristos        AM_MNT3ERR_NOTSUPP = 10004,
123a53f50b9Schristos        AM_MNT3ERR_SERVERFAULT = 10006
124a53f50b9Schristos };
125a53f50b9Schristos typedef enum am_mountstat3 am_mountstat3;
126a53f50b9Schristos 
127a53f50b9Schristos struct am_mountres3_ok {
128a53f50b9Schristos        am_fhandle3 fhandle;
129a53f50b9Schristos        struct {
130a53f50b9Schristos                u_int auth_flavors_len;
131a53f50b9Schristos                int *auth_flavors_val;
132a53f50b9Schristos        } auth_flavors;
133a53f50b9Schristos };
134a53f50b9Schristos typedef struct am_mountres3_ok am_mountres3_ok;
135a53f50b9Schristos 
136a53f50b9Schristos struct am_mountres3 {
137a53f50b9Schristos        am_mountstat3 fhs_status;
138a53f50b9Schristos        union {
139a53f50b9Schristos                am_mountres3_ok mountinfo;
140a53f50b9Schristos        } mountres3_u;
141a53f50b9Schristos };
142a53f50b9Schristos typedef struct am_mountres3 am_mountres3;
143a53f50b9Schristos 
144a53f50b9Schristos typedef char *am_filename3;
145a53f50b9Schristos 
146a53f50b9Schristos struct am_diropargs3 {
147a53f50b9Schristos 	am_nfs_fh3 dir;
148a53f50b9Schristos 	am_filename3 name;
149a53f50b9Schristos };
150a53f50b9Schristos typedef struct am_diropargs3 am_diropargs3;
151a53f50b9Schristos 
152*31bdb48aSchristos enum am_ftype3 {
153*31bdb48aSchristos   AM_NF3REG = 1,
154*31bdb48aSchristos   AM_NF3DIR = 2,
155*31bdb48aSchristos   AM_NF3BLK = 3,
156*31bdb48aSchristos   AM_NF3CHR = 4,
157*31bdb48aSchristos   AM_NF3LNK = 5,
158*31bdb48aSchristos   AM_NF3SOCK = 6,
159*31bdb48aSchristos   AM_NF3FIFO = 7,
160*31bdb48aSchristos };
161*31bdb48aSchristos typedef enum am_ftype3 am_ftype3;
162*31bdb48aSchristos 
163*31bdb48aSchristos typedef u_int am_mode3;
164*31bdb48aSchristos 
165*31bdb48aSchristos typedef u_int am_uid3;
166*31bdb48aSchristos 
167*31bdb48aSchristos typedef u_int am_gid3;
168*31bdb48aSchristos 
169*31bdb48aSchristos typedef uint64 am_size3;
170*31bdb48aSchristos 
171*31bdb48aSchristos typedef uint64 am_fileid3;
172*31bdb48aSchristos 
173*31bdb48aSchristos struct am_specdata3 {
174*31bdb48aSchristos   u_int specdata1;
175*31bdb48aSchristos   u_int specdata2;
176*31bdb48aSchristos };
177*31bdb48aSchristos typedef struct am_specdata3 am_specdata3;
178*31bdb48aSchristos 
179*31bdb48aSchristos struct am_nfstime3 {
180*31bdb48aSchristos   u_int seconds;
181*31bdb48aSchristos   u_int nseconds;
182*31bdb48aSchristos };
183*31bdb48aSchristos typedef struct am_nfstime3 am_nfstime3;
184*31bdb48aSchristos 
185*31bdb48aSchristos struct am_fattr3 {
186*31bdb48aSchristos   am_ftype3 type;
187*31bdb48aSchristos   am_mode3 mode;
188*31bdb48aSchristos   u_int nlink;
189*31bdb48aSchristos   am_uid3 uid;
190*31bdb48aSchristos   am_gid3 gid;
191*31bdb48aSchristos   am_size3 size;
192*31bdb48aSchristos   am_size3 used;
193*31bdb48aSchristos   am_specdata3 rdev;
194*31bdb48aSchristos   uint64 fsid;
195*31bdb48aSchristos   am_fileid3 fileid;
196*31bdb48aSchristos   am_nfstime3 atime;
197*31bdb48aSchristos   am_nfstime3 mtime;
198*31bdb48aSchristos   am_nfstime3 ctime;
199*31bdb48aSchristos };
200*31bdb48aSchristos typedef struct am_fattr3 am_fattr3;
201*31bdb48aSchristos 
202*31bdb48aSchristos struct am_post_op_attr {
203*31bdb48aSchristos   bool_t attributes_follow;
204*31bdb48aSchristos   union {
205*31bdb48aSchristos     am_fattr3 attributes;
206*31bdb48aSchristos   } am_post_op_attr_u;
207*31bdb48aSchristos };
208*31bdb48aSchristos typedef struct am_post_op_attr am_post_op_attr;
209*31bdb48aSchristos 
210*31bdb48aSchristos enum am_stable_how {
211*31bdb48aSchristos   AM_UNSTABLE = 0,
212*31bdb48aSchristos   AM_DATA_SYNC = 1,
213*31bdb48aSchristos   AM_FILE_SYNC = 2,
214*31bdb48aSchristos };
215*31bdb48aSchristos typedef enum am_stable_how am_stable_how;
216*31bdb48aSchristos 
217*31bdb48aSchristos typedef uint64 am_offset3;
218*31bdb48aSchristos 
219*31bdb48aSchristos typedef u_int am_count3;
220*31bdb48aSchristos 
221*31bdb48aSchristos struct am_wcc_attr {
222*31bdb48aSchristos   am_size3 size;
223*31bdb48aSchristos   am_nfstime3 mtime;
224*31bdb48aSchristos   am_nfstime3 ctime;
225*31bdb48aSchristos };
226*31bdb48aSchristos typedef struct am_wcc_attr am_wcc_attr;
227*31bdb48aSchristos 
228*31bdb48aSchristos struct am_pre_op_attr {
229*31bdb48aSchristos   bool_t attributes_follow;
230*31bdb48aSchristos   union {
231*31bdb48aSchristos     am_wcc_attr attributes;
232*31bdb48aSchristos   } am_pre_op_attr_u;
233*31bdb48aSchristos };
234*31bdb48aSchristos typedef struct am_pre_op_attr am_pre_op_attr;
235*31bdb48aSchristos 
236*31bdb48aSchristos struct am_wcc_data {
237*31bdb48aSchristos   am_pre_op_attr before;
238*31bdb48aSchristos   am_post_op_attr after;
239*31bdb48aSchristos };
240*31bdb48aSchristos typedef struct am_wcc_data am_wcc_data;
241*31bdb48aSchristos 
242*31bdb48aSchristos struct am_WRITE3args {
243*31bdb48aSchristos   am_nfs_fh3 file;
244*31bdb48aSchristos   am_offset3 offset;
245*31bdb48aSchristos   am_count3 count;
246*31bdb48aSchristos   am_stable_how stable;
247*31bdb48aSchristos   struct {
248*31bdb48aSchristos     u_int data_len;
249*31bdb48aSchristos     char *data_val;
250*31bdb48aSchristos   } data;
251*31bdb48aSchristos };
252*31bdb48aSchristos typedef struct am_WRITE3args am_WRITE3args;
253*31bdb48aSchristos 
254*31bdb48aSchristos typedef char am_writeverf3[AM_NFS3_WRITEVERFSIZE];
255*31bdb48aSchristos 
256*31bdb48aSchristos struct am_WRITE3resok {
257*31bdb48aSchristos   am_wcc_data file_wcc;
258*31bdb48aSchristos   am_count3 count;
259*31bdb48aSchristos   am_stable_how committed;
260*31bdb48aSchristos   am_writeverf3 verf;
261*31bdb48aSchristos };
262*31bdb48aSchristos typedef struct am_WRITE3resok am_WRITE3resok;
263*31bdb48aSchristos 
264*31bdb48aSchristos struct am_WRITE3resfail {
265*31bdb48aSchristos   am_wcc_data file_wcc;
266*31bdb48aSchristos };
267*31bdb48aSchristos typedef struct am_WRITE3resfail am_WRITE3resfail;
268*31bdb48aSchristos 
269*31bdb48aSchristos struct am_WRITE3res {
270*31bdb48aSchristos   am_nfsstat3 status;
271*31bdb48aSchristos   union {
272*31bdb48aSchristos     am_WRITE3resok ok;
273*31bdb48aSchristos     am_WRITE3resfail fail;
274*31bdb48aSchristos   } res_u;
275*31bdb48aSchristos };
276*31bdb48aSchristos typedef struct am_WRITE3res am_WRITE3res;
277*31bdb48aSchristos 
278a53f50b9Schristos struct am_LOOKUP3args {
279a53f50b9Schristos   am_diropargs3 what;
280a53f50b9Schristos };
281a53f50b9Schristos typedef struct am_LOOKUP3args am_LOOKUP3args;
282a53f50b9Schristos 
283a53f50b9Schristos struct am_LOOKUP3resok {
284a53f50b9Schristos   am_nfs_fh3 object;
285*31bdb48aSchristos   am_post_op_attr obj_attributes;
286*31bdb48aSchristos   am_post_op_attr dir_attributes;
287a53f50b9Schristos };
288a53f50b9Schristos typedef struct am_LOOKUP3resok am_LOOKUP3resok;
289a53f50b9Schristos 
290a53f50b9Schristos struct am_LOOKUP3resfail {
291*31bdb48aSchristos   am_post_op_attr dir_attributes;
292a53f50b9Schristos };
293a53f50b9Schristos typedef struct am_LOOKUP3resfail am_LOOKUP3resfail;
294a53f50b9Schristos 
295a53f50b9Schristos struct am_LOOKUP3res {
296a53f50b9Schristos   am_nfsstat3 status;
297a53f50b9Schristos   union {
298a53f50b9Schristos     am_LOOKUP3resok ok;
299a53f50b9Schristos     am_LOOKUP3resfail fail;
300a53f50b9Schristos   } res_u;
301a53f50b9Schristos };
302a53f50b9Schristos typedef struct am_LOOKUP3res am_LOOKUP3res;
303*31bdb48aSchristos 
304*31bdb48aSchristos struct am_COMMIT3args {
305*31bdb48aSchristos   am_nfs_fh3 file;
306*31bdb48aSchristos   am_offset3 offset;
307*31bdb48aSchristos   am_count3 count;
308*31bdb48aSchristos };
309*31bdb48aSchristos typedef struct am_COMMIT3args am_COMMIT3args;
310*31bdb48aSchristos 
311*31bdb48aSchristos struct am_COMMIT3resok {
312*31bdb48aSchristos   am_wcc_data file_wcc;
313*31bdb48aSchristos   am_writeverf3 verf;
314*31bdb48aSchristos };
315*31bdb48aSchristos typedef struct am_COMMIT3resok am_COMMIT3resok;
316*31bdb48aSchristos 
317*31bdb48aSchristos struct am_COMMIT3resfail {
318*31bdb48aSchristos   am_wcc_data file_wcc;
319*31bdb48aSchristos };
320*31bdb48aSchristos typedef struct am_COMMIT3resfail am_COMMIT3resfail;
321*31bdb48aSchristos 
322*31bdb48aSchristos struct am_COMMIT3res {
323*31bdb48aSchristos   am_nfsstat3 status;
324*31bdb48aSchristos   union {
325*31bdb48aSchristos     am_COMMIT3resok ok;
326*31bdb48aSchristos     am_COMMIT3resfail fail;
327*31bdb48aSchristos   } res_u;
328*31bdb48aSchristos };
329*31bdb48aSchristos typedef struct am_COMMIT3res am_COMMIT3res;
330*31bdb48aSchristos 
331*31bdb48aSchristos struct am_ACCESS3args {
332*31bdb48aSchristos   am_nfs_fh3 object;
333*31bdb48aSchristos   u_int access;
334*31bdb48aSchristos };
335*31bdb48aSchristos typedef struct am_ACCESS3args am_ACCESS3args;
336*31bdb48aSchristos 
337*31bdb48aSchristos struct am_ACCESS3resok {
338*31bdb48aSchristos   am_post_op_attr obj_attributes;
339*31bdb48aSchristos   u_int access;
340*31bdb48aSchristos };
341*31bdb48aSchristos typedef struct am_ACCESS3resok am_ACCESS3resok;
342*31bdb48aSchristos 
343*31bdb48aSchristos struct am_ACCESS3resfail {
344*31bdb48aSchristos   am_post_op_attr obj_attributes;
345*31bdb48aSchristos };
346*31bdb48aSchristos typedef struct am_ACCESS3resfail am_ACCESS3resfail;
347*31bdb48aSchristos 
348*31bdb48aSchristos struct am_ACCESS3res {
349*31bdb48aSchristos   am_nfsstat3 status;
350*31bdb48aSchristos   union {
351*31bdb48aSchristos     am_ACCESS3resok ok;
352*31bdb48aSchristos     am_ACCESS3resfail fail;
353*31bdb48aSchristos   } res_u;
354*31bdb48aSchristos };
355*31bdb48aSchristos typedef struct am_ACCESS3res am_ACCESS3res;
356*31bdb48aSchristos 
357*31bdb48aSchristos struct am_GETATTR3args {
358*31bdb48aSchristos   am_nfs_fh3 object;
359*31bdb48aSchristos };
360*31bdb48aSchristos typedef struct am_GETATTR3args am_GETATTR3args;
361*31bdb48aSchristos 
362*31bdb48aSchristos struct am_GETATTR3resok {
363*31bdb48aSchristos   am_fattr3 obj_attributes;
364*31bdb48aSchristos };
365*31bdb48aSchristos typedef struct am_GETATTR3resok am_GETATTR3resok;
366*31bdb48aSchristos 
367*31bdb48aSchristos struct am_GETATTR3res {
368*31bdb48aSchristos   am_nfsstat3 status;
369*31bdb48aSchristos   union {
370*31bdb48aSchristos     am_GETATTR3resok ok;
371*31bdb48aSchristos   } res_u;
372*31bdb48aSchristos };
373*31bdb48aSchristos typedef struct am_GETATTR3res am_GETATTR3res;
374*31bdb48aSchristos 
375*31bdb48aSchristos enum am_time_how {
376*31bdb48aSchristos   AM_DONT_CHANGE = 0,
377*31bdb48aSchristos   AM_SET_TO_SERVER_TIME = 1,
378*31bdb48aSchristos   AM_SET_TO_CLIENT_TIME = 2,
379*31bdb48aSchristos };
380*31bdb48aSchristos typedef enum am_time_how am_time_how;
381*31bdb48aSchristos 
382*31bdb48aSchristos struct am_set_mode3 {
383*31bdb48aSchristos   bool_t set_it;
384*31bdb48aSchristos   union {
385*31bdb48aSchristos     am_mode3 mode;
386*31bdb48aSchristos   } am_set_mode3_u;
387*31bdb48aSchristos };
388*31bdb48aSchristos typedef struct am_set_mode3 am_set_mode3;
389*31bdb48aSchristos 
390*31bdb48aSchristos struct am_set_uid3 {
391*31bdb48aSchristos   bool_t set_it;
392*31bdb48aSchristos   union {
393*31bdb48aSchristos     am_uid3 uid;
394*31bdb48aSchristos   } am_set_uid3_u;
395*31bdb48aSchristos };
396*31bdb48aSchristos typedef struct am_set_uid3 am_set_uid3;
397*31bdb48aSchristos 
398*31bdb48aSchristos struct am_set_gid3 {
399*31bdb48aSchristos   bool_t set_it;
400*31bdb48aSchristos   union {
401*31bdb48aSchristos     am_gid3 gid;
402*31bdb48aSchristos   } am_set_gid3_u;
403*31bdb48aSchristos };
404*31bdb48aSchristos typedef struct am_set_gid3 am_set_gid3;
405*31bdb48aSchristos 
406*31bdb48aSchristos struct am_set_size3 {
407*31bdb48aSchristos   bool_t set_it;
408*31bdb48aSchristos   union {
409*31bdb48aSchristos     am_size3 size;
410*31bdb48aSchristos   } am_set_size3_u;
411*31bdb48aSchristos };
412*31bdb48aSchristos typedef struct am_set_size3 am_set_size3;
413*31bdb48aSchristos 
414*31bdb48aSchristos struct am_set_atime {
415*31bdb48aSchristos   am_time_how set_it;
416*31bdb48aSchristos   union {
417*31bdb48aSchristos     am_nfstime3 atime;
418*31bdb48aSchristos   } am_set_atime_u;
419*31bdb48aSchristos };
420*31bdb48aSchristos typedef struct am_set_atime am_set_atime;
421*31bdb48aSchristos 
422*31bdb48aSchristos struct am_set_mtime {
423*31bdb48aSchristos   am_time_how set_it;
424*31bdb48aSchristos   union {
425*31bdb48aSchristos     am_nfstime3 mtime;
426*31bdb48aSchristos   } am_set_mtime_u;
427*31bdb48aSchristos };
428*31bdb48aSchristos typedef struct am_set_mtime am_set_mtime;
429*31bdb48aSchristos 
430*31bdb48aSchristos struct am_sattr3 {
431*31bdb48aSchristos   am_set_mode3 mode;
432*31bdb48aSchristos   am_set_uid3 uid;
433*31bdb48aSchristos   am_set_gid3 gid;
434*31bdb48aSchristos   am_set_size3 size;
435*31bdb48aSchristos   am_set_atime atime;
436*31bdb48aSchristos   am_set_mtime mtime;
437*31bdb48aSchristos };
438*31bdb48aSchristos typedef struct am_sattr3 am_sattr3;
439*31bdb48aSchristos 
440*31bdb48aSchristos enum am_createmode3 {
441*31bdb48aSchristos   AM_UNCHECKED = 0,
442*31bdb48aSchristos   AM_GUARDED = 1,
443*31bdb48aSchristos   AM_EXCLUSIVE = 2,
444*31bdb48aSchristos };
445*31bdb48aSchristos typedef enum am_createmode3 am_createmode3;
446*31bdb48aSchristos 
447*31bdb48aSchristos typedef char am_createverf3[AM_NFS3_CREATEVERFSIZE];
448*31bdb48aSchristos 
449*31bdb48aSchristos struct am_createhow3 {
450*31bdb48aSchristos   am_createmode3 mode;
451*31bdb48aSchristos   union {
452*31bdb48aSchristos     am_sattr3 obj_attributes;
453*31bdb48aSchristos     am_sattr3 g_obj_attributes;
454*31bdb48aSchristos     am_createverf3 verf;
455*31bdb48aSchristos   } am_createhow3_u;
456*31bdb48aSchristos };
457*31bdb48aSchristos typedef struct am_createhow3 am_createhow3;
458*31bdb48aSchristos 
459*31bdb48aSchristos struct am_CREATE3args {
460*31bdb48aSchristos   am_diropargs3 where;
461*31bdb48aSchristos   am_createhow3 how;
462*31bdb48aSchristos };
463*31bdb48aSchristos typedef struct am_CREATE3args am_CREATE3args;
464*31bdb48aSchristos 
465*31bdb48aSchristos struct am_post_op_fh3 {
466*31bdb48aSchristos   bool_t handle_follows;
467*31bdb48aSchristos   union {
468*31bdb48aSchristos     am_nfs_fh3 handle;
469*31bdb48aSchristos   } am_post_op_fh3_u;
470*31bdb48aSchristos };
471*31bdb48aSchristos typedef struct am_post_op_fh3 am_post_op_fh3;
472*31bdb48aSchristos 
473*31bdb48aSchristos struct am_CREATE3resok {
474*31bdb48aSchristos   am_post_op_fh3 obj;
475*31bdb48aSchristos   am_post_op_attr obj_attributes;
476*31bdb48aSchristos   am_wcc_data dir_wcc;
477*31bdb48aSchristos };
478*31bdb48aSchristos typedef struct am_CREATE3resok am_CREATE3resok;
479*31bdb48aSchristos 
480*31bdb48aSchristos struct am_CREATE3resfail {
481*31bdb48aSchristos   am_wcc_data dir_wcc;
482*31bdb48aSchristos };
483*31bdb48aSchristos typedef struct am_CREATE3resfail am_CREATE3resfail;
484*31bdb48aSchristos 
485*31bdb48aSchristos struct am_CREATE3res {
486*31bdb48aSchristos   am_nfsstat3 status;
487*31bdb48aSchristos   union {
488*31bdb48aSchristos     am_CREATE3resok ok;
489*31bdb48aSchristos     am_CREATE3resfail fail;
490*31bdb48aSchristos   } res_u;
491*31bdb48aSchristos };
492*31bdb48aSchristos typedef struct am_CREATE3res am_CREATE3res;
493*31bdb48aSchristos 
494*31bdb48aSchristos struct am_REMOVE3args {
495*31bdb48aSchristos   am_diropargs3 object;
496*31bdb48aSchristos };
497*31bdb48aSchristos typedef struct am_REMOVE3args am_REMOVE3args;
498*31bdb48aSchristos 
499*31bdb48aSchristos struct am_REMOVE3resok {
500*31bdb48aSchristos   am_wcc_data dir_wcc;
501*31bdb48aSchristos };
502*31bdb48aSchristos typedef struct am_REMOVE3resok am_REMOVE3resok;
503*31bdb48aSchristos 
504*31bdb48aSchristos struct am_REMOVE3resfail {
505*31bdb48aSchristos   am_wcc_data dir_wcc;
506*31bdb48aSchristos };
507*31bdb48aSchristos typedef struct am_REMOVE3resfail am_REMOVE3resfail;
508*31bdb48aSchristos 
509*31bdb48aSchristos struct am_REMOVE3res {
510*31bdb48aSchristos   am_nfsstat3 status;
511*31bdb48aSchristos   union {
512*31bdb48aSchristos     am_REMOVE3resok ok;
513*31bdb48aSchristos     am_REMOVE3resfail fail;
514*31bdb48aSchristos   } res_u;
515*31bdb48aSchristos };
516*31bdb48aSchristos typedef struct am_REMOVE3res am_REMOVE3res;
517*31bdb48aSchristos 
518*31bdb48aSchristos struct am_READ3args {
519*31bdb48aSchristos   am_nfs_fh3 file;
520*31bdb48aSchristos   am_offset3 offset;
521*31bdb48aSchristos   am_count3 count;
522*31bdb48aSchristos };
523*31bdb48aSchristos typedef struct am_READ3args am_READ3args;
524*31bdb48aSchristos 
525*31bdb48aSchristos struct am_READ3resok {
526*31bdb48aSchristos   am_post_op_attr file_attributes;
527*31bdb48aSchristos   am_count3 count;
528*31bdb48aSchristos   bool_t eof;
529*31bdb48aSchristos   struct {
530*31bdb48aSchristos     u_int data_len;
531*31bdb48aSchristos     char *data_val;
532*31bdb48aSchristos   } data;
533*31bdb48aSchristos };
534*31bdb48aSchristos typedef struct am_READ3resok am_READ3resok;
535*31bdb48aSchristos 
536*31bdb48aSchristos struct am_READ3resfail {
537*31bdb48aSchristos   am_post_op_attr file_attributes;
538*31bdb48aSchristos };
539*31bdb48aSchristos typedef struct am_READ3resfail am_READ3resfail;
540*31bdb48aSchristos 
541*31bdb48aSchristos struct am_READ3res {
542*31bdb48aSchristos   am_nfsstat3 status;
543*31bdb48aSchristos   union {
544*31bdb48aSchristos     am_READ3resok ok;
545*31bdb48aSchristos     am_READ3resfail fail;
546*31bdb48aSchristos   } res_u;
547*31bdb48aSchristos };
548*31bdb48aSchristos typedef struct am_READ3res am_READ3res;
549*31bdb48aSchristos 
550*31bdb48aSchristos struct am_FSINFO3args {
551*31bdb48aSchristos   am_nfs_fh3 fsroot;
552*31bdb48aSchristos };
553*31bdb48aSchristos typedef struct am_FSINFO3args am_FSINFO3args;
554*31bdb48aSchristos 
555*31bdb48aSchristos struct am_FSINFO3resok {
556*31bdb48aSchristos   am_post_op_attr obj_attributes;
557*31bdb48aSchristos   u_int rtmax;
558*31bdb48aSchristos   u_int rtpref;
559*31bdb48aSchristos   u_int rtmult;
560*31bdb48aSchristos   u_int wtmax;
561*31bdb48aSchristos   u_int wtpref;
562*31bdb48aSchristos   u_int wtmult;
563*31bdb48aSchristos   u_int dtpref;
564*31bdb48aSchristos   am_size3 maxfilesize;
565*31bdb48aSchristos   am_nfstime3 time_delta;
566*31bdb48aSchristos   u_int properties;
567*31bdb48aSchristos };
568*31bdb48aSchristos typedef struct am_FSINFO3resok am_FSINFO3resok;
569*31bdb48aSchristos 
570*31bdb48aSchristos struct am_FSINFO3resfail {
571*31bdb48aSchristos   am_post_op_attr obj_attributes;
572*31bdb48aSchristos };
573*31bdb48aSchristos typedef struct am_FSINFO3resfail am_FSINFO3resfail;
574*31bdb48aSchristos 
575*31bdb48aSchristos struct am_FSINFO3res {
576*31bdb48aSchristos   am_nfsstat3 status;
577*31bdb48aSchristos   union {
578*31bdb48aSchristos     am_FSINFO3resok ok;
579*31bdb48aSchristos     am_FSINFO3resfail fail;
580*31bdb48aSchristos   } res_u;
581*31bdb48aSchristos };
582*31bdb48aSchristos typedef struct am_FSINFO3res am_FSINFO3res;
583*31bdb48aSchristos 
584*31bdb48aSchristos struct am_FSSTAT3args {
585*31bdb48aSchristos   am_nfs_fh3 fsroot;
586*31bdb48aSchristos };
587*31bdb48aSchristos typedef struct am_FSSTAT3args am_FSSTAT3args;
588*31bdb48aSchristos 
589*31bdb48aSchristos struct am_FSSTAT3resok {
590*31bdb48aSchristos   am_post_op_attr obj_attributes;
591*31bdb48aSchristos   am_size3 tbytes;
592*31bdb48aSchristos   am_size3 fbytes;
593*31bdb48aSchristos   am_size3 abytes;
594*31bdb48aSchristos   am_size3 tfiles;
595*31bdb48aSchristos   am_size3 ffiles;
596*31bdb48aSchristos   am_size3 afiles;
597*31bdb48aSchristos   u_int invarsec;
598*31bdb48aSchristos };
599*31bdb48aSchristos typedef struct am_FSSTAT3resok am_FSSTAT3resok;
600*31bdb48aSchristos 
601*31bdb48aSchristos struct am_FSSTAT3resfail {
602*31bdb48aSchristos   am_post_op_attr obj_attributes;
603*31bdb48aSchristos };
604*31bdb48aSchristos typedef struct am_FSSTAT3resfail am_FSSTAT3resfail;
605*31bdb48aSchristos 
606*31bdb48aSchristos struct am_FSSTAT3res {
607*31bdb48aSchristos   am_nfsstat3 status;
608*31bdb48aSchristos   union {
609*31bdb48aSchristos     am_FSSTAT3resok ok;
610*31bdb48aSchristos     am_FSSTAT3resfail fail;
611*31bdb48aSchristos   } res_u;
612*31bdb48aSchristos };
613*31bdb48aSchristos typedef struct am_FSSTAT3res am_FSSTAT3res;
614*31bdb48aSchristos 
615*31bdb48aSchristos struct am_PATHCONF3args {
616*31bdb48aSchristos   am_nfs_fh3 object;
617*31bdb48aSchristos };
618*31bdb48aSchristos typedef struct am_PATHCONF3args am_PATHCONF3args;
619*31bdb48aSchristos 
620*31bdb48aSchristos struct am_PATHCONF3resok {
621*31bdb48aSchristos   am_post_op_attr obj_attributes;
622*31bdb48aSchristos   u_int linkmax;
623*31bdb48aSchristos   u_int name_max;
624*31bdb48aSchristos   bool_t no_trunc;
625*31bdb48aSchristos   bool_t chown_restricted;
626*31bdb48aSchristos   bool_t case_insensitive;
627*31bdb48aSchristos   bool_t case_preserving;
628*31bdb48aSchristos };
629*31bdb48aSchristos typedef struct am_PATHCONF3resok am_PATHCONF3resok;
630*31bdb48aSchristos 
631*31bdb48aSchristos struct am_PATHCONF3resfail {
632*31bdb48aSchristos   am_post_op_attr obj_attributes;
633*31bdb48aSchristos };
634*31bdb48aSchristos typedef struct am_PATHCONF3resfail am_PATHCONF3resfail;
635*31bdb48aSchristos 
636*31bdb48aSchristos struct am_PATHCONF3res {
637*31bdb48aSchristos   am_nfsstat3 status;
638*31bdb48aSchristos   union {
639*31bdb48aSchristos     am_PATHCONF3resok ok;
640*31bdb48aSchristos     am_PATHCONF3resfail fail;
641*31bdb48aSchristos   } res_u;
642*31bdb48aSchristos };
643*31bdb48aSchristos typedef struct am_PATHCONF3res am_PATHCONF3res;
644*31bdb48aSchristos 
645*31bdb48aSchristos typedef char *am_nfspath3;
646*31bdb48aSchristos 
647*31bdb48aSchristos struct am_symlinkdata3 {
648*31bdb48aSchristos   am_sattr3 symlink_attributes;
649*31bdb48aSchristos   am_nfspath3 symlink_data;
650*31bdb48aSchristos };
651*31bdb48aSchristos typedef struct am_symlinkdata3 am_symlinkdata3;
652*31bdb48aSchristos 
653*31bdb48aSchristos struct am_SYMLINK3args {
654*31bdb48aSchristos   am_diropargs3 where;
655*31bdb48aSchristos   am_symlinkdata3 symlink;
656*31bdb48aSchristos };
657*31bdb48aSchristos typedef struct am_SYMLINK3args am_SYMLINK3args;
658*31bdb48aSchristos 
659*31bdb48aSchristos struct am_SYMLINK3resok {
660*31bdb48aSchristos   am_post_op_fh3 obj;
661*31bdb48aSchristos   am_post_op_attr obj_attributes;
662*31bdb48aSchristos   am_wcc_data dir_wcc;
663*31bdb48aSchristos };
664*31bdb48aSchristos typedef struct am_SYMLINK3resok am_SYMLINK3resok;
665*31bdb48aSchristos 
666*31bdb48aSchristos struct am_SYMLINK3resfail {
667*31bdb48aSchristos   am_wcc_data dir_wcc;
668*31bdb48aSchristos };
669*31bdb48aSchristos typedef struct am_SYMLINK3resfail am_SYMLINK3resfail;
670*31bdb48aSchristos 
671*31bdb48aSchristos struct am_SYMLINK3res {
672*31bdb48aSchristos   am_nfsstat3 status;
673*31bdb48aSchristos   union {
674*31bdb48aSchristos     am_SYMLINK3resok ok;
675*31bdb48aSchristos     am_SYMLINK3resfail fail;
676*31bdb48aSchristos   } res_u;
677*31bdb48aSchristos };
678*31bdb48aSchristos typedef struct am_SYMLINK3res am_SYMLINK3res;
679*31bdb48aSchristos 
680*31bdb48aSchristos struct am_READLINK3args {
681*31bdb48aSchristos   am_nfs_fh3 symlink;
682*31bdb48aSchristos };
683*31bdb48aSchristos typedef struct am_READLINK3args am_READLINK3args;
684*31bdb48aSchristos 
685*31bdb48aSchristos struct am_READLINK3resok {
686*31bdb48aSchristos   am_post_op_attr symlink_attributes;
687*31bdb48aSchristos   am_nfspath3 data;
688*31bdb48aSchristos };
689*31bdb48aSchristos typedef struct am_READLINK3resok am_READLINK3resok;
690*31bdb48aSchristos 
691*31bdb48aSchristos struct am_READLINK3resfail {
692*31bdb48aSchristos   am_post_op_attr symlink_attributes;
693*31bdb48aSchristos };
694*31bdb48aSchristos typedef struct am_READLINK3resfail am_READLINK3resfail;
695*31bdb48aSchristos 
696*31bdb48aSchristos struct am_READLINK3res {
697*31bdb48aSchristos   am_nfsstat3 status;
698*31bdb48aSchristos   union {
699*31bdb48aSchristos     am_READLINK3resok ok;
700*31bdb48aSchristos     am_READLINK3resfail fail;
701*31bdb48aSchristos   } res_u;
702*31bdb48aSchristos };
703*31bdb48aSchristos typedef struct am_READLINK3res am_READLINK3res;
704*31bdb48aSchristos 
705*31bdb48aSchristos struct am_devicedata3 {
706*31bdb48aSchristos   am_sattr3 dev_attributes;
707*31bdb48aSchristos   am_specdata3 spec;
708*31bdb48aSchristos };
709*31bdb48aSchristos typedef struct am_devicedata3 am_devicedata3;
710*31bdb48aSchristos 
711*31bdb48aSchristos struct am_mknoddata3 {
712*31bdb48aSchristos   am_ftype3 type;
713*31bdb48aSchristos   union {
714*31bdb48aSchristos     am_devicedata3 chr_device;
715*31bdb48aSchristos     am_devicedata3 blk_device;
716*31bdb48aSchristos     am_sattr3 sock_attributes;
717*31bdb48aSchristos     am_sattr3 pipe_attributes;
718*31bdb48aSchristos   } am_mknoddata3_u;
719*31bdb48aSchristos };
720*31bdb48aSchristos typedef struct am_mknoddata3 am_mknoddata3;
721*31bdb48aSchristos 
722*31bdb48aSchristos struct am_MKNOD3args {
723*31bdb48aSchristos   am_diropargs3 where;
724*31bdb48aSchristos   am_mknoddata3 what;
725*31bdb48aSchristos };
726*31bdb48aSchristos typedef struct am_MKNOD3args am_MKNOD3args;
727*31bdb48aSchristos 
728*31bdb48aSchristos struct am_MKNOD3resok {
729*31bdb48aSchristos   am_post_op_fh3 obj;
730*31bdb48aSchristos   am_post_op_attr obj_attributes;
731*31bdb48aSchristos   am_wcc_data dir_wcc;
732*31bdb48aSchristos };
733*31bdb48aSchristos typedef struct am_MKNOD3resok am_MKNOD3resok;
734*31bdb48aSchristos 
735*31bdb48aSchristos struct am_MKNOD3resfail {
736*31bdb48aSchristos   am_wcc_data dir_wcc;
737*31bdb48aSchristos };
738*31bdb48aSchristos typedef struct am_MKNOD3resfail am_MKNOD3resfail;
739*31bdb48aSchristos 
740*31bdb48aSchristos struct am_MKNOD3res {
741*31bdb48aSchristos   am_nfsstat3 status;
742*31bdb48aSchristos   union {
743*31bdb48aSchristos     am_MKNOD3resok ok;
744*31bdb48aSchristos     am_MKNOD3resfail fail;
745*31bdb48aSchristos   } res_u;
746*31bdb48aSchristos };
747*31bdb48aSchristos typedef struct am_MKNOD3res am_MKNOD3res;
748*31bdb48aSchristos 
749*31bdb48aSchristos struct am_MKDIR3args {
750*31bdb48aSchristos   am_diropargs3 where;
751*31bdb48aSchristos   am_sattr3 attributes;
752*31bdb48aSchristos };
753*31bdb48aSchristos typedef struct am_MKDIR3args am_MKDIR3args;
754*31bdb48aSchristos 
755*31bdb48aSchristos struct am_MKDIR3resok {
756*31bdb48aSchristos   am_post_op_fh3 obj;
757*31bdb48aSchristos   am_post_op_attr obj_attributes;
758*31bdb48aSchristos   am_wcc_data dir_wcc;
759*31bdb48aSchristos };
760*31bdb48aSchristos typedef struct am_MKDIR3resok am_MKDIR3resok;
761*31bdb48aSchristos 
762*31bdb48aSchristos struct am_MKDIR3resfail {
763*31bdb48aSchristos   am_wcc_data dir_wcc;
764*31bdb48aSchristos };
765*31bdb48aSchristos typedef struct am_MKDIR3resfail am_MKDIR3resfail;
766*31bdb48aSchristos 
767*31bdb48aSchristos struct am_MKDIR3res {
768*31bdb48aSchristos   am_nfsstat3 status;
769*31bdb48aSchristos   union {
770*31bdb48aSchristos     am_MKDIR3resok ok;
771*31bdb48aSchristos     am_MKDIR3resfail fail;
772*31bdb48aSchristos   } res_u;
773*31bdb48aSchristos };
774*31bdb48aSchristos typedef struct am_MKDIR3res am_MKDIR3res;
775*31bdb48aSchristos 
776*31bdb48aSchristos struct am_RMDIR3args {
777*31bdb48aSchristos   am_diropargs3 object;
778*31bdb48aSchristos };
779*31bdb48aSchristos typedef struct am_RMDIR3args am_RMDIR3args;
780*31bdb48aSchristos 
781*31bdb48aSchristos struct am_RMDIR3resok {
782*31bdb48aSchristos   am_wcc_data dir_wcc;
783*31bdb48aSchristos };
784*31bdb48aSchristos typedef struct am_RMDIR3resok am_RMDIR3resok;
785*31bdb48aSchristos 
786*31bdb48aSchristos struct am_RMDIR3resfail {
787*31bdb48aSchristos   am_wcc_data dir_wcc;
788*31bdb48aSchristos };
789*31bdb48aSchristos typedef struct am_RMDIR3resfail am_RMDIR3resfail;
790*31bdb48aSchristos 
791*31bdb48aSchristos struct am_RMDIR3res {
792*31bdb48aSchristos   am_nfsstat3 status;
793*31bdb48aSchristos   union {
794*31bdb48aSchristos     am_RMDIR3resok ok;
795*31bdb48aSchristos     am_RMDIR3resfail fail;
796*31bdb48aSchristos   } res_u;
797*31bdb48aSchristos };
798*31bdb48aSchristos typedef struct am_RMDIR3res am_RMDIR3res;
799*31bdb48aSchristos 
800*31bdb48aSchristos struct am_RENAME3args {
801*31bdb48aSchristos   am_diropargs3 from;
802*31bdb48aSchristos   am_diropargs3 to;
803*31bdb48aSchristos };
804*31bdb48aSchristos typedef struct am_RENAME3args am_RENAME3args;
805*31bdb48aSchristos 
806*31bdb48aSchristos struct am_RENAME3resok {
807*31bdb48aSchristos   am_wcc_data fromdir_wcc;
808*31bdb48aSchristos   am_wcc_data todir_wcc;
809*31bdb48aSchristos };
810*31bdb48aSchristos typedef struct am_RENAME3resok am_RENAME3resok;
811*31bdb48aSchristos 
812*31bdb48aSchristos struct am_RENAME3resfail {
813*31bdb48aSchristos   am_wcc_data fromdir_wcc;
814*31bdb48aSchristos   am_wcc_data todir_wcc;
815*31bdb48aSchristos };
816*31bdb48aSchristos typedef struct am_RENAME3resfail am_RENAME3resfail;
817*31bdb48aSchristos 
818*31bdb48aSchristos struct am_RENAME3res {
819*31bdb48aSchristos   am_nfsstat3 status;
820*31bdb48aSchristos   union {
821*31bdb48aSchristos     am_RENAME3resok ok;
822*31bdb48aSchristos     am_RENAME3resfail fail;
823*31bdb48aSchristos   } res_u;
824*31bdb48aSchristos };
825*31bdb48aSchristos typedef struct am_RENAME3res am_RENAME3res;
826*31bdb48aSchristos 
827*31bdb48aSchristos struct am_READDIRPLUS3args {
828*31bdb48aSchristos   am_nfs_fh3 dir;
829*31bdb48aSchristos   am_cookie3 cookie;
830*31bdb48aSchristos   am_cookieverf3 cookieverf;
831*31bdb48aSchristos   am_count3 dircount;
832*31bdb48aSchristos   am_count3 maxcount;
833*31bdb48aSchristos };
834*31bdb48aSchristos typedef struct am_READDIRPLUS3args am_READDIRPLUS3args;
835*31bdb48aSchristos 
836*31bdb48aSchristos struct am_entryplus3 {
837*31bdb48aSchristos   am_fileid3 fileid;
838*31bdb48aSchristos   am_filename3 name;
839*31bdb48aSchristos   am_cookie3 cookie;
840*31bdb48aSchristos   am_post_op_attr name_attributes;
841*31bdb48aSchristos   am_post_op_fh3 name_handle;
842*31bdb48aSchristos   struct am_entryplus3 *nextentry;
843*31bdb48aSchristos };
844*31bdb48aSchristos typedef struct am_entryplus3 am_entryplus3;
845*31bdb48aSchristos 
846*31bdb48aSchristos struct am_dirlistplus3 {
847*31bdb48aSchristos   am_entryplus3 *entries;
848*31bdb48aSchristos   bool_t eof;
849*31bdb48aSchristos };
850*31bdb48aSchristos typedef struct am_dirlistplus3 am_dirlistplus3;
851*31bdb48aSchristos 
852*31bdb48aSchristos struct am_READDIRPLUS3resok {
853*31bdb48aSchristos   am_post_op_attr dir_attributes;
854*31bdb48aSchristos   am_cookieverf3 cookieverf;
855*31bdb48aSchristos   am_dirlistplus3 reply;
856*31bdb48aSchristos };
857*31bdb48aSchristos typedef struct am_READDIRPLUS3resok am_READDIRPLUS3resok;
858*31bdb48aSchristos 
859*31bdb48aSchristos struct am_READDIRPLUS3resfail {
860*31bdb48aSchristos   am_post_op_attr dir_attributes;
861*31bdb48aSchristos };
862*31bdb48aSchristos typedef struct am_READDIRPLUS3resfail am_READDIRPLUS3resfail;
863*31bdb48aSchristos 
864*31bdb48aSchristos struct am_READDIRPLUS3res {
865*31bdb48aSchristos   am_nfsstat3 status;
866*31bdb48aSchristos   union {
867*31bdb48aSchristos     am_READDIRPLUS3resok ok;
868*31bdb48aSchristos     am_READDIRPLUS3resfail fail;
869*31bdb48aSchristos   } res_u;
870*31bdb48aSchristos };
871*31bdb48aSchristos typedef struct am_READDIRPLUS3res am_READDIRPLUS3res;
872*31bdb48aSchristos 
873*31bdb48aSchristos struct am_READDIR3args {
874*31bdb48aSchristos   am_nfs_fh3 dir;
875*31bdb48aSchristos   am_cookie3 cookie;
876*31bdb48aSchristos   am_cookieverf3 cookieverf;
877*31bdb48aSchristos   am_count3 count;
878*31bdb48aSchristos };
879*31bdb48aSchristos typedef struct am_READDIR3args am_READDIR3args;
880*31bdb48aSchristos 
881*31bdb48aSchristos struct am_entry3 {
882*31bdb48aSchristos   am_fileid3 fileid;
883*31bdb48aSchristos   am_filename3 name;
884*31bdb48aSchristos   am_cookie3 cookie;
885*31bdb48aSchristos   struct am_entry3 *nextentry;
886*31bdb48aSchristos };
887*31bdb48aSchristos typedef struct am_entry3 am_entry3;
888*31bdb48aSchristos 
889*31bdb48aSchristos struct am_dirlist3 {
890*31bdb48aSchristos   am_entry3 *entries;
891*31bdb48aSchristos   bool_t eof;
892*31bdb48aSchristos };
893*31bdb48aSchristos typedef struct am_dirlist3 am_dirlist3;
894*31bdb48aSchristos 
895*31bdb48aSchristos struct am_READDIR3resok {
896*31bdb48aSchristos   am_post_op_attr dir_attributes;
897*31bdb48aSchristos   am_cookieverf3 cookieverf;
898*31bdb48aSchristos   am_dirlist3 reply;
899*31bdb48aSchristos };
900*31bdb48aSchristos typedef struct am_READDIR3resok am_READDIR3resok;
901*31bdb48aSchristos 
902*31bdb48aSchristos struct am_READDIR3resfail {
903*31bdb48aSchristos   am_post_op_attr dir_attributes;
904*31bdb48aSchristos };
905*31bdb48aSchristos typedef struct am_READDIR3resfail am_READDIR3resfail;
906*31bdb48aSchristos 
907*31bdb48aSchristos struct am_READDIR3res {
908*31bdb48aSchristos   am_nfsstat3 status;
909*31bdb48aSchristos   union {
910*31bdb48aSchristos     am_READDIR3resok ok;
911*31bdb48aSchristos     am_READDIR3resfail fail;
912*31bdb48aSchristos   } res_u;
913*31bdb48aSchristos };
914*31bdb48aSchristos typedef struct am_READDIR3res am_READDIR3res;
915*31bdb48aSchristos 
916*31bdb48aSchristos struct am_LINK3args {
917*31bdb48aSchristos   am_nfs_fh3 file;
918*31bdb48aSchristos   am_diropargs3 link;
919*31bdb48aSchristos };
920*31bdb48aSchristos typedef struct am_LINK3args am_LINK3args;
921*31bdb48aSchristos 
922*31bdb48aSchristos struct am_LINK3resok {
923*31bdb48aSchristos   am_post_op_attr file_attributes;
924*31bdb48aSchristos   am_wcc_data linkdir_wcc;
925*31bdb48aSchristos };
926*31bdb48aSchristos typedef struct am_LINK3resok am_LINK3resok;
927*31bdb48aSchristos 
928*31bdb48aSchristos struct am_LINK3resfail {
929*31bdb48aSchristos   am_post_op_attr file_attributes;
930*31bdb48aSchristos   am_wcc_data linkdir_wcc;
931*31bdb48aSchristos };
932*31bdb48aSchristos typedef struct am_LINK3resfail am_LINK3resfail;
933*31bdb48aSchristos 
934*31bdb48aSchristos struct am_LINK3res {
935*31bdb48aSchristos   am_nfsstat3 status;
936*31bdb48aSchristos   union {
937*31bdb48aSchristos     am_LINK3resok ok;
938*31bdb48aSchristos     am_LINK3resfail fail;
939*31bdb48aSchristos   } res_u;
940*31bdb48aSchristos };
941*31bdb48aSchristos typedef struct am_LINK3res am_LINK3res;
942*31bdb48aSchristos 
943*31bdb48aSchristos struct am_sattrguard3 {
944*31bdb48aSchristos   bool_t check;
945*31bdb48aSchristos   union {
946*31bdb48aSchristos     am_nfstime3 obj_ctime;
947*31bdb48aSchristos   } am_sattrguard3_u;
948*31bdb48aSchristos };
949*31bdb48aSchristos typedef struct am_sattrguard3 am_sattrguard3;
950*31bdb48aSchristos 
951*31bdb48aSchristos struct am_SETATTR3args {
952*31bdb48aSchristos   am_nfs_fh3 object;
953*31bdb48aSchristos   am_sattr3 new_attributes;
954*31bdb48aSchristos   am_sattrguard3 guard;
955*31bdb48aSchristos };
956*31bdb48aSchristos typedef struct am_SETATTR3args am_SETATTR3args;
957*31bdb48aSchristos 
958*31bdb48aSchristos struct am_SETATTR3resok {
959*31bdb48aSchristos   am_wcc_data obj_wcc;
960*31bdb48aSchristos };
961*31bdb48aSchristos typedef struct am_SETATTR3resok am_SETATTR3resok;
962*31bdb48aSchristos 
963*31bdb48aSchristos struct am_SETATTR3resfail {
964*31bdb48aSchristos   am_wcc_data obj_wcc;
965*31bdb48aSchristos };
966*31bdb48aSchristos typedef struct am_SETATTR3resfail am_SETATTR3resfail;
967*31bdb48aSchristos 
968*31bdb48aSchristos struct am_SETATTR3res {
969*31bdb48aSchristos   am_nfsstat3 status;
970*31bdb48aSchristos   union {
971*31bdb48aSchristos     am_SETATTR3resok ok;
972*31bdb48aSchristos     am_SETATTR3resfail fail;
973*31bdb48aSchristos   } res_u;
974*31bdb48aSchristos };
975*31bdb48aSchristos typedef struct am_SETATTR3res am_SETATTR3res;
976a53f50b9Schristos #endif /* HAVE_FS_NFS3 */
977a53f50b9Schristos 
978a53f50b9Schristos /*
979a53f50b9Schristos  * Multi-protocol NFS file handle
980a53f50b9Schristos  */
981a53f50b9Schristos union am_nfs_handle {
982a53f50b9Schristos 				/* placeholder for V4 file handle */
983a53f50b9Schristos #ifdef HAVE_FS_NFS3
984a53f50b9Schristos   am_nfs_fh3		v3;	/* NFS version 3 handle */
985a53f50b9Schristos #endif /* HAVE_FS_NFS3 */
986a53f50b9Schristos   am_nfs_fh		v2;	/* NFS version 2 handle */
987a53f50b9Schristos };
988a53f50b9Schristos typedef union am_nfs_handle am_nfs_handle_t;
989a53f50b9Schristos 
990a53f50b9Schristos 
991a53f50b9Schristos /*
992a53f50b9Schristos  * Definitions of all possible xdr functions that are otherwise
993a53f50b9Schristos  * not defined elsewhere.
994a53f50b9Schristos  */
995a53f50b9Schristos 
996a53f50b9Schristos #ifndef _AM_XDR_FUNC_H
997a53f50b9Schristos #define _AM_XDR_FUNC_H
998a53f50b9Schristos 
999a53f50b9Schristos #ifndef HAVE_XDR_ATTRSTAT
1000a53f50b9Schristos bool_t xdr_attrstat(XDR *xdrs, nfsattrstat *objp);
1001a53f50b9Schristos #endif /* not HAVE_XDR_ATTRSTAT */
1002a53f50b9Schristos #ifndef HAVE_XDR_CREATEARGS
1003a53f50b9Schristos bool_t xdr_createargs(XDR *xdrs, nfscreateargs *objp);
1004a53f50b9Schristos #endif /* not HAVE_XDR_CREATEARGS */
1005a53f50b9Schristos #ifndef HAVE_XDR_DIRLIST
1006a53f50b9Schristos bool_t xdr_dirlist(XDR *xdrs, nfsdirlist *objp);
1007a53f50b9Schristos #endif /* not HAVE_XDR_DIRLIST */
1008a53f50b9Schristos #ifndef HAVE_XDR_DIROPARGS
1009a53f50b9Schristos bool_t xdr_diropargs(XDR *xdrs, nfsdiropargs *objp);
1010a53f50b9Schristos #endif /* not HAVE_XDR_DIROPARGS */
1011a53f50b9Schristos #ifndef HAVE_XDR_DIROPOKRES
1012a53f50b9Schristos bool_t xdr_diropokres(XDR *xdrs, nfsdiropokres *objp);
1013a53f50b9Schristos #endif /* not HAVE_XDR_DIROPOKRES */
1014a53f50b9Schristos #ifndef HAVE_XDR_DIROPRES
1015a53f50b9Schristos bool_t xdr_diropres(XDR *xdrs, nfsdiropres *objp);
1016a53f50b9Schristos #endif /* not HAVE_XDR_DIROPRES */
1017a53f50b9Schristos #ifndef HAVE_XDR_DIRPATH
1018a53f50b9Schristos bool_t xdr_dirpath(XDR *xdrs, dirpath *objp);
1019a53f50b9Schristos #endif /* not HAVE_XDR_DIRPATH */
1020a53f50b9Schristos #ifndef HAVE_XDR_ENTRY
1021a53f50b9Schristos bool_t xdr_entry(XDR *xdrs, nfsentry *objp);
1022a53f50b9Schristos #endif /* not HAVE_XDR_ENTRY */
1023a53f50b9Schristos #ifndef HAVE_XDR_EXPORTNODE
1024a53f50b9Schristos bool_t xdr_exportnode(XDR *xdrs, exportnode *objp);
1025a53f50b9Schristos #endif /* not HAVE_XDR_EXPORTNODE */
1026a53f50b9Schristos #ifndef HAVE_XDR_EXPORTS
1027a53f50b9Schristos bool_t xdr_exports(XDR *xdrs, exports *objp);
1028a53f50b9Schristos #endif /* not HAVE_XDR_EXPORTS */
1029a53f50b9Schristos #ifndef HAVE_XDR_FATTR
1030a53f50b9Schristos bool_t xdr_fattr(XDR *xdrs, nfsfattr *objp);
1031a53f50b9Schristos #endif /* not HAVE_XDR_FATTR */
1032a53f50b9Schristos #ifndef HAVE_XDR_FHANDLE
1033a53f50b9Schristos bool_t xdr_fhandle(XDR *xdrs, fhandle objp);
1034a53f50b9Schristos #endif /* not HAVE_XDR_FHANDLE */
1035a53f50b9Schristos #ifndef HAVE_XDR_FHSTATUS
1036a53f50b9Schristos bool_t xdr_fhstatus(XDR *xdrs, fhstatus *objp);
1037a53f50b9Schristos #endif /* not HAVE_XDR_FHSTATUS */
1038a53f50b9Schristos #ifndef HAVE_XDR_FILENAME
1039a53f50b9Schristos bool_t xdr_filename(XDR *xdrs, filename *objp);
1040a53f50b9Schristos #endif /* not HAVE_XDR_FILENAME */
1041a53f50b9Schristos #ifndef HAVE_XDR_FTYPE
1042a53f50b9Schristos bool_t xdr_ftype(XDR *xdrs, nfsftype *objp);
1043a53f50b9Schristos #endif /* not HAVE_XDR_FTYPE */
1044a53f50b9Schristos #ifndef HAVE_XDR_GROUPNODE
1045a53f50b9Schristos bool_t xdr_groupnode(XDR *xdrs, groupnode *objp);
1046a53f50b9Schristos #endif /* not HAVE_XDR_GROUPNODE */
1047a53f50b9Schristos #ifndef HAVE_XDR_GROUPS
1048a53f50b9Schristos bool_t xdr_groups(XDR *xdrs, groups *objp);
1049a53f50b9Schristos #endif /* not HAVE_XDR_GROUPS */
1050a53f50b9Schristos #ifndef HAVE_XDR_LINKARGS
1051a53f50b9Schristos bool_t xdr_linkargs(XDR *xdrs, nfslinkargs *objp);
1052a53f50b9Schristos #endif /* not HAVE_XDR_LINKARGS */
1053a53f50b9Schristos #ifndef HAVE_XDR_MOUNTBODY
1054a53f50b9Schristos bool_t xdr_mountbody(XDR *xdrs, mountbody *objp);
1055a53f50b9Schristos #endif /* not HAVE_XDR_MOUNTBODY */
1056a53f50b9Schristos #ifndef HAVE_XDR_MOUNTLIST
1057a53f50b9Schristos bool_t xdr_mountlist(XDR *xdrs, mountlist *objp);
1058a53f50b9Schristos #endif /* not HAVE_XDR_MOUNTLIST */
1059a53f50b9Schristos #ifndef HAVE_XDR_NAME
1060a53f50b9Schristos bool_t xdr_name(XDR *xdrs, name *objp);
1061a53f50b9Schristos #endif /* not HAVE_XDR_NAME */
1062a53f50b9Schristos #ifndef HAVE_XDR_NFS_FH
1063a53f50b9Schristos bool_t xdr_nfs_fh(XDR *xdrs, am_nfs_fh *objp);
1064a53f50b9Schristos #endif /* not HAVE_XDR_NFS_FH */
1065a53f50b9Schristos #ifndef HAVE_XDR_NFSCOOKIE
1066a53f50b9Schristos bool_t xdr_nfscookie(XDR *xdrs, nfscookie objp);
1067a53f50b9Schristos #endif /* not HAVE_XDR_NFSCOOKIE */
1068a53f50b9Schristos #ifndef HAVE_XDR_NFSPATH
1069a53f50b9Schristos bool_t xdr_nfspath(XDR *xdrs, nfspath *objp);
1070a53f50b9Schristos #endif /* not HAVE_XDR_NFSPATH */
1071a53f50b9Schristos #ifndef HAVE_XDR_NFSSTAT
1072a53f50b9Schristos bool_t xdr_nfsstat(XDR *xdrs, nfsstat *objp);
1073a53f50b9Schristos #endif /* not HAVE_XDR_NFSSTAT */
1074a53f50b9Schristos #ifndef HAVE_XDR_NFSTIME
1075a53f50b9Schristos bool_t xdr_nfstime(XDR *xdrs, nfstime *objp);
1076a53f50b9Schristos #endif /* not HAVE_XDR_NFSTIME */
1077a53f50b9Schristos #ifndef HAVE_XDR_POINTER
1078a53f50b9Schristos bool_t xdr_pointer(register XDR *xdrs, char **objpp, u_int obj_size, XDRPROC_T_TYPE xdr_obj);
1079a53f50b9Schristos #endif /* not HAVE_XDR_POINTER */
1080a53f50b9Schristos #ifndef HAVE_XDR_READARGS
1081a53f50b9Schristos bool_t xdr_readargs(XDR *xdrs, nfsreadargs *objp);
1082a53f50b9Schristos #endif /* not HAVE_XDR_READARGS */
1083a53f50b9Schristos #ifndef HAVE_XDR_READDIRARGS
1084a53f50b9Schristos bool_t xdr_readdirargs(XDR *xdrs, nfsreaddirargs *objp);
1085a53f50b9Schristos #endif /* not HAVE_XDR_READDIRARGS */
1086a53f50b9Schristos #ifndef HAVE_XDR_READDIRRES
1087a53f50b9Schristos bool_t xdr_readdirres(XDR *xdrs, nfsreaddirres *objp);
1088a53f50b9Schristos #endif /* not HAVE_XDR_READDIRRES */
1089a53f50b9Schristos #ifndef HAVE_XDR_READLINKRES
1090a53f50b9Schristos bool_t xdr_readlinkres(XDR *xdrs, nfsreadlinkres *objp);
1091a53f50b9Schristos #endif /* not HAVE_XDR_READLINKRES */
1092a53f50b9Schristos #ifndef HAVE_XDR_READOKRES
1093a53f50b9Schristos bool_t xdr_readokres(XDR *xdrs, nfsreadokres *objp);
1094a53f50b9Schristos #endif /* not HAVE_XDR_READOKRES */
1095a53f50b9Schristos #ifndef HAVE_XDR_READRES
1096a53f50b9Schristos bool_t xdr_readres(XDR *xdrs, nfsreadres *objp);
1097a53f50b9Schristos #endif /* not HAVE_XDR_READRES */
1098a53f50b9Schristos #ifndef HAVE_XDR_RENAMEARGS
1099a53f50b9Schristos bool_t xdr_renameargs(XDR *xdrs, nfsrenameargs *objp);
1100a53f50b9Schristos #endif /* not HAVE_XDR_RENAMEARGS */
1101a53f50b9Schristos #ifndef HAVE_XDR_SATTR
1102a53f50b9Schristos bool_t xdr_sattr(XDR *xdrs, nfssattr *objp);
1103a53f50b9Schristos #endif /* not HAVE_XDR_SATTR */
1104a53f50b9Schristos #ifndef HAVE_XDR_SATTRARGS
1105a53f50b9Schristos bool_t xdr_sattrargs(XDR *xdrs, nfssattrargs *objp);
1106a53f50b9Schristos #endif /* not HAVE_XDR_SATTRARGS */
1107a53f50b9Schristos #ifndef HAVE_XDR_STATFSOKRES
1108a53f50b9Schristos bool_t xdr_statfsokres(XDR *xdrs, nfsstatfsokres *objp);
1109a53f50b9Schristos #endif /* not HAVE_XDR_STATFSOKRES */
1110a53f50b9Schristos #ifndef HAVE_XDR_STATFSRES
1111a53f50b9Schristos bool_t xdr_statfsres(XDR *xdrs, nfsstatfsres *objp);
1112a53f50b9Schristos #endif /* not HAVE_XDR_STATFSRES */
1113a53f50b9Schristos #ifndef HAVE_XDR_SYMLINKARGS
1114a53f50b9Schristos bool_t xdr_symlinkargs(XDR *xdrs, nfssymlinkargs *objp);
1115a53f50b9Schristos #endif /* not HAVE_XDR_SYMLINKARGS */
1116a53f50b9Schristos #ifndef HAVE_XDR_WRITEARGS
1117a53f50b9Schristos bool_t xdr_writeargs(XDR *xdrs, nfswriteargs *objp);
1118a53f50b9Schristos #endif /* not HAVE_XDR_WRITEARGS */
1119a53f50b9Schristos 
1120a53f50b9Schristos /*
1121a53f50b9Schristos  * NFS3 XDR FUNCTIONS:
1122a53f50b9Schristos  */
1123a53f50b9Schristos #ifdef HAVE_FS_NFS3
1124*31bdb48aSchristos #define AM_NFS3_NULL 0
1125*31bdb48aSchristos void * am_nfs3_null_3(void *, CLIENT *);
1126*31bdb48aSchristos void * am_nfs3_null_3_svc(void *, struct svc_req *);
1127*31bdb48aSchristos #define AM_NFS3_GETATTR 1
1128*31bdb48aSchristos am_GETATTR3res * am_nfs3_getattr_3(am_GETATTR3args *, CLIENT *);
1129*31bdb48aSchristos am_GETATTR3res * am_nfs3_getattr_3_svc(am_GETATTR3args *, struct svc_req *);
1130*31bdb48aSchristos #define AM_NFS3_SETATTR 2
1131*31bdb48aSchristos am_SETATTR3res * am_nfs3_setattr_3(am_SETATTR3args *, CLIENT *);
1132*31bdb48aSchristos am_SETATTR3res * am_nfs3_setattr_3_svc(am_SETATTR3args *, struct svc_req *);
1133*31bdb48aSchristos #define AM_NFS3_LOOKUP 3
1134*31bdb48aSchristos am_LOOKUP3res * am_nfs3_lookup_3(am_LOOKUP3args *, CLIENT *);
1135*31bdb48aSchristos am_LOOKUP3res * am_nfs3_lookup_3_svc(am_LOOKUP3args *, struct svc_req *);
1136*31bdb48aSchristos #define AM_NFS3_ACCESS 4
1137*31bdb48aSchristos am_ACCESS3res * am_nfs3_access_3(am_ACCESS3args *, CLIENT *);
1138*31bdb48aSchristos am_ACCESS3res * am_nfs3_access_3_svc(am_ACCESS3args *, struct svc_req *);
1139*31bdb48aSchristos #define AM_NFS3_READLINK 5
1140*31bdb48aSchristos am_READLINK3res * am_nfs3_readlink_3(am_READLINK3args *, CLIENT *);
1141*31bdb48aSchristos am_READLINK3res * am_nfs3_readlink_3_svc(am_READLINK3args *, struct svc_req *);
1142*31bdb48aSchristos #define AM_NFS3_READ 6
1143*31bdb48aSchristos am_READ3res * am_nfs3_read_3(am_READ3args *, CLIENT *);
1144*31bdb48aSchristos am_READ3res * am_nfs3_read_3_svc(am_READ3args *, struct svc_req *);
1145*31bdb48aSchristos #define AM_NFS3_WRITE 7
1146*31bdb48aSchristos am_WRITE3res * am_nfs3_write_3(am_WRITE3args *, CLIENT *);
1147*31bdb48aSchristos am_WRITE3res * am_nfs3_write_3_svc(am_WRITE3args *, struct svc_req *);
1148*31bdb48aSchristos #define AM_NFS3_CREATE 8
1149*31bdb48aSchristos am_CREATE3res * am_nfs3_create_3(am_CREATE3args *, CLIENT *);
1150*31bdb48aSchristos am_CREATE3res * am_nfs3_create_3_svc(am_CREATE3args *, struct svc_req *);
1151*31bdb48aSchristos #define AM_NFS3_MKDIR 9
1152*31bdb48aSchristos am_MKDIR3res * am_nfs3_mkdir_3(am_MKDIR3args *, CLIENT *);
1153*31bdb48aSchristos am_MKDIR3res * am_nfs3_mkdir_3_svc(am_MKDIR3args *, struct svc_req *);
1154*31bdb48aSchristos #define AM_NFS3_SYMLINK 10
1155*31bdb48aSchristos am_SYMLINK3res * am_nfs3_symlink_3(am_SYMLINK3args *, CLIENT *);
1156*31bdb48aSchristos am_SYMLINK3res * am_nfs3_symlink_3_svc(am_SYMLINK3args *, struct svc_req *);
1157*31bdb48aSchristos #define AM_NFS3_MKNOD 11
1158*31bdb48aSchristos am_MKNOD3res * am_nfs3_mknod_3(am_MKNOD3args *, CLIENT *);
1159*31bdb48aSchristos am_MKNOD3res * am_nfs3_mknod_3_svc(am_MKNOD3args *, struct svc_req *);
1160*31bdb48aSchristos #define AM_NFS3_REMOVE 12
1161*31bdb48aSchristos am_REMOVE3res * am_nfs3_remove_3(am_REMOVE3args *, CLIENT *);
1162*31bdb48aSchristos am_REMOVE3res * am_nfs3_remove_3_svc(am_REMOVE3args *, struct svc_req *);
1163*31bdb48aSchristos #define AM_NFS3_RMDIR 13
1164*31bdb48aSchristos am_RMDIR3res * am_nfs3_rmdir_3(am_RMDIR3args *, CLIENT *);
1165*31bdb48aSchristos am_RMDIR3res * am_nfs3_rmdir_3_svc(am_RMDIR3args *, struct svc_req *);
1166*31bdb48aSchristos #define AM_NFS3_RENAME 14
1167*31bdb48aSchristos am_RENAME3res * am_nfs3_rename_3(am_RENAME3args *, CLIENT *);
1168*31bdb48aSchristos am_RENAME3res * am_nfs3_rename_3_svc(am_RENAME3args *, struct svc_req *);
1169*31bdb48aSchristos #define AM_NFS3_LINK 15
1170*31bdb48aSchristos am_LINK3res * am_nfs3_link_3(am_LINK3args *, CLIENT *);
1171*31bdb48aSchristos am_LINK3res * am_nfs3_link_3_svc(am_LINK3args *, struct svc_req *);
1172*31bdb48aSchristos #define AM_NFS3_READDIR 16
1173*31bdb48aSchristos am_READDIR3res * am_nfs3_readdir_3(am_READDIR3args *, CLIENT *);
1174*31bdb48aSchristos am_READDIR3res * am_nfs3_readdir_3_svc(am_READDIR3args *, struct svc_req *);
1175*31bdb48aSchristos #define AM_NFS3_READDIRPLUS 17
1176*31bdb48aSchristos am_READDIRPLUS3res * am_nfs3_readdirplus_3(am_READDIRPLUS3args *, CLIENT *);
1177*31bdb48aSchristos am_READDIRPLUS3res * am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *, struct svc_req *);
1178*31bdb48aSchristos #define AM_NFS3_FSSTAT 18
1179*31bdb48aSchristos am_FSSTAT3res * am_nfs3_fsstat_3(am_FSSTAT3args *, CLIENT *);
1180*31bdb48aSchristos am_FSSTAT3res * am_nfs3_fsstat_3_svc(am_FSSTAT3args *, struct svc_req *);
1181*31bdb48aSchristos #define AM_NFS3_FSINFO 19
1182*31bdb48aSchristos am_FSINFO3res * am_nfs3_fsinfo_3(am_FSINFO3args *, CLIENT *);
1183*31bdb48aSchristos am_FSINFO3res * am_nfs3_fsinfo_3_svc(am_FSINFO3args *, struct svc_req *);
1184*31bdb48aSchristos #define AM_NFS3_PATHCONF 20
1185*31bdb48aSchristos am_PATHCONF3res * am_nfs3_pathconf_3(am_PATHCONF3args *, CLIENT *);
1186*31bdb48aSchristos am_PATHCONF3res * am_nfs3_pathconf_3_svc(am_PATHCONF3args *, struct svc_req *);
1187*31bdb48aSchristos #define AM_NFS3_COMMIT 21
1188*31bdb48aSchristos am_COMMIT3res * am_nfs3_commit_3(am_COMMIT3args *, CLIENT *);
1189*31bdb48aSchristos am_COMMIT3res * am_nfs3_commit_3_svc(am_COMMIT3args *, struct svc_req *);
1190*31bdb48aSchristos int nfs_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
1191*31bdb48aSchristos 
1192a53f50b9Schristos bool_t xdr_am_fhandle3(XDR *xdrs, am_fhandle3 *objp);
1193a53f50b9Schristos bool_t xdr_am_mountstat3(XDR *xdrs, am_mountstat3 *objp);
1194a53f50b9Schristos bool_t xdr_am_mountres3_ok(XDR *xdrs, am_mountres3_ok *objp);
1195a53f50b9Schristos bool_t xdr_am_mountres3(XDR *xdrs, am_mountres3 *objp);
1196a53f50b9Schristos bool_t xdr_am_diropargs3(XDR *xdrs, am_diropargs3 *objp);
1197a53f50b9Schristos bool_t xdr_am_filename3(XDR *xdrs, am_filename3 *objp);
1198a53f50b9Schristos bool_t xdr_am_LOOKUP3args(XDR *xdrs, am_LOOKUP3args *objp);
1199a53f50b9Schristos bool_t xdr_am_LOOKUP3res(XDR *xdrs, am_LOOKUP3res *objp);
1200a53f50b9Schristos bool_t xdr_am_LOOKUP3resfail(XDR *xdrs, am_LOOKUP3resfail *objp);
1201a53f50b9Schristos bool_t xdr_am_LOOKUP3resok(XDR *xdrs, am_LOOKUP3resok *objp);
1202a53f50b9Schristos bool_t xdr_am_nfsstat3(XDR *xdrs, am_nfsstat3 *objp);
1203a53f50b9Schristos bool_t xdr_am_nfs_fh3(XDR *xdrs, am_nfs_fh3 *objp);
1204*31bdb48aSchristos bool_t xdr_am_cookieverf3 (XDR *, am_cookieverf3);
1205*31bdb48aSchristos bool_t xdr_uint64 (XDR *, uint64*);
1206*31bdb48aSchristos bool_t xdr_am_cookie3 (XDR *, am_cookie3*);
1207*31bdb48aSchristos bool_t xdr_am_nfs_fh3 (XDR *, am_nfs_fh3*);
1208*31bdb48aSchristos bool_t xdr_am_nfsstat3 (XDR *, am_nfsstat3*);
1209*31bdb48aSchristos bool_t xdr_am_filename3 (XDR *, am_filename3*);
1210*31bdb48aSchristos bool_t xdr_am_diropargs3 (XDR *, am_diropargs3*);
1211*31bdb48aSchristos bool_t xdr_am_ftype3 (XDR *, am_ftype3*);
1212*31bdb48aSchristos bool_t xdr_am_mode3 (XDR *, am_mode3*);
1213*31bdb48aSchristos bool_t xdr_am_uid3 (XDR *, am_uid3*);
1214*31bdb48aSchristos bool_t xdr_am_gid3 (XDR *, am_gid3*);
1215*31bdb48aSchristos bool_t xdr_am_size3 (XDR *, am_size3*);
1216*31bdb48aSchristos bool_t xdr_am_fileid3 (XDR *, am_fileid3*);
1217*31bdb48aSchristos bool_t xdr_am_specdata3 (XDR *, am_specdata3*);
1218*31bdb48aSchristos bool_t xdr_am_nfstime3 (XDR *, am_nfstime3*);
1219*31bdb48aSchristos bool_t xdr_am_fattr3 (XDR *, am_fattr3*);
1220*31bdb48aSchristos bool_t xdr_am_post_op_attr (XDR *, am_post_op_attr*);
1221*31bdb48aSchristos bool_t xdr_am_stable_how (XDR *, am_stable_how*);
1222*31bdb48aSchristos bool_t xdr_am_offset3 (XDR *, am_offset3*);
1223*31bdb48aSchristos bool_t xdr_am_count3 (XDR *, am_count3*);
1224*31bdb48aSchristos bool_t xdr_am_wcc_attr (XDR *, am_wcc_attr*);
1225*31bdb48aSchristos bool_t xdr_am_pre_op_attr (XDR *, am_pre_op_attr*);
1226*31bdb48aSchristos bool_t xdr_am_wcc_data (XDR *, am_wcc_data*);
1227*31bdb48aSchristos bool_t xdr_am_WRITE3args (XDR *, am_WRITE3args*);
1228*31bdb48aSchristos bool_t xdr_am_writeverf3 (XDR *, am_writeverf3);
1229*31bdb48aSchristos bool_t xdr_am_WRITE3resok (XDR *, am_WRITE3resok*);
1230*31bdb48aSchristos bool_t xdr_am_WRITE3resfail (XDR *, am_WRITE3resfail*);
1231*31bdb48aSchristos bool_t xdr_am_WRITE3res (XDR *, am_WRITE3res*);
1232*31bdb48aSchristos bool_t xdr_am_LOOKUP3args (XDR *, am_LOOKUP3args*);
1233*31bdb48aSchristos bool_t xdr_am_LOOKUP3resok (XDR *, am_LOOKUP3resok*);
1234*31bdb48aSchristos bool_t xdr_am_LOOKUP3resfail (XDR *, am_LOOKUP3resfail*);
1235*31bdb48aSchristos bool_t xdr_am_LOOKUP3res (XDR *, am_LOOKUP3res*);
1236*31bdb48aSchristos bool_t xdr_am_COMMIT3args (XDR *, am_COMMIT3args*);
1237*31bdb48aSchristos bool_t xdr_am_COMMIT3resok (XDR *, am_COMMIT3resok*);
1238*31bdb48aSchristos bool_t xdr_am_COMMIT3resfail (XDR *, am_COMMIT3resfail*);
1239*31bdb48aSchristos bool_t xdr_am_COMMIT3res (XDR *, am_COMMIT3res*);
1240*31bdb48aSchristos bool_t xdr_am_ACCESS3args (XDR *, am_ACCESS3args*);
1241*31bdb48aSchristos bool_t xdr_am_ACCESS3resok (XDR *, am_ACCESS3resok*);
1242*31bdb48aSchristos bool_t xdr_am_ACCESS3resfail (XDR *, am_ACCESS3resfail*);
1243*31bdb48aSchristos bool_t xdr_am_ACCESS3res (XDR *, am_ACCESS3res*);
1244*31bdb48aSchristos bool_t xdr_am_GETATTR3args (XDR *, am_GETATTR3args*);
1245*31bdb48aSchristos bool_t xdr_am_GETATTR3resok (XDR *, am_GETATTR3resok*);
1246*31bdb48aSchristos bool_t xdr_am_GETATTR3res (XDR *, am_GETATTR3res*);
1247*31bdb48aSchristos bool_t xdr_am_time_how (XDR *, am_time_how*);
1248*31bdb48aSchristos bool_t xdr_am_set_mode3 (XDR *, am_set_mode3*);
1249*31bdb48aSchristos bool_t xdr_am_set_uid3 (XDR *, am_set_uid3*);
1250*31bdb48aSchristos bool_t xdr_am_set_gid3 (XDR *, am_set_gid3*);
1251*31bdb48aSchristos bool_t xdr_am_set_size3 (XDR *, am_set_size3*);
1252*31bdb48aSchristos bool_t xdr_am_set_atime (XDR *, am_set_atime*);
1253*31bdb48aSchristos bool_t xdr_am_set_mtime (XDR *, am_set_mtime*);
1254*31bdb48aSchristos bool_t xdr_am_sattr3 (XDR *, am_sattr3*);
1255*31bdb48aSchristos bool_t xdr_am_createmode3 (XDR *, am_createmode3*);
1256*31bdb48aSchristos bool_t xdr_am_createverf3 (XDR *, am_createverf3);
1257*31bdb48aSchristos bool_t xdr_am_createhow3 (XDR *, am_createhow3*);
1258*31bdb48aSchristos bool_t xdr_am_CREATE3args (XDR *, am_CREATE3args*);
1259*31bdb48aSchristos bool_t xdr_am_post_op_fh3 (XDR *, am_post_op_fh3*);
1260*31bdb48aSchristos bool_t xdr_am_CREATE3resok (XDR *, am_CREATE3resok*);
1261*31bdb48aSchristos bool_t xdr_am_CREATE3resfail (XDR *, am_CREATE3resfail*);
1262*31bdb48aSchristos bool_t xdr_am_CREATE3res (XDR *, am_CREATE3res*);
1263*31bdb48aSchristos bool_t xdr_am_REMOVE3args (XDR *, am_REMOVE3args*);
1264*31bdb48aSchristos bool_t xdr_am_REMOVE3resok (XDR *, am_REMOVE3resok*);
1265*31bdb48aSchristos bool_t xdr_am_REMOVE3resfail (XDR *, am_REMOVE3resfail*);
1266*31bdb48aSchristos bool_t xdr_am_REMOVE3res (XDR *, am_REMOVE3res*);
1267*31bdb48aSchristos bool_t xdr_am_READ3args (XDR *, am_READ3args*);
1268*31bdb48aSchristos bool_t xdr_am_READ3resok (XDR *, am_READ3resok*);
1269*31bdb48aSchristos bool_t xdr_am_READ3resfail (XDR *, am_READ3resfail*);
1270*31bdb48aSchristos bool_t xdr_am_READ3res (XDR *, am_READ3res*);
1271*31bdb48aSchristos bool_t xdr_am_FSINFO3args (XDR *, am_FSINFO3args*);
1272*31bdb48aSchristos bool_t xdr_am_FSINFO3resok (XDR *, am_FSINFO3resok*);
1273*31bdb48aSchristos bool_t xdr_am_FSINFO3resfail (XDR *, am_FSINFO3resfail*);
1274*31bdb48aSchristos bool_t xdr_am_FSINFO3res (XDR *, am_FSINFO3res*);
1275*31bdb48aSchristos bool_t xdr_am_FSSTAT3args (XDR *, am_FSSTAT3args*);
1276*31bdb48aSchristos bool_t xdr_am_FSSTAT3resok (XDR *, am_FSSTAT3resok*);
1277*31bdb48aSchristos bool_t xdr_am_FSSTAT3resfail (XDR *, am_FSSTAT3resfail*);
1278*31bdb48aSchristos bool_t xdr_am_FSSTAT3res (XDR *, am_FSSTAT3res*);
1279*31bdb48aSchristos bool_t xdr_am_PATHCONF3args (XDR *, am_PATHCONF3args*);
1280*31bdb48aSchristos bool_t xdr_am_PATHCONF3resok (XDR *, am_PATHCONF3resok*);
1281*31bdb48aSchristos bool_t xdr_am_PATHCONF3resfail (XDR *, am_PATHCONF3resfail*);
1282*31bdb48aSchristos bool_t xdr_am_PATHCONF3res (XDR *, am_PATHCONF3res*);
1283*31bdb48aSchristos bool_t xdr_am_nfspath3 (XDR *, am_nfspath3*);
1284*31bdb48aSchristos bool_t xdr_am_symlinkdata3 (XDR *, am_symlinkdata3*);
1285*31bdb48aSchristos bool_t xdr_am_SYMLINK3args (XDR *, am_SYMLINK3args*);
1286*31bdb48aSchristos bool_t xdr_am_SYMLINK3resok (XDR *, am_SYMLINK3resok*);
1287*31bdb48aSchristos bool_t xdr_am_SYMLINK3resfail (XDR *, am_SYMLINK3resfail*);
1288*31bdb48aSchristos bool_t xdr_am_SYMLINK3res (XDR *, am_SYMLINK3res*);
1289*31bdb48aSchristos bool_t xdr_am_READLINK3args (XDR *, am_READLINK3args*);
1290*31bdb48aSchristos bool_t xdr_am_READLINK3resok (XDR *, am_READLINK3resok*);
1291*31bdb48aSchristos bool_t xdr_am_READLINK3resfail (XDR *, am_READLINK3resfail*);
1292*31bdb48aSchristos bool_t xdr_am_READLINK3res (XDR *, am_READLINK3res*);
1293*31bdb48aSchristos bool_t xdr_am_devicedata3 (XDR *, am_devicedata3*);
1294*31bdb48aSchristos bool_t xdr_am_mknoddata3 (XDR *, am_mknoddata3*);
1295*31bdb48aSchristos bool_t xdr_am_MKNOD3args (XDR *, am_MKNOD3args*);
1296*31bdb48aSchristos bool_t xdr_am_MKNOD3resok (XDR *, am_MKNOD3resok*);
1297*31bdb48aSchristos bool_t xdr_am_MKNOD3resfail (XDR *, am_MKNOD3resfail*);
1298*31bdb48aSchristos bool_t xdr_am_MKNOD3res (XDR *, am_MKNOD3res*);
1299*31bdb48aSchristos bool_t xdr_am_MKDIR3args (XDR *, am_MKDIR3args*);
1300*31bdb48aSchristos bool_t xdr_am_MKDIR3resok (XDR *, am_MKDIR3resok*);
1301*31bdb48aSchristos bool_t xdr_am_MKDIR3resfail (XDR *, am_MKDIR3resfail*);
1302*31bdb48aSchristos bool_t xdr_am_MKDIR3res (XDR *, am_MKDIR3res*);
1303*31bdb48aSchristos bool_t xdr_am_RMDIR3args (XDR *, am_RMDIR3args*);
1304*31bdb48aSchristos bool_t xdr_am_RMDIR3resok (XDR *, am_RMDIR3resok*);
1305*31bdb48aSchristos bool_t xdr_am_RMDIR3resfail (XDR *, am_RMDIR3resfail*);
1306*31bdb48aSchristos bool_t xdr_am_RMDIR3res (XDR *, am_RMDIR3res*);
1307*31bdb48aSchristos bool_t xdr_am_RENAME3args (XDR *, am_RENAME3args*);
1308*31bdb48aSchristos bool_t xdr_am_RENAME3resok (XDR *, am_RENAME3resok*);
1309*31bdb48aSchristos bool_t xdr_am_RENAME3resfail (XDR *, am_RENAME3resfail*);
1310*31bdb48aSchristos bool_t xdr_am_RENAME3res (XDR *, am_RENAME3res*);
1311*31bdb48aSchristos bool_t xdr_am_READDIRPLUS3args (XDR *, am_READDIRPLUS3args*);
1312*31bdb48aSchristos bool_t xdr_am_entryplus3 (XDR *, am_entryplus3*);
1313*31bdb48aSchristos bool_t xdr_am_dirlistplus3 (XDR *, am_dirlistplus3*);
1314*31bdb48aSchristos bool_t xdr_am_READDIRPLUS3resok (XDR *, am_READDIRPLUS3resok*);
1315*31bdb48aSchristos bool_t xdr_am_READDIRPLUS3resfail (XDR *, am_READDIRPLUS3resfail*);
1316*31bdb48aSchristos bool_t xdr_am_READDIRPLUS3res (XDR *, am_READDIRPLUS3res*);
1317*31bdb48aSchristos bool_t xdr_am_READDIR3args (XDR *, am_READDIR3args*);
1318*31bdb48aSchristos bool_t xdr_am_entry3 (XDR *, am_entry3*);
1319*31bdb48aSchristos bool_t xdr_am_dirlist3 (XDR *, am_dirlist3*);
1320*31bdb48aSchristos bool_t xdr_am_READDIR3resok (XDR *, am_READDIR3resok*);
1321*31bdb48aSchristos bool_t xdr_am_READDIR3resfail (XDR *, am_READDIR3resfail*);
1322*31bdb48aSchristos bool_t xdr_am_READDIR3res (XDR *, am_READDIR3res*);
1323*31bdb48aSchristos bool_t xdr_am_LINK3args (XDR *, am_LINK3args*);
1324*31bdb48aSchristos bool_t xdr_am_LINK3resok (XDR *, am_LINK3resok*);
1325*31bdb48aSchristos bool_t xdr_am_LINK3resfail (XDR *, am_LINK3resfail*);
1326*31bdb48aSchristos bool_t xdr_am_LINK3res (XDR *, am_LINK3res*);
1327*31bdb48aSchristos bool_t xdr_am_sattrguard3 (XDR *, am_sattrguard3*);
1328*31bdb48aSchristos bool_t xdr_am_SETATTR3args (XDR *, am_SETATTR3args*);
1329*31bdb48aSchristos bool_t xdr_am_SETATTR3resok (XDR *, am_SETATTR3resok*);
1330*31bdb48aSchristos bool_t xdr_am_SETATTR3resfail (XDR *, am_SETATTR3resfail*);
1331*31bdb48aSchristos bool_t xdr_am_SETATTR3res (XDR *, am_SETATTR3res*);
1332a53f50b9Schristos #endif /* HAVE_FS_NFS3 */
1333a53f50b9Schristos 
1334a53f50b9Schristos #endif /* not _AM_XDR_FUNC_H */
1335