diff --git a/examples/nfs-io.c b/examples/nfs-io.c index bfa11c0..49106af 100644 --- a/examples/nfs-io.c +++ b/examples/nfs-io.c @@ -55,6 +55,7 @@ WSADATA wsaData; #include "../include/nfsc/libnfs.h" #include "../include/nfsc/libnfs-raw.h" #include "../mount/libnfs-raw-mount.h" +#include "../nfs/libnfs-raw-nfs.h" #include "../nfs4/libnfs-raw-nfs4.h" void print_usage(void) @@ -62,6 +63,27 @@ void print_usage(void) fprintf(stderr, "Usage: nfs-io [-?|--help|--usage] [stat|creat|trunc|unlink|mkdir|rmdir|touch|chmod] \n"); } + +static char *acl3_type(int type) +{ + switch(type) { + case NFSACL_TYPE_USER_OBJ: return "USER_OBJ"; + case NFSACL_TYPE_USER: return "USER"; + case NFSACL_TYPE_GROUP_OBJ: return "GROUP_OBJ"; + case NFSACL_TYPE_GROUP: return "GROUP"; + case NFSACL_TYPE_CLASS_OBJ: return "CLASS_OBJ"; + case NFSACL_TYPE_CLASS: return "CLASS"; + case NFSACL_TYPE_DEFAULT: return "DEFAULT"; + case NFSACL_TYPE_DEFAULT_USER_OBJ: return "DEFAULT_USER_OBJ"; + case NFSACL_TYPE_DEFAULT_USER: return "DEFAULT_USER"; + case NFSACL_TYPE_DEFAULT_GROUP_OBJ: return "DEFAULT_GROUP_OBJ"; + case NFSACL_TYPE_DEFAULT_GROUP: return "DEFAULT_GROUP"; + case NFSACL_TYPE_DEFAULT_CLASS_OBJ: return "DEFAULT_CLASS_OBJ"; + case NFSACL_TYPE_DEFAULT_OTHER_OBJ: return "DEFAULT_OTHER_OBJ"; + } + return "Unknown ACE type"; +} + int main(int argc, char *argv[]) { int ret = 1; @@ -69,6 +91,7 @@ int main(int argc, char *argv[]) struct nfsfh *nfsfh = NULL; struct nfs_url *url = NULL; fattr4_acl acl4; + fattr3_acl acl3; int i; #ifdef WIN32 @@ -183,18 +206,34 @@ int main(int argc, char *argv[]) printf("\n"); } } else if (!strncmp(argv[1], "acl", 3)) { - printf("ACL version:%d\n", nfs_get_version(nfs)); - if (nfs_get_version(nfs) != NFS_V4) { - printf("acl support only for nfsv4 for now\n"); - goto finished; - } - - /* NFS_V4 */ ret = nfs_open(nfs, url->file, 0600, &nfsfh); if (ret != 0) { printf("failed to open %s\n", url->file); goto finished; } + + printf("ACL version:%d\n", nfs_get_version(nfs)); + + if (nfs_get_version(nfs) == NFS_V3) { + printf("Get v3 ACL\n"); + memset(&acl3, 0, sizeof(fattr3_acl)); + if (nfs3_getacl(nfs, nfsfh, &acl3) != 0) { + printf("nfs3_getacl_async failed\n"); + } + printf("Number of ACEs: %d\n", acl3.ace_count); + for (i = 0; i < acl3.ace_count; i++) { + printf("%s(%d) ", acl3_type(acl3.ace[i].type), acl3.ace[i].type); + printf("Id: %d ", acl3.ace[i].id); + printf("Perm: 0x%x: %s%s%s\n", acl3.ace[i].perm, + acl3.ace[i].perm & NFSACL_PERM_READ ? "READ ":"", + acl3.ace[i].perm & NFSACL_PERM_WRITE ? "WRITE ":"", + acl3.ace[i].perm & NFSACL_PERM_EXEC ? "EXEC ":""); + } + nfs3_acl_free(&acl3); + goto finished; + } + + /* NFS_V4 */ if (nfs4_getacl(nfs, nfsfh, &acl4)) { printf("Failed to read ACLs %s\n", nfs_get_error(nfs)); goto finished; diff --git a/lib/libnfs-sync.c b/lib/libnfs-sync.c index 99b82f7..29c2281 100644 --- a/lib/libnfs-sync.c +++ b/lib/libnfs-sync.c @@ -2103,6 +2103,67 @@ nfs_link(struct nfs_context *nfs, const char *oldpath, const char *newpath) } +/* + * nfs3_getacl() + */ +void nfs3_acl_free(fattr3_acl *nfs3acl) +{ + if (nfs3acl == NULL) { + return; + } + if (nfs3acl->ace) { + free(nfs3acl->ace); + } + if (nfs3acl->default_ace) { + free(nfs3acl->default_ace); + } +} + +static void +nfs3_getacl_cb(int status, struct nfs_context *nfs, void *data, void *private_data) +{ + struct sync_cb_data *cb_data = private_data; + fattr3_acl *src = data; + fattr3_acl *dst = cb_data->return_data; + + if (status < 0) { + nfs_set_error(nfs, "getacl call failed with \"%s\"", + (char *)data); + goto finished; + } + memcpy(dst, src, sizeof(fattr3_acl)); + src->ace = NULL; /* steal the pointer to ACEs */ + src->default_ace = NULL; /* steal the pointer to Default ACEs */ + + finished: + cb_data_is_finished(cb_data, status); +} + +int +nfs3_getacl(struct nfs_context *nfs, struct nfsfh *nfsfh, + fattr3_acl *acl) +{ + struct sync_cb_data cb_data; + + cb_data.return_data = acl; + if (nfs_init_cb_data(nfs, &cb_data)) { + return -1; + } + + if (nfs3_getacl_async(nfs, nfsfh, nfs3_getacl_cb, &cb_data) != 0) { + nfs_set_error(nfs, "nfs_getacl_async failed. %s", + nfs_get_error(nfs)); + nfs_destroy_cb_sem(&cb_data); + return -1; + } + + wait_for_nfs_reply(nfs, &cb_data); + nfs_destroy_cb_sem(&cb_data); + + return cb_data.status; +} + + /* * nfs4_getacl() */ diff --git a/lib/libnfs-win32.def b/lib/libnfs-win32.def index e3198f2..cc2b121 100644 --- a/lib/libnfs-win32.def +++ b/lib/libnfs-win32.def @@ -121,6 +121,8 @@ nfsstat3_to_errno nfsstat3_to_str nfsstat4_to_errno nfsstat4_to_str +nfs3_getacl +nfs3_getacl_async nfs4_set_client_name nfs4_set_verifier nfs4_acl_free diff --git a/lib/nfs_v3.c b/lib/nfs_v3.c index a668c11..4495d66 100644 --- a/lib/nfs_v3.c +++ b/lib/nfs_v3.c @@ -3994,6 +3994,98 @@ nfs3_fsync_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, return 0; } +static void +nfs3_getacl_cb(struct rpc_context *rpc, int status, void *command_data, + void *private_data) +{ + GETACL3res *res; + GETACL3resok *resok; + struct nfs_cb_data *data = private_data; + struct nfs_context *nfs = data->nfs; + fattr3_acl acl; + int i; + + assert(rpc->magic == RPC_CONTEXT_MAGIC); + + if (check_nfs3_error(nfs, status, data, command_data)) { + free_nfs_cb_data(data); + return; + } + + res = command_data; + if (res->status != NFS3_OK) { + nfs_set_error(nfs, "NFS: GETACL of %s failed with " + "%s(%d)", data->saved_path, + nfsstat3_to_str(res->status), + nfsstat3_to_errno(res->status)); + data->cb(nfsstat3_to_errno(res->status), nfs, + nfs_get_error(nfs), data->private_data); + free_nfs_cb_data(data); + return; + } + memset(&acl, 0, sizeof(acl)); + resok = &res->GETACL3res_u.resok; + acl.ace_count = resok->ace_count; + if (acl.ace_count) { + acl.ace = calloc(acl.ace_count, sizeof(struct nfsacl_ace)); + if (acl.ace == NULL) { + data->cb(-ENOMEM, nfs, nfs_get_error(nfs), data->private_data); + free_nfs_cb_data(data); + return; + } + for (i = 0; i < acl.ace_count; i++) { + acl.ace[i] = resok->ace.ace_val[i]; + } + } + acl.default_ace_count = resok->default_ace_count; + if (acl.default_ace_count) { + acl.default_ace = calloc(acl.default_ace_count, sizeof(struct nfsacl_ace)); + if (acl.default_ace == NULL) { + data->cb(-ENOMEM, nfs, nfs_get_error(nfs), data->private_data); + free_nfs_cb_data(data); + return; + } + for (i = 0; i < acl.default_ace_count; i++) { + acl.default_ace[i] = resok->default_ace.default_ace_val[i]; + } + } + data->cb(0, nfs, &acl, data->private_data); + free_nfs_cb_data(data); +} + + +int +nfs3_getacl_async(struct nfs_context *nfs, struct nfsfh *nfsfh, nfs_cb cb, + void *private_data) +{ + struct nfs_cb_data *data; + GETACL3args args; + + printf("getacl async\n"); + data = malloc(sizeof(struct nfs_cb_data)); + if (data == NULL) { + nfs_set_error(nfs, "out of memory: failed to allocate " + "nfs_cb_data structure"); + return -1; + } + memset(data, 0, sizeof(struct nfs_cb_data)); + data->nfs = nfs; + data->cb = cb; + data->private_data = private_data; + + memset(&args, 0, sizeof(GETACL3args)); + args.dir.data.data_len = nfsfh->fh.len; + args.dir.data.data_val = nfsfh->fh.val; + args.mask = NFSACL_MASK_ACL_ENTRY|NFSACL_MASK_ACL_COUNT|NFSACL_MASK_ACL_DEFAULT_ENTRY|NFSACL_MASK_ACL_DEFAULT_COUNT; + if (rpc_nfsacl_getacl_async(nfs->rpc, nfs3_getacl_cb, &args, data) != 0) { + data->cb(-ENOMEM, nfs, nfs_get_error(nfs), + data->private_data); + free_nfs_cb_data(data); + return -1; + } + return 0; +} + static void nfs3_stat_1_cb(struct rpc_context *rpc, int status, void *command_data, void *private_data) diff --git a/nfs/Makefile.am b/nfs/Makefile.am index ef95d15..c874ad3 100644 --- a/nfs/Makefile.am +++ b/nfs/Makefile.am @@ -21,5 +21,6 @@ nfs-stamp : nfs.x compile_rpc: cat nfs.x | head -29 >libnfs-raw-nfs.h rpcgen -h nfs.x | sed -e "s/#include /#include /" -e "s/xdr/zdr/g" -e "s/XDR/ZDR/g" -e "s/#define _NFS_H_RPCGEN/#define _NFS_H_RPCGEN\n#include /g" -e "s/#define NFS3_COOKIEVERFSIZE 8/#define NFS3_COOKIEVERFSIZE 8\n\n/g" -e "s/ CLIENT / void /g" -e "s/SVCXPRT /void /g" -e "s/bool_t/uint32_t/g" >> libnfs-raw-nfs.h + cat libnfs-raw-nfs.h.extra >>libnfs-raw-nfs.h cat nfs.x | head -29 >libnfs-raw-nfs.c rpcgen -c nfs.x | sed -e "s/#include \".*nfs.h\"/#include \"libnfs-xdr.h\"\n#include \"libnfs-raw-nfs.h\"/" -e "s/xdr/zdr/g" -e "s/XDR/ZDR/g" -e "s/register int32_t \*buf;/register int32_t *buf;\n buf = NULL;/" -e "s/bool_t/uint32_t/g" >> libnfs-raw-nfs.c diff --git a/nfs/libnfs-raw-nfs.c b/nfs/libnfs-raw-nfs.c index dadcd79..6a02346 100644 --- a/nfs/libnfs-raw-nfs.c +++ b/nfs/libnfs-raw-nfs.c @@ -6,7 +6,7 @@ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. + list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. @@ -23,7 +23,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, +of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project. */ @@ -38,6 +38,9 @@ either expressed or implied, of the FreeBSD Project. uint32_t zdr_cookieverf3 (ZDR *zdrs, cookieverf3 objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_opaque (zdrs, objp, NFS3_COOKIEVERFSIZE)) return FALSE; return TRUE; @@ -46,6 +49,9 @@ zdr_cookieverf3 (ZDR *zdrs, cookieverf3 objp) uint32_t zdr_cookie3 (ZDR *zdrs, cookie3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_uint64_t (zdrs, objp)) return FALSE; return TRUE; @@ -54,6 +60,9 @@ zdr_cookie3 (ZDR *zdrs, cookie3 *objp) uint32_t zdr_nfs_fh3 (ZDR *zdrs, nfs_fh3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS3_FHSIZE)) return FALSE; return TRUE; @@ -62,6 +71,9 @@ zdr_nfs_fh3 (ZDR *zdrs, nfs_fh3 *objp) uint32_t zdr_filename3 (ZDR *zdrs, filename3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_string (zdrs, objp, ~0)) return FALSE; return TRUE; @@ -70,6 +82,9 @@ zdr_filename3 (ZDR *zdrs, filename3 *objp) uint32_t zdr_diropargs3 (ZDR *zdrs, diropargs3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->dir)) return FALSE; if (!zdr_filename3 (zdrs, &objp->name)) @@ -80,6 +95,9 @@ zdr_diropargs3 (ZDR *zdrs, diropargs3 *objp) uint32_t zdr_ftype3 (ZDR *zdrs, ftype3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -88,6 +106,9 @@ zdr_ftype3 (ZDR *zdrs, ftype3 *objp) uint32_t zdr_mode3 (ZDR *zdrs, mode3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, objp)) return FALSE; return TRUE; @@ -96,6 +117,9 @@ zdr_mode3 (ZDR *zdrs, mode3 *objp) uint32_t zdr_uid3 (ZDR *zdrs, uid3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, objp)) return FALSE; return TRUE; @@ -104,6 +128,9 @@ zdr_uid3 (ZDR *zdrs, uid3 *objp) uint32_t zdr_gid3 (ZDR *zdrs, gid3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, objp)) return FALSE; return TRUE; @@ -112,6 +139,9 @@ zdr_gid3 (ZDR *zdrs, gid3 *objp) uint32_t zdr_size3 (ZDR *zdrs, size3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_uint64_t (zdrs, objp)) return FALSE; return TRUE; @@ -120,6 +150,9 @@ zdr_size3 (ZDR *zdrs, size3 *objp) uint32_t zdr_fileid3 (ZDR *zdrs, fileid3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_uint64_t (zdrs, objp)) return FALSE; return TRUE; @@ -128,6 +161,9 @@ zdr_fileid3 (ZDR *zdrs, fileid3 *objp) uint32_t zdr_specdata3 (ZDR *zdrs, specdata3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, &objp->specdata1)) return FALSE; if (!zdr_u_int (zdrs, &objp->specdata2)) @@ -138,6 +174,9 @@ zdr_specdata3 (ZDR *zdrs, specdata3 *objp) uint32_t zdr_nfstime3 (ZDR *zdrs, nfstime3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, &objp->seconds)) return FALSE; if (!zdr_u_int (zdrs, &objp->nseconds)) @@ -148,6 +187,9 @@ zdr_nfstime3 (ZDR *zdrs, nfstime3 *objp) uint32_t zdr_fattr3 (ZDR *zdrs, fattr3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_ftype3 (zdrs, &objp->type)) return FALSE; if (!zdr_mode3 (zdrs, &objp->mode)) @@ -180,6 +222,9 @@ zdr_fattr3 (ZDR *zdrs, fattr3 *objp) uint32_t zdr_post_op_attr (ZDR *zdrs, post_op_attr *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->attributes_follow)) return FALSE; switch (objp->attributes_follow) { @@ -198,6 +243,9 @@ zdr_post_op_attr (ZDR *zdrs, post_op_attr *objp) uint32_t zdr_nfsstat3 (ZDR *zdrs, nfsstat3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -206,6 +254,9 @@ zdr_nfsstat3 (ZDR *zdrs, nfsstat3 *objp) uint32_t zdr_stable_how (ZDR *zdrs, stable_how *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -214,6 +265,9 @@ zdr_stable_how (ZDR *zdrs, stable_how *objp) uint32_t zdr_offset3 (ZDR *zdrs, offset3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_uint64_t (zdrs, objp)) return FALSE; return TRUE; @@ -222,6 +276,9 @@ zdr_offset3 (ZDR *zdrs, offset3 *objp) uint32_t zdr_count3 (ZDR *zdrs, count3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, objp)) return FALSE; return TRUE; @@ -230,6 +287,9 @@ zdr_count3 (ZDR *zdrs, count3 *objp) uint32_t zdr_wcc_attr (ZDR *zdrs, wcc_attr *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_size3 (zdrs, &objp->size)) return FALSE; if (!zdr_nfstime3 (zdrs, &objp->mtime)) @@ -242,6 +302,9 @@ zdr_wcc_attr (ZDR *zdrs, wcc_attr *objp) uint32_t zdr_pre_op_attr (ZDR *zdrs, pre_op_attr *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->attributes_follow)) return FALSE; switch (objp->attributes_follow) { @@ -260,6 +323,9 @@ zdr_pre_op_attr (ZDR *zdrs, pre_op_attr *objp) uint32_t zdr_wcc_data (ZDR *zdrs, wcc_data *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_pre_op_attr (zdrs, &objp->before)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->after)) @@ -270,6 +336,9 @@ zdr_wcc_data (ZDR *zdrs, wcc_data *objp) uint32_t zdr_WRITE3args (ZDR *zdrs, WRITE3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->file)) return FALSE; if (!zdr_offset3 (zdrs, &objp->offset)) @@ -286,6 +355,9 @@ zdr_WRITE3args (ZDR *zdrs, WRITE3args *objp) uint32_t zdr_writeverf3 (ZDR *zdrs, writeverf3 objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_opaque (zdrs, objp, NFS3_WRITEVERFSIZE)) return FALSE; return TRUE; @@ -294,6 +366,9 @@ zdr_writeverf3 (ZDR *zdrs, writeverf3 objp) uint32_t zdr_WRITE3resok (ZDR *zdrs, WRITE3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->file_wcc)) return FALSE; if (!zdr_count3 (zdrs, &objp->count)) @@ -308,6 +383,9 @@ zdr_WRITE3resok (ZDR *zdrs, WRITE3resok *objp) uint32_t zdr_WRITE3resfail (ZDR *zdrs, WRITE3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->file_wcc)) return FALSE; return TRUE; @@ -316,6 +394,9 @@ zdr_WRITE3resfail (ZDR *zdrs, WRITE3resfail *objp) uint32_t zdr_WRITE3res (ZDR *zdrs, WRITE3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -334,6 +415,9 @@ zdr_WRITE3res (ZDR *zdrs, WRITE3res *objp) uint32_t zdr_LOOKUP3args (ZDR *zdrs, LOOKUP3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->what)) return FALSE; return TRUE; @@ -342,6 +426,9 @@ zdr_LOOKUP3args (ZDR *zdrs, LOOKUP3args *objp) uint32_t zdr_LOOKUP3resok (ZDR *zdrs, LOOKUP3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->object)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) @@ -354,6 +441,9 @@ zdr_LOOKUP3resok (ZDR *zdrs, LOOKUP3resok *objp) uint32_t zdr_LOOKUP3resfail (ZDR *zdrs, LOOKUP3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->dir_attributes)) return FALSE; return TRUE; @@ -362,6 +452,9 @@ zdr_LOOKUP3resfail (ZDR *zdrs, LOOKUP3resfail *objp) uint32_t zdr_LOOKUP3res (ZDR *zdrs, LOOKUP3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -380,6 +473,9 @@ zdr_LOOKUP3res (ZDR *zdrs, LOOKUP3res *objp) uint32_t zdr_COMMIT3args (ZDR *zdrs, COMMIT3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->file)) return FALSE; if (!zdr_offset3 (zdrs, &objp->offset)) @@ -392,6 +488,9 @@ zdr_COMMIT3args (ZDR *zdrs, COMMIT3args *objp) uint32_t zdr_COMMIT3resok (ZDR *zdrs, COMMIT3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->file_wcc)) return FALSE; if (!zdr_writeverf3 (zdrs, objp->verf)) @@ -402,6 +501,9 @@ zdr_COMMIT3resok (ZDR *zdrs, COMMIT3resok *objp) uint32_t zdr_COMMIT3resfail (ZDR *zdrs, COMMIT3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->file_wcc)) return FALSE; return TRUE; @@ -410,6 +512,9 @@ zdr_COMMIT3resfail (ZDR *zdrs, COMMIT3resfail *objp) uint32_t zdr_COMMIT3res (ZDR *zdrs, COMMIT3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -428,6 +533,9 @@ zdr_COMMIT3res (ZDR *zdrs, COMMIT3res *objp) uint32_t zdr_ACCESS3args (ZDR *zdrs, ACCESS3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->object)) return FALSE; if (!zdr_u_int (zdrs, &objp->access)) @@ -438,6 +546,9 @@ zdr_ACCESS3args (ZDR *zdrs, ACCESS3args *objp) uint32_t zdr_ACCESS3resok (ZDR *zdrs, ACCESS3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; if (!zdr_u_int (zdrs, &objp->access)) @@ -448,6 +559,9 @@ zdr_ACCESS3resok (ZDR *zdrs, ACCESS3resok *objp) uint32_t zdr_ACCESS3resfail (ZDR *zdrs, ACCESS3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; return TRUE; @@ -456,6 +570,9 @@ zdr_ACCESS3resfail (ZDR *zdrs, ACCESS3resfail *objp) uint32_t zdr_ACCESS3res (ZDR *zdrs, ACCESS3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -474,6 +591,9 @@ zdr_ACCESS3res (ZDR *zdrs, ACCESS3res *objp) uint32_t zdr_GETATTR3args (ZDR *zdrs, GETATTR3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->object)) return FALSE; return TRUE; @@ -482,6 +602,9 @@ zdr_GETATTR3args (ZDR *zdrs, GETATTR3args *objp) uint32_t zdr_GETATTR3resok (ZDR *zdrs, GETATTR3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fattr3 (zdrs, &objp->obj_attributes)) return FALSE; return TRUE; @@ -490,6 +613,9 @@ zdr_GETATTR3resok (ZDR *zdrs, GETATTR3resok *objp) uint32_t zdr_GETATTR3res (ZDR *zdrs, GETATTR3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -506,6 +632,9 @@ zdr_GETATTR3res (ZDR *zdrs, GETATTR3res *objp) uint32_t zdr_time_how (ZDR *zdrs, time_how *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -514,6 +643,9 @@ zdr_time_how (ZDR *zdrs, time_how *objp) uint32_t zdr_set_mode3 (ZDR *zdrs, set_mode3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -530,6 +662,9 @@ zdr_set_mode3 (ZDR *zdrs, set_mode3 *objp) uint32_t zdr_set_uid3 (ZDR *zdrs, set_uid3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -546,6 +681,9 @@ zdr_set_uid3 (ZDR *zdrs, set_uid3 *objp) uint32_t zdr_set_gid3 (ZDR *zdrs, set_gid3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -562,6 +700,9 @@ zdr_set_gid3 (ZDR *zdrs, set_gid3 *objp) uint32_t zdr_set_size3 (ZDR *zdrs, set_size3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -578,6 +719,9 @@ zdr_set_size3 (ZDR *zdrs, set_size3 *objp) uint32_t zdr_set_atime (ZDR *zdrs, set_atime *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_time_how (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -594,6 +738,9 @@ zdr_set_atime (ZDR *zdrs, set_atime *objp) uint32_t zdr_set_mtime (ZDR *zdrs, set_mtime *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_time_how (zdrs, &objp->set_it)) return FALSE; switch (objp->set_it) { @@ -610,6 +757,9 @@ zdr_set_mtime (ZDR *zdrs, set_mtime *objp) uint32_t zdr_sattr3 (ZDR *zdrs, sattr3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_set_mode3 (zdrs, &objp->mode)) return FALSE; if (!zdr_set_uid3 (zdrs, &objp->uid)) @@ -628,6 +778,9 @@ zdr_sattr3 (ZDR *zdrs, sattr3 *objp) uint32_t zdr_createmode3 (ZDR *zdrs, createmode3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -636,6 +789,9 @@ zdr_createmode3 (ZDR *zdrs, createmode3 *objp) uint32_t zdr_createverf3 (ZDR *zdrs, createverf3 objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_opaque (zdrs, objp, NFS3_CREATEVERFSIZE)) return FALSE; return TRUE; @@ -644,6 +800,9 @@ zdr_createverf3 (ZDR *zdrs, createverf3 objp) uint32_t zdr_createhow3 (ZDR *zdrs, createhow3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_createmode3 (zdrs, &objp->mode)) return FALSE; switch (objp->mode) { @@ -668,6 +827,9 @@ zdr_createhow3 (ZDR *zdrs, createhow3 *objp) uint32_t zdr_CREATE3args (ZDR *zdrs, CREATE3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->where)) return FALSE; if (!zdr_createhow3 (zdrs, &objp->how)) @@ -678,6 +840,9 @@ zdr_CREATE3args (ZDR *zdrs, CREATE3args *objp) uint32_t zdr_post_op_fh3 (ZDR *zdrs, post_op_fh3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->handle_follows)) return FALSE; switch (objp->handle_follows) { @@ -696,6 +861,9 @@ zdr_post_op_fh3 (ZDR *zdrs, post_op_fh3 *objp) uint32_t zdr_CREATE3resok (ZDR *zdrs, CREATE3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_fh3 (zdrs, &objp->obj)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) @@ -708,6 +876,9 @@ zdr_CREATE3resok (ZDR *zdrs, CREATE3resok *objp) uint32_t zdr_CREATE3resfail (ZDR *zdrs, CREATE3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -716,6 +887,9 @@ zdr_CREATE3resfail (ZDR *zdrs, CREATE3resfail *objp) uint32_t zdr_CREATE3res (ZDR *zdrs, CREATE3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -734,6 +908,9 @@ zdr_CREATE3res (ZDR *zdrs, CREATE3res *objp) uint32_t zdr_REMOVE3args (ZDR *zdrs, REMOVE3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->object)) return FALSE; return TRUE; @@ -742,6 +919,9 @@ zdr_REMOVE3args (ZDR *zdrs, REMOVE3args *objp) uint32_t zdr_REMOVE3resok (ZDR *zdrs, REMOVE3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -750,6 +930,9 @@ zdr_REMOVE3resok (ZDR *zdrs, REMOVE3resok *objp) uint32_t zdr_REMOVE3resfail (ZDR *zdrs, REMOVE3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -758,6 +941,9 @@ zdr_REMOVE3resfail (ZDR *zdrs, REMOVE3resfail *objp) uint32_t zdr_REMOVE3res (ZDR *zdrs, REMOVE3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -776,6 +962,9 @@ zdr_REMOVE3res (ZDR *zdrs, REMOVE3res *objp) uint32_t zdr_READ3args (ZDR *zdrs, READ3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->file)) return FALSE; if (!zdr_offset3 (zdrs, &objp->offset)) @@ -788,6 +977,9 @@ zdr_READ3args (ZDR *zdrs, READ3args *objp) uint32_t zdr_READ3resok (ZDR *zdrs, READ3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->file_attributes)) return FALSE; if (!zdr_count3 (zdrs, &objp->count)) @@ -802,6 +994,9 @@ zdr_READ3resok (ZDR *zdrs, READ3resok *objp) uint32_t zdr_READ3resfail (ZDR *zdrs, READ3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->file_attributes)) return FALSE; return TRUE; @@ -810,6 +1005,9 @@ zdr_READ3resfail (ZDR *zdrs, READ3resfail *objp) uint32_t zdr_READ3res (ZDR *zdrs, READ3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -828,6 +1026,9 @@ zdr_READ3res (ZDR *zdrs, READ3res *objp) uint32_t zdr_FSINFO3args (ZDR *zdrs, FSINFO3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->fsroot)) return FALSE; return TRUE; @@ -839,6 +1040,7 @@ zdr_FSINFO3resok (ZDR *zdrs, FSINFO3resok *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; @@ -941,6 +1143,9 @@ zdr_FSINFO3resok (ZDR *zdrs, FSINFO3resok *objp) uint32_t zdr_FSINFO3resfail (ZDR *zdrs, FSINFO3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; return TRUE; @@ -949,6 +1154,9 @@ zdr_FSINFO3resfail (ZDR *zdrs, FSINFO3resfail *objp) uint32_t zdr_FSINFO3res (ZDR *zdrs, FSINFO3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -967,6 +1175,9 @@ zdr_FSINFO3res (ZDR *zdrs, FSINFO3res *objp) uint32_t zdr_FSSTAT3args (ZDR *zdrs, FSSTAT3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->fsroot)) return FALSE; return TRUE; @@ -975,6 +1186,9 @@ zdr_FSSTAT3args (ZDR *zdrs, FSSTAT3args *objp) uint32_t zdr_FSSTAT3resok (ZDR *zdrs, FSSTAT3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; if (!zdr_size3 (zdrs, &objp->tbytes)) @@ -997,6 +1211,9 @@ zdr_FSSTAT3resok (ZDR *zdrs, FSSTAT3resok *objp) uint32_t zdr_FSSTAT3resfail (ZDR *zdrs, FSSTAT3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; return TRUE; @@ -1005,6 +1222,9 @@ zdr_FSSTAT3resfail (ZDR *zdrs, FSSTAT3resfail *objp) uint32_t zdr_FSSTAT3res (ZDR *zdrs, FSSTAT3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1023,6 +1243,9 @@ zdr_FSSTAT3res (ZDR *zdrs, FSSTAT3res *objp) uint32_t zdr_PATHCONF3args (ZDR *zdrs, PATHCONF3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->object)) return FALSE; return TRUE; @@ -1034,6 +1257,7 @@ zdr_PATHCONF3resok (ZDR *zdrs, PATHCONF3resok *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; @@ -1108,6 +1332,9 @@ zdr_PATHCONF3resok (ZDR *zdrs, PATHCONF3resok *objp) uint32_t zdr_PATHCONF3resfail (ZDR *zdrs, PATHCONF3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) return FALSE; return TRUE; @@ -1116,6 +1343,9 @@ zdr_PATHCONF3resfail (ZDR *zdrs, PATHCONF3resfail *objp) uint32_t zdr_PATHCONF3res (ZDR *zdrs, PATHCONF3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1134,6 +1364,9 @@ zdr_PATHCONF3res (ZDR *zdrs, PATHCONF3res *objp) uint32_t zdr_nfspath3 (ZDR *zdrs, nfspath3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_string (zdrs, objp, ~0)) return FALSE; return TRUE; @@ -1142,6 +1375,9 @@ zdr_nfspath3 (ZDR *zdrs, nfspath3 *objp) uint32_t zdr_symlinkdata3 (ZDR *zdrs, symlinkdata3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_sattr3 (zdrs, &objp->symlink_attributes)) return FALSE; if (!zdr_nfspath3 (zdrs, &objp->symlink_data)) @@ -1152,6 +1388,9 @@ zdr_symlinkdata3 (ZDR *zdrs, symlinkdata3 *objp) uint32_t zdr_SYMLINK3args (ZDR *zdrs, SYMLINK3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->where)) return FALSE; if (!zdr_symlinkdata3 (zdrs, &objp->symlink)) @@ -1162,6 +1401,9 @@ zdr_SYMLINK3args (ZDR *zdrs, SYMLINK3args *objp) uint32_t zdr_SYMLINK3resok (ZDR *zdrs, SYMLINK3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_fh3 (zdrs, &objp->obj)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) @@ -1174,6 +1416,9 @@ zdr_SYMLINK3resok (ZDR *zdrs, SYMLINK3resok *objp) uint32_t zdr_SYMLINK3resfail (ZDR *zdrs, SYMLINK3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -1182,6 +1427,9 @@ zdr_SYMLINK3resfail (ZDR *zdrs, SYMLINK3resfail *objp) uint32_t zdr_SYMLINK3res (ZDR *zdrs, SYMLINK3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1200,6 +1448,9 @@ zdr_SYMLINK3res (ZDR *zdrs, SYMLINK3res *objp) uint32_t zdr_READLINK3args (ZDR *zdrs, READLINK3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->symlink)) return FALSE; return TRUE; @@ -1208,6 +1459,9 @@ zdr_READLINK3args (ZDR *zdrs, READLINK3args *objp) uint32_t zdr_READLINK3resok (ZDR *zdrs, READLINK3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes)) return FALSE; if (!zdr_nfspath3 (zdrs, &objp->data)) @@ -1218,6 +1472,9 @@ zdr_READLINK3resok (ZDR *zdrs, READLINK3resok *objp) uint32_t zdr_READLINK3resfail (ZDR *zdrs, READLINK3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes)) return FALSE; return TRUE; @@ -1226,6 +1483,9 @@ zdr_READLINK3resfail (ZDR *zdrs, READLINK3resfail *objp) uint32_t zdr_READLINK3res (ZDR *zdrs, READLINK3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1244,6 +1504,9 @@ zdr_READLINK3res (ZDR *zdrs, READLINK3res *objp) uint32_t zdr_devicedata3 (ZDR *zdrs, devicedata3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_sattr3 (zdrs, &objp->dev_attributes)) return FALSE; if (!zdr_specdata3 (zdrs, &objp->spec)) @@ -1254,6 +1517,9 @@ zdr_devicedata3 (ZDR *zdrs, devicedata3 *objp) uint32_t zdr_mknoddata3 (ZDR *zdrs, mknoddata3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_ftype3 (zdrs, &objp->type)) return FALSE; switch (objp->type) { @@ -1282,6 +1548,9 @@ zdr_mknoddata3 (ZDR *zdrs, mknoddata3 *objp) uint32_t zdr_MKNOD3args (ZDR *zdrs, MKNOD3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->where)) return FALSE; if (!zdr_mknoddata3 (zdrs, &objp->what)) @@ -1292,6 +1561,9 @@ zdr_MKNOD3args (ZDR *zdrs, MKNOD3args *objp) uint32_t zdr_MKNOD3resok (ZDR *zdrs, MKNOD3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_fh3 (zdrs, &objp->obj)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) @@ -1304,6 +1576,9 @@ zdr_MKNOD3resok (ZDR *zdrs, MKNOD3resok *objp) uint32_t zdr_MKNOD3resfail (ZDR *zdrs, MKNOD3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -1312,6 +1587,9 @@ zdr_MKNOD3resfail (ZDR *zdrs, MKNOD3resfail *objp) uint32_t zdr_MKNOD3res (ZDR *zdrs, MKNOD3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1330,6 +1608,9 @@ zdr_MKNOD3res (ZDR *zdrs, MKNOD3res *objp) uint32_t zdr_MKDIR3args (ZDR *zdrs, MKDIR3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->where)) return FALSE; if (!zdr_sattr3 (zdrs, &objp->attributes)) @@ -1340,6 +1621,9 @@ zdr_MKDIR3args (ZDR *zdrs, MKDIR3args *objp) uint32_t zdr_MKDIR3resok (ZDR *zdrs, MKDIR3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_fh3 (zdrs, &objp->obj)) return FALSE; if (!zdr_post_op_attr (zdrs, &objp->obj_attributes)) @@ -1352,6 +1636,9 @@ zdr_MKDIR3resok (ZDR *zdrs, MKDIR3resok *objp) uint32_t zdr_MKDIR3resfail (ZDR *zdrs, MKDIR3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -1360,6 +1647,9 @@ zdr_MKDIR3resfail (ZDR *zdrs, MKDIR3resfail *objp) uint32_t zdr_MKDIR3res (ZDR *zdrs, MKDIR3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1378,6 +1668,9 @@ zdr_MKDIR3res (ZDR *zdrs, MKDIR3res *objp) uint32_t zdr_RMDIR3args (ZDR *zdrs, RMDIR3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->object)) return FALSE; return TRUE; @@ -1386,6 +1679,9 @@ zdr_RMDIR3args (ZDR *zdrs, RMDIR3args *objp) uint32_t zdr_RMDIR3resok (ZDR *zdrs, RMDIR3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -1394,6 +1690,9 @@ zdr_RMDIR3resok (ZDR *zdrs, RMDIR3resok *objp) uint32_t zdr_RMDIR3resfail (ZDR *zdrs, RMDIR3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->dir_wcc)) return FALSE; return TRUE; @@ -1402,6 +1701,9 @@ zdr_RMDIR3resfail (ZDR *zdrs, RMDIR3resfail *objp) uint32_t zdr_RMDIR3res (ZDR *zdrs, RMDIR3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1420,6 +1722,9 @@ zdr_RMDIR3res (ZDR *zdrs, RMDIR3res *objp) uint32_t zdr_RENAME3args (ZDR *zdrs, RENAME3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs3 (zdrs, &objp->from)) return FALSE; if (!zdr_diropargs3 (zdrs, &objp->to)) @@ -1430,6 +1735,9 @@ zdr_RENAME3args (ZDR *zdrs, RENAME3args *objp) uint32_t zdr_RENAME3resok (ZDR *zdrs, RENAME3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc)) return FALSE; if (!zdr_wcc_data (zdrs, &objp->todir_wcc)) @@ -1440,6 +1748,9 @@ zdr_RENAME3resok (ZDR *zdrs, RENAME3resok *objp) uint32_t zdr_RENAME3resfail (ZDR *zdrs, RENAME3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc)) return FALSE; if (!zdr_wcc_data (zdrs, &objp->todir_wcc)) @@ -1450,6 +1761,9 @@ zdr_RENAME3resfail (ZDR *zdrs, RENAME3resfail *objp) uint32_t zdr_RENAME3res (ZDR *zdrs, RENAME3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1468,6 +1782,9 @@ zdr_RENAME3res (ZDR *zdrs, RENAME3res *objp) uint32_t zdr_READDIRPLUS3args (ZDR *zdrs, READDIRPLUS3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->dir)) return FALSE; if (!zdr_cookie3 (zdrs, &objp->cookie)) @@ -1484,6 +1801,9 @@ zdr_READDIRPLUS3args (ZDR *zdrs, READDIRPLUS3args *objp) uint32_t zdr_entryplus3 (ZDR *zdrs, entryplus3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fileid3 (zdrs, &objp->fileid)) return FALSE; if (!zdr_filename3 (zdrs, &objp->name)) @@ -1502,6 +1822,9 @@ zdr_entryplus3 (ZDR *zdrs, entryplus3 *objp) uint32_t zdr_dirlistplus3 (ZDR *zdrs, dirlistplus3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entryplus3), (zdrproc_t) zdr_entryplus3)) return FALSE; if (!zdr_bool (zdrs, &objp->eof)) @@ -1512,6 +1835,9 @@ zdr_dirlistplus3 (ZDR *zdrs, dirlistplus3 *objp) uint32_t zdr_READDIRPLUS3resok (ZDR *zdrs, READDIRPLUS3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->dir_attributes)) return FALSE; if (!zdr_cookieverf3 (zdrs, objp->cookieverf)) @@ -1524,6 +1850,9 @@ zdr_READDIRPLUS3resok (ZDR *zdrs, READDIRPLUS3resok *objp) uint32_t zdr_READDIRPLUS3resfail (ZDR *zdrs, READDIRPLUS3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->dir_attributes)) return FALSE; return TRUE; @@ -1532,6 +1861,9 @@ zdr_READDIRPLUS3resfail (ZDR *zdrs, READDIRPLUS3resfail *objp) uint32_t zdr_READDIRPLUS3res (ZDR *zdrs, READDIRPLUS3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1550,6 +1882,9 @@ zdr_READDIRPLUS3res (ZDR *zdrs, READDIRPLUS3res *objp) uint32_t zdr_READDIR3args (ZDR *zdrs, READDIR3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->dir)) return FALSE; if (!zdr_cookie3 (zdrs, &objp->cookie)) @@ -1564,6 +1899,9 @@ zdr_READDIR3args (ZDR *zdrs, READDIR3args *objp) uint32_t zdr_entry3 (ZDR *zdrs, entry3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fileid3 (zdrs, &objp->fileid)) return FALSE; if (!zdr_filename3 (zdrs, &objp->name)) @@ -1578,6 +1916,9 @@ zdr_entry3 (ZDR *zdrs, entry3 *objp) uint32_t zdr_dirlist3 (ZDR *zdrs, dirlist3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry3), (zdrproc_t) zdr_entry3)) return FALSE; if (!zdr_bool (zdrs, &objp->eof)) @@ -1588,6 +1929,9 @@ zdr_dirlist3 (ZDR *zdrs, dirlist3 *objp) uint32_t zdr_READDIR3resok (ZDR *zdrs, READDIR3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->dir_attributes)) return FALSE; if (!zdr_cookieverf3 (zdrs, objp->cookieverf)) @@ -1600,6 +1944,9 @@ zdr_READDIR3resok (ZDR *zdrs, READDIR3resok *objp) uint32_t zdr_READDIR3resfail (ZDR *zdrs, READDIR3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->dir_attributes)) return FALSE; return TRUE; @@ -1608,6 +1955,9 @@ zdr_READDIR3resfail (ZDR *zdrs, READDIR3resfail *objp) uint32_t zdr_READDIR3res (ZDR *zdrs, READDIR3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1626,6 +1976,9 @@ zdr_READDIR3res (ZDR *zdrs, READDIR3res *objp) uint32_t zdr_LINK3args (ZDR *zdrs, LINK3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->file)) return FALSE; if (!zdr_diropargs3 (zdrs, &objp->link)) @@ -1636,6 +1989,9 @@ zdr_LINK3args (ZDR *zdrs, LINK3args *objp) uint32_t zdr_LINK3resok (ZDR *zdrs, LINK3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->file_attributes)) return FALSE; if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc)) @@ -1646,6 +2002,9 @@ zdr_LINK3resok (ZDR *zdrs, LINK3resok *objp) uint32_t zdr_LINK3resfail (ZDR *zdrs, LINK3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->file_attributes)) return FALSE; if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc)) @@ -1656,6 +2015,9 @@ zdr_LINK3resfail (ZDR *zdrs, LINK3resfail *objp) uint32_t zdr_LINK3res (ZDR *zdrs, LINK3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1674,6 +2036,9 @@ zdr_LINK3res (ZDR *zdrs, LINK3res *objp) uint32_t zdr_sattrguard3 (ZDR *zdrs, sattrguard3 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bool (zdrs, &objp->check)) return FALSE; switch (objp->check) { @@ -1692,6 +2057,9 @@ zdr_sattrguard3 (ZDR *zdrs, sattrguard3 *objp) uint32_t zdr_SETATTR3args (ZDR *zdrs, SETATTR3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->object)) return FALSE; if (!zdr_sattr3 (zdrs, &objp->new_attributes)) @@ -1704,6 +2072,9 @@ zdr_SETATTR3args (ZDR *zdrs, SETATTR3args *objp) uint32_t zdr_SETATTR3resok (ZDR *zdrs, SETATTR3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->obj_wcc)) return FALSE; return TRUE; @@ -1712,6 +2083,9 @@ zdr_SETATTR3resok (ZDR *zdrs, SETATTR3resok *objp) uint32_t zdr_SETATTR3resfail (ZDR *zdrs, SETATTR3resfail *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_wcc_data (zdrs, &objp->obj_wcc)) return FALSE; return TRUE; @@ -1720,6 +2094,9 @@ zdr_SETATTR3resfail (ZDR *zdrs, SETATTR3resfail *objp) uint32_t zdr_SETATTR3res (ZDR *zdrs, SETATTR3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -1738,6 +2115,9 @@ zdr_SETATTR3res (ZDR *zdrs, SETATTR3res *objp) uint32_t zdr_fhandle2 (ZDR *zdrs, fhandle2 objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_opaque (zdrs, objp, FHSIZE2)) return FALSE; return TRUE; @@ -1746,6 +2126,9 @@ zdr_fhandle2 (ZDR *zdrs, fhandle2 objp) uint32_t zdr_ftype2 (ZDR *zdrs, ftype2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -1757,6 +2140,7 @@ zdr_fattr2 (ZDR *zdrs, fattr2 *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { if (!zdr_ftype2 (zdrs, &objp->type)) return FALSE; @@ -1886,6 +2270,7 @@ zdr_sattr2 (ZDR *zdrs, sattr2 *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { buf = ZDR_INLINE (zdrs, 4 * BYTES_PER_ZDR_UNIT); if (buf == NULL) { @@ -1952,6 +2337,9 @@ zdr_sattr2 (ZDR *zdrs, sattr2 *objp) uint32_t zdr_filename2 (ZDR *zdrs, filename2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_string (zdrs, objp, MAXNAMLEN2)) return FALSE; return TRUE; @@ -1960,6 +2348,9 @@ zdr_filename2 (ZDR *zdrs, filename2 *objp) uint32_t zdr_path2 (ZDR *zdrs, path2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_string (zdrs, objp, MAXPATHLEN2)) return FALSE; return TRUE; @@ -1968,6 +2359,9 @@ zdr_path2 (ZDR *zdrs, path2 *objp) uint32_t zdr_nfsdata2 (ZDR *zdrs, nfsdata2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_bytes (zdrs, (char **)&objp->nfsdata2_val, (u_int *) &objp->nfsdata2_len, NFSMAXDATA2)) return FALSE; return TRUE; @@ -1976,6 +2370,9 @@ zdr_nfsdata2 (ZDR *zdrs, nfsdata2 *objp) uint32_t zdr_nfscookie2 (ZDR *zdrs, nfscookie2 objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_opaque (zdrs, objp, NFSCOOKIESIZE2)) return FALSE; return TRUE; @@ -1984,6 +2381,9 @@ zdr_nfscookie2 (ZDR *zdrs, nfscookie2 objp) uint32_t zdr_entry2 (ZDR *zdrs, entry2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_u_int (zdrs, &objp->fileid)) return FALSE; if (!zdr_filename2 (zdrs, &objp->name)) @@ -1998,6 +2398,9 @@ zdr_entry2 (ZDR *zdrs, entry2 *objp) uint32_t zdr_diropargs2 (ZDR *zdrs, diropargs2 *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->dir)) return FALSE; if (!zdr_filename2 (zdrs, &objp->name)) @@ -2008,6 +2411,9 @@ zdr_diropargs2 (ZDR *zdrs, diropargs2 *objp) uint32_t zdr_GETATTR2args (ZDR *zdrs, GETATTR2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->fhandle)) return FALSE; return TRUE; @@ -2016,6 +2422,9 @@ zdr_GETATTR2args (ZDR *zdrs, GETATTR2args *objp) uint32_t zdr_GETATTR2resok (ZDR *zdrs, GETATTR2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fattr2 (zdrs, &objp->attributes)) return FALSE; return TRUE; @@ -2024,6 +2433,9 @@ zdr_GETATTR2resok (ZDR *zdrs, GETATTR2resok *objp) uint32_t zdr_GETATTR2res (ZDR *zdrs, GETATTR2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2040,6 +2452,9 @@ zdr_GETATTR2res (ZDR *zdrs, GETATTR2res *objp) uint32_t zdr_SETATTR2args (ZDR *zdrs, SETATTR2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->fhandle)) return FALSE; if (!zdr_sattr2 (zdrs, &objp->attributes)) @@ -2050,6 +2465,9 @@ zdr_SETATTR2args (ZDR *zdrs, SETATTR2args *objp) uint32_t zdr_SETATTR2resok (ZDR *zdrs, SETATTR2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fattr2 (zdrs, &objp->attributes)) return FALSE; return TRUE; @@ -2058,6 +2476,9 @@ zdr_SETATTR2resok (ZDR *zdrs, SETATTR2resok *objp) uint32_t zdr_SETATTR2res (ZDR *zdrs, SETATTR2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2074,6 +2495,9 @@ zdr_SETATTR2res (ZDR *zdrs, SETATTR2res *objp) uint32_t zdr_LOOKUP2args (ZDR *zdrs, LOOKUP2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->what)) return FALSE; return TRUE; @@ -2082,6 +2506,9 @@ zdr_LOOKUP2args (ZDR *zdrs, LOOKUP2args *objp) uint32_t zdr_LOOKUP2resok (ZDR *zdrs, LOOKUP2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; if (!zdr_fattr2 (zdrs, &objp->attributes)) @@ -2092,6 +2519,9 @@ zdr_LOOKUP2resok (ZDR *zdrs, LOOKUP2resok *objp) uint32_t zdr_LOOKUP2res (ZDR *zdrs, LOOKUP2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2108,6 +2538,9 @@ zdr_LOOKUP2res (ZDR *zdrs, LOOKUP2res *objp) uint32_t zdr_READLINK2args (ZDR *zdrs, READLINK2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; return TRUE; @@ -2116,6 +2549,9 @@ zdr_READLINK2args (ZDR *zdrs, READLINK2args *objp) uint32_t zdr_READLINK2resok (ZDR *zdrs, READLINK2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_path2 (zdrs, &objp->data)) return FALSE; return TRUE; @@ -2124,6 +2560,9 @@ zdr_READLINK2resok (ZDR *zdrs, READLINK2resok *objp) uint32_t zdr_READLINK2res (ZDR *zdrs, READLINK2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2140,6 +2579,9 @@ zdr_READLINK2res (ZDR *zdrs, READLINK2res *objp) uint32_t zdr_READ2args (ZDR *zdrs, READ2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; if (!zdr_u_int (zdrs, &objp->offset)) @@ -2154,6 +2596,9 @@ zdr_READ2args (ZDR *zdrs, READ2args *objp) uint32_t zdr_READ2resok (ZDR *zdrs, READ2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fattr2 (zdrs, &objp->attributes)) return FALSE; if (!zdr_nfsdata2 (zdrs, &objp->data)) @@ -2164,6 +2609,9 @@ zdr_READ2resok (ZDR *zdrs, READ2resok *objp) uint32_t zdr_READ2res (ZDR *zdrs, READ2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2183,6 +2631,7 @@ zdr_WRITE2args (ZDR *zdrs, WRITE2args *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; @@ -2241,6 +2690,9 @@ zdr_WRITE2args (ZDR *zdrs, WRITE2args *objp) uint32_t zdr_WRITE2resok (ZDR *zdrs, WRITE2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fattr2 (zdrs, &objp->attributes)) return FALSE; return TRUE; @@ -2249,6 +2701,9 @@ zdr_WRITE2resok (ZDR *zdrs, WRITE2resok *objp) uint32_t zdr_WRITE2res (ZDR *zdrs, WRITE2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2265,6 +2720,9 @@ zdr_WRITE2res (ZDR *zdrs, WRITE2res *objp) uint32_t zdr_CREATE2args (ZDR *zdrs, CREATE2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->where)) return FALSE; if (!zdr_sattr2 (zdrs, &objp->attributes)) @@ -2275,6 +2733,9 @@ zdr_CREATE2args (ZDR *zdrs, CREATE2args *objp) uint32_t zdr_CREATE2resok (ZDR *zdrs, CREATE2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; if (!zdr_fattr2 (zdrs, &objp->attributes)) @@ -2285,6 +2746,9 @@ zdr_CREATE2resok (ZDR *zdrs, CREATE2resok *objp) uint32_t zdr_CREATE2res (ZDR *zdrs, CREATE2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2301,6 +2765,9 @@ zdr_CREATE2res (ZDR *zdrs, CREATE2res *objp) uint32_t zdr_REMOVE2args (ZDR *zdrs, REMOVE2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->what)) return FALSE; return TRUE; @@ -2309,6 +2776,9 @@ zdr_REMOVE2args (ZDR *zdrs, REMOVE2args *objp) uint32_t zdr_REMOVE2res (ZDR *zdrs, REMOVE2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; return TRUE; @@ -2317,6 +2787,9 @@ zdr_REMOVE2res (ZDR *zdrs, REMOVE2res *objp) uint32_t zdr_RENAME2args (ZDR *zdrs, RENAME2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->from)) return FALSE; if (!zdr_diropargs2 (zdrs, &objp->to)) @@ -2327,6 +2800,9 @@ zdr_RENAME2args (ZDR *zdrs, RENAME2args *objp) uint32_t zdr_RENAME2res (ZDR *zdrs, RENAME2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; return TRUE; @@ -2335,6 +2811,9 @@ zdr_RENAME2res (ZDR *zdrs, RENAME2res *objp) uint32_t zdr_LINK2args (ZDR *zdrs, LINK2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->from)) return FALSE; if (!zdr_diropargs2 (zdrs, &objp->to)) @@ -2345,6 +2824,9 @@ zdr_LINK2args (ZDR *zdrs, LINK2args *objp) uint32_t zdr_LINK2res (ZDR *zdrs, LINK2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; return TRUE; @@ -2353,6 +2835,9 @@ zdr_LINK2res (ZDR *zdrs, LINK2res *objp) uint32_t zdr_SYMLINK2args (ZDR *zdrs, SYMLINK2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->from)) return FALSE; if (!zdr_path2 (zdrs, &objp->to)) @@ -2365,6 +2850,9 @@ zdr_SYMLINK2args (ZDR *zdrs, SYMLINK2args *objp) uint32_t zdr_SYMLINK2res (ZDR *zdrs, SYMLINK2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; return TRUE; @@ -2373,6 +2861,9 @@ zdr_SYMLINK2res (ZDR *zdrs, SYMLINK2res *objp) uint32_t zdr_MKDIR2args (ZDR *zdrs, MKDIR2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->where)) return FALSE; if (!zdr_sattr2 (zdrs, &objp->attributes)) @@ -2383,6 +2874,9 @@ zdr_MKDIR2args (ZDR *zdrs, MKDIR2args *objp) uint32_t zdr_MKDIR2resok (ZDR *zdrs, MKDIR2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->file)) return FALSE; if (!zdr_fattr2 (zdrs, &objp->attributes)) @@ -2393,6 +2887,9 @@ zdr_MKDIR2resok (ZDR *zdrs, MKDIR2resok *objp) uint32_t zdr_MKDIR2res (ZDR *zdrs, MKDIR2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2409,6 +2906,9 @@ zdr_MKDIR2res (ZDR *zdrs, MKDIR2res *objp) uint32_t zdr_RMDIR2args (ZDR *zdrs, RMDIR2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_diropargs2 (zdrs, &objp->what)) return FALSE; return TRUE; @@ -2417,6 +2917,9 @@ zdr_RMDIR2args (ZDR *zdrs, RMDIR2args *objp) uint32_t zdr_RMDIR2res (ZDR *zdrs, RMDIR2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; return TRUE; @@ -2425,6 +2928,9 @@ zdr_RMDIR2res (ZDR *zdrs, RMDIR2res *objp) uint32_t zdr_READDIR2args (ZDR *zdrs, READDIR2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->dir)) return FALSE; if (!zdr_nfscookie2 (zdrs, objp->cookie)) @@ -2437,6 +2943,9 @@ zdr_READDIR2args (ZDR *zdrs, READDIR2args *objp) uint32_t zdr_READDIR2resok (ZDR *zdrs, READDIR2resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry2), (zdrproc_t) zdr_entry2)) return FALSE; if (!zdr_bool (zdrs, &objp->eof)) @@ -2447,6 +2956,9 @@ zdr_READDIR2resok (ZDR *zdrs, READDIR2resok *objp) uint32_t zdr_READDIR2res (ZDR *zdrs, READDIR2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2463,6 +2975,9 @@ zdr_READDIR2res (ZDR *zdrs, READDIR2res *objp) uint32_t zdr_STATFS2args (ZDR *zdrs, STATFS2args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_fhandle2 (zdrs, objp->dir)) return FALSE; return TRUE; @@ -2474,6 +2989,7 @@ zdr_STATFS2resok (ZDR *zdrs, STATFS2resok *objp) register int32_t *buf; buf = NULL; + if (zdrs->x_op == ZDR_ENCODE) { buf = ZDR_INLINE (zdrs, 5 * BYTES_PER_ZDR_UNIT); if (buf == NULL) { @@ -2534,6 +3050,9 @@ zdr_STATFS2resok (ZDR *zdrs, STATFS2resok *objp) uint32_t zdr_STATFS2res (ZDR *zdrs, STATFS2res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2550,6 +3069,9 @@ zdr_STATFS2res (ZDR *zdrs, STATFS2res *objp) uint32_t zdr_nfsacl_type (ZDR *zdrs, nfsacl_type *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_enum (zdrs, (enum_t *) objp)) return FALSE; return TRUE; @@ -2558,6 +3080,9 @@ zdr_nfsacl_type (ZDR *zdrs, nfsacl_type *objp) uint32_t zdr_nfsacl_ace (ZDR *zdrs, nfsacl_ace *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsacl_type (zdrs, &objp->type)) return FALSE; if (!zdr_u_int (zdrs, &objp->id)) @@ -2570,6 +3095,9 @@ zdr_nfsacl_ace (ZDR *zdrs, nfsacl_ace *objp) uint32_t zdr_GETACL3args (ZDR *zdrs, GETACL3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->dir)) return FALSE; if (!zdr_u_int (zdrs, &objp->mask)) @@ -2580,6 +3108,9 @@ zdr_GETACL3args (ZDR *zdrs, GETACL3args *objp) uint32_t zdr_GETACL3resok (ZDR *zdrs, GETACL3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->attr)) return FALSE; if (!zdr_u_int (zdrs, &objp->mask)) @@ -2600,6 +3131,9 @@ zdr_GETACL3resok (ZDR *zdrs, GETACL3resok *objp) uint32_t zdr_GETACL3res (ZDR *zdrs, GETACL3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { @@ -2616,6 +3150,9 @@ zdr_GETACL3res (ZDR *zdrs, GETACL3res *objp) uint32_t zdr_SETACL3args (ZDR *zdrs, SETACL3args *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfs_fh3 (zdrs, &objp->dir)) return FALSE; if (!zdr_u_int (zdrs, &objp->mask)) @@ -2636,6 +3173,9 @@ zdr_SETACL3args (ZDR *zdrs, SETACL3args *objp) uint32_t zdr_SETACL3resok (ZDR *zdrs, SETACL3resok *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_post_op_attr (zdrs, &objp->attr)) return FALSE; return TRUE; @@ -2644,6 +3184,9 @@ zdr_SETACL3resok (ZDR *zdrs, SETACL3resok *objp) uint32_t zdr_SETACL3res (ZDR *zdrs, SETACL3res *objp) { + register int32_t *buf; + buf = NULL; + if (!zdr_nfsstat3 (zdrs, &objp->status)) return FALSE; switch (objp->status) { diff --git a/nfs/libnfs-raw-nfs.h b/nfs/libnfs-raw-nfs.h index a3b60f5..bff21a7 100644 --- a/nfs/libnfs-raw-nfs.h +++ b/nfs/libnfs-raw-nfs.h @@ -2005,6 +2005,57 @@ extern uint32_t zdr_SETACL3res (); #endif /* K&R C */ +#include + +#if defined(WIN32) && defined(libnfs_EXPORTS) +#define EXTERN __declspec( dllexport ) +#else +#ifndef EXTERN +#define EXTERN +#endif +#endif + +typedef struct { + u_int ace_count; + struct nfsacl_ace *ace; + u_int default_ace_count; + struct nfsacl_ace *default_ace; +} fattr3_acl; + +/* + * NFSv3 ACL + */ +/* + * Async nfs3 get acl + * Function returns + * 0 : The command was queued successfully. The callback will be invoked once + * the command completes. + * <0 : An error occured when trying to queue the command. + * The callback will not be invoked. + * + * When the callback is invoked, status indicates the result: + * 0 : Success. + * data is fattr3_acl * + * -errno : An error occured. + * data is the error string. + */ +EXTERN int nfs3_getacl_async(struct nfs_context *nfs, struct nfsfh *nfsfh, + nfs_cb cb, void *private_data); + +/* + * Sync nfs3 get acl + * Function returns + * 0 : The operation was successful. + * -errno : The command failed. + * + * If the command was successful, the returned data in nfs3acl must be freed + * by calling nfs3_acl_free() + */ +EXTERN int nfs3_getacl(struct nfs_context *nfs, struct nfsfh *nfsfh, + fattr3_acl *nfs3acl); + +EXTERN void nfs3_acl_free(fattr3_acl *nfs3acl); + #ifdef __cplusplus } #endif diff --git a/nfs/libnfs-raw-nfs.h.extra b/nfs/libnfs-raw-nfs.h.extra new file mode 100644 index 0000000..c8f55b8 --- /dev/null +++ b/nfs/libnfs-raw-nfs.h.extra @@ -0,0 +1,56 @@ +#include + +#if defined(WIN32) && defined(libnfs_EXPORTS) +#define EXTERN __declspec( dllexport ) +#else +#ifndef EXTERN +#define EXTERN +#endif +#endif + +typedef struct { + u_int ace_count; + struct nfsacl_ace *ace; + u_int default_ace_count; + struct nfsacl_ace *default_ace; +} fattr3_acl; + +/* + * NFSv3 ACL + */ +/* + * Async nfs3 get acl + * Function returns + * 0 : The command was queued successfully. The callback will be invoked once + * the command completes. + * <0 : An error occured when trying to queue the command. + * The callback will not be invoked. + * + * When the callback is invoked, status indicates the result: + * 0 : Success. + * data is fattr3_acl * + * -errno : An error occured. + * data is the error string. + */ +EXTERN int nfs3_getacl_async(struct nfs_context *nfs, struct nfsfh *nfsfh, + nfs_cb cb, void *private_data); + +/* + * Sync nfs3 get acl + * Function returns + * 0 : The operation was successful. + * -errno : The command failed. + * + * If the command was successful, the returned data in nfs3acl must be freed + * by calling nfs3_acl_free() + */ +EXTERN int nfs3_getacl(struct nfs_context *nfs, struct nfsfh *nfsfh, + fattr3_acl *nfs3acl); + +EXTERN void nfs3_acl_free(fattr3_acl *nfs3acl); + +#ifdef __cplusplus +} +#endif + +#endif /* !_NFS_H_RPCGEN */ diff --git a/nfs/nfsacl.c b/nfs/nfsacl.c index 81f6c20..802b014 100644 --- a/nfs/nfsacl.c +++ b/nfs/nfsacl.c @@ -96,3 +96,4 @@ int rpc_nfsacl_setacl_async(struct rpc_context *rpc, rpc_cb cb, struct SETACL3ar return 0; } +