138494Sobrien/*
2174294Sobrien * Copyright (c) 1997-2006 Erez Zadok
338494Sobrien * Copyright (c) 1990 Jan-Simon Pendry
438494Sobrien * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
538494Sobrien * Copyright (c) 1990 The Regents of the University of California.
638494Sobrien * All rights reserved.
738494Sobrien *
838494Sobrien * This code is derived from software contributed to Berkeley by
938494Sobrien * Jan-Simon Pendry at Imperial College, London.
1038494Sobrien *
1138494Sobrien * Redistribution and use in source and binary forms, with or without
1238494Sobrien * modification, are permitted provided that the following conditions
1338494Sobrien * are met:
1438494Sobrien * 1. Redistributions of source code must retain the above copyright
1538494Sobrien *    notice, this list of conditions and the following disclaimer.
1638494Sobrien * 2. Redistributions in binary form must reproduce the above copyright
1738494Sobrien *    notice, this list of conditions and the following disclaimer in the
1838494Sobrien *    documentation and/or other materials provided with the distribution.
1938494Sobrien * 3. All advertising materials mentioning features or use of this software
2042629Sobrien *    must display the following acknowledgment:
2138494Sobrien *      This product includes software developed by the University of
2238494Sobrien *      California, Berkeley and its contributors.
2338494Sobrien * 4. Neither the name of the University nor the names of its contributors
2438494Sobrien *    may be used to endorse or promote products derived from this software
2538494Sobrien *    without specific prior written permission.
2638494Sobrien *
2738494Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2838494Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2938494Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3038494Sobrien * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
3138494Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3238494Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3338494Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3438494Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3538494Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3638494Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3738494Sobrien * SUCH DAMAGE.
3838494Sobrien *
3938494Sobrien *
40174294Sobrien * File: am-utils/libamu/xdr_func.c
4138494Sobrien *
4238494Sobrien */
4338494Sobrien
4438494Sobrien/*
4538494Sobrien * Complete list of all possible xdr functions which may be needed.
4638494Sobrien */
4738494Sobrien#ifdef HAVE_CONFIG_H
4838494Sobrien# include <config.h>
4938494Sobrien#endif /* HAVE_CONFIG_H */
5038494Sobrien#include <am_defs.h>
5138494Sobrien#include <amu.h>
5238494Sobrien
53174294Sobrien#ifdef __RPCSVC_MOUNT_H__
54174294Sobrien# error IRIX6 should not include rpcsvc/mount.h
55174294Sobrien#endif /* __RPCSVC_MOUNT_H__ */
5682794Sobrien
5738494Sobrien/*
5838494Sobrien * MACROS:
5938494Sobrien */
60174294Sobrien#ifdef HAVE_FS_AUTOFS
61174294Sobrien# ifndef AUTOFS_MAXCOMPONENTLEN
62174294Sobrien#  define AUTOFS_MAXCOMPONENTLEN 255
63174294Sobrien# endif /* not AUTOFS_MAXCOMPONENTLEN */
64174294Sobrien# ifndef AUTOFS_MAXOPTSLEN
65174294Sobrien#  define AUTOFS_MAXOPTSLEN 255
66174294Sobrien# endif /* not AUTOFS_MAXOPTSLEN */
67174294Sobrien# ifndef AUTOFS_MAXPATHLEN
68174294Sobrien#  define AUTOFS_MAXPATHLEN 1024
69174294Sobrien# endif /* not AUTOFS_MAXPATHLEN */
70174294Sobrien#endif /* HAVE_FS_AUTOFS */
7138494Sobrien
7238494Sobrien/* forward definitions, are they needed? */
7338494Sobrienextern bool_t xdr_exportnode(XDR *xdrs, exportnode *objp);
7438494Sobrienextern bool_t xdr_groupnode(XDR *xdrs, groupnode *objp);
7538494Sobrienextern bool_t xdr_name(XDR *xdrs, name *objp);
7638494Sobrien
7738494Sobrien
7838494Sobrien#ifndef HAVE_XDR_ATTRSTAT
7938494Sobrienbool_t
8038494Sobrienxdr_attrstat(XDR *xdrs, nfsattrstat *objp)
8138494Sobrien{
82174294Sobrien  if (amuDebug(D_XDRTRACE))
8338494Sobrien    plog(XLOG_DEBUG, "xdr_attrstat:");
8438494Sobrien
8538494Sobrien  if (!xdr_nfsstat(xdrs, &objp->ns_status)) {
8638494Sobrien    return (FALSE);
8738494Sobrien  }
8838494Sobrien  switch (objp->ns_status) {
8938494Sobrien  case NFS_OK:
9038494Sobrien    if (!xdr_fattr(xdrs, &objp->ns_u.ns_attr_u)) {
9138494Sobrien      return (FALSE);
9238494Sobrien    }
9338494Sobrien    break;
9438494Sobrien  default:
9538494Sobrien    break;
9638494Sobrien  }
9738494Sobrien  return (TRUE);
9838494Sobrien}
9938494Sobrien#endif /* not HAVE_XDR_ATTRSTAT */
10038494Sobrien
10138494Sobrien
10238494Sobrien#ifndef HAVE_XDR_CREATEARGS
10338494Sobrienbool_t
10438494Sobrienxdr_createargs(XDR *xdrs, nfscreateargs *objp)
10538494Sobrien{
106174294Sobrien  if (amuDebug(D_XDRTRACE))
10738494Sobrien    plog(XLOG_DEBUG, "xdr_createargs:");
10838494Sobrien
10938494Sobrien  if (!xdr_diropargs(xdrs, &objp->ca_where)) {
11038494Sobrien    return (FALSE);
11138494Sobrien  }
11238494Sobrien  if (!xdr_sattr(xdrs, &objp->ca_attributes)) {
11338494Sobrien    return (FALSE);
11438494Sobrien  }
11538494Sobrien  return (TRUE);
11638494Sobrien}
11738494Sobrien#endif /* not HAVE_XDR_CREATEARGS */
11838494Sobrien
11938494Sobrien
12038494Sobrien#ifndef HAVE_XDR_DIRLIST
12138494Sobrienbool_t
12238494Sobrienxdr_dirlist(XDR *xdrs, nfsdirlist *objp)
12338494Sobrien{
124174294Sobrien  if (amuDebug(D_XDRTRACE))
12538494Sobrien    plog(XLOG_DEBUG, "xdr_dirlist:");
12638494Sobrien
12738494Sobrien  if (!xdr_pointer(xdrs, (char **) &objp->dl_entries, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
12838494Sobrien    return (FALSE);
12938494Sobrien  }
13038494Sobrien  if (!xdr_bool(xdrs, &objp->dl_eof)) {
13138494Sobrien    return (FALSE);
13238494Sobrien  }
13338494Sobrien  return (TRUE);
13438494Sobrien}
13538494Sobrien#endif /* not HAVE_XDR_DIRLIST */
13638494Sobrien
13738494Sobrien
13838494Sobrien#ifndef HAVE_XDR_DIROPARGS
13938494Sobrienbool_t
14038494Sobrienxdr_diropargs(XDR *xdrs, nfsdiropargs *objp)
14138494Sobrien{
142174294Sobrien  if (amuDebug(D_XDRTRACE))
14338494Sobrien    plog(XLOG_DEBUG, "xdr_diropargs:");
14438494Sobrien
14538494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->da_fhandle)) {
14638494Sobrien    return (FALSE);
14738494Sobrien  }
14838494Sobrien  if (!xdr_filename(xdrs, &objp->da_name)) {
14938494Sobrien    return (FALSE);
15038494Sobrien  }
15138494Sobrien  return (TRUE);
15238494Sobrien}
15338494Sobrien#endif /* not HAVE_XDR_DIROPARGS */
15438494Sobrien
15538494Sobrien
15638494Sobrien#ifndef HAVE_XDR_DIROPOKRES
15738494Sobrienbool_t
15838494Sobrienxdr_diropokres(XDR *xdrs, nfsdiropokres *objp)
15938494Sobrien{
160174294Sobrien  if (amuDebug(D_XDRTRACE))
16138494Sobrien    plog(XLOG_DEBUG, "xdr_diropokres:");
16238494Sobrien
16338494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->drok_fhandle)) {
16438494Sobrien    return (FALSE);
16538494Sobrien  }
16638494Sobrien  if (!xdr_fattr(xdrs, &objp->drok_attributes)) {
16738494Sobrien    return (FALSE);
16838494Sobrien  }
16938494Sobrien  return (TRUE);
17038494Sobrien}
17138494Sobrien#endif /* not HAVE_XDR_DIROPOKRES */
17238494Sobrien
17338494Sobrien
17438494Sobrien#ifndef HAVE_XDR_DIROPRES
17538494Sobrienbool_t
17638494Sobrienxdr_diropres(XDR *xdrs, nfsdiropres *objp)
17738494Sobrien{
178174294Sobrien  if (amuDebug(D_XDRTRACE))
17938494Sobrien    plog(XLOG_DEBUG, "xdr_diropres:");
18038494Sobrien
18138494Sobrien  if (!xdr_nfsstat(xdrs, &objp->dr_status)) {
18238494Sobrien    return (FALSE);
18338494Sobrien  }
18438494Sobrien  switch (objp->dr_status) {
18538494Sobrien  case NFS_OK:
18638494Sobrien    if (!xdr_diropokres(xdrs, &objp->dr_u.dr_drok_u)) {
18738494Sobrien      return (FALSE);
18838494Sobrien    }
18938494Sobrien    break;
19038494Sobrien  default:
19138494Sobrien    break;
19238494Sobrien  }
19338494Sobrien  return (TRUE);
19438494Sobrien}
19538494Sobrien#endif /* not HAVE_XDR_DIROPRES */
19638494Sobrien
19738494Sobrien
19838494Sobrien#ifndef HAVE_XDR_DIRPATH
19938494Sobrienbool_t
20038494Sobrienxdr_dirpath(XDR *xdrs, dirpath *objp)
20138494Sobrien{
202174294Sobrien  if (amuDebug(D_XDRTRACE))
20338494Sobrien    plog(XLOG_DEBUG, "xdr_dirpath:");
20438494Sobrien
20538494Sobrien  if (!xdr_string(xdrs, objp, MNTPATHLEN)) {
20638494Sobrien    return (FALSE);
20738494Sobrien  }
20838494Sobrien  return (TRUE);
20938494Sobrien}
21038494Sobrien#endif /* not HAVE_XDR_DIRPATH */
21138494Sobrien
21238494Sobrien
21338494Sobrien#ifndef HAVE_XDR_ENTRY
21438494Sobrienbool_t
21538494Sobrienxdr_entry(XDR *xdrs, nfsentry *objp)
21638494Sobrien{
217174294Sobrien  if (amuDebug(D_XDRTRACE))
21838494Sobrien    plog(XLOG_DEBUG, "xdr_entry:");
21938494Sobrien
22038494Sobrien  if (!xdr_u_int(xdrs, &objp->ne_fileid)) {
22138494Sobrien    return (FALSE);
22238494Sobrien  }
22338494Sobrien  if (!xdr_filename(xdrs, &objp->ne_name)) {
22438494Sobrien    return (FALSE);
22538494Sobrien  }
22638494Sobrien  if (!xdr_nfscookie(xdrs, objp->ne_cookie)) {
22738494Sobrien    return (FALSE);
22838494Sobrien  }
22938494Sobrien  if (!xdr_pointer(xdrs, (char **) &objp->ne_nextentry, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
23038494Sobrien    return (FALSE);
23138494Sobrien  }
23238494Sobrien  return (TRUE);
23338494Sobrien}
23438494Sobrien#endif /* not HAVE_XDR_ENTRY */
23538494Sobrien
23638494Sobrien
23738494Sobrien#ifndef HAVE_XDR_EXPORTNODE
23838494Sobrienbool_t
23938494Sobrienxdr_exportnode(XDR *xdrs, exportnode *objp)
24038494Sobrien{
241174294Sobrien  if (amuDebug(D_XDRTRACE))
24238494Sobrien    plog(XLOG_DEBUG, "xdr_exportnode:");
24338494Sobrien
24438494Sobrien  if (!xdr_dirpath(xdrs, &objp->ex_dir)) {
24538494Sobrien    return (FALSE);
24638494Sobrien  }
24782794Sobrien  if (!xdr_groups(xdrs, &objp->ex_groups)) {
24838494Sobrien    return (FALSE);
24938494Sobrien  }
25038494Sobrien  if (!xdr_exports(xdrs, &objp->ex_next)) {
25138494Sobrien    return (FALSE);
25238494Sobrien  }
25338494Sobrien  return (TRUE);
25438494Sobrien}
25538494Sobrien#endif /* not HAVE_XDR_EXPORTNODE */
25638494Sobrien
25738494Sobrien
25838494Sobrien#ifndef HAVE_XDR_EXPORTS
25938494Sobrienbool_t
26038494Sobrienxdr_exports(XDR *xdrs, exports *objp)
26138494Sobrien{
262174294Sobrien  if (amuDebug(D_XDRTRACE))
26338494Sobrien    plog(XLOG_DEBUG, "xdr_exports:");
26438494Sobrien
26538494Sobrien  if (!xdr_pointer(xdrs, (char **) objp, sizeof(exportnode), (XDRPROC_T_TYPE) xdr_exportnode)) {
26638494Sobrien    return (FALSE);
26738494Sobrien  }
26838494Sobrien  return (TRUE);
26938494Sobrien}
27038494Sobrien#endif /* not HAVE_XDR_EXPORTS */
27138494Sobrien
27238494Sobrien
27338494Sobrien#ifndef HAVE_XDR_FATTR
27438494Sobrienbool_t
27538494Sobrienxdr_fattr(XDR *xdrs, nfsfattr *objp)
27638494Sobrien{
277174294Sobrien  if (amuDebug(D_XDRTRACE))
27838494Sobrien    plog(XLOG_DEBUG, "xdr_fattr:");
27938494Sobrien
28038494Sobrien  if (!xdr_ftype(xdrs, &objp->na_type)) {
28138494Sobrien    return (FALSE);
28238494Sobrien  }
28338494Sobrien  if (!xdr_u_int(xdrs, &objp->na_mode)) {
28438494Sobrien    return (FALSE);
28538494Sobrien  }
28638494Sobrien  if (!xdr_u_int(xdrs, &objp->na_nlink)) {
28738494Sobrien    return (FALSE);
28838494Sobrien  }
28938494Sobrien  if (!xdr_u_int(xdrs, &objp->na_uid)) {
29038494Sobrien    return (FALSE);
29138494Sobrien  }
29238494Sobrien  if (!xdr_u_int(xdrs, &objp->na_gid)) {
29338494Sobrien    return (FALSE);
29438494Sobrien  }
29538494Sobrien  if (!xdr_u_int(xdrs, &objp->na_size)) {
29638494Sobrien    return (FALSE);
29738494Sobrien  }
29838494Sobrien  if (!xdr_u_int(xdrs, &objp->na_blocksize)) {
29938494Sobrien    return (FALSE);
30038494Sobrien  }
30138494Sobrien  if (!xdr_u_int(xdrs, &objp->na_rdev)) {
30238494Sobrien    return (FALSE);
30338494Sobrien  }
30438494Sobrien  if (!xdr_u_int(xdrs, &objp->na_blocks)) {
30538494Sobrien    return (FALSE);
30638494Sobrien  }
30738494Sobrien  if (!xdr_u_int(xdrs, &objp->na_fsid)) {
30838494Sobrien    return (FALSE);
30938494Sobrien  }
31038494Sobrien  if (!xdr_u_int(xdrs, &objp->na_fileid)) {
31138494Sobrien    return (FALSE);
31238494Sobrien  }
31338494Sobrien  if (!xdr_nfstime(xdrs, &objp->na_atime)) {
31438494Sobrien    return (FALSE);
31538494Sobrien  }
31638494Sobrien  if (!xdr_nfstime(xdrs, &objp->na_mtime)) {
31738494Sobrien    return (FALSE);
31838494Sobrien  }
31938494Sobrien  if (!xdr_nfstime(xdrs, &objp->na_ctime)) {
32038494Sobrien    return (FALSE);
32138494Sobrien  }
32238494Sobrien  return (TRUE);
32338494Sobrien}
32438494Sobrien#endif /* not HAVE_XDR_FATTR */
32538494Sobrien
32638494Sobrien
32738494Sobrien#ifndef HAVE_XDR_FHANDLE
32838494Sobrienbool_t
32938494Sobrienxdr_fhandle(XDR *xdrs, fhandle objp)
33038494Sobrien{
331174294Sobrien  if (amuDebug(D_XDRTRACE))
33238494Sobrien    plog(XLOG_DEBUG, "xdr_fhandle:");
33338494Sobrien
33438494Sobrien  if (!xdr_opaque(xdrs, objp, NFS_FHSIZE)) {
33538494Sobrien    return (FALSE);
33638494Sobrien  }
33738494Sobrien  return (TRUE);
33838494Sobrien}
33938494Sobrien#endif /* not HAVE_XDR_FHANDLE */
34038494Sobrien
34138494Sobrien
34238494Sobrien#ifndef HAVE_XDR_FHSTATUS
34338494Sobrienbool_t
34438494Sobrienxdr_fhstatus(XDR *xdrs, fhstatus *objp)
34538494Sobrien{
346174294Sobrien  if (amuDebug(D_XDRTRACE))
34738494Sobrien    plog(XLOG_DEBUG, "xdr_fhstatus:");
34838494Sobrien
34938494Sobrien  if (!xdr_u_int(xdrs, &objp->fhs_status)) {
35038494Sobrien    return (FALSE);
35138494Sobrien  }
35238494Sobrien  if (objp->fhs_status == 0 && !xdr_fhandle(xdrs, objp->fhs_fh)) {
35338494Sobrien    return (FALSE);
35438494Sobrien  }
35538494Sobrien  return (TRUE);
35638494Sobrien}
35738494Sobrien#endif /* not HAVE_XDR_FHSTATUS */
35838494Sobrien
35938494Sobrien
36038494Sobrien#ifndef HAVE_XDR_FILENAME
36138494Sobrienbool_t
36238494Sobrienxdr_filename(XDR *xdrs, filename *objp)
36338494Sobrien{
364174294Sobrien  if (amuDebug(D_XDRTRACE))
36538494Sobrien    plog(XLOG_DEBUG, "xdr_filename:");
36638494Sobrien
36738494Sobrien  if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
36838494Sobrien    return (FALSE);
36938494Sobrien  }
37038494Sobrien  return (TRUE);
37138494Sobrien}
37238494Sobrien#endif /* not HAVE_XDR_FILENAME */
37338494Sobrien
37438494Sobrien
37538494Sobrien#ifndef HAVE_XDR_FTYPE
37638494Sobrienbool_t
37738494Sobrienxdr_ftype(XDR *xdrs, nfsftype *objp)
37838494Sobrien{
379174294Sobrien  enum_t local_obj = *objp;
380174294Sobrien
381174294Sobrien  if (amuDebug(D_XDRTRACE))
38238494Sobrien    plog(XLOG_DEBUG, "xdr_ftype:");
38338494Sobrien
384174294Sobrien  if (!xdr_enum(xdrs, &local_obj)) {
38538494Sobrien    return (FALSE);
38638494Sobrien  }
38738494Sobrien  return (TRUE);
38838494Sobrien}
38938494Sobrien#endif /* not HAVE_XDR_FTYPE */
39038494Sobrien
39138494Sobrien
39238494Sobrien#ifndef HAVE_XDR_GROUPNODE
39338494Sobrienbool_t
39438494Sobrienxdr_groupnode(XDR *xdrs, groupnode *objp)
39538494Sobrien{
396174294Sobrien  if (amuDebug(D_XDRTRACE))
39738494Sobrien    plog(XLOG_DEBUG, "xdr_groupnode:");
39838494Sobrien
39938494Sobrien  if (!xdr_name(xdrs, &objp->gr_name)) {
40038494Sobrien    return (FALSE);
40138494Sobrien  }
40282794Sobrien  if (!xdr_groups(xdrs, &objp->gr_next)) {
40338494Sobrien    return (FALSE);
40438494Sobrien  }
40538494Sobrien  return (TRUE);
40638494Sobrien}
40738494Sobrien#endif /* not HAVE_XDR_GROUPNODE */
40838494Sobrien
40938494Sobrien
41038494Sobrien#ifndef HAVE_XDR_GROUPS
41138494Sobrienbool_t
41282794Sobrienxdr_groups(XDR *xdrs, groups *objp)
41338494Sobrien{
414174294Sobrien  if (amuDebug(D_XDRTRACE))
41538494Sobrien    plog(XLOG_DEBUG, "xdr_groups:");
41638494Sobrien
41738494Sobrien  if (!xdr_pointer(xdrs, (char **) objp, sizeof(groupnode), (XDRPROC_T_TYPE) xdr_groupnode)) {
41838494Sobrien    return (FALSE);
41938494Sobrien  }
42038494Sobrien  return (TRUE);
42138494Sobrien}
42238494Sobrien#endif /* not HAVE_XDR_GROUPS */
42338494Sobrien
42438494Sobrien
42538494Sobrien#ifndef HAVE_XDR_LINKARGS
42638494Sobrienbool_t
42738494Sobrienxdr_linkargs(XDR *xdrs, nfslinkargs *objp)
42838494Sobrien{
429174294Sobrien  if (amuDebug(D_XDRTRACE))
43038494Sobrien    plog(XLOG_DEBUG, "xdr_linkargs:");
43138494Sobrien
43238494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->la_fhandle)) {
43338494Sobrien    return (FALSE);
43438494Sobrien  }
43538494Sobrien  if (!xdr_diropargs(xdrs, &objp->la_to)) {
43638494Sobrien    return (FALSE);
43738494Sobrien  }
43838494Sobrien  return (TRUE);
43938494Sobrien}
44038494Sobrien#endif /* not HAVE_XDR_LINKARGS */
44138494Sobrien
44238494Sobrien
44338494Sobrien#ifndef HAVE_XDR_MOUNTBODY
44438494Sobrienbool_t
44538494Sobrienxdr_mountbody(XDR *xdrs, mountbody *objp)
44638494Sobrien{
447174294Sobrien  if (amuDebug(D_XDRTRACE))
44838494Sobrien    plog(XLOG_DEBUG, "xdr_mountbody:");
44938494Sobrien
45038494Sobrien  if (!xdr_name(xdrs, &objp->ml_hostname)) {
45138494Sobrien    return (FALSE);
45238494Sobrien  }
45338494Sobrien  if (!xdr_dirpath(xdrs, &objp->ml_directory)) {
45438494Sobrien    return (FALSE);
45538494Sobrien  }
45638494Sobrien  if (!xdr_mountlist(xdrs, &objp->ml_next)) {
45738494Sobrien    return (FALSE);
45838494Sobrien  }
45938494Sobrien  return (TRUE);
46038494Sobrien}
46138494Sobrien#endif /* not HAVE_XDR_MOUNTBODY */
46238494Sobrien
46338494Sobrien
46438494Sobrien#ifndef HAVE_XDR_MOUNTLIST
46538494Sobrienbool_t
46638494Sobrienxdr_mountlist(XDR *xdrs, mountlist *objp)
46738494Sobrien{
468174294Sobrien  if (amuDebug(D_XDRTRACE))
46938494Sobrien    plog(XLOG_DEBUG, "xdr_mountlist:");
47038494Sobrien
47138494Sobrien  if (!xdr_pointer(xdrs, (char **) objp, sizeof(mountbody), (XDRPROC_T_TYPE) xdr_mountbody)) {
47238494Sobrien    return (FALSE);
47338494Sobrien  }
47438494Sobrien  return (TRUE);
47538494Sobrien}
47638494Sobrien#endif /* not HAVE_XDR_MOUNTLIST */
47738494Sobrien
47838494Sobrien
47938494Sobrien#ifndef HAVE_XDR_NAME
48038494Sobrienbool_t
48138494Sobrienxdr_name(XDR *xdrs, name *objp)
48238494Sobrien{
483174294Sobrien  if (amuDebug(D_XDRTRACE))
48438494Sobrien    plog(XLOG_DEBUG, "xdr_name:");
48538494Sobrien
48638494Sobrien  if (!xdr_string(xdrs, objp, MNTNAMLEN)) {
48738494Sobrien    return (FALSE);
48838494Sobrien  }
48938494Sobrien  return (TRUE);
49038494Sobrien}
49138494Sobrien#endif /* not HAVE_XDR_NAME */
49238494Sobrien
49338494Sobrien
49438494Sobrien#ifndef HAVE_XDR_NFS_FH
49538494Sobrienbool_t
49638494Sobrienxdr_nfs_fh(XDR *xdrs, am_nfs_fh *objp)
49738494Sobrien{
498174294Sobrien  if (amuDebug(D_XDRTRACE))
49938494Sobrien    plog(XLOG_DEBUG, "xdr_nfs_fh:");
50038494Sobrien
50138494Sobrien  if (!xdr_opaque(xdrs, (caddr_t) objp->fh_data, NFS_FHSIZE)) {
50238494Sobrien    return (FALSE);
50338494Sobrien  }
50438494Sobrien  return (TRUE);
50538494Sobrien}
50638494Sobrien#endif /* not HAVE_XDR_NFS_FH */
50738494Sobrien
50838494Sobrien
50938494Sobrien#ifndef HAVE_XDR_NFSCOOKIE
51038494Sobrienbool_t
51138494Sobrienxdr_nfscookie(XDR *xdrs, nfscookie objp)
51238494Sobrien{
513174294Sobrien  if (amuDebug(D_XDRTRACE))
51438494Sobrien    plog(XLOG_DEBUG, "xdr_nfscookie:");
51538494Sobrien
51638494Sobrien  if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
51738494Sobrien    return (FALSE);
51838494Sobrien  }
51938494Sobrien  return (TRUE);
52038494Sobrien}
52138494Sobrien#endif /* not HAVE_XDR_NFSCOOKIE */
52238494Sobrien
52338494Sobrien
52438494Sobrien#ifndef HAVE_XDR_NFSPATH
52538494Sobrienbool_t
52638494Sobrienxdr_nfspath(XDR *xdrs, nfspath *objp)
52738494Sobrien{
528174294Sobrien  if (amuDebug(D_XDRTRACE))
52938494Sobrien    plog(XLOG_DEBUG, "xdr_nfspath:");
53038494Sobrien
53138494Sobrien  if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
53238494Sobrien    return (FALSE);
53338494Sobrien  }
53438494Sobrien  return (TRUE);
53538494Sobrien}
53638494Sobrien#endif /* not HAVE_XDR_NFSPATH */
53738494Sobrien
53838494Sobrien
53938494Sobrien#ifndef HAVE_XDR_NFSSTAT
54038494Sobrienbool_t
54138494Sobrienxdr_nfsstat(XDR *xdrs, nfsstat *objp)
54238494Sobrien{
543174294Sobrien  enum_t local_obj = *objp;
544174294Sobrien
545174294Sobrien  if (amuDebug(D_XDRTRACE))
54638494Sobrien    plog(XLOG_DEBUG, "xdr_nfsstat:");
54738494Sobrien
548174294Sobrien  if (!xdr_enum(xdrs, &local_obj)) {
54938494Sobrien    return (FALSE);
55038494Sobrien  }
55138494Sobrien  return (TRUE);
55238494Sobrien}
55338494Sobrien#endif /* not HAVE_XDR_NFSSTAT */
55438494Sobrien
55538494Sobrien
55638494Sobrien#ifndef HAVE_XDR_NFSTIME
55738494Sobrienbool_t
55838494Sobrienxdr_nfstime(XDR *xdrs, nfstime *objp)
55938494Sobrien{
560174294Sobrien  if (amuDebug(D_XDRTRACE))
56138494Sobrien    plog(XLOG_DEBUG, "xdr_nfstime:");
56238494Sobrien
56338494Sobrien  if (!xdr_u_int(xdrs, (u_int *) &objp->nt_seconds)) {
56438494Sobrien    return (FALSE);
56538494Sobrien  }
56638494Sobrien  if (!xdr_u_int(xdrs, (u_int *) &objp->nt_useconds)) {
56738494Sobrien    return (FALSE);
56838494Sobrien  }
56938494Sobrien  return (TRUE);
57038494Sobrien}
57138494Sobrien#endif /* not HAVE_XDR_NFSTIME */
57238494Sobrien
57338494Sobrien
57438494Sobrien#ifndef HAVE_XDR_POINTER
57538494Sobrienbool_t
57638494Sobrienxdr_pointer(register XDR *xdrs, char **objpp, u_int obj_size, XDRPROC_T_TYPE xdr_obj)
57738494Sobrien{
578174294Sobrien  if (amuDebug(D_XDRTRACE))
57938494Sobrien    plog(XLOG_DEBUG, "xdr_pointer:");
58038494Sobrien
58138494Sobrien  bool_t more_data;
58238494Sobrien
58338494Sobrien  more_data = (*objpp != NULL);
58438494Sobrien  if (!xdr_bool(xdrs, &more_data)) {
58538494Sobrien    return (FALSE);
58638494Sobrien  }
58738494Sobrien  if (!more_data) {
58838494Sobrien    *objpp = NULL;
58938494Sobrien    return (TRUE);
59038494Sobrien  }
59138494Sobrien
59238494Sobrien  return (xdr_reference(xdrs, objpp, obj_size, xdr_obj));
59338494Sobrien}
59438494Sobrien#endif /* not HAVE_XDR_POINTER */
59538494Sobrien
59638494Sobrien
59738494Sobrien#ifndef HAVE_XDR_READARGS
59838494Sobrienbool_t
59938494Sobrienxdr_readargs(XDR *xdrs, nfsreadargs *objp)
60038494Sobrien{
601174294Sobrien  if (amuDebug(D_XDRTRACE))
60238494Sobrien    plog(XLOG_DEBUG, "xdr_readargs:");
60338494Sobrien
60438494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->ra_fhandle)) {
60538494Sobrien    return (FALSE);
60638494Sobrien  }
60738494Sobrien  if (!xdr_u_int(xdrs, &objp->ra_offset)) {
60838494Sobrien    return (FALSE);
60938494Sobrien  }
61038494Sobrien  if (!xdr_u_int(xdrs, &objp->ra_count)) {
61138494Sobrien    return (FALSE);
61238494Sobrien  }
61338494Sobrien  if (!xdr_u_int(xdrs, &objp->ra_totalcount)) {
61438494Sobrien    return (FALSE);
61538494Sobrien  }
61638494Sobrien  return (TRUE);
61738494Sobrien}
61838494Sobrien#endif /* not HAVE_XDR_READARGS */
61938494Sobrien
62038494Sobrien
62138494Sobrien#ifndef HAVE_XDR_READDIRARGS
62238494Sobrienbool_t
62338494Sobrienxdr_readdirargs(XDR *xdrs, nfsreaddirargs *objp)
62438494Sobrien{
625174294Sobrien  if (amuDebug(D_XDRTRACE))
62638494Sobrien    plog(XLOG_DEBUG, "xdr_readdirargs:");
62738494Sobrien
62838494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->rda_fhandle)) {
62938494Sobrien    return (FALSE);
63038494Sobrien  }
63138494Sobrien  if (!xdr_nfscookie(xdrs, objp->rda_cookie)) {
63238494Sobrien    return (FALSE);
63338494Sobrien  }
63438494Sobrien  if (!xdr_u_int(xdrs, &objp->rda_count)) {
63538494Sobrien    return (FALSE);
63638494Sobrien  }
63738494Sobrien  return (TRUE);
63838494Sobrien}
63938494Sobrien#endif /* not HAVE_XDR_READDIRARGS */
64038494Sobrien
64138494Sobrien
64238494Sobrien#ifndef HAVE_XDR_READDIRRES
64338494Sobrienbool_t
64438494Sobrienxdr_readdirres(XDR *xdrs, nfsreaddirres *objp)
64538494Sobrien{
646174294Sobrien  if (amuDebug(D_XDRTRACE))
64738494Sobrien    plog(XLOG_DEBUG, "xdr_readdirres:");
64838494Sobrien
64938494Sobrien  if (!xdr_nfsstat(xdrs, &objp->rdr_status)) {
65038494Sobrien    return (FALSE);
65138494Sobrien  }
65238494Sobrien  switch (objp->rdr_status) {
65338494Sobrien  case NFS_OK:
65438494Sobrien    if (!xdr_dirlist(xdrs, &objp->rdr_u.rdr_reply_u)) {
65538494Sobrien      return (FALSE);
65638494Sobrien    }
65738494Sobrien    break;
65838494Sobrien  default:
65938494Sobrien    break;
66038494Sobrien  }
66138494Sobrien  return (TRUE);
66238494Sobrien}
66338494Sobrien#endif /* not HAVE_XDR_READDIRRES */
66438494Sobrien
66538494Sobrien
66638494Sobrien#ifndef HAVE_XDR_READLINKRES
66738494Sobrienbool_t
66838494Sobrienxdr_readlinkres(XDR *xdrs, nfsreadlinkres *objp)
66938494Sobrien{
670174294Sobrien  if (amuDebug(D_XDRTRACE))
67138494Sobrien    plog(XLOG_DEBUG, "xdr_readlinkres:");
67238494Sobrien
67338494Sobrien  if (!xdr_nfsstat(xdrs, &objp->rlr_status)) {
67438494Sobrien    return (FALSE);
67538494Sobrien  }
67638494Sobrien  switch (objp->rlr_status) {
67738494Sobrien  case NFS_OK:
67838494Sobrien    if (!xdr_nfspath(xdrs, &objp->rlr_u.rlr_data_u)) {
67938494Sobrien      return (FALSE);
68038494Sobrien    }
68138494Sobrien    break;
68238494Sobrien  default:
68338494Sobrien    break;
68438494Sobrien  }
68538494Sobrien  return (TRUE);
68638494Sobrien}
68738494Sobrien#endif /* not HAVE_XDR_READLINKRES */
68838494Sobrien
68938494Sobrien
69038494Sobrien#ifndef HAVE_XDR_READOKRES
69138494Sobrienbool_t
69238494Sobrienxdr_readokres(XDR *xdrs, nfsreadokres *objp)
69338494Sobrien{
694174294Sobrien  if (amuDebug(D_XDRTRACE))
69538494Sobrien    plog(XLOG_DEBUG, "xdr_readokres:");
69638494Sobrien
69738494Sobrien  if (!xdr_fattr(xdrs, &objp->raok_attributes)) {
69838494Sobrien    return (FALSE);
69938494Sobrien  }
70038494Sobrien  if (!xdr_bytes(xdrs,
70138494Sobrien		 (char **) & objp->raok_u.raok_val_u,
70238494Sobrien		 (u_int *) & objp->raok_u.raok_len_u,
70338494Sobrien		 NFS_MAXDATA)) {
70438494Sobrien    return (FALSE);
70538494Sobrien  }
70638494Sobrien  return (TRUE);
70738494Sobrien}
70838494Sobrien#endif /* not HAVE_XDR_READOKRES */
70938494Sobrien
71038494Sobrien
71138494Sobrien#ifndef HAVE_XDR_READRES
71238494Sobrienbool_t
71338494Sobrienxdr_readres(XDR *xdrs, nfsreadres *objp)
71438494Sobrien{
715174294Sobrien  if (amuDebug(D_XDRTRACE))
71638494Sobrien    plog(XLOG_DEBUG, "xdr_readres:");
71738494Sobrien
71838494Sobrien  if (!xdr_nfsstat(xdrs, &objp->rr_status)) {
71938494Sobrien    return (FALSE);
72038494Sobrien  }
72138494Sobrien  switch (objp->rr_status) {
72238494Sobrien  case NFS_OK:
72338494Sobrien    if (!xdr_readokres(xdrs, &objp->rr_u.rr_reply_u)) {
72438494Sobrien      return (FALSE);
72538494Sobrien    }
72638494Sobrien    break;
72738494Sobrien  default:
72838494Sobrien    break;
72938494Sobrien  }
73038494Sobrien  return (TRUE);
73138494Sobrien}
73238494Sobrien#endif /* not HAVE_XDR_READRES */
73338494Sobrien
73438494Sobrien
73538494Sobrien#ifndef HAVE_XDR_RENAMEARGS
73638494Sobrienbool_t
73738494Sobrienxdr_renameargs(XDR *xdrs, nfsrenameargs *objp)
73838494Sobrien{
739174294Sobrien  if (amuDebug(D_XDRTRACE))
74038494Sobrien    plog(XLOG_DEBUG, "xdr_renameargs:");
74138494Sobrien
74238494Sobrien  if (!xdr_diropargs(xdrs, &objp->rna_from)) {
74338494Sobrien    return (FALSE);
74438494Sobrien  }
74538494Sobrien  if (!xdr_diropargs(xdrs, &objp->rna_to)) {
74638494Sobrien    return (FALSE);
74738494Sobrien  }
74838494Sobrien  return (TRUE);
74938494Sobrien}
75038494Sobrien#endif /* not HAVE_XDR_RENAMEARGS */
75138494Sobrien
75238494Sobrien
75338494Sobrien#ifndef HAVE_XDR_SATTR
75438494Sobrienbool_t
75538494Sobrienxdr_sattr(XDR *xdrs, nfssattr *objp)
75638494Sobrien{
757174294Sobrien  if (amuDebug(D_XDRTRACE))
75838494Sobrien    plog(XLOG_DEBUG, "xdr_sattr:");
75938494Sobrien
76038494Sobrien  if (!xdr_u_int(xdrs, &objp->sa_mode)) {
76138494Sobrien    return (FALSE);
76238494Sobrien  }
76338494Sobrien  if (!xdr_u_int(xdrs, &objp->sa_uid)) {
76438494Sobrien    return (FALSE);
76538494Sobrien  }
76638494Sobrien  if (!xdr_u_int(xdrs, &objp->sa_gid)) {
76738494Sobrien    return (FALSE);
76838494Sobrien  }
76938494Sobrien  if (!xdr_u_int(xdrs, &objp->sa_size)) {
77038494Sobrien    return (FALSE);
77138494Sobrien  }
77238494Sobrien  if (!xdr_nfstime(xdrs, &objp->sa_atime)) {
77338494Sobrien    return (FALSE);
77438494Sobrien  }
77538494Sobrien  if (!xdr_nfstime(xdrs, &objp->sa_mtime)) {
77638494Sobrien    return (FALSE);
77738494Sobrien  }
77838494Sobrien  return (TRUE);
77938494Sobrien}
78038494Sobrien#endif /* not HAVE_XDR_SATTR */
78138494Sobrien
78238494Sobrien
78338494Sobrien#ifndef HAVE_XDR_SATTRARGS
78438494Sobrienbool_t
78538494Sobrienxdr_sattrargs(XDR *xdrs, nfssattrargs *objp)
78638494Sobrien{
787174294Sobrien  if (amuDebug(D_XDRTRACE))
78838494Sobrien    plog(XLOG_DEBUG, "xdr_sattrargs:");
78938494Sobrien
79038494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->sag_fhandle)) {
79138494Sobrien    return (FALSE);
79238494Sobrien  }
79338494Sobrien  if (!xdr_sattr(xdrs, &objp->sag_attributes)) {
79438494Sobrien    return (FALSE);
79538494Sobrien  }
79638494Sobrien  return (TRUE);
79738494Sobrien}
79838494Sobrien#endif /* not HAVE_XDR_SATTRARGS */
79938494Sobrien
80038494Sobrien
80138494Sobrien#ifndef HAVE_XDR_STATFSOKRES
80238494Sobrienbool_t
80338494Sobrienxdr_statfsokres(XDR *xdrs, nfsstatfsokres *objp)
80438494Sobrien{
805174294Sobrien  if (amuDebug(D_XDRTRACE))
80638494Sobrien    plog(XLOG_DEBUG, "xdr_statfsokres:");
80738494Sobrien
80838494Sobrien  if (!xdr_u_int(xdrs, &objp->sfrok_tsize)) {
80938494Sobrien    return (FALSE);
81038494Sobrien  }
81138494Sobrien  if (!xdr_u_int(xdrs, &objp->sfrok_bsize)) {
81238494Sobrien    return (FALSE);
81338494Sobrien  }
81438494Sobrien  if (!xdr_u_int(xdrs, &objp->sfrok_blocks)) {
81538494Sobrien    return (FALSE);
81638494Sobrien  }
81738494Sobrien  if (!xdr_u_int(xdrs, &objp->sfrok_bfree)) {
81838494Sobrien    return (FALSE);
81938494Sobrien  }
82038494Sobrien  if (!xdr_u_int(xdrs, &objp->sfrok_bavail)) {
82138494Sobrien    return (FALSE);
82238494Sobrien  }
82338494Sobrien  return (TRUE);
82438494Sobrien}
82538494Sobrien#endif /* not HAVE_XDR_STATFSOKRES */
82638494Sobrien
82738494Sobrien
82838494Sobrien#ifndef HAVE_XDR_STATFSRES
82938494Sobrienbool_t
83038494Sobrienxdr_statfsres(XDR *xdrs, nfsstatfsres *objp)
83138494Sobrien{
832174294Sobrien  if (amuDebug(D_XDRTRACE))
83338494Sobrien    plog(XLOG_DEBUG, "xdr_statfsres:");
83438494Sobrien
83538494Sobrien  if (!xdr_nfsstat(xdrs, &objp->sfr_status)) {
83638494Sobrien    return (FALSE);
83738494Sobrien  }
83838494Sobrien  switch (objp->sfr_status) {
83938494Sobrien  case NFS_OK:
84038494Sobrien    if (!xdr_statfsokres(xdrs, &objp->sfr_u.sfr_reply_u)) {
84138494Sobrien      return (FALSE);
84238494Sobrien    }
84338494Sobrien    break;
84438494Sobrien  default:
84538494Sobrien    break;
84638494Sobrien  }
84738494Sobrien  return (TRUE);
84838494Sobrien}
84938494Sobrien#endif /* not HAVE_XDR_STATFSRES */
85038494Sobrien
85138494Sobrien
85238494Sobrien#ifndef HAVE_XDR_SYMLINKARGS
85338494Sobrienbool_t
85438494Sobrienxdr_symlinkargs(XDR *xdrs, nfssymlinkargs *objp)
85538494Sobrien{
856174294Sobrien  if (amuDebug(D_XDRTRACE))
85738494Sobrien    plog(XLOG_DEBUG, "xdr_symlinkargs:");
85838494Sobrien
85938494Sobrien  if (!xdr_diropargs(xdrs, &objp->sla_from)) {
86038494Sobrien    return (FALSE);
86138494Sobrien  }
86238494Sobrien  if (!xdr_nfspath(xdrs, &objp->sla_to)) {
86338494Sobrien    return (FALSE);
86438494Sobrien  }
86538494Sobrien  if (!xdr_sattr(xdrs, &objp->sla_attributes)) {
86638494Sobrien    return (FALSE);
86738494Sobrien  }
86838494Sobrien  return (TRUE);
86938494Sobrien}
87038494Sobrien#endif /* not HAVE_XDR_SYMLINKARGS */
87138494Sobrien
87238494Sobrien
87338494Sobrien#ifndef HAVE_XDR_WRITEARGS
87438494Sobrienbool_t
87538494Sobrienxdr_writeargs(XDR *xdrs, nfswriteargs *objp)
87638494Sobrien{
877174294Sobrien  if (amuDebug(D_XDRTRACE))
87838494Sobrien    plog(XLOG_DEBUG, "xdr_writeargs:");
87938494Sobrien
88038494Sobrien  if (!xdr_nfs_fh(xdrs, &objp->wra_fhandle)) {
88138494Sobrien    return (FALSE);
88238494Sobrien  }
88338494Sobrien  if (!xdr_u_int(xdrs, &objp->wra_beginoffset)) {
88438494Sobrien    return (FALSE);
88538494Sobrien  }
88638494Sobrien  if (!xdr_u_int(xdrs, &objp->wra_offset)) {
88738494Sobrien    return (FALSE);
88838494Sobrien  }
88938494Sobrien  if (!xdr_u_int(xdrs, &objp->wra_totalcount)) {
89038494Sobrien    return (FALSE);
89138494Sobrien  }
89238494Sobrien  if (!xdr_bytes(xdrs,
89338494Sobrien		 (char **) & objp->wra_u.wra_val_u,
89438494Sobrien		 (u_int *) & objp->wra_u.wra_len_u,
89538494Sobrien		 NFS_MAXDATA)) {
89638494Sobrien    return (FALSE);
89738494Sobrien  }
89838494Sobrien  return (TRUE);
89938494Sobrien}
90038494Sobrien#endif /* not HAVE_XDR_WRITEARGS */
901174294Sobrien
902174294Sobrien
903174294Sobrien/*
904174294Sobrien * NFS V3 XDR FUNCTIONS:
905174294Sobrien */
906174294Sobrien#ifdef HAVE_FS_NFS3
907174294Sobrienbool_t
908174294Sobrienxdr_am_fhandle3(XDR *xdrs, am_fhandle3 *objp)
909174294Sobrien{
910174294Sobrien  if (amuDebug(D_XDRTRACE))
911174294Sobrien    plog(XLOG_DEBUG, "xdr_am_fhandle3:");
912174294Sobrien
913174294Sobrien  if (!xdr_bytes(xdrs,
914174294Sobrien		 (char **) &objp->fhandle3_val,
915174294Sobrien		 (u_int *) &objp->fhandle3_len,
916174294Sobrien		 AM_FHSIZE3))
917174294Sobrien    return (FALSE);
918174294Sobrien  return (TRUE);
919174294Sobrien}
920174294Sobrien
921174294Sobrien
922174294Sobrienbool_t
923174294Sobrienxdr_am_mountstat3(XDR *xdrs, am_mountstat3 *objp)
924174294Sobrien{
925174294Sobrien  enum_t local_obj = *objp;
926174294Sobrien
927174294Sobrien  if (amuDebug(D_XDRTRACE))
928174294Sobrien    plog(XLOG_DEBUG, "xdr_am_mountstat3:");
929174294Sobrien
930174294Sobrien  if (!xdr_enum(xdrs, &local_obj))
931174294Sobrien    return (FALSE);
932174294Sobrien  return (TRUE);
933174294Sobrien}
934174294Sobrien
935174294Sobrien
936174294Sobrienbool_t
937174294Sobrienxdr_am_mountres3_ok(XDR *xdrs, am_mountres3_ok *objp)
938174294Sobrien{
939174294Sobrien  if (amuDebug(D_XDRTRACE))
940174294Sobrien    plog(XLOG_DEBUG, "xdr_am_mountres3_ok:");
941174294Sobrien
942174294Sobrien  if (!xdr_am_fhandle3(xdrs, &objp->fhandle))
943174294Sobrien    return (FALSE);
944174294Sobrien  if (!xdr_array(xdrs,
945174294Sobrien		 (char **) ((voidp) &objp->auth_flavors.auth_flavors_val),
946174294Sobrien		 (u_int *) &objp->auth_flavors.auth_flavors_len,
947174294Sobrien		 ~0,
948174294Sobrien		 sizeof(int),
949174294Sobrien		 (XDRPROC_T_TYPE) xdr_int))
950174294Sobrien    return (FALSE);
951174294Sobrien  return (TRUE);
952174294Sobrien}
953174294Sobrien
954174294Sobrien
955174294Sobrienbool_t
956174294Sobrienxdr_am_mountres3(XDR *xdrs, am_mountres3 *objp)
957174294Sobrien{
958174294Sobrien  if (amuDebug(D_XDRTRACE))
959174294Sobrien    plog(XLOG_DEBUG, "xdr_am_mountres3:");
960174294Sobrien
961174294Sobrien  if (!xdr_am_mountstat3(xdrs, &objp->fhs_status))
962174294Sobrien    return (FALSE);
963174294Sobrien
964174294Sobrien  if (objp->fhs_status == AM_MNT3_OK) {
965174294Sobrien    if (!xdr_am_mountres3_ok(xdrs, &objp->mountres3_u.mountinfo))
966174294Sobrien      return (FALSE);
967174294Sobrien  }
968174294Sobrien  return (TRUE);
969174294Sobrien}
970174294Sobrien
971174294Sobrien
972174294Sobrienbool_t
973174294Sobrienxdr_am_diropargs3(XDR *xdrs, am_diropargs3 *objp)
974174294Sobrien{
975174294Sobrien  if (amuDebug(D_XDRTRACE))
976174294Sobrien    plog(XLOG_DEBUG, "xdr_am_diropargs3:");
977174294Sobrien
978174294Sobrien  if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
979174294Sobrien    return (FALSE);
980174294Sobrien  if (!xdr_am_filename3(xdrs, &objp->name))
981174294Sobrien    return (FALSE);
982174294Sobrien  return (TRUE);
983174294Sobrien}
984174294Sobrien
985174294Sobrien
986174294Sobrienbool_t
987174294Sobrienxdr_am_filename3(XDR *xdrs, am_filename3 *objp)
988174294Sobrien{
989174294Sobrien  if (amuDebug(D_XDRTRACE))
990174294Sobrien    plog(XLOG_DEBUG, "xdr_am_filename3:");
991174294Sobrien
992174294Sobrien  if (!xdr_string(xdrs, objp, ~0))
993174294Sobrien    return (FALSE);
994174294Sobrien  return (TRUE);
995174294Sobrien}
996174294Sobrien
997174294Sobrien
998174294Sobrienbool_t
999174294Sobrienxdr_am_LOOKUP3args(XDR *xdrs, am_LOOKUP3args *objp)
1000174294Sobrien{
1001174294Sobrien  if (amuDebug(D_XDRTRACE))
1002174294Sobrien    plog(XLOG_DEBUG, "xdr_am_LOOKUP3args:");
1003174294Sobrien
1004174294Sobrien  if (!xdr_am_diropargs3(xdrs, &objp->what))
1005174294Sobrien    return (FALSE);
1006174294Sobrien  return (TRUE);
1007174294Sobrien}
1008174294Sobrien
1009174294Sobrien
1010174294Sobrienbool_t
1011174294Sobrienxdr_am_LOOKUP3res(XDR *xdrs, am_LOOKUP3res *objp)
1012174294Sobrien{
1013174294Sobrien  if (amuDebug(D_XDRTRACE))
1014174294Sobrien    plog(XLOG_DEBUG, "xdr_am_LOOKUP3res:");
1015174294Sobrien
1016174294Sobrien  if (!xdr_am_nfsstat3(xdrs, &objp->status))
1017174294Sobrien    return (FALSE);
1018174294Sobrien  switch (objp->status) {
1019174294Sobrien  case AM_NFS3_OK:
1020174294Sobrien    if (!xdr_am_LOOKUP3resok(xdrs, &objp->res_u.ok))
1021174294Sobrien      return (FALSE);
1022174294Sobrien    break;
1023174294Sobrien  default:
1024174294Sobrien    if (!xdr_am_LOOKUP3resfail(xdrs, &objp->res_u.fail))
1025174294Sobrien      return (FALSE);
1026174294Sobrien    break;
1027174294Sobrien  }
1028174294Sobrien  return (TRUE);
1029174294Sobrien}
1030174294Sobrien
1031174294Sobrien
1032174294Sobrienbool_t
1033174294Sobrienxdr_am_LOOKUP3resfail(XDR *xdrs, am_LOOKUP3resfail *objp)
1034174294Sobrien{
1035174294Sobrien  if (amuDebug(D_XDRTRACE))
1036174294Sobrien    plog(XLOG_DEBUG, "xdr_am_LOOKUP3resfail:");
1037174294Sobrien
1038174294Sobrien  /*
1039174294Sobrien   * Don't xdr post_op_attr: amd doesn't need them, but they require many
1040174294Sobrien   * additional xdr functions.
1041174294Sobrien   */
1042174294Sobrien#if 0
1043174294Sobrien  if (!xdr_post_op_attr(xdrs, &objp->dir_attributes))
1044174294Sobrien    return (FALSE);
1045174294Sobrien#endif
1046174294Sobrien  return (TRUE);
1047174294Sobrien}
1048174294Sobrien
1049174294Sobrien
1050174294Sobrienbool_t
1051174294Sobrienxdr_am_LOOKUP3resok(XDR *xdrs, am_LOOKUP3resok *objp)
1052174294Sobrien{
1053174294Sobrien  if (amuDebug(D_XDRTRACE))
1054174294Sobrien    plog(XLOG_DEBUG, "xdr_am_LOOKUP3resok:");
1055174294Sobrien
1056174294Sobrien  if (!xdr_am_nfs_fh3(xdrs, &objp->object))
1057174294Sobrien    return (FALSE);
1058174294Sobrien  /*
1059174294Sobrien   * Don't xdr post_op_attr: amd doesn't need them, but they require many
1060174294Sobrien   * additional xdr functions.
1061174294Sobrien   */
1062174294Sobrien#if 0
1063174294Sobrien  if (!xdr_post_op_attr(xdrs, &objp->obj_attributes))
1064174294Sobrien    return (FALSE);
1065174294Sobrien  if (!xdr_post_op_attr(xdrs, &objp->dir_attributes))
1066174294Sobrien    return (FALSE);
1067174294Sobrien#endif
1068174294Sobrien  return (TRUE);
1069174294Sobrien}
1070174294Sobrien
1071174294Sobrien
1072174294Sobrienbool_t
1073174294Sobrienxdr_am_nfs_fh3(XDR *xdrs, am_nfs_fh3 *objp)
1074174294Sobrien{
1075174294Sobrien  if (amuDebug(D_XDRTRACE))
1076174294Sobrien    plog(XLOG_DEBUG, "xdr_am_nfs_fh3:");
1077174294Sobrien
1078174294Sobrien  if (!xdr_u_int(xdrs, &objp->am_fh3_length))
1079174294Sobrien    return (FALSE);
1080174294Sobrien  if (objp->am_fh3_length > AM_FHSIZE3)
1081174294Sobrien    return (FALSE);
1082174294Sobrien  if (!xdr_opaque(xdrs, objp->am_fh3_data, objp->am_fh3_length))
1083174294Sobrien    return (FALSE);
1084174294Sobrien  return (TRUE);
1085174294Sobrien}
1086174294Sobrien
1087174294Sobrien
1088174294Sobrienbool_t
1089174294Sobrienxdr_am_nfsstat3(XDR *xdrs, am_nfsstat3 *objp)
1090174294Sobrien{
1091174294Sobrien  if (amuDebug(D_XDRTRACE))
1092174294Sobrien    plog(XLOG_DEBUG, "xdr_am_nfsstat3:");
1093174294Sobrien
1094174294Sobrien  if (!xdr_enum(xdrs, (enum_t *)objp))
1095174294Sobrien    return (FALSE);
1096174294Sobrien  return (TRUE);
1097174294Sobrien}
1098174294Sobrien#endif /* not HAVE_FS_NFS3 */
1099