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

#include "config.h"
#if HAVE_NFS

#include "nfsmount.h"
/*
 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
 * unrestricted use provided that this legend is included on all tape
 * media and as a part of the software program in whole or part.  Users
 * may copy or modify Sun RPC without charge, but are not authorized
 * to license or distribute it to anyone else except as part of a product or
 * program developed by the user or with the express written consent of
 * Sun Microsystems, Inc.
 *
 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
 *
 * Sun RPC is provided with no support and without any obligation on the
 * part of Sun Microsystems, Inc. to assist in its use, correction,
 * modification or enhancement.
 *
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
 * OR ANY PART THEREOF.
 *
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
 * or profits or other special, indirect and consequential damages, even if
 * Sun has been advised of the possibility of such damages.
 *
 * Sun Microsystems, Inc.
 * 2550 Garcia Avenue
 * Mountain View, California  94043
 */
/*
 * Copyright (c) 1985, 1990 by Sun Microsystems, Inc.
 */

/* from @(#)mount.x	1.3 91/03/11 TIRPC 1.0 */
#include <asm/types.h>

bool_t xdr_fhandle(XDR * xdrs, fhandle objp)
{
	if (!xdr_opaque(xdrs, objp, FHSIZE))
		return FALSE;
	return TRUE;
}

bool_t xdr_fhandle3(XDR * xdrs, fhandle3 * objp)
{
	if (!xdr_bytes(xdrs, (char **)&objp->fhandle3_val, (u_int *) & objp->fhandle3_len, FHSIZE3))
		return FALSE;
	return TRUE;
}

bool_t xdr_mountstat3(XDR * xdrs, mountstat3 * objp)
{
	if (!xdr_enum(xdrs, (enum_t *) objp))
		return FALSE;
	return TRUE;
}

bool_t xdr_fhstatus(XDR * xdrs, fhstatus * objp)
{
	if (!xdr_u_int(xdrs, &objp->fhs_status))
		return FALSE;
	switch (objp->fhs_status) {
	case 0:
		if (!xdr_fhandle(xdrs, objp->fhstatus_u.fhs_fhandle))
			return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

bool_t xdr_mountres3_ok(XDR * xdrs, mountres3_ok * objp)
{
	if (!xdr_fhandle3(xdrs, &objp->fhandle))
		return FALSE;
	if (!xdr_array
	    (xdrs, (char **)&objp->auth_flavours.auth_flavours_val, (u_int *) & objp->auth_flavours.auth_flavours_len,
	     ~0, sizeof(int), (xdrproc_t) xdr_int))
		return FALSE;
	return TRUE;
}

bool_t xdr_mountres3(XDR * xdrs, mountres3 * objp)
{
	if (!xdr_mountstat3(xdrs, &objp->fhs_status))
		return FALSE;
	switch (objp->fhs_status) {
	case MNT_OK:
		if (!xdr_mountres3_ok(xdrs, &objp->mountres3_u.mountinfo))
			return FALSE;
		break;
	default:
		break;
	}
	return TRUE;
}

bool_t xdr_dirpath(XDR * xdrs, dirpath * objp)
{
	if (!xdr_string(xdrs, objp, MNTPATHLEN))
		return FALSE;
	return TRUE;
}

bool_t xdr_name(XDR * xdrs, name * objp)
{
	if (!xdr_string(xdrs, objp, MNTNAMLEN))
		return FALSE;
	return TRUE;
}

bool_t xdr_mountlist(XDR * xdrs, mountlist * objp)
{
	if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), (xdrproc_t) xdr_mountbody))
		return FALSE;
	return TRUE;
}

bool_t xdr_mountbody(XDR * xdrs, mountbody * objp)
{
	if (!xdr_name(xdrs, &objp->ml_hostname))
		return FALSE;
	if (!xdr_dirpath(xdrs, &objp->ml_directory))
		return FALSE;
	if (!xdr_mountlist(xdrs, &objp->ml_next))
		return FALSE;
	return TRUE;
}

bool_t xdr_groups(XDR * xdrs, groups * objp)
{
	if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), (xdrproc_t) xdr_groupnode))
		return FALSE;
	return TRUE;
}

bool_t xdr_groupnode(XDR * xdrs, groupnode * objp)
{
	if (!xdr_name(xdrs, &objp->gr_name))
		return FALSE;
	if (!xdr_groups(xdrs, &objp->gr_next))
		return FALSE;
	return TRUE;
}

bool_t xdr_exports(XDR * xdrs, exports * objp)
{
	if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), (xdrproc_t) xdr_exportnode))
		return FALSE;
	return TRUE;
}

bool_t xdr_exportnode(XDR * xdrs, exportnode * objp)
{
	if (!xdr_dirpath(xdrs, &objp->ex_dir))
		return FALSE;
	if (!xdr_groups(xdrs, &objp->ex_groups))
		return FALSE;
	if (!xdr_exports(xdrs, &objp->ex_next))
		return FALSE;
	return TRUE;
}

bool_t xdr_ppathcnf(XDR * xdrs, ppathcnf * objp)
{
	register int32_t *buf;

	int i;

	if (xdrs->x_op == XDR_ENCODE) {
		/* On many machines XDR_INLINE returns a (long *) */
		buf = (int32_t *) XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
		if (buf == NULL) {
			if (!xdr_int(xdrs, &objp->pc_link_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_max_canon))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_max_input))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_name_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_path_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_pipe_buf))
				return FALSE;

		} else {
			IXDR_PUT_LONG(buf, objp->pc_link_max);
			IXDR_PUT_SHORT(buf, objp->pc_max_canon);
			IXDR_PUT_SHORT(buf, objp->pc_max_input);
			IXDR_PUT_SHORT(buf, objp->pc_name_max);
			IXDR_PUT_SHORT(buf, objp->pc_path_max);
			IXDR_PUT_SHORT(buf, objp->pc_pipe_buf);
		}
		if (!xdr_u_char(xdrs, &objp->pc_vdisable))
			return FALSE;
		if (!xdr_char(xdrs, &objp->pc_xxx))
			return FALSE;
		buf = (int32_t *) XDR_INLINE(xdrs, 2 * BYTES_PER_XDR_UNIT);
		if (buf == NULL) {
			if (!xdr_vector(xdrs, (char *)objp->pc_mask, 2, sizeof(short), (xdrproc_t) xdr_short))
				return FALSE;
		} else {
			{
				register short *genp;

				for (i = 0, genp = objp->pc_mask; i < 2; ++i) {
					IXDR_PUT_SHORT(buf, *genp++);
				}
			}
		}
		return TRUE;
	} else if (xdrs->x_op == XDR_DECODE) {
		buf = (int32_t *) XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
		if (buf == NULL) {
			if (!xdr_int(xdrs, &objp->pc_link_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_max_canon))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_max_input))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_name_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_path_max))
				return FALSE;
			if (!xdr_short(xdrs, &objp->pc_pipe_buf))
				return FALSE;

		} else {
			objp->pc_link_max = IXDR_GET_LONG(buf);
			objp->pc_max_canon = IXDR_GET_SHORT(buf);
			objp->pc_max_input = IXDR_GET_SHORT(buf);
			objp->pc_name_max = IXDR_GET_SHORT(buf);
			objp->pc_path_max = IXDR_GET_SHORT(buf);
			objp->pc_pipe_buf = IXDR_GET_SHORT(buf);
		}
		if (!xdr_u_char(xdrs, &objp->pc_vdisable))
			return FALSE;
		if (!xdr_char(xdrs, &objp->pc_xxx))
			return FALSE;
		buf = (int32_t *) XDR_INLINE(xdrs, 2 * BYTES_PER_XDR_UNIT);
		if (buf == NULL) {
			if (!xdr_vector(xdrs, (char *)objp->pc_mask, 2, sizeof(short), (xdrproc_t) xdr_short))
				return FALSE;
		} else {
			{
				register short *genp;

				for (i = 0, genp = objp->pc_mask; i < 2; ++i) {
					*genp++ = IXDR_GET_SHORT(buf);
				}
			}
		}
		return TRUE;
	}

	if (!xdr_int(xdrs, &objp->pc_link_max))
		return FALSE;
	if (!xdr_short(xdrs, &objp->pc_max_canon))
		return FALSE;
	if (!xdr_short(xdrs, &objp->pc_max_input))
		return FALSE;
	if (!xdr_short(xdrs, &objp->pc_name_max))
		return FALSE;
	if (!xdr_short(xdrs, &objp->pc_path_max))
		return FALSE;
	if (!xdr_short(xdrs, &objp->pc_pipe_buf))
		return FALSE;
	if (!xdr_u_char(xdrs, &objp->pc_vdisable))
		return FALSE;
	if (!xdr_char(xdrs, &objp->pc_xxx))
		return FALSE;
	if (!xdr_vector(xdrs, (char *)objp->pc_mask, 2, sizeof(short), (xdrproc_t) xdr_short))
		return FALSE;
	return TRUE;
}

#endif
