Cleaner fix part 1
[bluesky.git] / nfs3 / nfs3_prot.h
1 #ifndef _NFS3_PROT_H_RPCGEN
2 #define _NFS3_PROT_H_RPCGEN
3
4 #include <rpc/rpc.h>
5
6 #include <glib.h>
7
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 typedef u_quad_t uint64;
14
15 typedef quad_t int64;
16
17 typedef u_int uint32;
18
19 typedef int int32;
20 #define NFS3_FHSIZE 64
21 #define NFS3_COOKIEVERFSIZE 8
22 #define NFS3_CREATEVERFSIZE 8
23 #define NFS3_WRITEVERFSIZE 8
24
25 extern char nfsd_instance_verf_cookie[NFS3_WRITEVERFSIZE];
26
27 typedef char *filename3;
28
29 typedef char *nfspath3;
30
31 typedef char cookieverf3[NFS3_COOKIEVERFSIZE];
32
33 typedef char createverf3[NFS3_CREATEVERFSIZE];
34
35 typedef char writeverf3[NFS3_WRITEVERFSIZE];
36
37 enum nfsstat3 {
38         NFS3_OK = 0,
39         NFS3ERR_PERM = 1,
40         NFS3ERR_NOENT = 2,
41         NFS3ERR_IO = 5,
42         NFS3ERR_NXIO = 6,
43         NFS3ERR_ACCES = 13,
44         NFS3ERR_EXIST = 17,
45         NFS3ERR_XDEV = 18,
46         NFS3ERR_NODEV = 19,
47         NFS3ERR_NOTDIR = 20,
48         NFS3ERR_ISDIR = 21,
49         NFS3ERR_INVAL = 22,
50         NFS3ERR_FBIG = 27,
51         NFS3ERR_NOSPC = 28,
52         NFS3ERR_ROFS = 30,
53         NFS3ERR_MLINK = 31,
54         NFS3ERR_NAMETOOLONG = 63,
55         NFS3ERR_NOTEMPTY = 66,
56         NFS3ERR_DQUOT = 69,
57         NFS3ERR_STALE = 70,
58         NFS3ERR_REMOTE = 71,
59         NFS3ERR_BADHANDLE = 10001,
60         NFS3ERR_NOT_SYNC = 10002,
61         NFS3ERR_BAD_COOKIE = 10003,
62         NFS3ERR_NOTSUPP = 10004,
63         NFS3ERR_TOOSMALL = 10005,
64         NFS3ERR_SERVERFAULT = 10006,
65         NFS3ERR_BADTYPE = 10007,
66         NFS3ERR_JUKEBOX = 10008,
67         NFS3ERR_FPRINTNOTFOUND = 10009,
68         NFS3ERR_ABORTED = 10010,
69 };
70 typedef enum nfsstat3 nfsstat3;
71
72 enum ftype3 {
73         NF3REG = 1,
74         NF3DIR = 2,
75         NF3BLK = 3,
76         NF3CHR = 4,
77         NF3LNK = 5,
78         NF3SOCK = 6,
79         NF3FIFO = 7,
80 };
81 typedef enum ftype3 ftype3;
82
83 struct specdata3 {
84         uint32 major;
85         uint32 minor;
86 };
87 typedef struct specdata3 specdata3;
88
89 struct nfs_fh3 {
90         struct {
91                 u_int data_len;
92                 char *data_val;
93         } data;
94 };
95 typedef struct nfs_fh3 nfs_fh3;
96
97 struct nfstime3 {
98         uint32 seconds;
99         uint32 nseconds;
100 };
101 typedef struct nfstime3 nfstime3;
102
103 struct fattr3 {
104         ftype3 type;
105         uint32 mode;
106         uint32 nlink;
107         uint32 uid;
108         uint32 gid;
109         uint64 size;
110         uint64 used;
111         specdata3 rdev;
112         uint64 fsid;
113         uint64 fileid;
114         nfstime3 atime;
115         nfstime3 mtime;
116         nfstime3 ctime;
117 };
118 typedef struct fattr3 fattr3;
119
120 struct post_op_attr {
121         bool_t present;
122         union {
123                 fattr3 attributes;
124         } post_op_attr_u;
125 };
126 typedef struct post_op_attr post_op_attr;
127
128 struct wcc_attr {
129         uint64 size;
130         nfstime3 mtime;
131         nfstime3 ctime;
132 };
133 typedef struct wcc_attr wcc_attr;
134
135 struct pre_op_attr {
136         bool_t present;
137         union {
138                 wcc_attr attributes;
139         } pre_op_attr_u;
140 };
141 typedef struct pre_op_attr pre_op_attr;
142
143 struct wcc_data {
144         pre_op_attr before;
145         post_op_attr after;
146 };
147 typedef struct wcc_data wcc_data;
148
149 struct post_op_fh3 {
150         bool_t present;
151         union {
152                 nfs_fh3 handle;
153         } post_op_fh3_u;
154 };
155 typedef struct post_op_fh3 post_op_fh3;
156
157 struct set_uint32 {
158         bool_t set;
159         union {
160                 uint32 val;
161         } set_uint32_u;
162 };
163 typedef struct set_uint32 set_uint32;
164
165 struct set_uint64 {
166         bool_t set;
167         union {
168                 uint64 val;
169         } set_uint64_u;
170 };
171 typedef struct set_uint64 set_uint64;
172
173 enum time_how {
174         DONT_CHANGE = 0,
175         SET_TO_SERVER_TIME = 1,
176         SET_TO_CLIENT_TIME = 2,
177 };
178 typedef enum time_how time_how;
179
180 struct set_time {
181         time_how set;
182         union {
183                 nfstime3 time;
184         } set_time_u;
185 };
186 typedef struct set_time set_time;
187
188 struct sattr3 {
189         set_uint32 mode;
190         set_uint32 uid;
191         set_uint32 gid;
192         set_uint64 size;
193         set_time atime;
194         set_time mtime;
195 };
196 typedef struct sattr3 sattr3;
197
198 struct diropargs3 {
199         nfs_fh3 dir;
200         filename3 name;
201 };
202 typedef struct diropargs3 diropargs3;
203
204 struct diropres3ok {
205         post_op_fh3 obj;
206         post_op_attr obj_attributes;
207         wcc_data dir_wcc;
208 };
209 typedef struct diropres3ok diropres3ok;
210
211 struct diropres3 {
212         nfsstat3 status;
213         union {
214                 diropres3ok resok;
215                 wcc_data resfail;
216         } diropres3_u;
217 };
218 typedef struct diropres3 diropres3;
219
220 struct wccstat3 {
221         nfsstat3 status;
222         union {
223                 wcc_data wcc;
224         } wccstat3_u;
225 };
226 typedef struct wccstat3 wccstat3;
227
228 struct getattr3res {
229         nfsstat3 status;
230         union {
231                 fattr3 attributes;
232         } getattr3res_u;
233 };
234 typedef struct getattr3res getattr3res;
235
236 struct sattrguard3 {
237         bool_t check;
238         union {
239                 nfstime3 ctime;
240         } sattrguard3_u;
241 };
242 typedef struct sattrguard3 sattrguard3;
243
244 struct setattr3args {
245         nfs_fh3 object;
246         sattr3 new_attributes;
247         sattrguard3 guard;
248 };
249 typedef struct setattr3args setattr3args;
250
251 struct lookup3resok {
252         nfs_fh3 object;
253         post_op_attr obj_attributes;
254         post_op_attr dir_attributes;
255 };
256 typedef struct lookup3resok lookup3resok;
257
258 struct lookup3res {
259         nfsstat3 status;
260         union {
261                 lookup3resok resok;
262                 post_op_attr resfail;
263         } lookup3res_u;
264 };
265 typedef struct lookup3res lookup3res;
266 #define ACCESS3_READ 0x0001
267 #define ACCESS3_LOOKUP 0x0002
268 #define ACCESS3_MODIFY 0x0004
269 #define ACCESS3_EXTEND 0x0008
270 #define ACCESS3_DELETE 0x0010
271 #define ACCESS3_EXECUTE 0x0020
272
273 struct access3args {
274         nfs_fh3 object;
275         uint32 access;
276 };
277 typedef struct access3args access3args;
278
279 struct access3resok {
280         post_op_attr obj_attributes;
281         uint32 access;
282 };
283 typedef struct access3resok access3resok;
284
285 struct access3res {
286         nfsstat3 status;
287         union {
288                 access3resok resok;
289                 post_op_attr resfail;
290         } access3res_u;
291 };
292 typedef struct access3res access3res;
293
294 struct readlink3resok {
295         post_op_attr symlink_attributes;
296         nfspath3 data;
297 };
298 typedef struct readlink3resok readlink3resok;
299
300 struct readlink3res {
301         nfsstat3 status;
302         union {
303                 readlink3resok resok;
304                 post_op_attr resfail;
305         } readlink3res_u;
306 };
307 typedef struct readlink3res readlink3res;
308
309 struct read3args {
310         nfs_fh3 file;
311         uint64 offset;
312         uint32 count;
313 };
314 typedef struct read3args read3args;
315
316 struct read3resok {
317         post_op_attr file_attributes;
318         uint32 count;
319         bool_t eof;
320         struct {
321                 u_int data_len;
322                 char *data_val;
323         } data;
324 };
325 typedef struct read3resok read3resok;
326
327 struct read3res {
328         nfsstat3 status;
329         union {
330                 read3resok resok;
331                 post_op_attr resfail;
332         } read3res_u;
333 };
334 typedef struct read3res read3res;
335
336 enum stable_how {
337         UNSTABLE = 0,
338         DATA_SYNC = 1,
339         FILE_SYNC = 2,
340 };
341 typedef enum stable_how stable_how;
342
343 struct write3args {
344         nfs_fh3 file;
345         uint64 offset;
346         uint32 count;
347         stable_how stable;
348         struct {
349                 u_int data_len;
350                 char *data_val;
351         } data;
352 };
353 typedef struct write3args write3args;
354
355 struct write3resok {
356         wcc_data file_wcc;
357         uint32 count;
358         stable_how committed;
359         writeverf3 verf;
360 };
361 typedef struct write3resok write3resok;
362
363 struct write3res {
364         nfsstat3 status;
365         union {
366                 write3resok resok;
367                 wcc_data resfail;
368         } write3res_u;
369 };
370 typedef struct write3res write3res;
371
372 enum createmode3 {
373         UNCHECKED = 0,
374         GUARDED = 1,
375         EXCLUSIVE = 2,
376 };
377 typedef enum createmode3 createmode3;
378
379 struct createhow3 {
380         createmode3 mode;
381         union {
382                 sattr3 obj_attributes;
383                 createverf3 verf;
384         } createhow3_u;
385 };
386 typedef struct createhow3 createhow3;
387
388 struct create3args {
389         diropargs3 where;
390         createhow3 how;
391 };
392 typedef struct create3args create3args;
393
394 struct mkdir3args {
395         diropargs3 where;
396         sattr3 attributes;
397 };
398 typedef struct mkdir3args mkdir3args;
399
400 struct symlinkdata3 {
401         sattr3 symlink_attributes;
402         nfspath3 symlink_data;
403 };
404 typedef struct symlinkdata3 symlinkdata3;
405
406 struct symlink3args {
407         diropargs3 where;
408         symlinkdata3 symlink;
409 };
410 typedef struct symlink3args symlink3args;
411
412 struct devicedata3 {
413         sattr3 dev_attributes;
414         specdata3 spec;
415 };
416 typedef struct devicedata3 devicedata3;
417
418 struct mknoddata3 {
419         ftype3 type;
420         union {
421                 devicedata3 device;
422                 sattr3 pipe_attributes;
423         } mknoddata3_u;
424 };
425 typedef struct mknoddata3 mknoddata3;
426
427 struct mknod3args {
428         diropargs3 where;
429         mknoddata3 what;
430 };
431 typedef struct mknod3args mknod3args;
432
433 struct rename3args {
434         diropargs3 from;
435         diropargs3 to;
436 };
437 typedef struct rename3args rename3args;
438
439 struct rename3wcc {
440         wcc_data fromdir_wcc;
441         wcc_data todir_wcc;
442 };
443 typedef struct rename3wcc rename3wcc;
444
445 struct rename3res {
446         nfsstat3 status;
447         union {
448                 rename3wcc res;
449         } rename3res_u;
450 };
451 typedef struct rename3res rename3res;
452
453 struct link3args {
454         nfs_fh3 file;
455         diropargs3 link;
456 };
457 typedef struct link3args link3args;
458
459 struct link3wcc {
460         post_op_attr file_attributes;
461         wcc_data linkdir_wcc;
462 };
463 typedef struct link3wcc link3wcc;
464
465 struct link3res {
466         nfsstat3 status;
467         union {
468                 link3wcc res;
469         } link3res_u;
470 };
471 typedef struct link3res link3res;
472
473 struct readdir3args {
474         nfs_fh3 dir;
475         uint64 cookie;
476         cookieverf3 cookieverf;
477         uint32 count;
478 };
479 typedef struct readdir3args readdir3args;
480
481 struct entry3 {
482         uint64 fileid;
483         filename3 name;
484         uint64 cookie;
485         struct entry3 *nextentry;
486 };
487 typedef struct entry3 entry3;
488
489 struct dirlist3 {
490         entry3 *entries;
491         bool_t eof;
492 };
493 typedef struct dirlist3 dirlist3;
494
495 struct readdir3resok {
496         post_op_attr dir_attributes;
497         cookieverf3 cookieverf;
498         dirlist3 reply;
499 };
500 typedef struct readdir3resok readdir3resok;
501
502 struct readdir3res {
503         nfsstat3 status;
504         union {
505                 readdir3resok resok;
506                 post_op_attr resfail;
507         } readdir3res_u;
508 };
509 typedef struct readdir3res readdir3res;
510
511 struct readdirplus3args {
512         nfs_fh3 dir;
513         uint64 cookie;
514         cookieverf3 cookieverf;
515         uint32 dircount;
516         uint32 maxcount;
517 };
518 typedef struct readdirplus3args readdirplus3args;
519
520 struct entryplus3 {
521         uint64 fileid;
522         filename3 name;
523         uint64 cookie;
524         post_op_attr name_attributes;
525         post_op_fh3 name_handle;
526         struct entryplus3 *nextentry;
527 };
528 typedef struct entryplus3 entryplus3;
529
530 struct dirlistplus3 {
531         entryplus3 *entries;
532         bool_t eof;
533 };
534 typedef struct dirlistplus3 dirlistplus3;
535
536 struct readdirplus3resok {
537         post_op_attr dir_attributes;
538         cookieverf3 cookieverf;
539         dirlistplus3 reply;
540 };
541 typedef struct readdirplus3resok readdirplus3resok;
542
543 struct readdirplus3res {
544         nfsstat3 status;
545         union {
546                 readdirplus3resok resok;
547                 post_op_attr resfail;
548         } readdirplus3res_u;
549 };
550 typedef struct readdirplus3res readdirplus3res;
551
552 struct fsstat3resok {
553         post_op_attr obj_attributes;
554         uint64 tbytes;
555         uint64 fbytes;
556         uint64 abytes;
557         uint64 tfiles;
558         uint64 ffiles;
559         uint64 afiles;
560         uint32 invarsec;
561 };
562 typedef struct fsstat3resok fsstat3resok;
563
564 struct fsstat3res {
565         nfsstat3 status;
566         union {
567                 fsstat3resok resok;
568                 post_op_attr resfail;
569         } fsstat3res_u;
570 };
571 typedef struct fsstat3res fsstat3res;
572 #define FSF3_LINK 0x0001
573 #define FSF3_SYMLINK 0x0002
574 #define FSF3_HOMOGENEOUS 0x0008
575 #define FSF3_CANSETTIME 0x0010
576
577 struct fsinfo3resok {
578         post_op_attr obj_attributes;
579         uint32 rtmax;
580         uint32 rtpref;
581         uint32 rtmult;
582         uint32 wtmax;
583         uint32 wtpref;
584         uint32 wtmult;
585         uint32 dtpref;
586         uint64 maxfilesize;
587         nfstime3 time_delta;
588         uint32 properties;
589 };
590 typedef struct fsinfo3resok fsinfo3resok;
591
592 struct fsinfo3res {
593         nfsstat3 status;
594         union {
595                 fsinfo3resok resok;
596                 post_op_attr resfail;
597         } fsinfo3res_u;
598 };
599 typedef struct fsinfo3res fsinfo3res;
600
601 struct pathconf3resok {
602         post_op_attr obj_attributes;
603         uint32 linkmax;
604         uint32 name_max;
605         bool_t no_trunc;
606         bool_t chown_restricted;
607         bool_t case_insensitive;
608         bool_t case_preserving;
609 };
610 typedef struct pathconf3resok pathconf3resok;
611
612 struct pathconf3res {
613         nfsstat3 status;
614         union {
615                 pathconf3resok resok;
616                 post_op_attr resfail;
617         } pathconf3res_u;
618 };
619 typedef struct pathconf3res pathconf3res;
620
621 struct commit3args {
622         nfs_fh3 file;
623         uint64 offset;
624         uint32 count;
625 };
626 typedef struct commit3args commit3args;
627
628 struct commit3resok {
629         wcc_data file_wcc;
630         writeverf3 verf;
631 };
632 typedef struct commit3resok commit3resok;
633
634 struct commit3res {
635         nfsstat3 status;
636         union {
637                 commit3resok resok;
638                 wcc_data resfail;
639         } commit3res_u;
640 };
641 typedef struct commit3res commit3res;
642
643 /* Structure for tracking a single incoming TCP connection for RPCs.  For now,
644  * used for NFS only. */
645 typedef struct {
646     GIOChannel *channel;
647
648     /* The reassembled message, thus far. */
649     GString *msgbuf;
650
651     /* Remaining number of bytes in this message fragment; 0 if we next expect
652      * another fragment header. */
653     uint32_t frag_len;
654
655     /* If frag_len is zero: the number of bytes of the fragment header that
656      * have been read so far. */
657     int frag_hdr_bytes;
658
659     /* Mutex protecting send operations on the socket (to ensure that replies
660      * are not accidentally interleaved). */
661     GMutex *send_lock;
662
663     /* Is this a UDP connection? */
664     gboolean udp_transport;
665
666     /* For UDP connections only, the address of the sender. */
667     struct sockaddr_in peer;
668
669     /* For UDP only, a buffer for accumulating the full contents of a message
670      * before it is sent */
671     GString *sendbuf;
672 } RPCConnection;
673
674 /* Linked list of cleanup functions to call when a request is completed. */
675 struct cleanup_list {
676     void (*func)(void *arg);
677     void *arg;
678     struct cleanup_list *next;
679 };
680
681 struct BlueSkyProfile;
682
683 /* Used to track a single outstanding RPC request.  Not all of the fields are
684  * initially filled in, but more are filled in as the request is processed. */
685 typedef struct {
686     /* The corresponding connection on which the request was made. */
687     RPCConnection *connection;
688
689     /* To track the time to complete this request and a timing breakdown. */
690     struct BlueSkyProfile *profile;
691
692     /* Transaction ID of the request, in host byte order. */
693     uint32_t xid;
694
695     /* Raw XDR arguments for the call, including headers (everything except the
696      * fragment headers).  Also, the offset to the actual arguments (number of
697      * bytes making up the headers). */
698     GString *raw_args;
699     size_t raw_args_header_bytes;
700
701     /* Decoded header information. */
702     int req_proc;
703
704     /* The XDR-decoded argument of the call, and the procedure to use for
705      * freeing these arguments.  The actual freeing is done automatically when
706      * the response is sent. */
707     void *args;
708     xdrproc_t xdr_args_free;
709
710     /* Procedure to be used for encoding the eventual return value into XDR. */
711     xdrproc_t xdr_result;
712
713     /* Functions to be called when the response is sent to clean up any
714      * resources. */
715     struct cleanup_list *cleanup;
716 } RPCRequest;
717
718 extern void async_rpc_send_reply(RPCRequest *req, void *result);
719
720 #define NFS_PROGRAM 100003
721 #define NFS_V3 3
722
723 #define NFSPROC3_NULL 0
724 extern void nfsproc3_null_3_svc(void *, RPCRequest *);
725 #define NFSPROC3_GETATTR 1
726 extern void nfsproc3_getattr_3_svc(nfs_fh3 *, RPCRequest *);
727 #define NFSPROC3_SETATTR 2
728 extern void nfsproc3_setattr_3_svc(setattr3args *, RPCRequest *);
729 #define NFSPROC3_LOOKUP 3
730 extern void nfsproc3_lookup_3_svc(diropargs3 *, RPCRequest *);
731 #define NFSPROC3_ACCESS 4
732 extern void nfsproc3_access_3_svc(access3args *, RPCRequest *);
733 #define NFSPROC3_READLINK 5
734 extern void nfsproc3_readlink_3_svc(nfs_fh3 *, RPCRequest *);
735 #define NFSPROC3_READ 6
736 extern void nfsproc3_read_3_svc(read3args *, RPCRequest *);
737 #define NFSPROC3_WRITE 7
738 extern void nfsproc3_write_3_svc(write3args *, RPCRequest *);
739 #define NFSPROC3_CREATE 8
740 extern void nfsproc3_create_3_svc(create3args *, RPCRequest *);
741 #define NFSPROC3_MKDIR 9
742 extern void nfsproc3_mkdir_3_svc(mkdir3args *, RPCRequest *);
743 #define NFSPROC3_SYMLINK 10
744 extern void nfsproc3_symlink_3_svc(symlink3args *, RPCRequest *);
745 #define NFSPROC3_MKNOD 11
746 extern void nfsproc3_mknod_3_svc(mknod3args *, RPCRequest *);
747 #define NFSPROC3_REMOVE 12
748 extern void nfsproc3_remove_3_svc(diropargs3 *, RPCRequest *);
749 #define NFSPROC3_RMDIR 13
750 extern void nfsproc3_rmdir_3_svc(diropargs3 *, RPCRequest *);
751 #define NFSPROC3_RENAME 14
752 extern void nfsproc3_rename_3_svc(rename3args *, RPCRequest *);
753 #define NFSPROC3_LINK 15
754 extern void nfsproc3_link_3_svc(link3args *, RPCRequest *);
755 #define NFSPROC3_READDIR 16
756 extern void nfsproc3_readdir_3_svc(readdir3args *, RPCRequest *);
757 #define NFSPROC3_READDIRPLUS 17
758 extern void nfsproc3_readdirplus_3_svc(readdirplus3args *, RPCRequest *);
759 #define NFSPROC3_FSSTAT 18
760 extern void nfsproc3_fsstat_3_svc(nfs_fh3 *, RPCRequest *);
761 #define NFSPROC3_FSINFO 19
762 extern void nfsproc3_fsinfo_3_svc(nfs_fh3 *, RPCRequest *);
763 #define NFSPROC3_PATHCONF 20
764 extern void nfsproc3_pathconf_3_svc(nfs_fh3 *, RPCRequest *);
765 #define NFSPROC3_COMMIT 21
766 extern void nfsproc3_commit_3_svc(commit3args *, RPCRequest *);
767
768 /* the xdr functions */
769
770 extern  bool_t xdr_uint64 (XDR *, uint64*);
771 extern  bool_t xdr_int64 (XDR *, int64*);
772 extern  bool_t xdr_uint32 (XDR *, uint32*);
773 extern  bool_t xdr_int32 (XDR *, int32*);
774 extern  bool_t xdr_filename3 (XDR *, filename3*);
775 extern  bool_t xdr_nfspath3 (XDR *, nfspath3*);
776 extern  bool_t xdr_cookieverf3 (XDR *, cookieverf3);
777 extern  bool_t xdr_createverf3 (XDR *, createverf3);
778 extern  bool_t xdr_writeverf3 (XDR *, writeverf3);
779 extern  bool_t xdr_nfsstat3 (XDR *, nfsstat3*);
780 extern  bool_t xdr_ftype3 (XDR *, ftype3*);
781 extern  bool_t xdr_specdata3 (XDR *, specdata3*);
782 extern  bool_t xdr_nfs_fh3 (XDR *, nfs_fh3*);
783 extern  bool_t xdr_nfstime3 (XDR *, nfstime3*);
784 extern  bool_t xdr_fattr3 (XDR *, fattr3*);
785 extern  bool_t xdr_post_op_attr (XDR *, post_op_attr*);
786 extern  bool_t xdr_wcc_attr (XDR *, wcc_attr*);
787 extern  bool_t xdr_pre_op_attr (XDR *, pre_op_attr*);
788 extern  bool_t xdr_wcc_data (XDR *, wcc_data*);
789 extern  bool_t xdr_post_op_fh3 (XDR *, post_op_fh3*);
790 extern  bool_t xdr_set_uint32 (XDR *, set_uint32*);
791 extern  bool_t xdr_set_uint64 (XDR *, set_uint64*);
792 extern  bool_t xdr_time_how (XDR *, time_how*);
793 extern  bool_t xdr_set_time (XDR *, set_time*);
794 extern  bool_t xdr_sattr3 (XDR *, sattr3*);
795 extern  bool_t xdr_diropargs3 (XDR *, diropargs3*);
796 extern  bool_t xdr_diropres3ok (XDR *, diropres3ok*);
797 extern  bool_t xdr_diropres3 (XDR *, diropres3*);
798 extern  bool_t xdr_wccstat3 (XDR *, wccstat3*);
799 extern  bool_t xdr_getattr3res (XDR *, getattr3res*);
800 extern  bool_t xdr_sattrguard3 (XDR *, sattrguard3*);
801 extern  bool_t xdr_setattr3args (XDR *, setattr3args*);
802 extern  bool_t xdr_lookup3resok (XDR *, lookup3resok*);
803 extern  bool_t xdr_lookup3res (XDR *, lookup3res*);
804 extern  bool_t xdr_access3args (XDR *, access3args*);
805 extern  bool_t xdr_access3resok (XDR *, access3resok*);
806 extern  bool_t xdr_access3res (XDR *, access3res*);
807 extern  bool_t xdr_readlink3resok (XDR *, readlink3resok*);
808 extern  bool_t xdr_readlink3res (XDR *, readlink3res*);
809 extern  bool_t xdr_read3args (XDR *, read3args*);
810 extern  bool_t xdr_read3resok (XDR *, read3resok*);
811 extern  bool_t xdr_read3res (XDR *, read3res*);
812 extern  bool_t xdr_stable_how (XDR *, stable_how*);
813 extern  bool_t xdr_write3args (XDR *, write3args*);
814 extern  bool_t xdr_write3resok (XDR *, write3resok*);
815 extern  bool_t xdr_write3res (XDR *, write3res*);
816 extern  bool_t xdr_createmode3 (XDR *, createmode3*);
817 extern  bool_t xdr_createhow3 (XDR *, createhow3*);
818 extern  bool_t xdr_create3args (XDR *, create3args*);
819 extern  bool_t xdr_mkdir3args (XDR *, mkdir3args*);
820 extern  bool_t xdr_symlinkdata3 (XDR *, symlinkdata3*);
821 extern  bool_t xdr_symlink3args (XDR *, symlink3args*);
822 extern  bool_t xdr_devicedata3 (XDR *, devicedata3*);
823 extern  bool_t xdr_mknoddata3 (XDR *, mknoddata3*);
824 extern  bool_t xdr_mknod3args (XDR *, mknod3args*);
825 extern  bool_t xdr_rename3args (XDR *, rename3args*);
826 extern  bool_t xdr_rename3wcc (XDR *, rename3wcc*);
827 extern  bool_t xdr_rename3res (XDR *, rename3res*);
828 extern  bool_t xdr_link3args (XDR *, link3args*);
829 extern  bool_t xdr_link3wcc (XDR *, link3wcc*);
830 extern  bool_t xdr_link3res (XDR *, link3res*);
831 extern  bool_t xdr_readdir3args (XDR *, readdir3args*);
832 extern  bool_t xdr_entry3 (XDR *, entry3*);
833 extern  bool_t xdr_dirlist3 (XDR *, dirlist3*);
834 extern  bool_t xdr_readdir3resok (XDR *, readdir3resok*);
835 extern  bool_t xdr_readdir3res (XDR *, readdir3res*);
836 extern  bool_t xdr_readdirplus3args (XDR *, readdirplus3args*);
837 extern  bool_t xdr_entryplus3 (XDR *, entryplus3*);
838 extern  bool_t xdr_dirlistplus3 (XDR *, dirlistplus3*);
839 extern  bool_t xdr_readdirplus3resok (XDR *, readdirplus3resok*);
840 extern  bool_t xdr_readdirplus3res (XDR *, readdirplus3res*);
841 extern  bool_t xdr_fsstat3resok (XDR *, fsstat3resok*);
842 extern  bool_t xdr_fsstat3res (XDR *, fsstat3res*);
843 extern  bool_t xdr_fsinfo3resok (XDR *, fsinfo3resok*);
844 extern  bool_t xdr_fsinfo3res (XDR *, fsinfo3res*);
845 extern  bool_t xdr_pathconf3resok (XDR *, pathconf3resok*);
846 extern  bool_t xdr_pathconf3res (XDR *, pathconf3res*);
847 extern  bool_t xdr_commit3args (XDR *, commit3args*);
848 extern  bool_t xdr_commit3resok (XDR *, commit3resok*);
849 extern  bool_t xdr_commit3res (XDR *, commit3res*);
850
851 extern void xdr_string_create(XDR *xdrs, GString *string, enum xdr_op op);
852
853 #ifdef __cplusplus
854 }
855 #endif
856
857 #endif /* !_NFS3_PROT_H_RPCGEN */