]> git.ozlabs.org Git - ccan/commitdiff
nfs: add generates C files
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 9 Nov 2010 11:37:58 +0000 (22:07 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 9 Nov 2010 11:37:58 +0000 (22:07 +1030)
ccanlint won't run rpcgen, so we need the C source in the repo anyway.

ccan/nfs/libnfs-raw-mount.c [new file with mode: 0644]
ccan/nfs/libnfs-raw-nfs.c [new file with mode: 0644]
ccan/nfs/libnfs-raw-nfsacl.c [new file with mode: 0644]
ccan/nfs/libnfs-raw-portmap.c [new file with mode: 0644]
ccan/nfs/rpc/mount.h [new file with mode: 0644]
ccan/nfs/rpc/nfs.h [new file with mode: 0644]
ccan/nfs/rpc/nfsacl.h [new file with mode: 0644]
ccan/nfs/rpc/portmap.h [new file with mode: 0644]

diff --git a/ccan/nfs/libnfs-raw-mount.c b/ccan/nfs/libnfs-raw-mount.c
new file mode 100644 (file)
index 0000000..eccae5c
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpc/mount.h"
+
+bool_t
+xdr_fhandle3 (XDR *xdrs, fhandle3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_dirpath (XDR *xdrs, dirpath *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_string (xdrs, objp, MNTPATHLEN))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_name (XDR *xdrs, name *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_string (xdrs, objp, MNTNAMLEN))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mountstat3 (XDR *xdrs, mountstat3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mountlist (XDR *xdrs, mountlist *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct mountbody), (xdrproc_t) xdr_mountbody))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mountbody (XDR *xdrs, mountbody *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_name (xdrs, &objp->ml_hostname))
+                return FALSE;
+        if (!xdr_dirpath (xdrs, &objp->ml_directory))
+                return FALSE;
+        if (!xdr_mountlist (xdrs, &objp->ml_next))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_groups (XDR *xdrs, groups *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct groupnode), (xdrproc_t) xdr_groupnode))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_groupnode (XDR *xdrs, groupnode *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_name (xdrs, &objp->gr_name))
+                return FALSE;
+        if (!xdr_groups (xdrs, &objp->gr_next))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_exports (XDR *xdrs, exports *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pointer (xdrs, (char **)objp, sizeof (struct exportnode), (xdrproc_t) xdr_exportnode))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_exportnode (XDR *xdrs, exportnode *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_dirpath (xdrs, &objp->ex_dir))
+                return FALSE;
+        if (!xdr_groups (xdrs, &objp->ex_groups))
+                return FALSE;
+        if (!xdr_exports (xdrs, &objp->ex_next))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_fhandle3 (xdrs, &objp->fhandle))
+                return FALSE;
+        if (!xdr_array (xdrs, (char **)&objp->auth_flavors.auth_flavors_val, (u_int *) &objp->auth_flavors.auth_flavors_len, ~0,
+               sizeof (int), (xdrproc_t) xdr_int))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mountres3 (XDR *xdrs, mountres3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_mountstat3 (xdrs, &objp->fhs_status))
+                return FALSE;
+       switch (objp->fhs_status) {
+       case MNT3_OK:
+                if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
diff --git a/ccan/nfs/libnfs-raw-nfs.c b/ccan/nfs/libnfs-raw-nfs.c
new file mode 100644 (file)
index 0000000..9a53ae5
--- /dev/null
@@ -0,0 +1,1898 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpc/nfs.h"
+
+bool_t
+xdr_cookieverf3 (XDR *xdrs, cookieverf3 objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_opaque (xdrs, objp, NFS3_COOKIEVERFSIZE))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_uint64 (XDR *xdrs, uint64 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_u_quad_t (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_cookie3 (XDR *xdrs, cookie3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint64 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_nfs_fh3 (XDR *xdrs, nfs_fh3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS3_FHSIZE))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_filename3 (XDR *xdrs, filename3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_string (xdrs, objp, ~0))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_diropargs3 (XDR *xdrs, diropargs3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->dir))
+                return FALSE;
+        if (!xdr_filename3 (xdrs, &objp->name))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_ftype3 (XDR *xdrs, ftype3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_uint32 (XDR *xdrs, uint32 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_u_long (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_int32 (XDR *xdrs, int32 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_long (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mode3 (XDR *xdrs, mode3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_uid3 (XDR *xdrs, uid3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_gid3 (XDR *xdrs, gid3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_size3 (XDR *xdrs, size3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint64 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_fileid3 (XDR *xdrs, fileid3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint64 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_specdata3 (XDR *xdrs, specdata3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, &objp->specdata1))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->specdata2))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_nfstime3 (XDR *xdrs, nfstime3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, &objp->seconds))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->nseconds))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_fattr3 (XDR *xdrs, fattr3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_ftype3 (xdrs, &objp->type))
+                return FALSE;
+        if (!xdr_mode3 (xdrs, &objp->mode))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->nlink))
+                return FALSE;
+        if (!xdr_uid3 (xdrs, &objp->uid))
+                return FALSE;
+        if (!xdr_gid3 (xdrs, &objp->gid))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->size))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->used))
+                return FALSE;
+        if (!xdr_specdata3 (xdrs, &objp->rdev))
+                return FALSE;
+        if (!xdr_uint64 (xdrs, &objp->fsid))
+                return FALSE;
+        if (!xdr_fileid3 (xdrs, &objp->fileid))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->atime))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->mtime))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->ctime))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_post_op_attr (XDR *xdrs, post_op_attr *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->attributes_follow))
+                return FALSE;
+       switch (objp->attributes_follow) {
+       case TRUE:
+                if (!xdr_fattr3 (xdrs, &objp->post_op_attr_u.attributes))
+                        return FALSE;
+               break;
+       case FALSE:
+               break;
+       default:
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_nfsstat3 (XDR *xdrs, nfsstat3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_stable_how (XDR *xdrs, stable_how *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_offset3 (XDR *xdrs, offset3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint64 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_count3 (XDR *xdrs, count3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_uint32 (xdrs, objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_wcc_attr (XDR *xdrs, wcc_attr *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_size3 (xdrs, &objp->size))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->mtime))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->ctime))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_pre_op_attr (XDR *xdrs, pre_op_attr *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->attributes_follow))
+                return FALSE;
+       switch (objp->attributes_follow) {
+       case TRUE:
+                if (!xdr_wcc_attr (xdrs, &objp->pre_op_attr_u.attributes))
+                        return FALSE;
+               break;
+       case FALSE:
+               break;
+       default:
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_wcc_data (XDR *xdrs, wcc_data *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pre_op_attr (xdrs, &objp->before))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->after))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_WRITE3args (XDR *xdrs, WRITE3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->file))
+                return FALSE;
+        if (!xdr_offset3 (xdrs, &objp->offset))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+        if (!xdr_stable_how (xdrs, &objp->stable))
+                return FALSE;
+        if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_writeverf3 (XDR *xdrs, writeverf3 objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_opaque (xdrs, objp, NFS3_WRITEVERFSIZE))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_WRITE3resok (XDR *xdrs, WRITE3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->file_wcc))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+        if (!xdr_stable_how (xdrs, &objp->committed))
+                return FALSE;
+        if (!xdr_writeverf3 (xdrs, objp->verf))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_WRITE3resfail (XDR *xdrs, WRITE3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->file_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_WRITE3res (XDR *xdrs, WRITE3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_WRITE3resok (xdrs, &objp->WRITE3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_WRITE3resfail (xdrs, &objp->WRITE3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_LOOKUP3args (XDR *xdrs, LOOKUP3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->what))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LOOKUP3resok (XDR *xdrs, LOOKUP3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->object))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LOOKUP3resfail (XDR *xdrs, LOOKUP3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LOOKUP3res (XDR *xdrs, LOOKUP3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_LOOKUP3resok (xdrs, &objp->LOOKUP3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_LOOKUP3resfail (xdrs, &objp->LOOKUP3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_COMMIT3args (XDR *xdrs, COMMIT3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->file))
+                return FALSE;
+        if (!xdr_offset3 (xdrs, &objp->offset))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_COMMIT3resok (XDR *xdrs, COMMIT3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->file_wcc))
+                return FALSE;
+        if (!xdr_writeverf3 (xdrs, objp->verf))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_COMMIT3resfail (XDR *xdrs, COMMIT3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->file_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_COMMIT3res (XDR *xdrs, COMMIT3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_COMMIT3resok (xdrs, &objp->COMMIT3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_COMMIT3resfail (xdrs, &objp->COMMIT3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_ACCESS3args (XDR *xdrs, ACCESS3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->object))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->access))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_ACCESS3resok (XDR *xdrs, ACCESS3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->access))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_ACCESS3resfail (XDR *xdrs, ACCESS3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_ACCESS3res (XDR *xdrs, ACCESS3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_ACCESS3resok (xdrs, &objp->ACCESS3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_ACCESS3resfail (xdrs, &objp->ACCESS3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_GETATTR3args (XDR *xdrs, GETATTR3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->object))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_GETATTR3resok (XDR *xdrs, GETATTR3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_fattr3 (xdrs, &objp->obj_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_GETATTR3res (XDR *xdrs, GETATTR3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_GETATTR3resok (xdrs, &objp->GETATTR3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_time_how (XDR *xdrs, time_how *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_set_mode3 (XDR *xdrs, set_mode3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case TRUE:
+                if (!xdr_mode3 (xdrs, &objp->set_mode3_u.mode))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_set_uid3 (XDR *xdrs, set_uid3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case TRUE:
+                if (!xdr_uid3 (xdrs, &objp->set_uid3_u.uid))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_set_gid3 (XDR *xdrs, set_gid3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case TRUE:
+                if (!xdr_gid3 (xdrs, &objp->set_gid3_u.gid))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_set_size3 (XDR *xdrs, set_size3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case TRUE:
+                if (!xdr_size3 (xdrs, &objp->set_size3_u.size))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_set_atime (XDR *xdrs, set_atime *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_time_how (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case SET_TO_CLIENT_TIME:
+                if (!xdr_nfstime3 (xdrs, &objp->set_atime_u.atime))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_set_mtime (XDR *xdrs, set_mtime *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_time_how (xdrs, &objp->set_it))
+                return FALSE;
+       switch (objp->set_it) {
+       case SET_TO_CLIENT_TIME:
+                if (!xdr_nfstime3 (xdrs, &objp->set_mtime_u.mtime))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_sattr3 (XDR *xdrs, sattr3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_set_mode3 (xdrs, &objp->mode))
+                return FALSE;
+        if (!xdr_set_uid3 (xdrs, &objp->uid))
+                return FALSE;
+        if (!xdr_set_gid3 (xdrs, &objp->gid))
+                return FALSE;
+        if (!xdr_set_size3 (xdrs, &objp->size))
+                return FALSE;
+        if (!xdr_set_atime (xdrs, &objp->atime))
+                return FALSE;
+        if (!xdr_set_mtime (xdrs, &objp->mtime))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_createmode3 (XDR *xdrs, createmode3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_enum (xdrs, (enum_t *) objp))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_createverf3 (XDR *xdrs, createverf3 objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_opaque (xdrs, objp, NFS3_CREATEVERFSIZE))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_createhow3 (XDR *xdrs, createhow3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_createmode3 (xdrs, &objp->mode))
+                return FALSE;
+       switch (objp->mode) {
+       case UNCHECKED:
+       case GUARDED:
+                if (!xdr_sattr3 (xdrs, &objp->createhow3_u.obj_attributes))
+                        return FALSE;
+               break;
+       case EXCLUSIVE:
+                if (!xdr_createverf3 (xdrs, objp->createhow3_u.verf))
+                        return FALSE;
+               break;
+       default:
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_CREATE3args (XDR *xdrs, CREATE3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->where))
+                return FALSE;
+        if (!xdr_createhow3 (xdrs, &objp->how))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_post_op_fh3 (XDR *xdrs, post_op_fh3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->handle_follows))
+                return FALSE;
+       switch (objp->handle_follows) {
+       case TRUE:
+                if (!xdr_nfs_fh3 (xdrs, &objp->post_op_fh3_u.handle))
+                        return FALSE;
+               break;
+       case FALSE:
+               break;
+       default:
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_CREATE3resok (XDR *xdrs, CREATE3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_fh3 (xdrs, &objp->obj))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_CREATE3resfail (XDR *xdrs, CREATE3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_CREATE3res (XDR *xdrs, CREATE3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_CREATE3resok (xdrs, &objp->CREATE3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_CREATE3resfail (xdrs, &objp->CREATE3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_REMOVE3args (XDR *xdrs, REMOVE3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->object))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_REMOVE3resok (XDR *xdrs, REMOVE3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_REMOVE3resfail (XDR *xdrs, REMOVE3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_REMOVE3res (XDR *xdrs, REMOVE3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_REMOVE3resok (xdrs, &objp->REMOVE3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_REMOVE3resfail (xdrs, &objp->REMOVE3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_READ3args (XDR *xdrs, READ3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->file))
+                return FALSE;
+        if (!xdr_offset3 (xdrs, &objp->offset))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READ3resok (XDR *xdrs, READ3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->file_attributes))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->eof))
+                return FALSE;
+        if (!xdr_bytes (xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READ3resfail (XDR *xdrs, READ3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->file_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READ3res (XDR *xdrs, READ3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_READ3resok (xdrs, &objp->READ3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_READ3resfail (xdrs, &objp->READ3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_FSINFO3args (XDR *xdrs, FSINFO3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->fsroot))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSINFO3resok (XDR *xdrs, FSINFO3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->rtmax))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->rtpref))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->rtmult))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->wtmax))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->wtpref))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->wtmult))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->dtpref))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->maxfilesize))
+                return FALSE;
+        if (!xdr_nfstime3 (xdrs, &objp->time_delta))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->properties))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSINFO3resfail (XDR *xdrs, FSINFO3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSINFO3res (XDR *xdrs, FSINFO3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_FSINFO3resok (xdrs, &objp->FSINFO3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_FSINFO3resfail (xdrs, &objp->FSINFO3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_FSSTAT3args (XDR *xdrs, FSSTAT3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->fsroot))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSSTAT3resok (XDR *xdrs, FSSTAT3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->tbytes))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->fbytes))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->abytes))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->tfiles))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->ffiles))
+                return FALSE;
+        if (!xdr_size3 (xdrs, &objp->afiles))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->invarsec))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSSTAT3resfail (XDR *xdrs, FSSTAT3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_FSSTAT3res (XDR *xdrs, FSSTAT3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_FSSTAT3resok (xdrs, &objp->FSSTAT3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_FSSTAT3resfail (xdrs, &objp->FSSTAT3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_PATHCONF3args (XDR *xdrs, PATHCONF3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->object))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_PATHCONF3resok (XDR *xdrs, PATHCONF3resok *objp)
+{
+       register int32_t *buf;
+
+
+       if (xdrs->x_op == XDR_ENCODE) {
+                if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                        return FALSE;
+                if (!xdr_uint32 (xdrs, &objp->linkmax))
+                        return FALSE;
+                if (!xdr_uint32 (xdrs, &objp->name_max))
+                        return FALSE;
+               buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_bool (xdrs, &objp->no_trunc))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->chown_restricted))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->case_insensitive))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->case_preserving))
+                                return FALSE;
+               } else {
+                       IXDR_PUT_BOOL(buf, objp->no_trunc);
+                       IXDR_PUT_BOOL(buf, objp->chown_restricted);
+                       IXDR_PUT_BOOL(buf, objp->case_insensitive);
+                       IXDR_PUT_BOOL(buf, objp->case_preserving);
+               }
+               return TRUE;
+       } else if (xdrs->x_op == XDR_DECODE) {
+                if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                        return FALSE;
+                if (!xdr_uint32 (xdrs, &objp->linkmax))
+                        return FALSE;
+                if (!xdr_uint32 (xdrs, &objp->name_max))
+                        return FALSE;
+               buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_bool (xdrs, &objp->no_trunc))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->chown_restricted))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->case_insensitive))
+                                return FALSE;
+                        if (!xdr_bool (xdrs, &objp->case_preserving))
+                                return FALSE;
+               } else {
+                       objp->no_trunc = IXDR_GET_BOOL(buf);
+                       objp->chown_restricted = IXDR_GET_BOOL(buf);
+                       objp->case_insensitive = IXDR_GET_BOOL(buf);
+                       objp->case_preserving = IXDR_GET_BOOL(buf);
+               }
+        return TRUE;
+       }
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->linkmax))
+                return FALSE;
+        if (!xdr_uint32 (xdrs, &objp->name_max))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->no_trunc))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->chown_restricted))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->case_insensitive))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->case_preserving))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_PATHCONF3resfail (XDR *xdrs, PATHCONF3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_PATHCONF3res (XDR *xdrs, PATHCONF3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_PATHCONF3resok (xdrs, &objp->PATHCONF3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_PATHCONF3resfail (xdrs, &objp->PATHCONF3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_nfspath3 (XDR *xdrs, nfspath3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_string (xdrs, objp, ~0))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_symlinkdata3 (XDR *xdrs, symlinkdata3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_sattr3 (xdrs, &objp->symlink_attributes))
+                return FALSE;
+        if (!xdr_nfspath3 (xdrs, &objp->symlink_data))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SYMLINK3args (XDR *xdrs, SYMLINK3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->where))
+                return FALSE;
+        if (!xdr_symlinkdata3 (xdrs, &objp->symlink))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SYMLINK3resok (XDR *xdrs, SYMLINK3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_fh3 (xdrs, &objp->obj))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SYMLINK3resfail (XDR *xdrs, SYMLINK3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SYMLINK3res (XDR *xdrs, SYMLINK3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_SYMLINK3resok (xdrs, &objp->SYMLINK3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_SYMLINK3resfail (xdrs, &objp->SYMLINK3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_READLINK3args (XDR *xdrs, READLINK3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->symlink))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READLINK3resok (XDR *xdrs, READLINK3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->symlink_attributes))
+                return FALSE;
+        if (!xdr_nfspath3 (xdrs, &objp->data))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READLINK3resfail (XDR *xdrs, READLINK3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->symlink_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READLINK3res (XDR *xdrs, READLINK3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_READLINK3resok (xdrs, &objp->READLINK3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_READLINK3resfail (xdrs, &objp->READLINK3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_devicedata3 (XDR *xdrs, devicedata3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_sattr3 (xdrs, &objp->dev_attributes))
+                return FALSE;
+        if (!xdr_specdata3 (xdrs, &objp->spec))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_mknoddata3 (XDR *xdrs, mknoddata3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_ftype3 (xdrs, &objp->type))
+                return FALSE;
+       switch (objp->type) {
+       case NF3CHR:
+       case NF3BLK:
+                if (!xdr_devicedata3 (xdrs, &objp->mknoddata3_u.device))
+                        return FALSE;
+               break;
+       case NF3SOCK:
+       case NF3FIFO:
+                if (!xdr_sattr3 (xdrs, &objp->mknoddata3_u.pipe_attributes))
+                        return FALSE;
+               break;
+       default:
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_MKNOD3args (XDR *xdrs, MKNOD3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->where))
+                return FALSE;
+        if (!xdr_mknoddata3 (xdrs, &objp->what))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKNOD3resok (XDR *xdrs, MKNOD3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_fh3 (xdrs, &objp->obj))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKNOD3resfail (XDR *xdrs, MKNOD3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKNOD3res (XDR *xdrs, MKNOD3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_MKNOD3resok (xdrs, &objp->MKNOD3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_MKNOD3resfail (xdrs, &objp->MKNOD3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_MKDIR3args (XDR *xdrs, MKDIR3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->where))
+                return FALSE;
+        if (!xdr_sattr3 (xdrs, &objp->attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKDIR3resok (XDR *xdrs, MKDIR3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_fh3 (xdrs, &objp->obj))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->obj_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKDIR3resfail (XDR *xdrs, MKDIR3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_MKDIR3res (XDR *xdrs, MKDIR3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_MKDIR3resok (xdrs, &objp->MKDIR3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_MKDIR3resfail (xdrs, &objp->MKDIR3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_RMDIR3args (XDR *xdrs, RMDIR3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->object))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RMDIR3resok (XDR *xdrs, RMDIR3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RMDIR3resfail (XDR *xdrs, RMDIR3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->dir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RMDIR3res (XDR *xdrs, RMDIR3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_RMDIR3resok (xdrs, &objp->RMDIR3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_RMDIR3resfail (xdrs, &objp->RMDIR3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_RENAME3args (XDR *xdrs, RENAME3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_diropargs3 (xdrs, &objp->from))
+                return FALSE;
+        if (!xdr_diropargs3 (xdrs, &objp->to))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RENAME3resok (XDR *xdrs, RENAME3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->fromdir_wcc))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->todir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RENAME3resfail (XDR *xdrs, RENAME3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->fromdir_wcc))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->todir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_RENAME3res (XDR *xdrs, RENAME3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_RENAME3resok (xdrs, &objp->RENAME3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_RENAME3resfail (xdrs, &objp->RENAME3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_READDIRPLUS3args (XDR *xdrs, READDIRPLUS3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->dir))
+                return FALSE;
+        if (!xdr_cookie3 (xdrs, &objp->cookie))
+                return FALSE;
+        if (!xdr_cookieverf3 (xdrs, objp->cookieverf))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->dircount))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->maxcount))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_entryplus3 (XDR *xdrs, entryplus3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_fileid3 (xdrs, &objp->fileid))
+                return FALSE;
+        if (!xdr_filename3 (xdrs, &objp->name))
+                return FALSE;
+        if (!xdr_cookie3 (xdrs, &objp->cookie))
+                return FALSE;
+        if (!xdr_post_op_attr (xdrs, &objp->name_attributes))
+                return FALSE;
+        if (!xdr_post_op_fh3 (xdrs, &objp->name_handle))
+                return FALSE;
+        if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entryplus3), (xdrproc_t) xdr_entryplus3))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_dirlistplus3 (XDR *xdrs, dirlistplus3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entryplus3), (xdrproc_t) xdr_entryplus3))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->eof))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIRPLUS3resok (XDR *xdrs, READDIRPLUS3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+        if (!xdr_cookieverf3 (xdrs, objp->cookieverf))
+                return FALSE;
+        if (!xdr_dirlistplus3 (xdrs, &objp->reply))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIRPLUS3resfail (XDR *xdrs, READDIRPLUS3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIRPLUS3res (XDR *xdrs, READDIRPLUS3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_READDIRPLUS3resok (xdrs, &objp->READDIRPLUS3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_READDIRPLUS3resfail (xdrs, &objp->READDIRPLUS3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_READDIR3args (XDR *xdrs, READDIR3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->dir))
+                return FALSE;
+        if (!xdr_cookie3 (xdrs, &objp->cookie))
+                return FALSE;
+        if (!xdr_cookieverf3 (xdrs, objp->cookieverf))
+                return FALSE;
+        if (!xdr_count3 (xdrs, &objp->count))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_entry3 (XDR *xdrs, entry3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_fileid3 (xdrs, &objp->fileid))
+                return FALSE;
+        if (!xdr_filename3 (xdrs, &objp->name))
+                return FALSE;
+        if (!xdr_cookie3 (xdrs, &objp->cookie))
+                return FALSE;
+        if (!xdr_pointer (xdrs, (char **)&objp->nextentry, sizeof (entry3), (xdrproc_t) xdr_entry3))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_dirlist3 (XDR *xdrs, dirlist3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_pointer (xdrs, (char **)&objp->entries, sizeof (entry3), (xdrproc_t) xdr_entry3))
+                return FALSE;
+        if (!xdr_bool (xdrs, &objp->eof))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIR3resok (XDR *xdrs, READDIR3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+        if (!xdr_cookieverf3 (xdrs, objp->cookieverf))
+                return FALSE;
+        if (!xdr_dirlist3 (xdrs, &objp->reply))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIR3resfail (XDR *xdrs, READDIR3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->dir_attributes))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_READDIR3res (XDR *xdrs, READDIR3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_READDIR3resok (xdrs, &objp->READDIR3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_READDIR3resfail (xdrs, &objp->READDIR3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_LINK3args (XDR *xdrs, LINK3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->file))
+                return FALSE;
+        if (!xdr_diropargs3 (xdrs, &objp->link))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LINK3resok (XDR *xdrs, LINK3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->file_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->linkdir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LINK3resfail (XDR *xdrs, LINK3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_post_op_attr (xdrs, &objp->file_attributes))
+                return FALSE;
+        if (!xdr_wcc_data (xdrs, &objp->linkdir_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_LINK3res (XDR *xdrs, LINK3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_LINK3resok (xdrs, &objp->LINK3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_LINK3resfail (xdrs, &objp->LINK3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_sattrguard3 (XDR *xdrs, sattrguard3 *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_bool (xdrs, &objp->check))
+                return FALSE;
+       switch (objp->check) {
+       case TRUE:
+                if (!xdr_nfstime3 (xdrs, &objp->sattrguard3_u.obj_ctime))
+                        return FALSE;
+               break;
+       case FALSE:
+               break;
+       default:
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool_t
+xdr_SETATTR3args (XDR *xdrs, SETATTR3args *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfs_fh3 (xdrs, &objp->object))
+                return FALSE;
+        if (!xdr_sattr3 (xdrs, &objp->new_attributes))
+                return FALSE;
+        if (!xdr_sattrguard3 (xdrs, &objp->guard))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SETATTR3resok (XDR *xdrs, SETATTR3resok *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->obj_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SETATTR3resfail (XDR *xdrs, SETATTR3resfail *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_wcc_data (xdrs, &objp->obj_wcc))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_SETATTR3res (XDR *xdrs, SETATTR3res *objp)
+{
+       register int32_t *buf;
+
+        if (!xdr_nfsstat3 (xdrs, &objp->status))
+                return FALSE;
+       switch (objp->status) {
+       case NFS3_OK:
+                if (!xdr_SETATTR3resok (xdrs, &objp->SETATTR3res_u.resok))
+                        return FALSE;
+               break;
+       default:
+                if (!xdr_SETATTR3resfail (xdrs, &objp->SETATTR3res_u.resfail))
+                        return FALSE;
+               break;
+       }
+       return TRUE;
+}
diff --git a/ccan/nfs/libnfs-raw-nfsacl.c b/ccan/nfs/libnfs-raw-nfsacl.c
new file mode 100644 (file)
index 0000000..33c603e
--- /dev/null
@@ -0,0 +1,6 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpc/nfsacl.h"
diff --git a/ccan/nfs/libnfs-raw-portmap.c b/ccan/nfs/libnfs-raw-portmap.c
new file mode 100644 (file)
index 0000000..a53bc2f
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "rpc/portmap.h"
+
+bool_t
+xdr_mapping (XDR *xdrs, mapping *objp)
+{
+       register int32_t *buf;
+
+
+       if (xdrs->x_op == XDR_ENCODE) {
+               buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_u_int (xdrs, &objp->prog))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->vers))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->prot))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->port))
+                                return FALSE;
+               } else {
+                       IXDR_PUT_U_LONG(buf, objp->prog);
+                       IXDR_PUT_U_LONG(buf, objp->vers);
+                       IXDR_PUT_U_LONG(buf, objp->prot);
+                       IXDR_PUT_U_LONG(buf, objp->port);
+               }
+               return TRUE;
+       } else if (xdrs->x_op == XDR_DECODE) {
+               buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_u_int (xdrs, &objp->prog))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->vers))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->prot))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->port))
+                                return FALSE;
+               } else {
+                       objp->prog = IXDR_GET_U_LONG(buf);
+                       objp->vers = IXDR_GET_U_LONG(buf);
+                       objp->prot = IXDR_GET_U_LONG(buf);
+                       objp->port = IXDR_GET_U_LONG(buf);
+               }
+        return TRUE;
+       }
+
+        if (!xdr_u_int (xdrs, &objp->prog))
+                return FALSE;
+        if (!xdr_u_int (xdrs, &objp->vers))
+                return FALSE;
+        if (!xdr_u_int (xdrs, &objp->prot))
+                return FALSE;
+        if (!xdr_u_int (xdrs, &objp->port))
+                return FALSE;
+       return TRUE;
+}
+
+bool_t
+xdr_call_args (XDR *xdrs, call_args *objp)
+{
+       register int32_t *buf;
+
+
+       if (xdrs->x_op == XDR_ENCODE) {
+               buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_u_int (xdrs, &objp->prog))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->vers))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->proc))
+                                return FALSE;
+
+               } else {
+               IXDR_PUT_U_LONG(buf, objp->prog);
+               IXDR_PUT_U_LONG(buf, objp->vers);
+               IXDR_PUT_U_LONG(buf, objp->proc);
+               }
+                if (!xdr_bytes (xdrs, (char **)&objp->args.args_val, (u_int *) &objp->args.args_len, ~0))
+                        return FALSE;
+               return TRUE;
+       } else if (xdrs->x_op == XDR_DECODE) {
+               buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT);
+               if (buf == NULL) {
+                        if (!xdr_u_int (xdrs, &objp->prog))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->vers))
+                                return FALSE;
+                        if (!xdr_u_int (xdrs, &objp->proc))
+                                return FALSE;
+
+               } else {
+               objp->prog = IXDR_GET_U_LONG(buf);
+               objp->vers = IXDR_GET_U_LONG(buf);
+               objp->proc = IXDR_GET_U_LONG(buf);
+               }
+                if (!xdr_bytes (xdrs, (char **)&objp->args.args_val, (u_int *) &objp->args.args_len, ~0))
+                        return FALSE;
+        return TRUE;
+       }
+
+        if (!xdr_u_int (xdrs, &objp->prog))
+                return FALSE;
+        if (!xdr_u_int (xdrs, &objp->vers))
+                return FALSE;
+        if (!xdr_u_int (xdrs, &objp->proc))
+                return FALSE;
+        if (!xdr_bytes (xdrs, (char **)&objp->args.args_val, (u_int *) &objp->args.args_len, ~0))
+                return FALSE;
+       return TRUE;
+}
diff --git a/ccan/nfs/rpc/mount.h b/ccan/nfs/rpc/mount.h
new file mode 100644 (file)
index 0000000..ddeb6c9
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _MOUNT_H_RPCGEN
+#define _MOUNT_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MNTPATHLEN 1024
+#define MNTNAMLEN 255
+#define FHSIZE3 64
+
+typedef struct {
+       u_int fhandle3_len;
+       char *fhandle3_val;
+} fhandle3;
+
+typedef char *dirpath;
+
+typedef char *name;
+
+enum mountstat3 {
+       MNT3_OK = 0,
+       MNT3ERR_PERM = 1,
+       MNT3ERR_NOENT = 2,
+       MNT3ERR_IO = 5,
+       MNT3ERR_ACCES = 13,
+       MNT3ERR_NOTDIR = 20,
+       MNT3ERR_INVAL = 22,
+       MNT3ERR_NAMETOOLONG = 63,
+       MNT3ERR_NOTSUPP = 10004,
+       MNT3ERR_SERVERFAULT = 10006,
+};
+typedef enum mountstat3 mountstat3;
+
+typedef struct mountbody *mountlist;
+
+struct mountbody {
+       name ml_hostname;
+       dirpath ml_directory;
+       mountlist ml_next;
+};
+typedef struct mountbody mountbody;
+
+typedef struct groupnode *groups;
+
+struct groupnode {
+       name gr_name;
+       groups gr_next;
+};
+typedef struct groupnode groupnode;
+
+typedef struct exportnode *exports;
+
+struct exportnode {
+       dirpath ex_dir;
+       groups ex_groups;
+       exports ex_next;
+};
+typedef struct exportnode exportnode;
+
+struct mountres3_ok {
+       fhandle3 fhandle;
+       struct {
+               u_int auth_flavors_len;
+               int *auth_flavors_val;
+       } auth_flavors;
+};
+typedef struct mountres3_ok mountres3_ok;
+
+struct mountres3 {
+       mountstat3 fhs_status;
+       union {
+               mountres3_ok mountinfo;
+       } mountres3_u;
+};
+typedef struct mountres3 mountres3;
+
+#define MOUNT_PROGRAM 100005
+#define MOUNT_V3 3
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define MOUNT3_NULL 0
+extern  void * mount3_null_3(void *, CLIENT *);
+extern  void * mount3_null_3_svc(void *, struct svc_req *);
+#define MOUNT3_MNT 1
+extern  mountres3 * mount3_mnt_3(dirpath *, CLIENT *);
+extern  mountres3 * mount3_mnt_3_svc(dirpath *, struct svc_req *);
+#define MOUNT3_DUMP 2
+extern  mountlist * mount3_dump_3(void *, CLIENT *);
+extern  mountlist * mount3_dump_3_svc(void *, struct svc_req *);
+#define MOUNT3_UMNT 3
+extern  void * mount3_umnt_3(dirpath *, CLIENT *);
+extern  void * mount3_umnt_3_svc(dirpath *, struct svc_req *);
+#define MOUNT3_UMNTALL 4
+extern  void * mount3_umntall_3(void *, CLIENT *);
+extern  void * mount3_umntall_3_svc(void *, struct svc_req *);
+#define MOUNT3_EXPORT 5
+extern  exports * mount3_export_3(void *, CLIENT *);
+extern  exports * mount3_export_3_svc(void *, struct svc_req *);
+extern int mount_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define MOUNT3_NULL 0
+extern  void * mount3_null_3();
+extern  void * mount3_null_3_svc();
+#define MOUNT3_MNT 1
+extern  mountres3 * mount3_mnt_3();
+extern  mountres3 * mount3_mnt_3_svc();
+#define MOUNT3_DUMP 2
+extern  mountlist * mount3_dump_3();
+extern  mountlist * mount3_dump_3_svc();
+#define MOUNT3_UMNT 3
+extern  void * mount3_umnt_3();
+extern  void * mount3_umnt_3_svc();
+#define MOUNT3_UMNTALL 4
+extern  void * mount3_umntall_3();
+extern  void * mount3_umntall_3_svc();
+#define MOUNT3_EXPORT 5
+extern  exports * mount3_export_3();
+extern  exports * mount3_export_3_svc();
+extern int mount_program_3_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern  bool_t xdr_fhandle3 (XDR *, fhandle3*);
+extern  bool_t xdr_dirpath (XDR *, dirpath*);
+extern  bool_t xdr_name (XDR *, name*);
+extern  bool_t xdr_mountstat3 (XDR *, mountstat3*);
+extern  bool_t xdr_mountlist (XDR *, mountlist*);
+extern  bool_t xdr_mountbody (XDR *, mountbody*);
+extern  bool_t xdr_groups (XDR *, groups*);
+extern  bool_t xdr_groupnode (XDR *, groupnode*);
+extern  bool_t xdr_exports (XDR *, exports*);
+extern  bool_t xdr_exportnode (XDR *, exportnode*);
+extern  bool_t xdr_mountres3_ok (XDR *, mountres3_ok*);
+extern  bool_t xdr_mountres3 (XDR *, mountres3*);
+
+#else /* K&R C */
+extern bool_t xdr_fhandle3 ();
+extern bool_t xdr_dirpath ();
+extern bool_t xdr_name ();
+extern bool_t xdr_mountstat3 ();
+extern bool_t xdr_mountlist ();
+extern bool_t xdr_mountbody ();
+extern bool_t xdr_groups ();
+extern bool_t xdr_groupnode ();
+extern bool_t xdr_exports ();
+extern bool_t xdr_exportnode ();
+extern bool_t xdr_mountres3_ok ();
+extern bool_t xdr_mountres3 ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_MOUNT_H_RPCGEN */
diff --git a/ccan/nfs/rpc/nfs.h b/ccan/nfs/rpc/nfs.h
new file mode 100644 (file)
index 0000000..9a5be6b
--- /dev/null
@@ -0,0 +1,1320 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _NFS_H_RPCGEN
+#define _NFS_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define NFS3_FHSIZE 64
+#define NFS3_WRITEVERFSIZE 8
+#define NFS3_CREATEVERFSIZE 8
+#define NFS3_COOKIEVERFSIZE 8
+
+typedef char cookieverf3[NFS3_COOKIEVERFSIZE];
+
+typedef u_quad_t uint64;
+
+typedef uint64 cookie3;
+
+struct nfs_fh3 {
+       struct {
+               u_int data_len;
+               char *data_val;
+       } data;
+};
+typedef struct nfs_fh3 nfs_fh3;
+
+typedef char *filename3;
+
+struct diropargs3 {
+       nfs_fh3 dir;
+       filename3 name;
+};
+typedef struct diropargs3 diropargs3;
+
+enum ftype3 {
+       NF3REG = 1,
+       NF3DIR = 2,
+       NF3BLK = 3,
+       NF3CHR = 4,
+       NF3LNK = 5,
+       NF3SOCK = 6,
+       NF3FIFO = 7,
+};
+typedef enum ftype3 ftype3;
+
+typedef u_long uint32;
+
+typedef long int32;
+
+typedef uint32 mode3;
+
+typedef uint32 uid3;
+
+typedef uint32 gid3;
+
+typedef uint64 size3;
+
+typedef uint64 fileid3;
+
+struct specdata3 {
+       uint32 specdata1;
+       uint32 specdata2;
+};
+typedef struct specdata3 specdata3;
+
+struct nfstime3 {
+       uint32 seconds;
+       uint32 nseconds;
+};
+typedef struct nfstime3 nfstime3;
+
+struct fattr3 {
+       ftype3 type;
+       mode3 mode;
+       uint32 nlink;
+       uid3 uid;
+       gid3 gid;
+       size3 size;
+       size3 used;
+       specdata3 rdev;
+       uint64 fsid;
+       fileid3 fileid;
+       nfstime3 atime;
+       nfstime3 mtime;
+       nfstime3 ctime;
+};
+typedef struct fattr3 fattr3;
+
+struct post_op_attr {
+       bool_t attributes_follow;
+       union {
+               fattr3 attributes;
+       } post_op_attr_u;
+};
+typedef struct post_op_attr post_op_attr;
+
+enum nfsstat3 {
+       NFS3_OK = 0,
+       NFS3ERR_PERM = 1,
+       NFS3ERR_NOENT = 2,
+       NFS3ERR_IO = 5,
+       NFS3ERR_NXIO = 6,
+       NFS3ERR_ACCES = 13,
+       NFS3ERR_EXIST = 17,
+       NFS3ERR_XDEV = 18,
+       NFS3ERR_NODEV = 19,
+       NFS3ERR_NOTDIR = 20,
+       NFS3ERR_ISDIR = 21,
+       NFS3ERR_INVAL = 22,
+       NFS3ERR_FBIG = 27,
+       NFS3ERR_NOSPC = 28,
+       NFS3ERR_ROFS = 30,
+       NFS3ERR_MLINK = 31,
+       NFS3ERR_NAMETOOLONG = 63,
+       NFS3ERR_NOTEMPTY = 66,
+       NFS3ERR_DQUOT = 69,
+       NFS3ERR_STALE = 70,
+       NFS3ERR_REMOTE = 71,
+       NFS3ERR_BADHANDLE = 10001,
+       NFS3ERR_NOT_SYNC = 10002,
+       NFS3ERR_BAD_COOKIE = 10003,
+       NFS3ERR_NOTSUPP = 10004,
+       NFS3ERR_TOOSMALL = 10005,
+       NFS3ERR_SERVERFAULT = 10006,
+       NFS3ERR_BADTYPE = 10007,
+       NFS3ERR_JUKEBOX = 10008,
+};
+typedef enum nfsstat3 nfsstat3;
+
+enum stable_how {
+       UNSTABLE = 0,
+       DATA_SYNC = 1,
+       FILE_SYNC = 2,
+};
+typedef enum stable_how stable_how;
+
+typedef uint64 offset3;
+
+typedef uint32 count3;
+
+struct wcc_attr {
+       size3 size;
+       nfstime3 mtime;
+       nfstime3 ctime;
+};
+typedef struct wcc_attr wcc_attr;
+
+struct pre_op_attr {
+       bool_t attributes_follow;
+       union {
+               wcc_attr attributes;
+       } pre_op_attr_u;
+};
+typedef struct pre_op_attr pre_op_attr;
+
+struct wcc_data {
+       pre_op_attr before;
+       post_op_attr after;
+};
+typedef struct wcc_data wcc_data;
+
+struct WRITE3args {
+       nfs_fh3 file;
+       offset3 offset;
+       count3 count;
+       stable_how stable;
+       struct {
+               u_int data_len;
+               char *data_val;
+       } data;
+};
+typedef struct WRITE3args WRITE3args;
+
+typedef char writeverf3[NFS3_WRITEVERFSIZE];
+
+struct WRITE3resok {
+       wcc_data file_wcc;
+       count3 count;
+       stable_how committed;
+       writeverf3 verf;
+};
+typedef struct WRITE3resok WRITE3resok;
+
+struct WRITE3resfail {
+       wcc_data file_wcc;
+};
+typedef struct WRITE3resfail WRITE3resfail;
+
+struct WRITE3res {
+       nfsstat3 status;
+       union {
+               WRITE3resok resok;
+               WRITE3resfail resfail;
+       } WRITE3res_u;
+};
+typedef struct WRITE3res WRITE3res;
+
+struct LOOKUP3args {
+       diropargs3 what;
+};
+typedef struct LOOKUP3args LOOKUP3args;
+
+struct LOOKUP3resok {
+       nfs_fh3 object;
+       post_op_attr obj_attributes;
+       post_op_attr dir_attributes;
+};
+typedef struct LOOKUP3resok LOOKUP3resok;
+
+struct LOOKUP3resfail {
+       post_op_attr dir_attributes;
+};
+typedef struct LOOKUP3resfail LOOKUP3resfail;
+
+struct LOOKUP3res {
+       nfsstat3 status;
+       union {
+               LOOKUP3resok resok;
+               LOOKUP3resfail resfail;
+       } LOOKUP3res_u;
+};
+typedef struct LOOKUP3res LOOKUP3res;
+
+struct COMMIT3args {
+       nfs_fh3 file;
+       offset3 offset;
+       count3 count;
+};
+typedef struct COMMIT3args COMMIT3args;
+
+struct COMMIT3resok {
+       wcc_data file_wcc;
+       writeverf3 verf;
+};
+typedef struct COMMIT3resok COMMIT3resok;
+
+struct COMMIT3resfail {
+       wcc_data file_wcc;
+};
+typedef struct COMMIT3resfail COMMIT3resfail;
+
+struct COMMIT3res {
+       nfsstat3 status;
+       union {
+               COMMIT3resok resok;
+               COMMIT3resfail resfail;
+       } COMMIT3res_u;
+};
+typedef struct COMMIT3res COMMIT3res;
+#define ACCESS3_READ 0x0001
+#define ACCESS3_LOOKUP 0x0002
+#define ACCESS3_MODIFY 0x0004
+#define ACCESS3_EXTEND 0x0008
+#define ACCESS3_DELETE 0x0010
+#define ACCESS3_EXECUTE 0x0020
+
+struct ACCESS3args {
+       nfs_fh3 object;
+       uint32 access;
+};
+typedef struct ACCESS3args ACCESS3args;
+
+struct ACCESS3resok {
+       post_op_attr obj_attributes;
+       uint32 access;
+};
+typedef struct ACCESS3resok ACCESS3resok;
+
+struct ACCESS3resfail {
+       post_op_attr obj_attributes;
+};
+typedef struct ACCESS3resfail ACCESS3resfail;
+
+struct ACCESS3res {
+       nfsstat3 status;
+       union {
+               ACCESS3resok resok;
+               ACCESS3resfail resfail;
+       } ACCESS3res_u;
+};
+typedef struct ACCESS3res ACCESS3res;
+
+struct GETATTR3args {
+       nfs_fh3 object;
+};
+typedef struct GETATTR3args GETATTR3args;
+
+struct GETATTR3resok {
+       fattr3 obj_attributes;
+};
+typedef struct GETATTR3resok GETATTR3resok;
+
+struct GETATTR3res {
+       nfsstat3 status;
+       union {
+               GETATTR3resok resok;
+       } GETATTR3res_u;
+};
+typedef struct GETATTR3res GETATTR3res;
+
+enum time_how {
+       DONT_CHANGE = 0,
+       SET_TO_SERVER_TIME = 1,
+       SET_TO_CLIENT_TIME = 2,
+};
+typedef enum time_how time_how;
+
+struct set_mode3 {
+       bool_t set_it;
+       union {
+               mode3 mode;
+       } set_mode3_u;
+};
+typedef struct set_mode3 set_mode3;
+
+struct set_uid3 {
+       bool_t set_it;
+       union {
+               uid3 uid;
+       } set_uid3_u;
+};
+typedef struct set_uid3 set_uid3;
+
+struct set_gid3 {
+       bool_t set_it;
+       union {
+               gid3 gid;
+       } set_gid3_u;
+};
+typedef struct set_gid3 set_gid3;
+
+struct set_size3 {
+       bool_t set_it;
+       union {
+               size3 size;
+       } set_size3_u;
+};
+typedef struct set_size3 set_size3;
+
+struct set_atime {
+       time_how set_it;
+       union {
+               nfstime3 atime;
+       } set_atime_u;
+};
+typedef struct set_atime set_atime;
+
+struct set_mtime {
+       time_how set_it;
+       union {
+               nfstime3 mtime;
+       } set_mtime_u;
+};
+typedef struct set_mtime set_mtime;
+
+struct sattr3 {
+       set_mode3 mode;
+       set_uid3 uid;
+       set_gid3 gid;
+       set_size3 size;
+       set_atime atime;
+       set_mtime mtime;
+};
+typedef struct sattr3 sattr3;
+
+enum createmode3 {
+       UNCHECKED = 0,
+       GUARDED = 1,
+       EXCLUSIVE = 2,
+};
+typedef enum createmode3 createmode3;
+
+typedef char createverf3[NFS3_CREATEVERFSIZE];
+
+struct createhow3 {
+       createmode3 mode;
+       union {
+               sattr3 obj_attributes;
+               createverf3 verf;
+       } createhow3_u;
+};
+typedef struct createhow3 createhow3;
+
+struct CREATE3args {
+       diropargs3 where;
+       createhow3 how;
+};
+typedef struct CREATE3args CREATE3args;
+
+struct post_op_fh3 {
+       bool_t handle_follows;
+       union {
+               nfs_fh3 handle;
+       } post_op_fh3_u;
+};
+typedef struct post_op_fh3 post_op_fh3;
+
+struct CREATE3resok {
+       post_op_fh3 obj;
+       post_op_attr obj_attributes;
+       wcc_data dir_wcc;
+};
+typedef struct CREATE3resok CREATE3resok;
+
+struct CREATE3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct CREATE3resfail CREATE3resfail;
+
+struct CREATE3res {
+       nfsstat3 status;
+       union {
+               CREATE3resok resok;
+               CREATE3resfail resfail;
+       } CREATE3res_u;
+};
+typedef struct CREATE3res CREATE3res;
+
+struct REMOVE3args {
+       diropargs3 object;
+};
+typedef struct REMOVE3args REMOVE3args;
+
+struct REMOVE3resok {
+       wcc_data dir_wcc;
+};
+typedef struct REMOVE3resok REMOVE3resok;
+
+struct REMOVE3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct REMOVE3resfail REMOVE3resfail;
+
+struct REMOVE3res {
+       nfsstat3 status;
+       union {
+               REMOVE3resok resok;
+               REMOVE3resfail resfail;
+       } REMOVE3res_u;
+};
+typedef struct REMOVE3res REMOVE3res;
+
+struct READ3args {
+       nfs_fh3 file;
+       offset3 offset;
+       count3 count;
+};
+typedef struct READ3args READ3args;
+
+struct READ3resok {
+       post_op_attr file_attributes;
+       count3 count;
+       bool_t eof;
+       struct {
+               u_int data_len;
+               char *data_val;
+       } data;
+};
+typedef struct READ3resok READ3resok;
+
+struct READ3resfail {
+       post_op_attr file_attributes;
+};
+typedef struct READ3resfail READ3resfail;
+
+struct READ3res {
+       nfsstat3 status;
+       union {
+               READ3resok resok;
+               READ3resfail resfail;
+       } READ3res_u;
+};
+typedef struct READ3res READ3res;
+#define FSF3_LINK 0x0001
+#define FSF3_SYMLINK 0x0002
+#define FSF3_HOMOGENEOUS 0x0008
+#define FSF3_CANSETTIME 0x0010
+
+struct FSINFO3args {
+       nfs_fh3 fsroot;
+};
+typedef struct FSINFO3args FSINFO3args;
+
+struct FSINFO3resok {
+       post_op_attr obj_attributes;
+       uint32 rtmax;
+       uint32 rtpref;
+       uint32 rtmult;
+       uint32 wtmax;
+       uint32 wtpref;
+       uint32 wtmult;
+       uint32 dtpref;
+       size3 maxfilesize;
+       nfstime3 time_delta;
+       uint32 properties;
+};
+typedef struct FSINFO3resok FSINFO3resok;
+
+struct FSINFO3resfail {
+       post_op_attr obj_attributes;
+};
+typedef struct FSINFO3resfail FSINFO3resfail;
+
+struct FSINFO3res {
+       nfsstat3 status;
+       union {
+               FSINFO3resok resok;
+               FSINFO3resfail resfail;
+       } FSINFO3res_u;
+};
+typedef struct FSINFO3res FSINFO3res;
+
+struct FSSTAT3args {
+       nfs_fh3 fsroot;
+};
+typedef struct FSSTAT3args FSSTAT3args;
+
+struct FSSTAT3resok {
+       post_op_attr obj_attributes;
+       size3 tbytes;
+       size3 fbytes;
+       size3 abytes;
+       size3 tfiles;
+       size3 ffiles;
+       size3 afiles;
+       uint32 invarsec;
+};
+typedef struct FSSTAT3resok FSSTAT3resok;
+
+struct FSSTAT3resfail {
+       post_op_attr obj_attributes;
+};
+typedef struct FSSTAT3resfail FSSTAT3resfail;
+
+struct FSSTAT3res {
+       nfsstat3 status;
+       union {
+               FSSTAT3resok resok;
+               FSSTAT3resfail resfail;
+       } FSSTAT3res_u;
+};
+typedef struct FSSTAT3res FSSTAT3res;
+
+struct PATHCONF3args {
+       nfs_fh3 object;
+};
+typedef struct PATHCONF3args PATHCONF3args;
+
+struct PATHCONF3resok {
+       post_op_attr obj_attributes;
+       uint32 linkmax;
+       uint32 name_max;
+       bool_t no_trunc;
+       bool_t chown_restricted;
+       bool_t case_insensitive;
+       bool_t case_preserving;
+};
+typedef struct PATHCONF3resok PATHCONF3resok;
+
+struct PATHCONF3resfail {
+       post_op_attr obj_attributes;
+};
+typedef struct PATHCONF3resfail PATHCONF3resfail;
+
+struct PATHCONF3res {
+       nfsstat3 status;
+       union {
+               PATHCONF3resok resok;
+               PATHCONF3resfail resfail;
+       } PATHCONF3res_u;
+};
+typedef struct PATHCONF3res PATHCONF3res;
+
+typedef char *nfspath3;
+
+struct symlinkdata3 {
+       sattr3 symlink_attributes;
+       nfspath3 symlink_data;
+};
+typedef struct symlinkdata3 symlinkdata3;
+
+struct SYMLINK3args {
+       diropargs3 where;
+       symlinkdata3 symlink;
+};
+typedef struct SYMLINK3args SYMLINK3args;
+
+struct SYMLINK3resok {
+       post_op_fh3 obj;
+       post_op_attr obj_attributes;
+       wcc_data dir_wcc;
+};
+typedef struct SYMLINK3resok SYMLINK3resok;
+
+struct SYMLINK3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct SYMLINK3resfail SYMLINK3resfail;
+
+struct SYMLINK3res {
+       nfsstat3 status;
+       union {
+               SYMLINK3resok resok;
+               SYMLINK3resfail resfail;
+       } SYMLINK3res_u;
+};
+typedef struct SYMLINK3res SYMLINK3res;
+
+struct READLINK3args {
+       nfs_fh3 symlink;
+};
+typedef struct READLINK3args READLINK3args;
+
+struct READLINK3resok {
+       post_op_attr symlink_attributes;
+       nfspath3 data;
+};
+typedef struct READLINK3resok READLINK3resok;
+
+struct READLINK3resfail {
+       post_op_attr symlink_attributes;
+};
+typedef struct READLINK3resfail READLINK3resfail;
+
+struct READLINK3res {
+       nfsstat3 status;
+       union {
+               READLINK3resok resok;
+               READLINK3resfail resfail;
+       } READLINK3res_u;
+};
+typedef struct READLINK3res READLINK3res;
+
+struct devicedata3 {
+       sattr3 dev_attributes;
+       specdata3 spec;
+};
+typedef struct devicedata3 devicedata3;
+
+struct mknoddata3 {
+       ftype3 type;
+       union {
+               devicedata3 device;
+               sattr3 pipe_attributes;
+       } mknoddata3_u;
+};
+typedef struct mknoddata3 mknoddata3;
+
+struct MKNOD3args {
+       diropargs3 where;
+       mknoddata3 what;
+};
+typedef struct MKNOD3args MKNOD3args;
+
+struct MKNOD3resok {
+       post_op_fh3 obj;
+       post_op_attr obj_attributes;
+       wcc_data dir_wcc;
+};
+typedef struct MKNOD3resok MKNOD3resok;
+
+struct MKNOD3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct MKNOD3resfail MKNOD3resfail;
+
+struct MKNOD3res {
+       nfsstat3 status;
+       union {
+               MKNOD3resok resok;
+               MKNOD3resfail resfail;
+       } MKNOD3res_u;
+};
+typedef struct MKNOD3res MKNOD3res;
+
+struct MKDIR3args {
+       diropargs3 where;
+       sattr3 attributes;
+};
+typedef struct MKDIR3args MKDIR3args;
+
+struct MKDIR3resok {
+       post_op_fh3 obj;
+       post_op_attr obj_attributes;
+       wcc_data dir_wcc;
+};
+typedef struct MKDIR3resok MKDIR3resok;
+
+struct MKDIR3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct MKDIR3resfail MKDIR3resfail;
+
+struct MKDIR3res {
+       nfsstat3 status;
+       union {
+               MKDIR3resok resok;
+               MKDIR3resfail resfail;
+       } MKDIR3res_u;
+};
+typedef struct MKDIR3res MKDIR3res;
+
+struct RMDIR3args {
+       diropargs3 object;
+};
+typedef struct RMDIR3args RMDIR3args;
+
+struct RMDIR3resok {
+       wcc_data dir_wcc;
+};
+typedef struct RMDIR3resok RMDIR3resok;
+
+struct RMDIR3resfail {
+       wcc_data dir_wcc;
+};
+typedef struct RMDIR3resfail RMDIR3resfail;
+
+struct RMDIR3res {
+       nfsstat3 status;
+       union {
+               RMDIR3resok resok;
+               RMDIR3resfail resfail;
+       } RMDIR3res_u;
+};
+typedef struct RMDIR3res RMDIR3res;
+
+struct RENAME3args {
+       diropargs3 from;
+       diropargs3 to;
+};
+typedef struct RENAME3args RENAME3args;
+
+struct RENAME3resok {
+       wcc_data fromdir_wcc;
+       wcc_data todir_wcc;
+};
+typedef struct RENAME3resok RENAME3resok;
+
+struct RENAME3resfail {
+       wcc_data fromdir_wcc;
+       wcc_data todir_wcc;
+};
+typedef struct RENAME3resfail RENAME3resfail;
+
+struct RENAME3res {
+       nfsstat3 status;
+       union {
+               RENAME3resok resok;
+               RENAME3resfail resfail;
+       } RENAME3res_u;
+};
+typedef struct RENAME3res RENAME3res;
+
+struct READDIRPLUS3args {
+       nfs_fh3 dir;
+       cookie3 cookie;
+       cookieverf3 cookieverf;
+       count3 dircount;
+       count3 maxcount;
+};
+typedef struct READDIRPLUS3args READDIRPLUS3args;
+
+struct entryplus3 {
+       fileid3 fileid;
+       filename3 name;
+       cookie3 cookie;
+       post_op_attr name_attributes;
+       post_op_fh3 name_handle;
+       struct entryplus3 *nextentry;
+};
+typedef struct entryplus3 entryplus3;
+
+struct dirlistplus3 {
+       entryplus3 *entries;
+       bool_t eof;
+};
+typedef struct dirlistplus3 dirlistplus3;
+
+struct READDIRPLUS3resok {
+       post_op_attr dir_attributes;
+       cookieverf3 cookieverf;
+       dirlistplus3 reply;
+};
+typedef struct READDIRPLUS3resok READDIRPLUS3resok;
+
+struct READDIRPLUS3resfail {
+       post_op_attr dir_attributes;
+};
+typedef struct READDIRPLUS3resfail READDIRPLUS3resfail;
+
+struct READDIRPLUS3res {
+       nfsstat3 status;
+       union {
+               READDIRPLUS3resok resok;
+               READDIRPLUS3resfail resfail;
+       } READDIRPLUS3res_u;
+};
+typedef struct READDIRPLUS3res READDIRPLUS3res;
+
+struct READDIR3args {
+       nfs_fh3 dir;
+       cookie3 cookie;
+       cookieverf3 cookieverf;
+       count3 count;
+};
+typedef struct READDIR3args READDIR3args;
+
+struct entry3 {
+       fileid3 fileid;
+       filename3 name;
+       cookie3 cookie;
+       struct entry3 *nextentry;
+};
+typedef struct entry3 entry3;
+
+struct dirlist3 {
+       entry3 *entries;
+       bool_t eof;
+};
+typedef struct dirlist3 dirlist3;
+
+struct READDIR3resok {
+       post_op_attr dir_attributes;
+       cookieverf3 cookieverf;
+       dirlist3 reply;
+};
+typedef struct READDIR3resok READDIR3resok;
+
+struct READDIR3resfail {
+       post_op_attr dir_attributes;
+};
+typedef struct READDIR3resfail READDIR3resfail;
+
+struct READDIR3res {
+       nfsstat3 status;
+       union {
+               READDIR3resok resok;
+               READDIR3resfail resfail;
+       } READDIR3res_u;
+};
+typedef struct READDIR3res READDIR3res;
+
+struct LINK3args {
+       nfs_fh3 file;
+       diropargs3 link;
+};
+typedef struct LINK3args LINK3args;
+
+struct LINK3resok {
+       post_op_attr file_attributes;
+       wcc_data linkdir_wcc;
+};
+typedef struct LINK3resok LINK3resok;
+
+struct LINK3resfail {
+       post_op_attr file_attributes;
+       wcc_data linkdir_wcc;
+};
+typedef struct LINK3resfail LINK3resfail;
+
+struct LINK3res {
+       nfsstat3 status;
+       union {
+               LINK3resok resok;
+               LINK3resfail resfail;
+       } LINK3res_u;
+};
+typedef struct LINK3res LINK3res;
+
+struct sattrguard3 {
+       bool_t check;
+       union {
+               nfstime3 obj_ctime;
+       } sattrguard3_u;
+};
+typedef struct sattrguard3 sattrguard3;
+
+struct SETATTR3args {
+       nfs_fh3 object;
+       sattr3 new_attributes;
+       sattrguard3 guard;
+};
+typedef struct SETATTR3args SETATTR3args;
+
+struct SETATTR3resok {
+       wcc_data obj_wcc;
+};
+typedef struct SETATTR3resok SETATTR3resok;
+
+struct SETATTR3resfail {
+       wcc_data obj_wcc;
+};
+typedef struct SETATTR3resfail SETATTR3resfail;
+
+struct SETATTR3res {
+       nfsstat3 status;
+       union {
+               SETATTR3resok resok;
+               SETATTR3resfail resfail;
+       } SETATTR3res_u;
+};
+typedef struct SETATTR3res SETATTR3res;
+
+#define NFS_PROGRAM 100003
+#define NFS_V3 3
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define NFS3_NULL 0
+extern  void * nfs3_null_3(void *, CLIENT *);
+extern  void * nfs3_null_3_svc(void *, struct svc_req *);
+#define NFS3_GETATTR 1
+extern  GETATTR3res * nfs3_getattr_3(GETATTR3args *, CLIENT *);
+extern  GETATTR3res * nfs3_getattr_3_svc(GETATTR3args *, struct svc_req *);
+#define NFS3_SETATTR 2
+extern  SETATTR3res * nfs3_setattr_3(SETATTR3args *, CLIENT *);
+extern  SETATTR3res * nfs3_setattr_3_svc(SETATTR3args *, struct svc_req *);
+#define NFS3_LOOKUP 3
+extern  LOOKUP3res * nfs3_lookup_3(LOOKUP3args *, CLIENT *);
+extern  LOOKUP3res * nfs3_lookup_3_svc(LOOKUP3args *, struct svc_req *);
+#define NFS3_ACCESS 4
+extern  ACCESS3res * nfs3_access_3(ACCESS3args *, CLIENT *);
+extern  ACCESS3res * nfs3_access_3_svc(ACCESS3args *, struct svc_req *);
+#define NFS3_READLINK 5
+extern  READLINK3res * nfs3_readlink_3(READLINK3args *, CLIENT *);
+extern  READLINK3res * nfs3_readlink_3_svc(READLINK3args *, struct svc_req *);
+#define NFS3_READ 6
+extern  READ3res * nfs3_read_3(READ3args *, CLIENT *);
+extern  READ3res * nfs3_read_3_svc(READ3args *, struct svc_req *);
+#define NFS3_WRITE 7
+extern  WRITE3res * nfs3_write_3(WRITE3args *, CLIENT *);
+extern  WRITE3res * nfs3_write_3_svc(WRITE3args *, struct svc_req *);
+#define NFS3_CREATE 8
+extern  CREATE3res * nfs3_create_3(CREATE3args *, CLIENT *);
+extern  CREATE3res * nfs3_create_3_svc(CREATE3args *, struct svc_req *);
+#define NFS3_MKDIR 9
+extern  MKDIR3res * nfs3_mkdir_3(MKDIR3args *, CLIENT *);
+extern  MKDIR3res * nfs3_mkdir_3_svc(MKDIR3args *, struct svc_req *);
+#define NFS3_SYMLINK 10
+extern  SYMLINK3res * nfs3_symlink_3(SYMLINK3args *, CLIENT *);
+extern  SYMLINK3res * nfs3_symlink_3_svc(SYMLINK3args *, struct svc_req *);
+#define NFS3_REMOVE 12
+extern  REMOVE3res * nfs3_remove_3(REMOVE3args *, CLIENT *);
+extern  REMOVE3res * nfs3_remove_3_svc(REMOVE3args *, struct svc_req *);
+#define NFS3_RMDIR 13
+extern  RMDIR3res * nfs3_rmdir_3(RMDIR3args *, CLIENT *);
+extern  RMDIR3res * nfs3_rmdir_3_svc(RMDIR3args *, struct svc_req *);
+#define NFS3_RENAME 14
+extern  RENAME3res * nfs3_rename_3(RENAME3args *, CLIENT *);
+extern  RENAME3res * nfs3_rename_3_svc(RENAME3args *, struct svc_req *);
+#define NFS3_LINK 15
+extern  LINK3res * nfs3_link_3(LINK3args *, CLIENT *);
+extern  LINK3res * nfs3_link_3_svc(LINK3args *, struct svc_req *);
+#define NFS3_READDIR 16
+extern  READDIR3res * nfs3_readdir_3(READDIR3args *, CLIENT *);
+extern  READDIR3res * nfs3_readdir_3_svc(READDIR3args *, struct svc_req *);
+#define NFS3_READDIRPLUS 17
+extern  READDIRPLUS3res * nfs3_readdirplus_3(READDIRPLUS3args *, CLIENT *);
+extern  READDIRPLUS3res * nfs3_readdirplus_3_svc(READDIRPLUS3args *, struct svc_req *);
+#define NFS3_FSSTAT 18
+extern  FSSTAT3res * nfs3_fsstat_3(FSSTAT3args *, CLIENT *);
+extern  FSSTAT3res * nfs3_fsstat_3_svc(FSSTAT3args *, struct svc_req *);
+#define NFS3_FSINFO 19
+extern  FSINFO3res * nfs3_fsinfo_3(FSINFO3args *, CLIENT *);
+extern  FSINFO3res * nfs3_fsinfo_3_svc(FSINFO3args *, struct svc_req *);
+#define NFS3_PATHCONF 20
+extern  PATHCONF3res * nfs3_pathconf_3(PATHCONF3args *, CLIENT *);
+extern  PATHCONF3res * nfs3_pathconf_3_svc(PATHCONF3args *, struct svc_req *);
+#define NFS3_COMMIT 21
+extern  COMMIT3res * nfs3_commit_3(COMMIT3args *, CLIENT *);
+extern  COMMIT3res * nfs3_commit_3_svc(COMMIT3args *, struct svc_req *);
+extern int nfs_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define NFS3_NULL 0
+extern  void * nfs3_null_3();
+extern  void * nfs3_null_3_svc();
+#define NFS3_GETATTR 1
+extern  GETATTR3res * nfs3_getattr_3();
+extern  GETATTR3res * nfs3_getattr_3_svc();
+#define NFS3_SETATTR 2
+extern  SETATTR3res * nfs3_setattr_3();
+extern  SETATTR3res * nfs3_setattr_3_svc();
+#define NFS3_LOOKUP 3
+extern  LOOKUP3res * nfs3_lookup_3();
+extern  LOOKUP3res * nfs3_lookup_3_svc();
+#define NFS3_ACCESS 4
+extern  ACCESS3res * nfs3_access_3();
+extern  ACCESS3res * nfs3_access_3_svc();
+#define NFS3_READLINK 5
+extern  READLINK3res * nfs3_readlink_3();
+extern  READLINK3res * nfs3_readlink_3_svc();
+#define NFS3_READ 6
+extern  READ3res * nfs3_read_3();
+extern  READ3res * nfs3_read_3_svc();
+#define NFS3_WRITE 7
+extern  WRITE3res * nfs3_write_3();
+extern  WRITE3res * nfs3_write_3_svc();
+#define NFS3_CREATE 8
+extern  CREATE3res * nfs3_create_3();
+extern  CREATE3res * nfs3_create_3_svc();
+#define NFS3_MKDIR 9
+extern  MKDIR3res * nfs3_mkdir_3();
+extern  MKDIR3res * nfs3_mkdir_3_svc();
+#define NFS3_SYMLINK 10
+extern  SYMLINK3res * nfs3_symlink_3();
+extern  SYMLINK3res * nfs3_symlink_3_svc();
+#define NFS3_REMOVE 12
+extern  REMOVE3res * nfs3_remove_3();
+extern  REMOVE3res * nfs3_remove_3_svc();
+#define NFS3_RMDIR 13
+extern  RMDIR3res * nfs3_rmdir_3();
+extern  RMDIR3res * nfs3_rmdir_3_svc();
+#define NFS3_RENAME 14
+extern  RENAME3res * nfs3_rename_3();
+extern  RENAME3res * nfs3_rename_3_svc();
+#define NFS3_LINK 15
+extern  LINK3res * nfs3_link_3();
+extern  LINK3res * nfs3_link_3_svc();
+#define NFS3_READDIR 16
+extern  READDIR3res * nfs3_readdir_3();
+extern  READDIR3res * nfs3_readdir_3_svc();
+#define NFS3_READDIRPLUS 17
+extern  READDIRPLUS3res * nfs3_readdirplus_3();
+extern  READDIRPLUS3res * nfs3_readdirplus_3_svc();
+#define NFS3_FSSTAT 18
+extern  FSSTAT3res * nfs3_fsstat_3();
+extern  FSSTAT3res * nfs3_fsstat_3_svc();
+#define NFS3_FSINFO 19
+extern  FSINFO3res * nfs3_fsinfo_3();
+extern  FSINFO3res * nfs3_fsinfo_3_svc();
+#define NFS3_PATHCONF 20
+extern  PATHCONF3res * nfs3_pathconf_3();
+extern  PATHCONF3res * nfs3_pathconf_3_svc();
+#define NFS3_COMMIT 21
+extern  COMMIT3res * nfs3_commit_3();
+extern  COMMIT3res * nfs3_commit_3_svc();
+extern int nfs_program_3_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern  bool_t xdr_cookieverf3 (XDR *, cookieverf3);
+extern  bool_t xdr_uint64 (XDR *, uint64*);
+extern  bool_t xdr_cookie3 (XDR *, cookie3*);
+extern  bool_t xdr_nfs_fh3 (XDR *, nfs_fh3*);
+extern  bool_t xdr_filename3 (XDR *, filename3*);
+extern  bool_t xdr_diropargs3 (XDR *, diropargs3*);
+extern  bool_t xdr_ftype3 (XDR *, ftype3*);
+extern  bool_t xdr_uint32 (XDR *, uint32*);
+extern  bool_t xdr_int32 (XDR *, int32*);
+extern  bool_t xdr_mode3 (XDR *, mode3*);
+extern  bool_t xdr_uid3 (XDR *, uid3*);
+extern  bool_t xdr_gid3 (XDR *, gid3*);
+extern  bool_t xdr_size3 (XDR *, size3*);
+extern  bool_t xdr_fileid3 (XDR *, fileid3*);
+extern  bool_t xdr_specdata3 (XDR *, specdata3*);
+extern  bool_t xdr_nfstime3 (XDR *, nfstime3*);
+extern  bool_t xdr_fattr3 (XDR *, fattr3*);
+extern  bool_t xdr_post_op_attr (XDR *, post_op_attr*);
+extern  bool_t xdr_nfsstat3 (XDR *, nfsstat3*);
+extern  bool_t xdr_stable_how (XDR *, stable_how*);
+extern  bool_t xdr_offset3 (XDR *, offset3*);
+extern  bool_t xdr_count3 (XDR *, count3*);
+extern  bool_t xdr_wcc_attr (XDR *, wcc_attr*);
+extern  bool_t xdr_pre_op_attr (XDR *, pre_op_attr*);
+extern  bool_t xdr_wcc_data (XDR *, wcc_data*);
+extern  bool_t xdr_WRITE3args (XDR *, WRITE3args*);
+extern  bool_t xdr_writeverf3 (XDR *, writeverf3);
+extern  bool_t xdr_WRITE3resok (XDR *, WRITE3resok*);
+extern  bool_t xdr_WRITE3resfail (XDR *, WRITE3resfail*);
+extern  bool_t xdr_WRITE3res (XDR *, WRITE3res*);
+extern  bool_t xdr_LOOKUP3args (XDR *, LOOKUP3args*);
+extern  bool_t xdr_LOOKUP3resok (XDR *, LOOKUP3resok*);
+extern  bool_t xdr_LOOKUP3resfail (XDR *, LOOKUP3resfail*);
+extern  bool_t xdr_LOOKUP3res (XDR *, LOOKUP3res*);
+extern  bool_t xdr_COMMIT3args (XDR *, COMMIT3args*);
+extern  bool_t xdr_COMMIT3resok (XDR *, COMMIT3resok*);
+extern  bool_t xdr_COMMIT3resfail (XDR *, COMMIT3resfail*);
+extern  bool_t xdr_COMMIT3res (XDR *, COMMIT3res*);
+extern  bool_t xdr_ACCESS3args (XDR *, ACCESS3args*);
+extern  bool_t xdr_ACCESS3resok (XDR *, ACCESS3resok*);
+extern  bool_t xdr_ACCESS3resfail (XDR *, ACCESS3resfail*);
+extern  bool_t xdr_ACCESS3res (XDR *, ACCESS3res*);
+extern  bool_t xdr_GETATTR3args (XDR *, GETATTR3args*);
+extern  bool_t xdr_GETATTR3resok (XDR *, GETATTR3resok*);
+extern  bool_t xdr_GETATTR3res (XDR *, GETATTR3res*);
+extern  bool_t xdr_time_how (XDR *, time_how*);
+extern  bool_t xdr_set_mode3 (XDR *, set_mode3*);
+extern  bool_t xdr_set_uid3 (XDR *, set_uid3*);
+extern  bool_t xdr_set_gid3 (XDR *, set_gid3*);
+extern  bool_t xdr_set_size3 (XDR *, set_size3*);
+extern  bool_t xdr_set_atime (XDR *, set_atime*);
+extern  bool_t xdr_set_mtime (XDR *, set_mtime*);
+extern  bool_t xdr_sattr3 (XDR *, sattr3*);
+extern  bool_t xdr_createmode3 (XDR *, createmode3*);
+extern  bool_t xdr_createverf3 (XDR *, createverf3);
+extern  bool_t xdr_createhow3 (XDR *, createhow3*);
+extern  bool_t xdr_CREATE3args (XDR *, CREATE3args*);
+extern  bool_t xdr_post_op_fh3 (XDR *, post_op_fh3*);
+extern  bool_t xdr_CREATE3resok (XDR *, CREATE3resok*);
+extern  bool_t xdr_CREATE3resfail (XDR *, CREATE3resfail*);
+extern  bool_t xdr_CREATE3res (XDR *, CREATE3res*);
+extern  bool_t xdr_REMOVE3args (XDR *, REMOVE3args*);
+extern  bool_t xdr_REMOVE3resok (XDR *, REMOVE3resok*);
+extern  bool_t xdr_REMOVE3resfail (XDR *, REMOVE3resfail*);
+extern  bool_t xdr_REMOVE3res (XDR *, REMOVE3res*);
+extern  bool_t xdr_READ3args (XDR *, READ3args*);
+extern  bool_t xdr_READ3resok (XDR *, READ3resok*);
+extern  bool_t xdr_READ3resfail (XDR *, READ3resfail*);
+extern  bool_t xdr_READ3res (XDR *, READ3res*);
+extern  bool_t xdr_FSINFO3args (XDR *, FSINFO3args*);
+extern  bool_t xdr_FSINFO3resok (XDR *, FSINFO3resok*);
+extern  bool_t xdr_FSINFO3resfail (XDR *, FSINFO3resfail*);
+extern  bool_t xdr_FSINFO3res (XDR *, FSINFO3res*);
+extern  bool_t xdr_FSSTAT3args (XDR *, FSSTAT3args*);
+extern  bool_t xdr_FSSTAT3resok (XDR *, FSSTAT3resok*);
+extern  bool_t xdr_FSSTAT3resfail (XDR *, FSSTAT3resfail*);
+extern  bool_t xdr_FSSTAT3res (XDR *, FSSTAT3res*);
+extern  bool_t xdr_PATHCONF3args (XDR *, PATHCONF3args*);
+extern  bool_t xdr_PATHCONF3resok (XDR *, PATHCONF3resok*);
+extern  bool_t xdr_PATHCONF3resfail (XDR *, PATHCONF3resfail*);
+extern  bool_t xdr_PATHCONF3res (XDR *, PATHCONF3res*);
+extern  bool_t xdr_nfspath3 (XDR *, nfspath3*);
+extern  bool_t xdr_symlinkdata3 (XDR *, symlinkdata3*);
+extern  bool_t xdr_SYMLINK3args (XDR *, SYMLINK3args*);
+extern  bool_t xdr_SYMLINK3resok (XDR *, SYMLINK3resok*);
+extern  bool_t xdr_SYMLINK3resfail (XDR *, SYMLINK3resfail*);
+extern  bool_t xdr_SYMLINK3res (XDR *, SYMLINK3res*);
+extern  bool_t xdr_READLINK3args (XDR *, READLINK3args*);
+extern  bool_t xdr_READLINK3resok (XDR *, READLINK3resok*);
+extern  bool_t xdr_READLINK3resfail (XDR *, READLINK3resfail*);
+extern  bool_t xdr_READLINK3res (XDR *, READLINK3res*);
+extern  bool_t xdr_devicedata3 (XDR *, devicedata3*);
+extern  bool_t xdr_mknoddata3 (XDR *, mknoddata3*);
+extern  bool_t xdr_MKNOD3args (XDR *, MKNOD3args*);
+extern  bool_t xdr_MKNOD3resok (XDR *, MKNOD3resok*);
+extern  bool_t xdr_MKNOD3resfail (XDR *, MKNOD3resfail*);
+extern  bool_t xdr_MKNOD3res (XDR *, MKNOD3res*);
+extern  bool_t xdr_MKDIR3args (XDR *, MKDIR3args*);
+extern  bool_t xdr_MKDIR3resok (XDR *, MKDIR3resok*);
+extern  bool_t xdr_MKDIR3resfail (XDR *, MKDIR3resfail*);
+extern  bool_t xdr_MKDIR3res (XDR *, MKDIR3res*);
+extern  bool_t xdr_RMDIR3args (XDR *, RMDIR3args*);
+extern  bool_t xdr_RMDIR3resok (XDR *, RMDIR3resok*);
+extern  bool_t xdr_RMDIR3resfail (XDR *, RMDIR3resfail*);
+extern  bool_t xdr_RMDIR3res (XDR *, RMDIR3res*);
+extern  bool_t xdr_RENAME3args (XDR *, RENAME3args*);
+extern  bool_t xdr_RENAME3resok (XDR *, RENAME3resok*);
+extern  bool_t xdr_RENAME3resfail (XDR *, RENAME3resfail*);
+extern  bool_t xdr_RENAME3res (XDR *, RENAME3res*);
+extern  bool_t xdr_READDIRPLUS3args (XDR *, READDIRPLUS3args*);
+extern  bool_t xdr_entryplus3 (XDR *, entryplus3*);
+extern  bool_t xdr_dirlistplus3 (XDR *, dirlistplus3*);
+extern  bool_t xdr_READDIRPLUS3resok (XDR *, READDIRPLUS3resok*);
+extern  bool_t xdr_READDIRPLUS3resfail (XDR *, READDIRPLUS3resfail*);
+extern  bool_t xdr_READDIRPLUS3res (XDR *, READDIRPLUS3res*);
+extern  bool_t xdr_READDIR3args (XDR *, READDIR3args*);
+extern  bool_t xdr_entry3 (XDR *, entry3*);
+extern  bool_t xdr_dirlist3 (XDR *, dirlist3*);
+extern  bool_t xdr_READDIR3resok (XDR *, READDIR3resok*);
+extern  bool_t xdr_READDIR3resfail (XDR *, READDIR3resfail*);
+extern  bool_t xdr_READDIR3res (XDR *, READDIR3res*);
+extern  bool_t xdr_LINK3args (XDR *, LINK3args*);
+extern  bool_t xdr_LINK3resok (XDR *, LINK3resok*);
+extern  bool_t xdr_LINK3resfail (XDR *, LINK3resfail*);
+extern  bool_t xdr_LINK3res (XDR *, LINK3res*);
+extern  bool_t xdr_sattrguard3 (XDR *, sattrguard3*);
+extern  bool_t xdr_SETATTR3args (XDR *, SETATTR3args*);
+extern  bool_t xdr_SETATTR3resok (XDR *, SETATTR3resok*);
+extern  bool_t xdr_SETATTR3resfail (XDR *, SETATTR3resfail*);
+extern  bool_t xdr_SETATTR3res (XDR *, SETATTR3res*);
+
+#else /* K&R C */
+extern bool_t xdr_cookieverf3 ();
+extern bool_t xdr_uint64 ();
+extern bool_t xdr_cookie3 ();
+extern bool_t xdr_nfs_fh3 ();
+extern bool_t xdr_filename3 ();
+extern bool_t xdr_diropargs3 ();
+extern bool_t xdr_ftype3 ();
+extern bool_t xdr_uint32 ();
+extern bool_t xdr_int32 ();
+extern bool_t xdr_mode3 ();
+extern bool_t xdr_uid3 ();
+extern bool_t xdr_gid3 ();
+extern bool_t xdr_size3 ();
+extern bool_t xdr_fileid3 ();
+extern bool_t xdr_specdata3 ();
+extern bool_t xdr_nfstime3 ();
+extern bool_t xdr_fattr3 ();
+extern bool_t xdr_post_op_attr ();
+extern bool_t xdr_nfsstat3 ();
+extern bool_t xdr_stable_how ();
+extern bool_t xdr_offset3 ();
+extern bool_t xdr_count3 ();
+extern bool_t xdr_wcc_attr ();
+extern bool_t xdr_pre_op_attr ();
+extern bool_t xdr_wcc_data ();
+extern bool_t xdr_WRITE3args ();
+extern bool_t xdr_writeverf3 ();
+extern bool_t xdr_WRITE3resok ();
+extern bool_t xdr_WRITE3resfail ();
+extern bool_t xdr_WRITE3res ();
+extern bool_t xdr_LOOKUP3args ();
+extern bool_t xdr_LOOKUP3resok ();
+extern bool_t xdr_LOOKUP3resfail ();
+extern bool_t xdr_LOOKUP3res ();
+extern bool_t xdr_COMMIT3args ();
+extern bool_t xdr_COMMIT3resok ();
+extern bool_t xdr_COMMIT3resfail ();
+extern bool_t xdr_COMMIT3res ();
+extern bool_t xdr_ACCESS3args ();
+extern bool_t xdr_ACCESS3resok ();
+extern bool_t xdr_ACCESS3resfail ();
+extern bool_t xdr_ACCESS3res ();
+extern bool_t xdr_GETATTR3args ();
+extern bool_t xdr_GETATTR3resok ();
+extern bool_t xdr_GETATTR3res ();
+extern bool_t xdr_time_how ();
+extern bool_t xdr_set_mode3 ();
+extern bool_t xdr_set_uid3 ();
+extern bool_t xdr_set_gid3 ();
+extern bool_t xdr_set_size3 ();
+extern bool_t xdr_set_atime ();
+extern bool_t xdr_set_mtime ();
+extern bool_t xdr_sattr3 ();
+extern bool_t xdr_createmode3 ();
+extern bool_t xdr_createverf3 ();
+extern bool_t xdr_createhow3 ();
+extern bool_t xdr_CREATE3args ();
+extern bool_t xdr_post_op_fh3 ();
+extern bool_t xdr_CREATE3resok ();
+extern bool_t xdr_CREATE3resfail ();
+extern bool_t xdr_CREATE3res ();
+extern bool_t xdr_REMOVE3args ();
+extern bool_t xdr_REMOVE3resok ();
+extern bool_t xdr_REMOVE3resfail ();
+extern bool_t xdr_REMOVE3res ();
+extern bool_t xdr_READ3args ();
+extern bool_t xdr_READ3resok ();
+extern bool_t xdr_READ3resfail ();
+extern bool_t xdr_READ3res ();
+extern bool_t xdr_FSINFO3args ();
+extern bool_t xdr_FSINFO3resok ();
+extern bool_t xdr_FSINFO3resfail ();
+extern bool_t xdr_FSINFO3res ();
+extern bool_t xdr_FSSTAT3args ();
+extern bool_t xdr_FSSTAT3resok ();
+extern bool_t xdr_FSSTAT3resfail ();
+extern bool_t xdr_FSSTAT3res ();
+extern bool_t xdr_PATHCONF3args ();
+extern bool_t xdr_PATHCONF3resok ();
+extern bool_t xdr_PATHCONF3resfail ();
+extern bool_t xdr_PATHCONF3res ();
+extern bool_t xdr_nfspath3 ();
+extern bool_t xdr_symlinkdata3 ();
+extern bool_t xdr_SYMLINK3args ();
+extern bool_t xdr_SYMLINK3resok ();
+extern bool_t xdr_SYMLINK3resfail ();
+extern bool_t xdr_SYMLINK3res ();
+extern bool_t xdr_READLINK3args ();
+extern bool_t xdr_READLINK3resok ();
+extern bool_t xdr_READLINK3resfail ();
+extern bool_t xdr_READLINK3res ();
+extern bool_t xdr_devicedata3 ();
+extern bool_t xdr_mknoddata3 ();
+extern bool_t xdr_MKNOD3args ();
+extern bool_t xdr_MKNOD3resok ();
+extern bool_t xdr_MKNOD3resfail ();
+extern bool_t xdr_MKNOD3res ();
+extern bool_t xdr_MKDIR3args ();
+extern bool_t xdr_MKDIR3resok ();
+extern bool_t xdr_MKDIR3resfail ();
+extern bool_t xdr_MKDIR3res ();
+extern bool_t xdr_RMDIR3args ();
+extern bool_t xdr_RMDIR3resok ();
+extern bool_t xdr_RMDIR3resfail ();
+extern bool_t xdr_RMDIR3res ();
+extern bool_t xdr_RENAME3args ();
+extern bool_t xdr_RENAME3resok ();
+extern bool_t xdr_RENAME3resfail ();
+extern bool_t xdr_RENAME3res ();
+extern bool_t xdr_READDIRPLUS3args ();
+extern bool_t xdr_entryplus3 ();
+extern bool_t xdr_dirlistplus3 ();
+extern bool_t xdr_READDIRPLUS3resok ();
+extern bool_t xdr_READDIRPLUS3resfail ();
+extern bool_t xdr_READDIRPLUS3res ();
+extern bool_t xdr_READDIR3args ();
+extern bool_t xdr_entry3 ();
+extern bool_t xdr_dirlist3 ();
+extern bool_t xdr_READDIR3resok ();
+extern bool_t xdr_READDIR3resfail ();
+extern bool_t xdr_READDIR3res ();
+extern bool_t xdr_LINK3args ();
+extern bool_t xdr_LINK3resok ();
+extern bool_t xdr_LINK3resfail ();
+extern bool_t xdr_LINK3res ();
+extern bool_t xdr_sattrguard3 ();
+extern bool_t xdr_SETATTR3args ();
+extern bool_t xdr_SETATTR3resok ();
+extern bool_t xdr_SETATTR3resfail ();
+extern bool_t xdr_SETATTR3res ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_NFS_H_RPCGEN */
diff --git a/ccan/nfs/rpc/nfsacl.h b/ccan/nfs/rpc/nfsacl.h
new file mode 100644 (file)
index 0000000..2b7d73c
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _NFSACL_H_RPCGEN
+#define _NFSACL_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define NFSACL_PROGRAM 100227
+#define NFSACL_V3 3
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define NFSACL3_NULL 0
+extern  void * nfsacl3_null_3(void *, CLIENT *);
+extern  void * nfsacl3_null_3_svc(void *, struct svc_req *);
+extern int nfsacl_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define NFSACL3_NULL 0
+extern  void * nfsacl3_null_3();
+extern  void * nfsacl3_null_3_svc();
+extern int nfsacl_program_3_freeresult ();
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_NFSACL_H_RPCGEN */
diff --git a/ccan/nfs/rpc/portmap.h b/ccan/nfs/rpc/portmap.h
new file mode 100644 (file)
index 0000000..7623d28
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _PORTMAP_H_RPCGEN
+#define _PORTMAP_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PMAP_PORT 111
+
+struct mapping {
+       u_int prog;
+       u_int vers;
+       u_int prot;
+       u_int port;
+};
+typedef struct mapping mapping;
+
+struct call_args {
+       u_int prog;
+       u_int vers;
+       u_int proc;
+       struct {
+               u_int args_len;
+               char *args_val;
+       } args;
+};
+typedef struct call_args call_args;
+
+#define PMAP_PROGRAM 100000
+#define PMAP_V2 2
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define PMAP_NULL 0
+extern  void * pmap_null_2(void *, CLIENT *);
+extern  void * pmap_null_2_svc(void *, struct svc_req *);
+#define PMAP_SET 1
+extern  bool_t * pmap_set_2(mapping *, CLIENT *);
+extern  bool_t * pmap_set_2_svc(mapping *, struct svc_req *);
+#define PMAP_UNSET 2
+extern  bool_t * pmap_unset_2(mapping *, CLIENT *);
+extern  bool_t * pmap_unset_2_svc(mapping *, struct svc_req *);
+#define PMAP_GETPORT 3
+extern  u_int * pmap_getport_2(mapping *, CLIENT *);
+extern  u_int * pmap_getport_2_svc(mapping *, struct svc_req *);
+extern int pmap_program_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define PMAP_NULL 0
+extern  void * pmap_null_2();
+extern  void * pmap_null_2_svc();
+#define PMAP_SET 1
+extern  bool_t * pmap_set_2();
+extern  bool_t * pmap_set_2_svc();
+#define PMAP_UNSET 2
+extern  bool_t * pmap_unset_2();
+extern  bool_t * pmap_unset_2_svc();
+#define PMAP_GETPORT 3
+extern  u_int * pmap_getport_2();
+extern  u_int * pmap_getport_2_svc();
+extern int pmap_program_2_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern  bool_t xdr_mapping (XDR *, mapping*);
+extern  bool_t xdr_call_args (XDR *, call_args*);
+
+#else /* K&R C */
+extern bool_t xdr_mapping ();
+extern bool_t xdr_call_args ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_PORTMAP_H_RPCGEN */