/*
Copyright (c) 2014, Ronnie Sahlberg
All rights reserved.

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. 
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.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
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, 
either expressed or implied, of the FreeBSD Project.
*/

/*
 * Please do not edit this file.
 * It was generated using rpcgen.
 */

#include "libnfs-zdr.h"
#include "libnfs-raw-nfs.h"

uint32_t
zdr_cookieverf3 (ZDR *zdrs, cookieverf3 objp)
{
	 if (!zdr_opaque (zdrs, objp, NFS3_COOKIEVERFSIZE))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_cookie3 (ZDR *zdrs, cookie3 *objp)
{
	 if (!zdr_uint64_t (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_nfs_fh3 (ZDR *zdrs, nfs_fh3 *objp)
{
	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, &objp->data.data_len, NFS3_FHSIZE))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_filename3 (ZDR *zdrs, filename3 *objp)
{
	 if (!zdr_string (zdrs, objp, ~0))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_diropargs3 (ZDR *zdrs, diropargs3 *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
		 return FALSE;
	 if (!zdr_filename3 (zdrs, &objp->name))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_ftype3 (ZDR *zdrs, ftype3 *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_mode3 (ZDR *zdrs, mode3 *objp)
{
	 if (!zdr_u_int (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_uid3 (ZDR *zdrs, uid3 *objp)
{
	 if (!zdr_u_int (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_gid3 (ZDR *zdrs, gid3 *objp)
{
	 if (!zdr_u_int (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_size3 (ZDR *zdrs, size3 *objp)
{
	 if (!zdr_uint64_t (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_fileid3 (ZDR *zdrs, fileid3 *objp)
{
	 if (!zdr_uint64_t (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_specdata3 (ZDR *zdrs, specdata3 *objp)
{
	 if (!zdr_u_int (zdrs, &objp->specdata1))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->specdata2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_nfstime3 (ZDR *zdrs, nfstime3 *objp)
{
	 if (!zdr_u_int (zdrs, &objp->seconds))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->nseconds))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_fattr3 (ZDR *zdrs, fattr3 *objp)
{
	 if (!zdr_ftype3 (zdrs, &objp->type))
		 return FALSE;
	 if (!zdr_mode3 (zdrs, &objp->mode))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->nlink))
		 return FALSE;
	 if (!zdr_uid3 (zdrs, &objp->uid))
		 return FALSE;
	 if (!zdr_gid3 (zdrs, &objp->gid))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->size))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->used))
		 return FALSE;
	 if (!zdr_specdata3 (zdrs, &objp->rdev))
		 return FALSE;
	 if (!zdr_uint64_t (zdrs, &objp->fsid))
		 return FALSE;
	 if (!zdr_fileid3 (zdrs, &objp->fileid))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->atime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_post_op_attr (ZDR *zdrs, post_op_attr *objp)
{
	 if (!zdr_bool (zdrs, &objp->attributes_follow))
		 return FALSE;
	switch (objp->attributes_follow) {
	case TRUE:
		 if (!zdr_fattr3 (zdrs, &objp->post_op_attr_u.attributes))
			 return FALSE;
		break;
	case FALSE:
		break;
	default:
		return FALSE;
	}
	return TRUE;
}

uint32_t
zdr_nfsstat3 (ZDR *zdrs, nfsstat3 *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_stable_how (ZDR *zdrs, stable_how *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_offset3 (ZDR *zdrs, offset3 *objp)
{
	 if (!zdr_uint64_t (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_count3 (ZDR *zdrs, count3 *objp)
{
	 if (!zdr_u_int (zdrs, objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_wcc_attr (ZDR *zdrs, wcc_attr *objp)
{
	 if (!zdr_size3 (zdrs, &objp->size))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_pre_op_attr (ZDR *zdrs, pre_op_attr *objp)
{
	 if (!zdr_bool (zdrs, &objp->attributes_follow))
		 return FALSE;
	switch (objp->attributes_follow) {
	case TRUE:
		 if (!zdr_wcc_attr (zdrs, &objp->pre_op_attr_u.attributes))
			 return FALSE;
		break;
	case FALSE:
		break;
	default:
		return FALSE;
	}
	return TRUE;
}

uint32_t
zdr_wcc_data (ZDR *zdrs, wcc_data *objp)
{
	 if (!zdr_pre_op_attr (zdrs, &objp->before))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->after))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE3args (ZDR *zdrs, WRITE3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
		 return FALSE;
	 if (!zdr_offset3 (zdrs, &objp->offset))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	 if (!zdr_stable_how (zdrs, &objp->stable))
		 return FALSE;
	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, &objp->data.data_len, ~0))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_writeverf3 (ZDR *zdrs, writeverf3 objp)
{
	 if (!zdr_opaque (zdrs, objp, NFS3_WRITEVERFSIZE))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE3resok (ZDR *zdrs, WRITE3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	 if (!zdr_stable_how (zdrs, &objp->committed))
		 return FALSE;
	 if (!zdr_writeverf3 (zdrs, objp->verf))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE3resfail (ZDR *zdrs, WRITE3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE3res (ZDR *zdrs, WRITE3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_WRITE3resok (zdrs, &objp->WRITE3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_WRITE3resfail (zdrs, &objp->WRITE3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_LOOKUP3args (ZDR *zdrs, LOOKUP3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->what))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LOOKUP3resok (ZDR *zdrs, LOOKUP3resok *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LOOKUP3resfail (ZDR *zdrs, LOOKUP3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LOOKUP3res (ZDR *zdrs, LOOKUP3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_LOOKUP3resok (zdrs, &objp->LOOKUP3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_LOOKUP3resfail (zdrs, &objp->LOOKUP3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_COMMIT3args (ZDR *zdrs, COMMIT3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
		 return FALSE;
	 if (!zdr_offset3 (zdrs, &objp->offset))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_COMMIT3resok (ZDR *zdrs, COMMIT3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
		 return FALSE;
	 if (!zdr_writeverf3 (zdrs, objp->verf))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_COMMIT3resfail (ZDR *zdrs, COMMIT3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_COMMIT3res (ZDR *zdrs, COMMIT3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_COMMIT3resok (zdrs, &objp->COMMIT3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_COMMIT3resfail (zdrs, &objp->COMMIT3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_ACCESS3args (ZDR *zdrs, ACCESS3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->access))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_ACCESS3resok (ZDR *zdrs, ACCESS3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->access))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_ACCESS3resfail (ZDR *zdrs, ACCESS3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_ACCESS3res (ZDR *zdrs, ACCESS3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_ACCESS3resok (zdrs, &objp->ACCESS3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_ACCESS3resfail (zdrs, &objp->ACCESS3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_GETATTR3args (ZDR *zdrs, GETATTR3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETATTR3resok (ZDR *zdrs, GETATTR3resok *objp)
{
	 if (!zdr_fattr3 (zdrs, &objp->obj_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETATTR3res (ZDR *zdrs, GETATTR3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_GETATTR3resok (zdrs, &objp->GETATTR3res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_time_how (ZDR *zdrs, time_how *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_set_mode3 (ZDR *zdrs, set_mode3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case TRUE:
		 if (!zdr_mode3 (zdrs, &objp->set_mode3_u.mode))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_set_uid3 (ZDR *zdrs, set_uid3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case TRUE:
		 if (!zdr_uid3 (zdrs, &objp->set_uid3_u.uid))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_set_gid3 (ZDR *zdrs, set_gid3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case TRUE:
		 if (!zdr_gid3 (zdrs, &objp->set_gid3_u.gid))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_set_size3 (ZDR *zdrs, set_size3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case TRUE:
		 if (!zdr_size3 (zdrs, &objp->set_size3_u.size))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_set_atime (ZDR *zdrs, set_atime *objp)
{
	 if (!zdr_time_how (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case SET_TO_CLIENT_TIME:
		 if (!zdr_nfstime3 (zdrs, &objp->set_atime_u.atime))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_set_mtime (ZDR *zdrs, set_mtime *objp)
{
	 if (!zdr_time_how (zdrs, &objp->set_it))
		 return FALSE;
	switch (objp->set_it) {
	case SET_TO_CLIENT_TIME:
		 if (!zdr_nfstime3 (zdrs, &objp->set_mtime_u.mtime))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_sattr3 (ZDR *zdrs, sattr3 *objp)
{
	 if (!zdr_set_mode3 (zdrs, &objp->mode))
		 return FALSE;
	 if (!zdr_set_uid3 (zdrs, &objp->uid))
		 return FALSE;
	 if (!zdr_set_gid3 (zdrs, &objp->gid))
		 return FALSE;
	 if (!zdr_set_size3 (zdrs, &objp->size))
		 return FALSE;
	 if (!zdr_set_atime (zdrs, &objp->atime))
		 return FALSE;
	 if (!zdr_set_mtime (zdrs, &objp->mtime))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_createmode3 (ZDR *zdrs, createmode3 *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_createverf3 (ZDR *zdrs, createverf3 objp)
{
	 if (!zdr_opaque (zdrs, objp, NFS3_CREATEVERFSIZE))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_createhow3 (ZDR *zdrs, createhow3 *objp)
{
	 if (!zdr_createmode3 (zdrs, &objp->mode))
		 return FALSE;
	switch (objp->mode) {
	case UNCHECKED:
		 if (!zdr_sattr3 (zdrs, &objp->createhow3_u.obj_attributes))
			 return FALSE;
		break;
	case GUARDED:
		 if (!zdr_sattr3 (zdrs, &objp->createhow3_u.g_obj_attributes))
			 return FALSE;
		break;
	case EXCLUSIVE:
		 if (!zdr_createverf3 (zdrs, objp->createhow3_u.verf))
			 return FALSE;
		break;
	default:
		return FALSE;
	}
	return TRUE;
}

uint32_t
zdr_CREATE3args (ZDR *zdrs, CREATE3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_createhow3 (zdrs, &objp->how))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_post_op_fh3 (ZDR *zdrs, post_op_fh3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->handle_follows))
		 return FALSE;
	switch (objp->handle_follows) {
	case TRUE:
		 if (!zdr_nfs_fh3 (zdrs, &objp->post_op_fh3_u.handle))
			 return FALSE;
		break;
	case FALSE:
		break;
	default:
		return FALSE;
	}
	return TRUE;
}

uint32_t
zdr_CREATE3resok (ZDR *zdrs, CREATE3resok *objp)
{
	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_CREATE3resfail (ZDR *zdrs, CREATE3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_CREATE3res (ZDR *zdrs, CREATE3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_CREATE3resok (zdrs, &objp->CREATE3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_CREATE3resfail (zdrs, &objp->CREATE3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_REMOVE3args (ZDR *zdrs, REMOVE3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->object))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_REMOVE3resok (ZDR *zdrs, REMOVE3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_REMOVE3resfail (ZDR *zdrs, REMOVE3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_REMOVE3res (ZDR *zdrs, REMOVE3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_REMOVE3resok (zdrs, &objp->REMOVE3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_REMOVE3resfail (zdrs, &objp->REMOVE3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_READ3args (ZDR *zdrs, READ3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
		 return FALSE;
	 if (!zdr_offset3 (zdrs, &objp->offset))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READ3resok (ZDR *zdrs, READ3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->eof))
		 return FALSE;
	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, &objp->data.data_len, ~0))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READ3resfail (ZDR *zdrs, READ3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READ3res (ZDR *zdrs, READ3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READ3resok (zdrs, &objp->READ3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_READ3resfail (zdrs, &objp->READ3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_FSINFO3args (ZDR *zdrs, FSINFO3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->fsroot))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSINFO3resok (ZDR *zdrs, FSINFO3resok *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 7 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->rtmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rtpref))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rtmult))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtpref))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtmult))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->dtpref))
				 return FALSE;

		} else {
		IZDR_PUT_U_LONG(buf, objp->rtmax);
		IZDR_PUT_U_LONG(buf, objp->rtpref);
		IZDR_PUT_U_LONG(buf, objp->rtmult);
		IZDR_PUT_U_LONG(buf, objp->wtmax);
		IZDR_PUT_U_LONG(buf, objp->wtpref);
		IZDR_PUT_U_LONG(buf, objp->wtmult);
		IZDR_PUT_U_LONG(buf, objp->dtpref);
		}
		 if (!zdr_size3 (zdrs, &objp->maxfilesize))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
			 return FALSE;
		 if (!zdr_u_int (zdrs, &objp->properties))
			 return FALSE;
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 7 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->rtmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rtpref))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rtmult))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtpref))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->wtmult))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->dtpref))
				 return FALSE;

		} else {
		objp->rtmax = IZDR_GET_U_LONG(buf);
		objp->rtpref = IZDR_GET_U_LONG(buf);
		objp->rtmult = IZDR_GET_U_LONG(buf);
		objp->wtmax = IZDR_GET_U_LONG(buf);
		objp->wtpref = IZDR_GET_U_LONG(buf);
		objp->wtmult = IZDR_GET_U_LONG(buf);
		objp->dtpref = IZDR_GET_U_LONG(buf);
		}
		 if (!zdr_size3 (zdrs, &objp->maxfilesize))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
			 return FALSE;
		 if (!zdr_u_int (zdrs, &objp->properties))
			 return FALSE;
	 return TRUE;
	}

	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->rtmax))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->rtpref))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->rtmult))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->wtmax))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->wtpref))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->wtmult))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->dtpref))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->maxfilesize))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->properties))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSINFO3resfail (ZDR *zdrs, FSINFO3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSINFO3res (ZDR *zdrs, FSINFO3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_FSINFO3resok (zdrs, &objp->FSINFO3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_FSINFO3resfail (zdrs, &objp->FSINFO3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_FSSTAT3args (ZDR *zdrs, FSSTAT3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->fsroot))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSSTAT3resok (ZDR *zdrs, FSSTAT3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->tbytes))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->fbytes))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->abytes))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->tfiles))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->ffiles))
		 return FALSE;
	 if (!zdr_size3 (zdrs, &objp->afiles))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->invarsec))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSSTAT3resfail (ZDR *zdrs, FSSTAT3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_FSSTAT3res (ZDR *zdrs, FSSTAT3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_FSSTAT3resok (zdrs, &objp->FSSTAT3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_FSSTAT3resfail (zdrs, &objp->FSSTAT3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_PATHCONF3args (ZDR *zdrs, PATHCONF3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_PATHCONF3resok (ZDR *zdrs, PATHCONF3resok *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 6 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->linkmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->name_max))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->no_trunc))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->chown_restricted))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->case_insensitive))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->case_preserving))
				 return FALSE;
		} else {
			IZDR_PUT_U_LONG(buf, objp->linkmax);
			IZDR_PUT_U_LONG(buf, objp->name_max);
			IZDR_PUT_BOOL(buf, objp->no_trunc);
			IZDR_PUT_BOOL(buf, objp->chown_restricted);
			IZDR_PUT_BOOL(buf, objp->case_insensitive);
			IZDR_PUT_BOOL(buf, objp->case_preserving);
		}
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 6 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->linkmax))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->name_max))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->no_trunc))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->chown_restricted))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->case_insensitive))
				 return FALSE;
			 if (!zdr_bool (zdrs, &objp->case_preserving))
				 return FALSE;
		} else {
			objp->linkmax = IZDR_GET_U_LONG(buf);
			objp->name_max = IZDR_GET_U_LONG(buf);
			objp->no_trunc = IZDR_GET_BOOL(buf);
			objp->chown_restricted = IZDR_GET_BOOL(buf);
			objp->case_insensitive = IZDR_GET_BOOL(buf);
			objp->case_preserving = IZDR_GET_BOOL(buf);
		}
	 return TRUE;
	}

	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->linkmax))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->name_max))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->no_trunc))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->chown_restricted))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->case_insensitive))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->case_preserving))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_PATHCONF3resfail (ZDR *zdrs, PATHCONF3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_PATHCONF3res (ZDR *zdrs, PATHCONF3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_PATHCONF3resok (zdrs, &objp->PATHCONF3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_PATHCONF3resfail (zdrs, &objp->PATHCONF3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_nfspath3 (ZDR *zdrs, nfspath3 *objp)
{
	 if (!zdr_string (zdrs, objp, ~0))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_symlinkdata3 (ZDR *zdrs, symlinkdata3 *objp)
{
	 if (!zdr_sattr3 (zdrs, &objp->symlink_attributes))
		 return FALSE;
	 if (!zdr_nfspath3 (zdrs, &objp->symlink_data))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK3args (ZDR *zdrs, SYMLINK3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_symlinkdata3 (zdrs, &objp->symlink))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK3resok (ZDR *zdrs, SYMLINK3resok *objp)
{
	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK3resfail (ZDR *zdrs, SYMLINK3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK3res (ZDR *zdrs, SYMLINK3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_SYMLINK3resok (zdrs, &objp->SYMLINK3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_SYMLINK3resfail (zdrs, &objp->SYMLINK3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_READLINK3args (ZDR *zdrs, READLINK3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->symlink))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READLINK3resok (ZDR *zdrs, READLINK3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes))
		 return FALSE;
	 if (!zdr_nfspath3 (zdrs, &objp->data))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READLINK3resfail (ZDR *zdrs, READLINK3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READLINK3res (ZDR *zdrs, READLINK3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READLINK3resok (zdrs, &objp->READLINK3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_READLINK3resfail (zdrs, &objp->READLINK3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_devicedata3 (ZDR *zdrs, devicedata3 *objp)
{
	 if (!zdr_sattr3 (zdrs, &objp->dev_attributes))
		 return FALSE;
	 if (!zdr_specdata3 (zdrs, &objp->spec))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_mknoddata3 (ZDR *zdrs, mknoddata3 *objp)
{
	 if (!zdr_ftype3 (zdrs, &objp->type))
		 return FALSE;
	switch (objp->type) {
	case NF3CHR:
		 if (!zdr_devicedata3 (zdrs, &objp->mknoddata3_u.chr_device))
			 return FALSE;
		break;
	case NF3BLK:
		 if (!zdr_devicedata3 (zdrs, &objp->mknoddata3_u.blk_device))
			 return FALSE;
		break;
	case NF3SOCK:
		 if (!zdr_sattr3 (zdrs, &objp->mknoddata3_u.sock_attributes))
			 return FALSE;
		break;
	case NF3FIFO:
		 if (!zdr_sattr3 (zdrs, &objp->mknoddata3_u.pipe_attributes))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_MKNOD3args (ZDR *zdrs, MKNOD3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_mknoddata3 (zdrs, &objp->what))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKNOD3resok (ZDR *zdrs, MKNOD3resok *objp)
{
	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKNOD3resfail (ZDR *zdrs, MKNOD3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKNOD3res (ZDR *zdrs, MKNOD3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_MKNOD3resok (zdrs, &objp->MKNOD3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_MKNOD3resfail (zdrs, &objp->MKNOD3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_MKDIR3args (ZDR *zdrs, MKDIR3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_sattr3 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR3resok (ZDR *zdrs, MKDIR3resok *objp)
{
	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR3resfail (ZDR *zdrs, MKDIR3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR3res (ZDR *zdrs, MKDIR3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_MKDIR3resok (zdrs, &objp->MKDIR3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_MKDIR3resfail (zdrs, &objp->MKDIR3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_RMDIR3args (ZDR *zdrs, RMDIR3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->object))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RMDIR3resok (ZDR *zdrs, RMDIR3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RMDIR3resfail (ZDR *zdrs, RMDIR3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RMDIR3res (ZDR *zdrs, RMDIR3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_RMDIR3resok (zdrs, &objp->RMDIR3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_RMDIR3resfail (zdrs, &objp->RMDIR3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_RENAME3args (ZDR *zdrs, RENAME3args *objp)
{
	 if (!zdr_diropargs3 (zdrs, &objp->from))
		 return FALSE;
	 if (!zdr_diropargs3 (zdrs, &objp->to))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RENAME3resok (ZDR *zdrs, RENAME3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->todir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RENAME3resfail (ZDR *zdrs, RENAME3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->todir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RENAME3res (ZDR *zdrs, RENAME3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_RENAME3resok (zdrs, &objp->RENAME3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_RENAME3resfail (zdrs, &objp->RENAME3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_READDIRPLUS3args (ZDR *zdrs, READDIRPLUS3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
		 return FALSE;
	 if (!zdr_cookie3 (zdrs, &objp->cookie))
		 return FALSE;
	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->dircount))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->maxcount))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_entryplus3 (ZDR *zdrs, entryplus3 *objp)
{
	 if (!zdr_fileid3 (zdrs, &objp->fileid))
		 return FALSE;
	 if (!zdr_filename3 (zdrs, &objp->name))
		 return FALSE;
	 if (!zdr_cookie3 (zdrs, &objp->cookie))
		 return FALSE;
	 if (!zdr_post_op_attr (zdrs, &objp->name_attributes))
		 return FALSE;
	 if (!zdr_post_op_fh3 (zdrs, &objp->name_handle))
		 return FALSE;
	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entryplus3), (zdrproc_t) zdr_entryplus3))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_dirlistplus3 (ZDR *zdrs, dirlistplus3 *objp)
{
	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entryplus3), (zdrproc_t) zdr_entryplus3))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->eof))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIRPLUS3resok (ZDR *zdrs, READDIRPLUS3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
		 return FALSE;
	 if (!zdr_dirlistplus3 (zdrs, &objp->reply))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIRPLUS3resfail (ZDR *zdrs, READDIRPLUS3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIRPLUS3res (ZDR *zdrs, READDIRPLUS3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READDIRPLUS3resok (zdrs, &objp->READDIRPLUS3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_READDIRPLUS3resfail (zdrs, &objp->READDIRPLUS3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_READDIR3args (ZDR *zdrs, READDIR3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
		 return FALSE;
	 if (!zdr_cookie3 (zdrs, &objp->cookie))
		 return FALSE;
	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
		 return FALSE;
	 if (!zdr_count3 (zdrs, &objp->count))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_entry3 (ZDR *zdrs, entry3 *objp)
{
	 if (!zdr_fileid3 (zdrs, &objp->fileid))
		 return FALSE;
	 if (!zdr_filename3 (zdrs, &objp->name))
		 return FALSE;
	 if (!zdr_cookie3 (zdrs, &objp->cookie))
		 return FALSE;
	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entry3), (zdrproc_t) zdr_entry3))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_dirlist3 (ZDR *zdrs, dirlist3 *objp)
{
	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry3), (zdrproc_t) zdr_entry3))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->eof))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR3resok (ZDR *zdrs, READDIR3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
		 return FALSE;
	 if (!zdr_dirlist3 (zdrs, &objp->reply))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR3resfail (ZDR *zdrs, READDIR3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR3res (ZDR *zdrs, READDIR3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READDIR3resok (zdrs, &objp->READDIR3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_READDIR3resfail (zdrs, &objp->READDIR3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_LINK3args (ZDR *zdrs, LINK3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
		 return FALSE;
	 if (!zdr_diropargs3 (zdrs, &objp->link))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LINK3resok (ZDR *zdrs, LINK3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LINK3resfail (ZDR *zdrs, LINK3resfail *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
		 return FALSE;
	 if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LINK3res (ZDR *zdrs, LINK3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_LINK3resok (zdrs, &objp->LINK3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_LINK3resfail (zdrs, &objp->LINK3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_sattrguard3 (ZDR *zdrs, sattrguard3 *objp)
{
	 if (!zdr_bool (zdrs, &objp->check))
		 return FALSE;
	switch (objp->check) {
	case TRUE:
		 if (!zdr_nfstime3 (zdrs, &objp->sattrguard3_u.obj_ctime))
			 return FALSE;
		break;
	case FALSE:
		break;
	default:
		return FALSE;
	}
	return TRUE;
}

uint32_t
zdr_SETATTR3args (ZDR *zdrs, SETATTR3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
		 return FALSE;
	 if (!zdr_sattr3 (zdrs, &objp->new_attributes))
		 return FALSE;
	 if (!zdr_sattrguard3 (zdrs, &objp->guard))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETATTR3resok (ZDR *zdrs, SETATTR3resok *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->obj_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETATTR3resfail (ZDR *zdrs, SETATTR3resfail *objp)
{
	 if (!zdr_wcc_data (zdrs, &objp->obj_wcc))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETATTR3res (ZDR *zdrs, SETATTR3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_SETATTR3resok (zdrs, &objp->SETATTR3res_u.resok))
			 return FALSE;
		break;
	default:
		 if (!zdr_SETATTR3resfail (zdrs, &objp->SETATTR3res_u.resfail))
			 return FALSE;
		break;
	}
	return TRUE;
}

uint32_t
zdr_fhandle2 (ZDR *zdrs, fhandle2 objp)
{
	 if (!zdr_opaque (zdrs, objp, FHSIZE2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_ftype2 (ZDR *zdrs, ftype2 *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_fattr2 (ZDR *zdrs, fattr2 *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		 if (!zdr_ftype2 (zdrs, &objp->type))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 10 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->mode))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->nlink))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->uid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->gid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->size))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocksize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rdev))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocks))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->fsid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->fileid))
				 return FALSE;

		} else {
		IZDR_PUT_U_LONG(buf, objp->mode);
		IZDR_PUT_U_LONG(buf, objp->nlink);
		IZDR_PUT_U_LONG(buf, objp->uid);
		IZDR_PUT_U_LONG(buf, objp->gid);
		IZDR_PUT_U_LONG(buf, objp->size);
		IZDR_PUT_U_LONG(buf, objp->blocksize);
		IZDR_PUT_U_LONG(buf, objp->rdev);
		IZDR_PUT_U_LONG(buf, objp->blocks);
		IZDR_PUT_U_LONG(buf, objp->fsid);
		IZDR_PUT_U_LONG(buf, objp->fileid);
		}
		 if (!zdr_nfstime3 (zdrs, &objp->atime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->ctime))
			 return FALSE;
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		 if (!zdr_ftype2 (zdrs, &objp->type))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 10 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->mode))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->nlink))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->uid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->gid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->size))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocksize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->rdev))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocks))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->fsid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->fileid))
				 return FALSE;

		} else {
		objp->mode = IZDR_GET_U_LONG(buf);
		objp->nlink = IZDR_GET_U_LONG(buf);
		objp->uid = IZDR_GET_U_LONG(buf);
		objp->gid = IZDR_GET_U_LONG(buf);
		objp->size = IZDR_GET_U_LONG(buf);
		objp->blocksize = IZDR_GET_U_LONG(buf);
		objp->rdev = IZDR_GET_U_LONG(buf);
		objp->blocks = IZDR_GET_U_LONG(buf);
		objp->fsid = IZDR_GET_U_LONG(buf);
		objp->fileid = IZDR_GET_U_LONG(buf);
		}
		 if (!zdr_nfstime3 (zdrs, &objp->atime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->ctime))
			 return FALSE;
	 return TRUE;
	}

	 if (!zdr_ftype2 (zdrs, &objp->type))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->mode))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->nlink))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->uid))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->gid))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->size))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->blocksize))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->rdev))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->blocks))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->fsid))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->fileid))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->atime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_sattr2 (ZDR *zdrs, sattr2 *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		buf = ZDR_INLINE (zdrs, 4 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->mode))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->uid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->gid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->size))
				 return FALSE;

		} else {
		IZDR_PUT_U_LONG(buf, objp->mode);
		IZDR_PUT_U_LONG(buf, objp->uid);
		IZDR_PUT_U_LONG(buf, objp->gid);
		IZDR_PUT_U_LONG(buf, objp->size);
		}
		 if (!zdr_nfstime3 (zdrs, &objp->atime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
			 return FALSE;
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		buf = ZDR_INLINE (zdrs, 4 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->mode))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->uid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->gid))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->size))
				 return FALSE;

		} else {
		objp->mode = IZDR_GET_U_LONG(buf);
		objp->uid = IZDR_GET_U_LONG(buf);
		objp->gid = IZDR_GET_U_LONG(buf);
		objp->size = IZDR_GET_U_LONG(buf);
		}
		 if (!zdr_nfstime3 (zdrs, &objp->atime))
			 return FALSE;
		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
			 return FALSE;
	 return TRUE;
	}

	 if (!zdr_u_int (zdrs, &objp->mode))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->uid))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->gid))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->size))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->atime))
		 return FALSE;
	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_filename2 (ZDR *zdrs, filename2 *objp)
{
	 if (!zdr_string (zdrs, objp, MAXNAMLEN2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_path2 (ZDR *zdrs, path2 *objp)
{
	 if (!zdr_string (zdrs, objp, MAXPATHLEN2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_nfsdata2 (ZDR *zdrs, nfsdata2 *objp)
{
	 if (!zdr_bytes (zdrs, (char **)&objp->nfsdata2_val, &objp->nfsdata2_len, NFSMAXDATA2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_nfscookie2 (ZDR *zdrs, nfscookie2 objp)
{
	 if (!zdr_opaque (zdrs, objp, NFSCOOKIESIZE2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_entry2 (ZDR *zdrs, entry2 *objp)
{
	 if (!zdr_u_int (zdrs, &objp->fileid))
		 return FALSE;
	 if (!zdr_filename2 (zdrs, &objp->name))
		 return FALSE;
	 if (!zdr_nfscookie2 (zdrs, objp->cookie))
		 return FALSE;
	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entry2), (zdrproc_t) zdr_entry2))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_diropargs2 (ZDR *zdrs, diropargs2 *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->dir))
		 return FALSE;
	 if (!zdr_filename2 (zdrs, &objp->name))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETATTR2args (ZDR *zdrs, GETATTR2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->fhandle))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETATTR2resok (ZDR *zdrs, GETATTR2resok *objp)
{
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETATTR2res (ZDR *zdrs, GETATTR2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_GETATTR2resok (zdrs, &objp->GETATTR2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_SETATTR2args (ZDR *zdrs, SETATTR2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->fhandle))
		 return FALSE;
	 if (!zdr_sattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETATTR2resok (ZDR *zdrs, SETATTR2resok *objp)
{
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETATTR2res (ZDR *zdrs, SETATTR2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_SETATTR2resok (zdrs, &objp->SETATTR2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_LOOKUP2args (ZDR *zdrs, LOOKUP2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->what))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LOOKUP2resok (ZDR *zdrs, LOOKUP2resok *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LOOKUP2res (ZDR *zdrs, LOOKUP2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_LOOKUP2resok (zdrs, &objp->LOOKUP2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_READLINK2args (ZDR *zdrs, READLINK2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READLINK2resok (ZDR *zdrs, READLINK2resok *objp)
{
	 if (!zdr_path2 (zdrs, &objp->data))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READLINK2res (ZDR *zdrs, READLINK2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READLINK2resok (zdrs, &objp->READLINK2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_READ2args (ZDR *zdrs, READ2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->offset))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->count))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->totalcount))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READ2resok (ZDR *zdrs, READ2resok *objp)
{
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	 if (!zdr_nfsdata2 (zdrs, &objp->data))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READ2res (ZDR *zdrs, READ2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READ2resok (zdrs, &objp->READ2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_WRITE2args (ZDR *zdrs, WRITE2args *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		 if (!zdr_fhandle2 (zdrs, objp->file))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->beginoffset))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->offset))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->totalcount))
				 return FALSE;

		} else {
		IZDR_PUT_U_LONG(buf, objp->beginoffset);
		IZDR_PUT_U_LONG(buf, objp->offset);
		IZDR_PUT_U_LONG(buf, objp->totalcount);
		}
		 if (!zdr_nfsdata2 (zdrs, &objp->data))
			 return FALSE;
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		 if (!zdr_fhandle2 (zdrs, objp->file))
			 return FALSE;
		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->beginoffset))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->offset))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->totalcount))
				 return FALSE;

		} else {
		objp->beginoffset = IZDR_GET_U_LONG(buf);
		objp->offset = IZDR_GET_U_LONG(buf);
		objp->totalcount = IZDR_GET_U_LONG(buf);
		}
		 if (!zdr_nfsdata2 (zdrs, &objp->data))
			 return FALSE;
	 return TRUE;
	}

	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->beginoffset))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->offset))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->totalcount))
		 return FALSE;
	 if (!zdr_nfsdata2 (zdrs, &objp->data))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE2resok (ZDR *zdrs, WRITE2resok *objp)
{
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_WRITE2res (ZDR *zdrs, WRITE2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_WRITE2resok (zdrs, &objp->WRITE2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_CREATE2args (ZDR *zdrs, CREATE2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_sattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_CREATE2resok (ZDR *zdrs, CREATE2resok *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_CREATE2res (ZDR *zdrs, CREATE2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_CREATE2resok (zdrs, &objp->CREATE2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_REMOVE2args (ZDR *zdrs, REMOVE2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->what))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_REMOVE2res (ZDR *zdrs, REMOVE2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RENAME2args (ZDR *zdrs, RENAME2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->from))
		 return FALSE;
	 if (!zdr_diropargs2 (zdrs, &objp->to))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RENAME2res (ZDR *zdrs, RENAME2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LINK2args (ZDR *zdrs, LINK2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->from))
		 return FALSE;
	 if (!zdr_diropargs2 (zdrs, &objp->to))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_LINK2res (ZDR *zdrs, LINK2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK2args (ZDR *zdrs, SYMLINK2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->from))
		 return FALSE;
	 if (!zdr_path2 (zdrs, &objp->to))
		 return FALSE;
	 if (!zdr_sattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SYMLINK2res (ZDR *zdrs, SYMLINK2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR2args (ZDR *zdrs, MKDIR2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->where))
		 return FALSE;
	 if (!zdr_sattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR2resok (ZDR *zdrs, MKDIR2resok *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->file))
		 return FALSE;
	 if (!zdr_fattr2 (zdrs, &objp->attributes))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_MKDIR2res (ZDR *zdrs, MKDIR2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_MKDIR2resok (zdrs, &objp->MKDIR2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_RMDIR2args (ZDR *zdrs, RMDIR2args *objp)
{
	 if (!zdr_diropargs2 (zdrs, &objp->what))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_RMDIR2res (ZDR *zdrs, RMDIR2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR2args (ZDR *zdrs, READDIR2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->dir))
		 return FALSE;
	 if (!zdr_nfscookie2 (zdrs, objp->cookie))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->count))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR2resok (ZDR *zdrs, READDIR2resok *objp)
{
	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry2), (zdrproc_t) zdr_entry2))
		 return FALSE;
	 if (!zdr_bool (zdrs, &objp->eof))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_READDIR2res (ZDR *zdrs, READDIR2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_READDIR2resok (zdrs, &objp->READDIR2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_STATFS2args (ZDR *zdrs, STATFS2args *objp)
{
	 if (!zdr_fhandle2 (zdrs, objp->dir))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_STATFS2resok (ZDR *zdrs, STATFS2resok *objp)
{
	register int32_t *buf;

	if (zdrs->x_op == ZDR_ENCODE) {
		buf = ZDR_INLINE (zdrs, 5 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->tsize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bsize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocks))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bfree))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bavail))
				 return FALSE;
		} else {
			IZDR_PUT_U_LONG(buf, objp->tsize);
			IZDR_PUT_U_LONG(buf, objp->bsize);
			IZDR_PUT_U_LONG(buf, objp->blocks);
			IZDR_PUT_U_LONG(buf, objp->bfree);
			IZDR_PUT_U_LONG(buf, objp->bavail);
		}
		return TRUE;
	} else if (zdrs->x_op == ZDR_DECODE) {
		buf = ZDR_INLINE (zdrs, 5 * BYTES_PER_ZDR_UNIT);
		if (buf == NULL) {
			 if (!zdr_u_int (zdrs, &objp->tsize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bsize))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->blocks))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bfree))
				 return FALSE;
			 if (!zdr_u_int (zdrs, &objp->bavail))
				 return FALSE;
		} else {
			objp->tsize = IZDR_GET_U_LONG(buf);
			objp->bsize = IZDR_GET_U_LONG(buf);
			objp->blocks = IZDR_GET_U_LONG(buf);
			objp->bfree = IZDR_GET_U_LONG(buf);
			objp->bavail = IZDR_GET_U_LONG(buf);
		}
	 return TRUE;
	}

	 if (!zdr_u_int (zdrs, &objp->tsize))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->bsize))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->blocks))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->bfree))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->bavail))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_STATFS2res (ZDR *zdrs, STATFS2res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_STATFS2resok (zdrs, &objp->STATFS2res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_nfsacl_type (ZDR *zdrs, nfsacl_type *objp)
{
	 if (!zdr_enum (zdrs, (enum_t *) objp))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_nfsacl_ace (ZDR *zdrs, nfsacl_ace *objp)
{
	 if (!zdr_nfsacl_type (zdrs, &objp->type))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->id))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->perm))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETACL3args (ZDR *zdrs, GETACL3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->mask))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETACL3resok (ZDR *zdrs, GETACL3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->attr))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->mask))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->ace_count))
		 return FALSE;
	 if (!zdr_array (zdrs, (char **)&objp->ace.ace_val, &objp->ace.ace_len, ~0,
		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->default_ace_count))
		 return FALSE;
	 if (!zdr_array (zdrs, (char **)&objp->default_ace.default_ace_val, &objp->default_ace.default_ace_len, ~0,
		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_GETACL3res (ZDR *zdrs, GETACL3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_GETACL3resok (zdrs, &objp->GETACL3res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

uint32_t
zdr_SETACL3args (ZDR *zdrs, SETACL3args *objp)
{
	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->mask))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->ace_count))
		 return FALSE;
	 if (!zdr_array (zdrs, (char **)&objp->ace.ace_val, &objp->ace.ace_len, ~0,
		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
		 return FALSE;
	 if (!zdr_u_int (zdrs, &objp->default_ace_count))
		 return FALSE;
	 if (!zdr_array (zdrs, (char **)&objp->default_ace.default_ace_val, &objp->default_ace.default_ace_len, ~0,
		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETACL3resok (ZDR *zdrs, SETACL3resok *objp)
{
	 if (!zdr_post_op_attr (zdrs, &objp->attr))
		 return FALSE;
	return TRUE;
}

uint32_t
zdr_SETACL3res (ZDR *zdrs, SETACL3res *objp)
{
	 if (!zdr_nfsstat3 (zdrs, &objp->status))
		 return FALSE;
	switch (objp->status) {
	case NFS3_OK:
		 if (!zdr_SETACL3resok (zdrs, &objp->SETACL3res_u.resok))
			 return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}
