Home | History | Annotate | Line # | Download | only in libamu
      1 /*	$NetBSD: xdr_func.c,v 1.1.1.3 2015/01/17 16:34:18 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1997-2014 Erez Zadok
      5  * Copyright (c) 1990 Jan-Simon Pendry
      6  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
      7  * Copyright (c) 1990 The Regents of the University of California.
      8  * All rights reserved.
      9  *
     10  * This code is derived from software contributed to Berkeley by
     11  * Jan-Simon Pendry at Imperial College, London.
     12  *
     13  * Redistribution and use in source and binary forms, with or without
     14  * modification, are permitted provided that the following conditions
     15  * are met:
     16  * 1. Redistributions of source code must retain the above copyright
     17  *    notice, this list of conditions and the following disclaimer.
     18  * 2. Redistributions in binary form must reproduce the above copyright
     19  *    notice, this list of conditions and the following disclaimer in the
     20  *    documentation and/or other materials provided with the distribution.
     21  * 3. Neither the name of the University nor the names of its contributors
     22  *    may be used to endorse or promote products derived from this software
     23  *    without specific prior written permission.
     24  *
     25  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     26  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     28  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     29  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     30  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     31  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     32  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     34  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     35  * SUCH DAMAGE.
     36  *
     37  *
     38  * File: am-utils/libamu/xdr_func.c
     39  *
     40  */
     41 
     42 /*
     43  * Complete list of all possible xdr functions which may be needed.
     44  */
     45 #ifdef HAVE_CONFIG_H
     46 # include <config.h>
     47 #endif /* HAVE_CONFIG_H */
     48 #include <am_defs.h>
     49 #include <amu.h>
     50 
     51 #ifdef __RPCSVC_MOUNT_H__
     52 # error IRIX6 should not include rpcsvc/mount.h
     53 #endif /* __RPCSVC_MOUNT_H__ */
     54 
     55 /*
     56  * MACROS:
     57  */
     58 #ifdef HAVE_FS_AUTOFS
     59 # ifndef AUTOFS_MAXCOMPONENTLEN
     60 #  define AUTOFS_MAXCOMPONENTLEN 255
     61 # endif /* not AUTOFS_MAXCOMPONENTLEN */
     62 # ifndef AUTOFS_MAXOPTSLEN
     63 #  define AUTOFS_MAXOPTSLEN 255
     64 # endif /* not AUTOFS_MAXOPTSLEN */
     65 # ifndef AUTOFS_MAXPATHLEN
     66 #  define AUTOFS_MAXPATHLEN 1024
     67 # endif /* not AUTOFS_MAXPATHLEN */
     68 #endif /* HAVE_FS_AUTOFS */
     69 
     70 /* forward definitions, are they needed? */
     71 extern bool_t xdr_exportnode(XDR *xdrs, exportnode *objp);
     72 extern bool_t xdr_groupnode(XDR *xdrs, groupnode *objp);
     73 extern bool_t xdr_name(XDR *xdrs, name *objp);
     74 
     75 
     76 #ifndef HAVE_XDR_ATTRSTAT
     77 bool_t
     78 xdr_attrstat(XDR *xdrs, nfsattrstat *objp)
     79 {
     80   if (amuDebug(D_XDRTRACE))
     81     plog(XLOG_DEBUG, "xdr_attrstat:");
     82 
     83   if (!xdr_nfsstat(xdrs, &objp->ns_status)) {
     84     return (FALSE);
     85   }
     86   switch (objp->ns_status) {
     87   case NFS_OK:
     88     if (!xdr_fattr(xdrs, &objp->ns_u.ns_attr_u)) {
     89       return (FALSE);
     90     }
     91     break;
     92   default:
     93     break;
     94   }
     95   return (TRUE);
     96 }
     97 #endif /* not HAVE_XDR_ATTRSTAT */
     98 
     99 
    100 #ifndef HAVE_XDR_CREATEARGS
    101 bool_t
    102 xdr_createargs(XDR *xdrs, nfscreateargs *objp)
    103 {
    104   if (amuDebug(D_XDRTRACE))
    105     plog(XLOG_DEBUG, "xdr_createargs:");
    106 
    107   if (!xdr_diropargs(xdrs, &objp->ca_where)) {
    108     return (FALSE);
    109   }
    110   if (!xdr_sattr(xdrs, &objp->ca_attributes)) {
    111     return (FALSE);
    112   }
    113   return (TRUE);
    114 }
    115 #endif /* not HAVE_XDR_CREATEARGS */
    116 
    117 
    118 #ifndef HAVE_XDR_DIRLIST
    119 bool_t
    120 xdr_dirlist(XDR *xdrs, nfsdirlist *objp)
    121 {
    122   if (amuDebug(D_XDRTRACE))
    123     plog(XLOG_DEBUG, "xdr_dirlist:");
    124 
    125   if (!xdr_pointer(xdrs, (char **) &objp->dl_entries, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
    126     return (FALSE);
    127   }
    128   if (!xdr_bool(xdrs, &objp->dl_eof)) {
    129     return (FALSE);
    130   }
    131   return (TRUE);
    132 }
    133 #endif /* not HAVE_XDR_DIRLIST */
    134 
    135 
    136 #ifndef HAVE_XDR_DIROPARGS
    137 bool_t
    138 xdr_diropargs(XDR *xdrs, nfsdiropargs *objp)
    139 {
    140   if (amuDebug(D_XDRTRACE))
    141     plog(XLOG_DEBUG, "xdr_diropargs:");
    142 
    143   if (!xdr_nfs_fh(xdrs, &objp->da_fhandle)) {
    144     return (FALSE);
    145   }
    146   if (!xdr_filename(xdrs, &objp->da_name)) {
    147     return (FALSE);
    148   }
    149   return (TRUE);
    150 }
    151 #endif /* not HAVE_XDR_DIROPARGS */
    152 
    153 
    154 #ifndef HAVE_XDR_DIROPOKRES
    155 bool_t
    156 xdr_diropokres(XDR *xdrs, nfsdiropokres *objp)
    157 {
    158   if (amuDebug(D_XDRTRACE))
    159     plog(XLOG_DEBUG, "xdr_diropokres:");
    160 
    161   if (!xdr_nfs_fh(xdrs, &objp->drok_fhandle)) {
    162     return (FALSE);
    163   }
    164   if (!xdr_fattr(xdrs, &objp->drok_attributes)) {
    165     return (FALSE);
    166   }
    167   return (TRUE);
    168 }
    169 #endif /* not HAVE_XDR_DIROPOKRES */
    170 
    171 
    172 #ifndef HAVE_XDR_DIROPRES
    173 bool_t
    174 xdr_diropres(XDR *xdrs, nfsdiropres *objp)
    175 {
    176   if (amuDebug(D_XDRTRACE))
    177     plog(XLOG_DEBUG, "xdr_diropres:");
    178 
    179   if (!xdr_nfsstat(xdrs, &objp->dr_status)) {
    180     return (FALSE);
    181   }
    182   switch (objp->dr_status) {
    183   case NFS_OK:
    184     if (!xdr_diropokres(xdrs, &objp->dr_u.dr_drok_u)) {
    185       return (FALSE);
    186     }
    187     break;
    188   default:
    189     break;
    190   }
    191   return (TRUE);
    192 }
    193 #endif /* not HAVE_XDR_DIROPRES */
    194 
    195 
    196 #ifndef HAVE_XDR_DIRPATH
    197 bool_t
    198 xdr_dirpath(XDR *xdrs, dirpath *objp)
    199 {
    200   if (amuDebug(D_XDRTRACE))
    201     plog(XLOG_DEBUG, "xdr_dirpath:");
    202 
    203   if (!xdr_string(xdrs, objp, MNTPATHLEN)) {
    204     return (FALSE);
    205   }
    206   return (TRUE);
    207 }
    208 #endif /* not HAVE_XDR_DIRPATH */
    209 
    210 
    211 #ifndef HAVE_XDR_ENTRY
    212 bool_t
    213 xdr_entry(XDR *xdrs, nfsentry *objp)
    214 {
    215   if (amuDebug(D_XDRTRACE))
    216     plog(XLOG_DEBUG, "xdr_entry:");
    217 
    218   if (!xdr_u_int(xdrs, &objp->ne_fileid)) {
    219     return (FALSE);
    220   }
    221   if (!xdr_filename(xdrs, &objp->ne_name)) {
    222     return (FALSE);
    223   }
    224   if (!xdr_nfscookie(xdrs, objp->ne_cookie)) {
    225     return (FALSE);
    226   }
    227   if (!xdr_pointer(xdrs, (char **) &objp->ne_nextentry, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
    228     return (FALSE);
    229   }
    230   return (TRUE);
    231 }
    232 #endif /* not HAVE_XDR_ENTRY */
    233 
    234 
    235 #ifndef HAVE_XDR_EXPORTNODE
    236 bool_t
    237 xdr_exportnode(XDR *xdrs, exportnode *objp)
    238 {
    239   if (amuDebug(D_XDRTRACE))
    240     plog(XLOG_DEBUG, "xdr_exportnode:");
    241 
    242   if (!xdr_dirpath(xdrs, &objp->ex_dir)) {
    243     return (FALSE);
    244   }
    245   if (!xdr_groups(xdrs, &objp->ex_groups)) {
    246     return (FALSE);
    247   }
    248   if (!xdr_exports(xdrs, &objp->ex_next)) {
    249     return (FALSE);
    250   }
    251   return (TRUE);
    252 }
    253 #endif /* not HAVE_XDR_EXPORTNODE */
    254 
    255 
    256 #ifndef HAVE_XDR_EXPORTS
    257 bool_t
    258 xdr_exports(XDR *xdrs, exports *objp)
    259 {
    260   if (amuDebug(D_XDRTRACE))
    261     plog(XLOG_DEBUG, "xdr_exports:");
    262 
    263   if (!xdr_pointer(xdrs, (char **) objp, sizeof(exportnode), (XDRPROC_T_TYPE) xdr_exportnode)) {
    264     return (FALSE);
    265   }
    266   return (TRUE);
    267 }
    268 #endif /* not HAVE_XDR_EXPORTS */
    269 
    270 
    271 #ifndef HAVE_XDR_FATTR
    272 bool_t
    273 xdr_fattr(XDR *xdrs, nfsfattr *objp)
    274 {
    275   if (amuDebug(D_XDRTRACE))
    276     plog(XLOG_DEBUG, "xdr_fattr:");
    277 
    278   if (!xdr_ftype(xdrs, &objp->na_type)) {
    279     return (FALSE);
    280   }
    281   if (!xdr_u_int(xdrs, &objp->na_mode)) {
    282     return (FALSE);
    283   }
    284   if (!xdr_u_int(xdrs, &objp->na_nlink)) {
    285     return (FALSE);
    286   }
    287   if (!xdr_u_int(xdrs, &objp->na_uid)) {
    288     return (FALSE);
    289   }
    290   if (!xdr_u_int(xdrs, &objp->na_gid)) {
    291     return (FALSE);
    292   }
    293   if (!xdr_u_int(xdrs, &objp->na_size)) {
    294     return (FALSE);
    295   }
    296   if (!xdr_u_int(xdrs, &objp->na_blocksize)) {
    297     return (FALSE);
    298   }
    299   if (!xdr_u_int(xdrs, &objp->na_rdev)) {
    300     return (FALSE);
    301   }
    302   if (!xdr_u_int(xdrs, &objp->na_blocks)) {
    303     return (FALSE);
    304   }
    305   if (!xdr_u_int(xdrs, &objp->na_fsid)) {
    306     return (FALSE);
    307   }
    308   if (!xdr_u_int(xdrs, &objp->na_fileid)) {
    309     return (FALSE);
    310   }
    311   if (!xdr_nfstime(xdrs, &objp->na_atime)) {
    312     return (FALSE);
    313   }
    314   if (!xdr_nfstime(xdrs, &objp->na_mtime)) {
    315     return (FALSE);
    316   }
    317   if (!xdr_nfstime(xdrs, &objp->na_ctime)) {
    318     return (FALSE);
    319   }
    320   return (TRUE);
    321 }
    322 #endif /* not HAVE_XDR_FATTR */
    323 
    324 
    325 #ifndef HAVE_XDR_FHANDLE
    326 bool_t
    327 xdr_fhandle(XDR *xdrs, fhandle objp)
    328 {
    329   if (amuDebug(D_XDRTRACE))
    330     plog(XLOG_DEBUG, "xdr_fhandle:");
    331 
    332   if (!xdr_opaque(xdrs, objp, NFS_FHSIZE)) {
    333     return (FALSE);
    334   }
    335   return (TRUE);
    336 }
    337 #endif /* not HAVE_XDR_FHANDLE */
    338 
    339 
    340 #ifndef HAVE_XDR_FHSTATUS
    341 bool_t
    342 xdr_fhstatus(XDR *xdrs, fhstatus *objp)
    343 {
    344   if (amuDebug(D_XDRTRACE))
    345     plog(XLOG_DEBUG, "xdr_fhstatus:");
    346 
    347   if (!xdr_u_int(xdrs, &objp->fhs_status)) {
    348     return (FALSE);
    349   }
    350   if (objp->fhs_status == 0 && !xdr_fhandle(xdrs, objp->fhs_fh)) {
    351     return (FALSE);
    352   }
    353   return (TRUE);
    354 }
    355 #endif /* not HAVE_XDR_FHSTATUS */
    356 
    357 
    358 #ifndef HAVE_XDR_FILENAME
    359 bool_t
    360 xdr_filename(XDR *xdrs, filename *objp)
    361 {
    362   if (amuDebug(D_XDRTRACE))
    363     plog(XLOG_DEBUG, "xdr_filename:");
    364 
    365   if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
    366     return (FALSE);
    367   }
    368   return (TRUE);
    369 }
    370 #endif /* not HAVE_XDR_FILENAME */
    371 
    372 
    373 #ifndef HAVE_XDR_FTYPE
    374 bool_t
    375 xdr_ftype(XDR *xdrs, nfsftype *objp)
    376 {
    377   enum_t local_obj = *objp;
    378 
    379   if (amuDebug(D_XDRTRACE))
    380     plog(XLOG_DEBUG, "xdr_ftype:");
    381 
    382   if (!xdr_enum(xdrs, &local_obj)) {
    383     return (FALSE);
    384   }
    385   return (TRUE);
    386 }
    387 #endif /* not HAVE_XDR_FTYPE */
    388 
    389 
    390 #ifndef HAVE_XDR_GROUPNODE
    391 bool_t
    392 xdr_groupnode(XDR *xdrs, groupnode *objp)
    393 {
    394   if (amuDebug(D_XDRTRACE))
    395     plog(XLOG_DEBUG, "xdr_groupnode:");
    396 
    397   if (!xdr_name(xdrs, &objp->gr_name)) {
    398     return (FALSE);
    399   }
    400   if (!xdr_groups(xdrs, &objp->gr_next)) {
    401     return (FALSE);
    402   }
    403   return (TRUE);
    404 }
    405 #endif /* not HAVE_XDR_GROUPNODE */
    406 
    407 
    408 #ifndef HAVE_XDR_GROUPS
    409 bool_t
    410 xdr_groups(XDR *xdrs, groups *objp)
    411 {
    412   if (amuDebug(D_XDRTRACE))
    413     plog(XLOG_DEBUG, "xdr_groups:");
    414 
    415   if (!xdr_pointer(xdrs, (char **) objp, sizeof(groupnode), (XDRPROC_T_TYPE) xdr_groupnode)) {
    416     return (FALSE);
    417   }
    418   return (TRUE);
    419 }
    420 #endif /* not HAVE_XDR_GROUPS */
    421 
    422 
    423 #ifndef HAVE_XDR_LINKARGS
    424 bool_t
    425 xdr_linkargs(XDR *xdrs, nfslinkargs *objp)
    426 {
    427   if (amuDebug(D_XDRTRACE))
    428     plog(XLOG_DEBUG, "xdr_linkargs:");
    429 
    430   if (!xdr_nfs_fh(xdrs, &objp->la_fhandle)) {
    431     return (FALSE);
    432   }
    433   if (!xdr_diropargs(xdrs, &objp->la_to)) {
    434     return (FALSE);
    435   }
    436   return (TRUE);
    437 }
    438 #endif /* not HAVE_XDR_LINKARGS */
    439 
    440 
    441 #ifndef HAVE_XDR_MOUNTBODY
    442 bool_t
    443 xdr_mountbody(XDR *xdrs, mountbody *objp)
    444 {
    445   if (amuDebug(D_XDRTRACE))
    446     plog(XLOG_DEBUG, "xdr_mountbody:");
    447 
    448   if (!xdr_name(xdrs, &objp->ml_hostname)) {
    449     return (FALSE);
    450   }
    451   if (!xdr_dirpath(xdrs, &objp->ml_directory)) {
    452     return (FALSE);
    453   }
    454   if (!xdr_mountlist(xdrs, &objp->ml_next)) {
    455     return (FALSE);
    456   }
    457   return (TRUE);
    458 }
    459 #endif /* not HAVE_XDR_MOUNTBODY */
    460 
    461 
    462 #ifndef HAVE_XDR_MOUNTLIST
    463 bool_t
    464 xdr_mountlist(XDR *xdrs, mountlist *objp)
    465 {
    466   if (amuDebug(D_XDRTRACE))
    467     plog(XLOG_DEBUG, "xdr_mountlist:");
    468 
    469   if (!xdr_pointer(xdrs, (char **) objp, sizeof(mountbody), (XDRPROC_T_TYPE) xdr_mountbody)) {
    470     return (FALSE);
    471   }
    472   return (TRUE);
    473 }
    474 #endif /* not HAVE_XDR_MOUNTLIST */
    475 
    476 
    477 #ifndef HAVE_XDR_NAME
    478 bool_t
    479 xdr_name(XDR *xdrs, name *objp)
    480 {
    481   if (amuDebug(D_XDRTRACE))
    482     plog(XLOG_DEBUG, "xdr_name:");
    483 
    484   if (!xdr_string(xdrs, objp, MNTNAMLEN)) {
    485     return (FALSE);
    486   }
    487   return (TRUE);
    488 }
    489 #endif /* not HAVE_XDR_NAME */
    490 
    491 
    492 #ifndef HAVE_XDR_NFS_FH
    493 bool_t
    494 xdr_nfs_fh(XDR *xdrs, am_nfs_fh *objp)
    495 {
    496   if (amuDebug(D_XDRTRACE))
    497     plog(XLOG_DEBUG, "xdr_nfs_fh:");
    498 
    499   if (!xdr_opaque(xdrs, (caddr_t) objp->fh_data, NFS_FHSIZE)) {
    500     return (FALSE);
    501   }
    502   return (TRUE);
    503 }
    504 #endif /* not HAVE_XDR_NFS_FH */
    505 
    506 
    507 #ifndef HAVE_XDR_NFSCOOKIE
    508 bool_t
    509 xdr_nfscookie(XDR *xdrs, nfscookie objp)
    510 {
    511   if (amuDebug(D_XDRTRACE))
    512     plog(XLOG_DEBUG, "xdr_nfscookie:");
    513 
    514   if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
    515     return (FALSE);
    516   }
    517   return (TRUE);
    518 }
    519 #endif /* not HAVE_XDR_NFSCOOKIE */
    520 
    521 
    522 #ifndef HAVE_XDR_NFSPATH
    523 bool_t
    524 xdr_nfspath(XDR *xdrs, nfspath *objp)
    525 {
    526   if (amuDebug(D_XDRTRACE))
    527     plog(XLOG_DEBUG, "xdr_nfspath:");
    528 
    529   if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
    530     return (FALSE);
    531   }
    532   return (TRUE);
    533 }
    534 #endif /* not HAVE_XDR_NFSPATH */
    535 
    536 
    537 #ifndef HAVE_XDR_NFSSTAT
    538 bool_t
    539 xdr_nfsstat(XDR *xdrs, nfsstat *objp)
    540 {
    541   enum_t local_obj = *objp;
    542 
    543   if (amuDebug(D_XDRTRACE))
    544     plog(XLOG_DEBUG, "xdr_nfsstat:");
    545 
    546   if (!xdr_enum(xdrs, &local_obj)) {
    547     return (FALSE);
    548   }
    549   return (TRUE);
    550 }
    551 #endif /* not HAVE_XDR_NFSSTAT */
    552 
    553 
    554 #ifndef HAVE_XDR_NFSTIME
    555 bool_t
    556 xdr_nfstime(XDR *xdrs, nfstime *objp)
    557 {
    558   if (amuDebug(D_XDRTRACE))
    559     plog(XLOG_DEBUG, "xdr_nfstime:");
    560 
    561   if (!xdr_u_int(xdrs, (u_int *) &objp->nt_seconds)) {
    562     return (FALSE);
    563   }
    564   if (!xdr_u_int(xdrs, (u_int *) &objp->nt_useconds)) {
    565     return (FALSE);
    566   }
    567   return (TRUE);
    568 }
    569 #endif /* not HAVE_XDR_NFSTIME */
    570 
    571 
    572 #ifndef HAVE_XDR_POINTER
    573 bool_t
    574 xdr_pointer(register XDR *xdrs, char **objpp, u_int obj_size, XDRPROC_T_TYPE xdr_obj)
    575 {
    576   if (amuDebug(D_XDRTRACE))
    577     plog(XLOG_DEBUG, "xdr_pointer:");
    578 
    579   bool_t more_data;
    580 
    581   more_data = (*objpp != NULL);
    582   if (!xdr_bool(xdrs, &more_data)) {
    583     return (FALSE);
    584   }
    585   if (!more_data) {
    586     *objpp = NULL;
    587     return (TRUE);
    588   }
    589 
    590   return (xdr_reference(xdrs, objpp, obj_size, xdr_obj));
    591 }
    592 #endif /* not HAVE_XDR_POINTER */
    593 
    594 
    595 #ifndef HAVE_XDR_READARGS
    596 bool_t
    597 xdr_readargs(XDR *xdrs, nfsreadargs *objp)
    598 {
    599   if (amuDebug(D_XDRTRACE))
    600     plog(XLOG_DEBUG, "xdr_readargs:");
    601 
    602   if (!xdr_nfs_fh(xdrs, &objp->ra_fhandle)) {
    603     return (FALSE);
    604   }
    605   if (!xdr_u_int(xdrs, &objp->ra_offset)) {
    606     return (FALSE);
    607   }
    608   if (!xdr_u_int(xdrs, &objp->ra_count)) {
    609     return (FALSE);
    610   }
    611   if (!xdr_u_int(xdrs, &objp->ra_totalcount)) {
    612     return (FALSE);
    613   }
    614   return (TRUE);
    615 }
    616 #endif /* not HAVE_XDR_READARGS */
    617 
    618 
    619 #ifndef HAVE_XDR_READDIRARGS
    620 bool_t
    621 xdr_readdirargs(XDR *xdrs, nfsreaddirargs *objp)
    622 {
    623   if (amuDebug(D_XDRTRACE))
    624     plog(XLOG_DEBUG, "xdr_readdirargs:");
    625 
    626   if (!xdr_nfs_fh(xdrs, &objp->rda_fhandle)) {
    627     return (FALSE);
    628   }
    629   if (!xdr_nfscookie(xdrs, objp->rda_cookie)) {
    630     return (FALSE);
    631   }
    632   if (!xdr_u_int(xdrs, &objp->rda_count)) {
    633     return (FALSE);
    634   }
    635   return (TRUE);
    636 }
    637 #endif /* not HAVE_XDR_READDIRARGS */
    638 
    639 
    640 #ifndef HAVE_XDR_READDIRRES
    641 bool_t
    642 xdr_readdirres(XDR *xdrs, nfsreaddirres *objp)
    643 {
    644   if (amuDebug(D_XDRTRACE))
    645     plog(XLOG_DEBUG, "xdr_readdirres:");
    646 
    647   if (!xdr_nfsstat(xdrs, &objp->rdr_status)) {
    648     return (FALSE);
    649   }
    650   switch (objp->rdr_status) {
    651   case NFS_OK:
    652     if (!xdr_dirlist(xdrs, &objp->rdr_u.rdr_reply_u)) {
    653       return (FALSE);
    654     }
    655     break;
    656   default:
    657     break;
    658   }
    659   return (TRUE);
    660 }
    661 #endif /* not HAVE_XDR_READDIRRES */
    662 
    663 
    664 #ifndef HAVE_XDR_READLINKRES
    665 bool_t
    666 xdr_readlinkres(XDR *xdrs, nfsreadlinkres *objp)
    667 {
    668   if (amuDebug(D_XDRTRACE))
    669     plog(XLOG_DEBUG, "xdr_readlinkres:");
    670 
    671   if (!xdr_nfsstat(xdrs, &objp->rlr_status)) {
    672     return (FALSE);
    673   }
    674   switch (objp->rlr_status) {
    675   case NFS_OK:
    676     if (!xdr_nfspath(xdrs, &objp->rlr_u.rlr_data_u)) {
    677       return (FALSE);
    678     }
    679     break;
    680   default:
    681     break;
    682   }
    683   return (TRUE);
    684 }
    685 #endif /* not HAVE_XDR_READLINKRES */
    686 
    687 
    688 #ifndef HAVE_XDR_READOKRES
    689 bool_t
    690 xdr_readokres(XDR *xdrs, nfsreadokres *objp)
    691 {
    692   if (amuDebug(D_XDRTRACE))
    693     plog(XLOG_DEBUG, "xdr_readokres:");
    694 
    695   if (!xdr_fattr(xdrs, &objp->raok_attributes)) {
    696     return (FALSE);
    697   }
    698   if (!xdr_bytes(xdrs,
    699 		 (char **) & objp->raok_u.raok_val_u,
    700 		 (u_int *) & objp->raok_u.raok_len_u,
    701 		 NFS_MAXDATA)) {
    702     return (FALSE);
    703   }
    704   return (TRUE);
    705 }
    706 #endif /* not HAVE_XDR_READOKRES */
    707 
    708 
    709 #ifndef HAVE_XDR_READRES
    710 bool_t
    711 xdr_readres(XDR *xdrs, nfsreadres *objp)
    712 {
    713   if (amuDebug(D_XDRTRACE))
    714     plog(XLOG_DEBUG, "xdr_readres:");
    715 
    716   if (!xdr_nfsstat(xdrs, &objp->rr_status)) {
    717     return (FALSE);
    718   }
    719   switch (objp->rr_status) {
    720   case NFS_OK:
    721     if (!xdr_readokres(xdrs, &objp->rr_u.rr_reply_u)) {
    722       return (FALSE);
    723     }
    724     break;
    725   default:
    726     break;
    727   }
    728   return (TRUE);
    729 }
    730 #endif /* not HAVE_XDR_READRES */
    731 
    732 
    733 #ifndef HAVE_XDR_RENAMEARGS
    734 bool_t
    735 xdr_renameargs(XDR *xdrs, nfsrenameargs *objp)
    736 {
    737   if (amuDebug(D_XDRTRACE))
    738     plog(XLOG_DEBUG, "xdr_renameargs:");
    739 
    740   if (!xdr_diropargs(xdrs, &objp->rna_from)) {
    741     return (FALSE);
    742   }
    743   if (!xdr_diropargs(xdrs, &objp->rna_to)) {
    744     return (FALSE);
    745   }
    746   return (TRUE);
    747 }
    748 #endif /* not HAVE_XDR_RENAMEARGS */
    749 
    750 
    751 #ifndef HAVE_XDR_SATTR
    752 bool_t
    753 xdr_sattr(XDR *xdrs, nfssattr *objp)
    754 {
    755   if (amuDebug(D_XDRTRACE))
    756     plog(XLOG_DEBUG, "xdr_sattr:");
    757 
    758   if (!xdr_u_int(xdrs, &objp->sa_mode)) {
    759     return (FALSE);
    760   }
    761   if (!xdr_u_int(xdrs, &objp->sa_uid)) {
    762     return (FALSE);
    763   }
    764   if (!xdr_u_int(xdrs, &objp->sa_gid)) {
    765     return (FALSE);
    766   }
    767   if (!xdr_u_int(xdrs, &objp->sa_size)) {
    768     return (FALSE);
    769   }
    770   if (!xdr_nfstime(xdrs, &objp->sa_atime)) {
    771     return (FALSE);
    772   }
    773   if (!xdr_nfstime(xdrs, &objp->sa_mtime)) {
    774     return (FALSE);
    775   }
    776   return (TRUE);
    777 }
    778 #endif /* not HAVE_XDR_SATTR */
    779 
    780 
    781 #ifndef HAVE_XDR_SATTRARGS
    782 bool_t
    783 xdr_sattrargs(XDR *xdrs, nfssattrargs *objp)
    784 {
    785   if (amuDebug(D_XDRTRACE))
    786     plog(XLOG_DEBUG, "xdr_sattrargs:");
    787 
    788   if (!xdr_nfs_fh(xdrs, &objp->sag_fhandle)) {
    789     return (FALSE);
    790   }
    791   if (!xdr_sattr(xdrs, &objp->sag_attributes)) {
    792     return (FALSE);
    793   }
    794   return (TRUE);
    795 }
    796 #endif /* not HAVE_XDR_SATTRARGS */
    797 
    798 
    799 #ifndef HAVE_XDR_STATFSOKRES
    800 bool_t
    801 xdr_statfsokres(XDR *xdrs, nfsstatfsokres *objp)
    802 {
    803   if (amuDebug(D_XDRTRACE))
    804     plog(XLOG_DEBUG, "xdr_statfsokres:");
    805 
    806   if (!xdr_u_int(xdrs, &objp->sfrok_tsize)) {
    807     return (FALSE);
    808   }
    809   if (!xdr_u_int(xdrs, &objp->sfrok_bsize)) {
    810     return (FALSE);
    811   }
    812   if (!xdr_u_int(xdrs, &objp->sfrok_blocks)) {
    813     return (FALSE);
    814   }
    815   if (!xdr_u_int(xdrs, &objp->sfrok_bfree)) {
    816     return (FALSE);
    817   }
    818   if (!xdr_u_int(xdrs, &objp->sfrok_bavail)) {
    819     return (FALSE);
    820   }
    821   return (TRUE);
    822 }
    823 #endif /* not HAVE_XDR_STATFSOKRES */
    824 
    825 
    826 #ifndef HAVE_XDR_STATFSRES
    827 bool_t
    828 xdr_statfsres(XDR *xdrs, nfsstatfsres *objp)
    829 {
    830   if (amuDebug(D_XDRTRACE))
    831     plog(XLOG_DEBUG, "xdr_statfsres:");
    832 
    833   if (!xdr_nfsstat(xdrs, &objp->sfr_status)) {
    834     return (FALSE);
    835   }
    836   switch (objp->sfr_status) {
    837   case NFS_OK:
    838     if (!xdr_statfsokres(xdrs, &objp->sfr_u.sfr_reply_u)) {
    839       return (FALSE);
    840     }
    841     break;
    842   default:
    843     break;
    844   }
    845   return (TRUE);
    846 }
    847 #endif /* not HAVE_XDR_STATFSRES */
    848 
    849 
    850 #ifndef HAVE_XDR_SYMLINKARGS
    851 bool_t
    852 xdr_symlinkargs(XDR *xdrs, nfssymlinkargs *objp)
    853 {
    854   if (amuDebug(D_XDRTRACE))
    855     plog(XLOG_DEBUG, "xdr_symlinkargs:");
    856 
    857   if (!xdr_diropargs(xdrs, &objp->sla_from)) {
    858     return (FALSE);
    859   }
    860   if (!xdr_nfspath(xdrs, &objp->sla_to)) {
    861     return (FALSE);
    862   }
    863   if (!xdr_sattr(xdrs, &objp->sla_attributes)) {
    864     return (FALSE);
    865   }
    866   return (TRUE);
    867 }
    868 #endif /* not HAVE_XDR_SYMLINKARGS */
    869 
    870 
    871 #ifndef HAVE_XDR_WRITEARGS
    872 bool_t
    873 xdr_writeargs(XDR *xdrs, nfswriteargs *objp)
    874 {
    875   if (amuDebug(D_XDRTRACE))
    876     plog(XLOG_DEBUG, "xdr_writeargs:");
    877 
    878   if (!xdr_nfs_fh(xdrs, &objp->wra_fhandle)) {
    879     return (FALSE);
    880   }
    881   if (!xdr_u_int(xdrs, &objp->wra_beginoffset)) {
    882     return (FALSE);
    883   }
    884   if (!xdr_u_int(xdrs, &objp->wra_offset)) {
    885     return (FALSE);
    886   }
    887   if (!xdr_u_int(xdrs, &objp->wra_totalcount)) {
    888     return (FALSE);
    889   }
    890   if (!xdr_bytes(xdrs,
    891 		 (char **) & objp->wra_u.wra_val_u,
    892 		 (u_int *) & objp->wra_u.wra_len_u,
    893 		 NFS_MAXDATA)) {
    894     return (FALSE);
    895   }
    896   return (TRUE);
    897 }
    898 #endif /* not HAVE_XDR_WRITEARGS */
    899 
    900 
    901 /*
    902  * NFS V3 XDR FUNCTIONS:
    903  */
    904 #ifdef HAVE_FS_NFS3
    905 bool_t
    906 xdr_am_fhandle3(XDR *xdrs, am_fhandle3 *objp)
    907 {
    908   if (amuDebug(D_XDRTRACE))
    909     plog(XLOG_DEBUG, "xdr_am_fhandle3:");
    910 
    911   if (!xdr_bytes(xdrs,
    912 		 (char **) &objp->fhandle3_val,
    913 		 (u_int *) &objp->fhandle3_len,
    914 		 AM_FHSIZE3))
    915     return (FALSE);
    916   return (TRUE);
    917 }
    918 
    919 
    920 bool_t
    921 xdr_am_mountstat3(XDR *xdrs, am_mountstat3 *objp)
    922 {
    923   enum_t local_obj = *objp;
    924 
    925   if (amuDebug(D_XDRTRACE))
    926     plog(XLOG_DEBUG, "xdr_am_mountstat3:");
    927 
    928   if (!xdr_enum(xdrs, &local_obj))
    929     return (FALSE);
    930   return (TRUE);
    931 }
    932 
    933 
    934 bool_t
    935 xdr_am_mountres3_ok(XDR *xdrs, am_mountres3_ok *objp)
    936 {
    937   if (amuDebug(D_XDRTRACE))
    938     plog(XLOG_DEBUG, "xdr_am_mountres3_ok:");
    939 
    940   if (!xdr_am_fhandle3(xdrs, &objp->fhandle))
    941     return (FALSE);
    942   if (!xdr_array(xdrs,
    943 		 (char **) ((voidp) &objp->auth_flavors.auth_flavors_val),
    944 		 (u_int *) &objp->auth_flavors.auth_flavors_len,
    945 		 ~0,
    946 		 sizeof(int),
    947 		 (XDRPROC_T_TYPE) xdr_int))
    948     return (FALSE);
    949   return (TRUE);
    950 }
    951 
    952 bool_t
    953 xdr_am_mountres3(XDR *xdrs, am_mountres3 *objp)
    954 {
    955   if (amuDebug(D_XDRTRACE))
    956     plog(XLOG_DEBUG, "xdr_am_mountres3:");
    957 
    958   if (!xdr_am_mountstat3(xdrs, &objp->fhs_status))
    959     return (FALSE);
    960 
    961   if (objp->fhs_status == AM_MNT3_OK) {
    962     if (!xdr_am_mountres3_ok(xdrs, &objp->mountres3_u.mountinfo))
    963       return (FALSE);
    964   }
    965   return (TRUE);
    966 }
    967 
    968 bool_t
    969 xdr_am_cookieverf3(XDR *xdrs, am_cookieverf3 objp)
    970 {
    971   if (amuDebug(D_XDRTRACE))
    972     plog(XLOG_DEBUG, "xdr_am_cookieverf3:");
    973 
    974   if (!xdr_opaque(xdrs, objp, AM_NFS3_COOKIEVERFSIZE))
    975     return FALSE;
    976   return TRUE;
    977 }
    978 
    979 /*
    980  * Not ideal, xdr_u_int64_t() is not defined in Linux glibc RPC
    981  * but xdr_u_quad_t() is. But in libtirpc xdr_u_quad_t() is not
    982  * defined and xdr_u_int64_t() is. So xdr_u_int64_t() is probably
    983  * an expected standard xdr function so, if it isn't defined use
    984  * an internal xdr_u_int64_t() that uses xdr_u_quad_t().
    985  */
    986 #ifndef HAVE_XDR_U_INT64_T
    987 #define xdr_u_int64_t(xdrs, objp) xdr_u_quad_t(xdrs, objp)
    988 #endif /* HAVE_XDR_U_INT64_T */
    989 
    990 bool_t
    991 xdr_uint64(XDR *xdrs, uint64 *objp)
    992 {
    993   if (amuDebug(D_XDRTRACE))
    994     plog(XLOG_DEBUG, "xdr_uint64:");
    995 
    996   if (!xdr_u_int64_t(xdrs, objp))
    997     return FALSE;
    998   return TRUE;
    999 }
   1000 
   1001 bool_t
   1002 xdr_am_cookie3(XDR *xdrs, am_cookie3 *objp)
   1003 {
   1004   if (amuDebug(D_XDRTRACE))
   1005     plog(XLOG_DEBUG, "xdr_am_cookie3:");
   1006 
   1007   if (!xdr_uint64(xdrs, objp))
   1008     return FALSE;
   1009   return TRUE;
   1010 }
   1011 
   1012 bool_t
   1013 xdr_am_nfs_fh3(XDR *xdrs, am_nfs_fh3 *objp)
   1014 {
   1015   if (amuDebug(D_XDRTRACE))
   1016     plog(XLOG_DEBUG, "xdr_am_nfs_fh3:");
   1017 
   1018   if (!xdr_u_int(xdrs, &objp->am_fh3_length))
   1019     return (FALSE);
   1020   if (objp->am_fh3_length > AM_FHSIZE3)
   1021     return (FALSE);
   1022   if (!xdr_opaque(xdrs, objp->am_fh3_data, objp->am_fh3_length))
   1023     return (FALSE);
   1024   return (TRUE);
   1025 }
   1026 
   1027 bool_t
   1028 xdr_am_nfsstat3(XDR *xdrs, am_nfsstat3 *objp)
   1029 {
   1030   if (amuDebug(D_XDRTRACE))
   1031     plog(XLOG_DEBUG, "xdr_am_nfsstat3:");
   1032 
   1033   if (!xdr_enum(xdrs, (enum_t *)objp))
   1034     return (FALSE);
   1035   return (TRUE);
   1036 }
   1037 
   1038 bool_t
   1039 xdr_am_diropargs3(XDR *xdrs, am_diropargs3 *objp)
   1040 {
   1041   if (amuDebug(D_XDRTRACE))
   1042     plog(XLOG_DEBUG, "xdr_am_diropargs3:");
   1043 
   1044   if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
   1045     return (FALSE);
   1046   if (!xdr_am_filename3(xdrs, &objp->name))
   1047     return (FALSE);
   1048   return (TRUE);
   1049 }
   1050 
   1051 bool_t
   1052 xdr_am_filename3(XDR *xdrs, am_filename3 *objp)
   1053 {
   1054   if (amuDebug(D_XDRTRACE))
   1055     plog(XLOG_DEBUG, "xdr_am_filename3:");
   1056 
   1057   if (!xdr_string(xdrs, objp, ~0))
   1058     return (FALSE);
   1059   return (TRUE);
   1060 }
   1061 
   1062 bool_t
   1063 xdr_am_ftype3(XDR *xdrs, am_ftype3 *objp)
   1064 {
   1065   if (amuDebug(D_XDRTRACE))
   1066     plog(XLOG_DEBUG, "xdr_am_ftype3:");
   1067 
   1068   if (!xdr_enum(xdrs, (enum_t *) objp))
   1069     return FALSE;
   1070   return TRUE;
   1071 }
   1072 
   1073 bool_t
   1074 xdr_am_mode3(XDR *xdrs, am_mode3 *objp)
   1075 {
   1076   if (amuDebug(D_XDRTRACE))
   1077     plog(XLOG_DEBUG, "xdr_am_mode3:");
   1078 
   1079   if (!xdr_u_int(xdrs, objp))
   1080     return FALSE;
   1081   return TRUE;
   1082 }
   1083 
   1084 bool_t
   1085 xdr_am_uid3(XDR *xdrs, am_uid3 *objp)
   1086 {
   1087   if (amuDebug(D_XDRTRACE))
   1088     plog(XLOG_DEBUG, "xdr_am_uid3:");
   1089 
   1090   if (!xdr_u_int(xdrs, objp))
   1091     return FALSE;
   1092   return TRUE;
   1093 }
   1094 
   1095 bool_t
   1096 xdr_am_gid3(XDR *xdrs, am_gid3 *objp)
   1097 {
   1098   if (amuDebug(D_XDRTRACE))
   1099     plog(XLOG_DEBUG, "xdr_am_gid3:");
   1100 
   1101   if (!xdr_u_int(xdrs, objp))
   1102     return FALSE;
   1103   return TRUE;
   1104 }
   1105 
   1106 bool_t
   1107 xdr_am_size3(XDR *xdrs, am_size3 *objp)
   1108 {
   1109   if (amuDebug(D_XDRTRACE))
   1110     plog(XLOG_DEBUG, "xdr_am_size3:");
   1111 
   1112   if (!xdr_uint64(xdrs, objp))
   1113     return FALSE;
   1114   return TRUE;
   1115 }
   1116 
   1117 bool_t
   1118 xdr_am_fileid3(XDR *xdrs, am_fileid3 *objp)
   1119 {
   1120   if (amuDebug(D_XDRTRACE))
   1121     plog(XLOG_DEBUG, "xdr_am_fileid3:");
   1122 
   1123   if (!xdr_uint64(xdrs, objp))
   1124     return FALSE;
   1125   return TRUE;
   1126 }
   1127 
   1128 bool_t
   1129 xdr_am_specdata3(XDR *xdrs, am_specdata3 *objp)
   1130 {
   1131   if (amuDebug(D_XDRTRACE))
   1132     plog(XLOG_DEBUG, "xdr_am_specdata3:");
   1133 
   1134   if (!xdr_u_int(xdrs, &objp->specdata1))
   1135     return FALSE;
   1136   if (!xdr_u_int(xdrs, &objp->specdata2))
   1137     return FALSE;
   1138   return TRUE;
   1139 }
   1140 
   1141 bool_t
   1142 xdr_am_nfstime3(XDR *xdrs, am_nfstime3 *objp)
   1143 {
   1144   if (amuDebug(D_XDRTRACE))
   1145     plog(XLOG_DEBUG, "xdr_am_nfstime3:");
   1146 
   1147   if (!xdr_u_int(xdrs, &objp->seconds))
   1148     return FALSE;
   1149   if (!xdr_u_int(xdrs, &objp->nseconds))
   1150     return FALSE;
   1151   return TRUE;
   1152 }
   1153 
   1154 bool_t
   1155 xdr_am_fattr3(XDR *xdrs, am_fattr3 *objp)
   1156 {
   1157   if (amuDebug(D_XDRTRACE))
   1158     plog(XLOG_DEBUG, "xdr_am_fattr3:");
   1159 
   1160   if (!xdr_am_ftype3(xdrs, &objp->type))
   1161     return FALSE;
   1162   if (!xdr_am_mode3(xdrs, &objp->mode))
   1163     return FALSE;
   1164   if (!xdr_u_int(xdrs, &objp->nlink))
   1165     return FALSE;
   1166   if (!xdr_am_uid3(xdrs, &objp->uid))
   1167     return FALSE;
   1168   if (!xdr_am_gid3(xdrs, &objp->gid))
   1169     return FALSE;
   1170   if (!xdr_am_size3(xdrs, &objp->size))
   1171     return FALSE;
   1172   if (!xdr_am_size3(xdrs, &objp->used))
   1173     return FALSE;
   1174   if (!xdr_am_specdata3(xdrs, &objp->rdev))
   1175     return FALSE;
   1176   if (!xdr_uint64(xdrs, &objp->fsid))
   1177     return FALSE;
   1178   if (!xdr_am_fileid3(xdrs, &objp->fileid))
   1179     return FALSE;
   1180   if (!xdr_am_nfstime3(xdrs, &objp->atime))
   1181     return FALSE;
   1182   if (!xdr_am_nfstime3(xdrs, &objp->mtime))
   1183     return FALSE;
   1184   if (!xdr_am_nfstime3(xdrs, &objp->ctime))
   1185     return FALSE;
   1186   return TRUE;
   1187 }
   1188 
   1189 bool_t
   1190 xdr_am_post_op_attr(XDR *xdrs, am_post_op_attr *objp)
   1191 {
   1192   if (amuDebug(D_XDRTRACE))
   1193     plog(XLOG_DEBUG, "xdr_am_post_op_attr:");
   1194 
   1195   if (!xdr_bool(xdrs, &objp->attributes_follow))
   1196     return FALSE;
   1197   switch (objp->attributes_follow) {
   1198   case TRUE:
   1199     if (!xdr_am_fattr3(xdrs, &objp->am_post_op_attr_u.attributes))
   1200       return FALSE;
   1201     break;
   1202   case FALSE:
   1203     break;
   1204   default:
   1205     return FALSE;
   1206   }
   1207   return TRUE;
   1208 }
   1209 
   1210 bool_t
   1211 xdr_am_stable_how(XDR *xdrs, am_stable_how *objp)
   1212 {
   1213   if (amuDebug(D_XDRTRACE))
   1214     plog(XLOG_DEBUG, "xdr_am_stable_how:");
   1215 
   1216   if (!xdr_enum(xdrs, (enum_t *) objp))
   1217     return FALSE;
   1218   return TRUE;
   1219 }
   1220 
   1221 bool_t
   1222 xdr_am_offset3(XDR *xdrs, am_offset3 *objp)
   1223 {
   1224   if (amuDebug(D_XDRTRACE))
   1225     plog(XLOG_DEBUG, "xdr_am_offset3:");
   1226 
   1227   if (!xdr_uint64(xdrs, objp))
   1228     return FALSE;
   1229   return TRUE;
   1230 }
   1231 
   1232 bool_t
   1233 xdr_am_count3(XDR *xdrs, am_count3 *objp)
   1234 {
   1235   if (amuDebug(D_XDRTRACE))
   1236     plog(XLOG_DEBUG, "xdr_am_count3:");
   1237 
   1238   if (!xdr_u_int(xdrs, objp))
   1239     return FALSE;
   1240   return TRUE;
   1241 }
   1242 
   1243 bool_t
   1244 xdr_am_wcc_attr(XDR *xdrs, am_wcc_attr *objp)
   1245 {
   1246   if (amuDebug(D_XDRTRACE))
   1247     plog(XLOG_DEBUG, "xdr_am_wcc_attr:");
   1248 
   1249   if (!xdr_am_size3(xdrs, &objp->size))
   1250     return FALSE;
   1251   if (!xdr_am_nfstime3(xdrs, &objp->mtime))
   1252     return FALSE;
   1253   if (!xdr_am_nfstime3(xdrs, &objp->ctime))
   1254     return FALSE;
   1255   return TRUE;
   1256 }
   1257 
   1258 bool_t
   1259 xdr_am_pre_op_attr(XDR *xdrs, am_pre_op_attr *objp)
   1260 {
   1261   if (amuDebug(D_XDRTRACE))
   1262     plog(XLOG_DEBUG, ":xdr_am_pre_op_attr");
   1263 
   1264   if (!xdr_bool(xdrs, &objp->attributes_follow))
   1265     return FALSE;
   1266   switch (objp->attributes_follow) {
   1267   case TRUE:
   1268     if (!xdr_am_wcc_attr(xdrs, &objp->am_pre_op_attr_u.attributes))
   1269       return FALSE;
   1270     break;
   1271   case FALSE:
   1272     break;
   1273   default:
   1274     return FALSE;
   1275   }
   1276   return TRUE;
   1277 }
   1278 
   1279 bool_t
   1280 xdr_am_wcc_data(XDR *xdrs, am_wcc_data *objp)
   1281 {
   1282   if (amuDebug(D_XDRTRACE))
   1283     plog(XLOG_DEBUG, "xdr_am_wcc_data:");
   1284 
   1285   if (!xdr_am_pre_op_attr(xdrs, &objp->before))
   1286     return FALSE;
   1287   if (!xdr_am_post_op_attr(xdrs, &objp->after))
   1288     return FALSE;
   1289   return TRUE;
   1290 }
   1291 
   1292 bool_t
   1293 xdr_am_WRITE3args(XDR *xdrs, am_WRITE3args *objp)
   1294 {
   1295   if (amuDebug(D_XDRTRACE))
   1296     plog(XLOG_DEBUG, "xdr_am_WRITE3args:");
   1297 
   1298   if (!xdr_am_nfs_fh3(xdrs, &objp->file))
   1299     return FALSE;
   1300   if (!xdr_am_offset3(xdrs, &objp->offset))
   1301     return FALSE;
   1302   if (!xdr_am_count3(xdrs, &objp->count))
   1303     return FALSE;
   1304   if (!xdr_am_stable_how(xdrs, &objp->stable))
   1305     return FALSE;
   1306   if (!xdr_bytes(xdrs, (char **)&objp->data.data_val,
   1307                 (u_int *) &objp->data.data_len, ~0))
   1308     return FALSE;
   1309   return TRUE;
   1310 }
   1311 
   1312 bool_t
   1313 xdr_am_writeverf3(XDR *xdrs, am_writeverf3 objp)
   1314 {
   1315   if (amuDebug(D_XDRTRACE))
   1316     plog(XLOG_DEBUG, "xdr_am_writeverf3:");
   1317 
   1318   if (!xdr_opaque(xdrs, objp, AM_NFS3_WRITEVERFSIZE))
   1319     return FALSE;
   1320   return TRUE;
   1321 }
   1322 
   1323 bool_t
   1324 xdr_am_WRITE3resok(XDR *xdrs, am_WRITE3resok *objp)
   1325 {
   1326   if (amuDebug(D_XDRTRACE))
   1327     plog(XLOG_DEBUG, "xdr_am_WRITE3resok:");
   1328 
   1329   if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
   1330     return FALSE;
   1331   if (!xdr_am_count3(xdrs, &objp->count))
   1332     return FALSE;
   1333   if (!xdr_am_stable_how(xdrs, &objp->committed))
   1334     return FALSE;
   1335   if (!xdr_am_writeverf3(xdrs, objp->verf))
   1336     return FALSE;
   1337   return TRUE;
   1338 }
   1339 
   1340 bool_t
   1341 xdr_am_WRITE3resfail(XDR *xdrs, am_WRITE3resfail *objp)
   1342 {
   1343   if (amuDebug(D_XDRTRACE))
   1344     plog(XLOG_DEBUG, "xdr_am_WRITE3resfail:");
   1345 
   1346   if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
   1347     return FALSE;
   1348   return TRUE;
   1349 }
   1350 
   1351 bool_t
   1352 xdr_am_WRITE3res(XDR *xdrs, am_WRITE3res *objp)
   1353 {
   1354   if (amuDebug(D_XDRTRACE))
   1355     plog(XLOG_DEBUG, "xdr_am_WRITE3res:");
   1356 
   1357   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1358     return FALSE;
   1359   switch (objp->status) {
   1360   case AM_NFS3_OK:
   1361     if (!xdr_am_WRITE3resok(xdrs, &objp->res_u.ok))
   1362       return FALSE;
   1363     break;
   1364   default:
   1365     if (!xdr_am_WRITE3resfail(xdrs, &objp->res_u.fail))
   1366       return FALSE;
   1367     break;
   1368   }
   1369   return TRUE;
   1370 }
   1371 
   1372 bool_t
   1373 xdr_am_LOOKUP3args(XDR *xdrs, am_LOOKUP3args *objp)
   1374 {
   1375   if (amuDebug(D_XDRTRACE))
   1376     plog(XLOG_DEBUG, "xdr_am_LOOKUP3args:");
   1377 
   1378   if (!xdr_am_diropargs3(xdrs, &objp->what))
   1379     return (FALSE);
   1380   return (TRUE);
   1381 }
   1382 
   1383 bool_t
   1384 xdr_am_LOOKUP3res(XDR *xdrs, am_LOOKUP3res *objp)
   1385 {
   1386   if (amuDebug(D_XDRTRACE))
   1387     plog(XLOG_DEBUG, "xdr_am_LOOKUP3res:");
   1388 
   1389   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1390     return (FALSE);
   1391   switch (objp->status) {
   1392   case AM_NFS3_OK:
   1393     if (!xdr_am_LOOKUP3resok(xdrs, &objp->res_u.ok))
   1394       return (FALSE);
   1395     break;
   1396   default:
   1397     if (!xdr_am_LOOKUP3resfail(xdrs, &objp->res_u.fail))
   1398       return (FALSE);
   1399     break;
   1400   }
   1401   return (TRUE);
   1402 }
   1403 
   1404 bool_t
   1405 xdr_am_LOOKUP3resfail(XDR *xdrs, am_LOOKUP3resfail *objp)
   1406 {
   1407   if (amuDebug(D_XDRTRACE))
   1408     plog(XLOG_DEBUG, "xdr_am_LOOKUP3resfail:");
   1409 
   1410   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   1411     return (FALSE);
   1412   return (TRUE);
   1413 }
   1414 
   1415 bool_t
   1416 xdr_am_LOOKUP3resok(XDR *xdrs, am_LOOKUP3resok *objp)
   1417 {
   1418   if (amuDebug(D_XDRTRACE))
   1419     plog(XLOG_DEBUG, "xdr_am_LOOKUP3resok:");
   1420 
   1421   if (!xdr_am_nfs_fh3(xdrs, &objp->object))
   1422     return (FALSE);
   1423   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   1424     return (FALSE);
   1425   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   1426     return (FALSE);
   1427   return (TRUE);
   1428 }
   1429 
   1430 bool_t
   1431 xdr_am_COMMIT3args(XDR *xdrs, am_COMMIT3args *objp)
   1432 {
   1433   if (amuDebug(D_XDRTRACE))
   1434     plog(XLOG_DEBUG, "xdr_am_COMMIT3args:");
   1435 
   1436   if (!xdr_am_nfs_fh3(xdrs, &objp->file))
   1437     return FALSE;
   1438   if (!xdr_am_offset3(xdrs, &objp->offset))
   1439     return FALSE;
   1440   if (!xdr_am_count3(xdrs, &objp->count))
   1441     return FALSE;
   1442   return TRUE;
   1443 }
   1444 
   1445 bool_t
   1446 xdr_am_COMMIT3resok(XDR *xdrs, am_COMMIT3resok *objp)
   1447 {
   1448   if (amuDebug(D_XDRTRACE))
   1449     plog(XLOG_DEBUG, "xdr_am_COMMIT3resok:");
   1450 
   1451   if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
   1452     return FALSE;
   1453   if (!xdr_am_writeverf3(xdrs, objp->verf))
   1454     return FALSE;
   1455   return TRUE;
   1456 }
   1457 
   1458 bool_t
   1459 xdr_am_COMMIT3resfail(XDR *xdrs, am_COMMIT3resfail *objp)
   1460 {
   1461   if (amuDebug(D_XDRTRACE))
   1462     plog(XLOG_DEBUG, "xdr_am_COMMIT3resfail:");
   1463 
   1464   if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
   1465     return FALSE;
   1466   return TRUE;
   1467 }
   1468 
   1469 bool_t
   1470 xdr_am_COMMIT3res(XDR *xdrs, am_COMMIT3res *objp)
   1471 {
   1472   if (amuDebug(D_XDRTRACE))
   1473     plog(XLOG_DEBUG, "xdr_am_COMMIT3res:");
   1474 
   1475   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1476     return FALSE;
   1477   switch (objp->status) {
   1478   case AM_NFS3_OK:
   1479     if (!xdr_am_COMMIT3resok(xdrs, &objp->res_u.ok))
   1480       return FALSE;
   1481     break;
   1482   default:
   1483     if (!xdr_am_COMMIT3resfail(xdrs, &objp->res_u.fail))
   1484       return FALSE;
   1485     break;
   1486   }
   1487   return TRUE;
   1488 }
   1489 
   1490 bool_t
   1491 xdr_am_ACCESS3args(XDR *xdrs, am_ACCESS3args *objp)
   1492 {
   1493   if (amuDebug(D_XDRTRACE))
   1494     plog(XLOG_DEBUG, "xdr_am_ACCESS3args:");
   1495 
   1496   if (!xdr_am_nfs_fh3(xdrs, &objp->object))
   1497     return FALSE;
   1498   if (!xdr_u_int(xdrs, &objp->access))
   1499     return FALSE;
   1500   return TRUE;
   1501 }
   1502 
   1503 bool_t
   1504 xdr_am_ACCESS3resok(XDR *xdrs, am_ACCESS3resok *objp)
   1505 {
   1506   if (amuDebug(D_XDRTRACE))
   1507     plog(XLOG_DEBUG, "xdr_am_ACCESS3resok:");
   1508 
   1509   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   1510     return FALSE;
   1511   if (!xdr_u_int(xdrs, &objp->access))
   1512     return FALSE;
   1513   return TRUE;
   1514 }
   1515 
   1516 bool_t
   1517 xdr_am_ACCESS3resfail(XDR *xdrs, am_ACCESS3resfail *objp)
   1518 {
   1519   if (amuDebug(D_XDRTRACE))
   1520     plog(XLOG_DEBUG, "xdr_am_ACCESS3resfail:");
   1521 
   1522   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   1523     return FALSE;
   1524   return TRUE;
   1525 }
   1526 
   1527 bool_t
   1528 xdr_am_ACCESS3res(XDR *xdrs, am_ACCESS3res *objp)
   1529 {
   1530   if (amuDebug(D_XDRTRACE))
   1531     plog(XLOG_DEBUG, "xdr_am_ACCESS3res:");
   1532 
   1533   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1534     return FALSE;
   1535   switch (objp->status) {
   1536   case AM_NFS3_OK:
   1537     if (!xdr_am_ACCESS3resok(xdrs, &objp->res_u.ok))
   1538       return FALSE;
   1539     break;
   1540   default:
   1541     if (!xdr_am_ACCESS3resfail(xdrs, &objp->res_u.fail))
   1542       return FALSE;
   1543     break;
   1544   }
   1545   return TRUE;
   1546 }
   1547 
   1548 bool_t
   1549 xdr_am_GETATTR3args(XDR *xdrs, am_GETATTR3args *objp)
   1550 {
   1551   if (amuDebug(D_XDRTRACE))
   1552     plog(XLOG_DEBUG, "xdr_am_GETATTR3args:");
   1553 
   1554   if (!xdr_am_nfs_fh3(xdrs, &objp->object))
   1555     return FALSE;
   1556   return TRUE;
   1557 }
   1558 
   1559 bool_t
   1560 xdr_am_GETATTR3resok(XDR *xdrs, am_GETATTR3resok *objp)
   1561 {
   1562   if (amuDebug(D_XDRTRACE))
   1563     plog(XLOG_DEBUG, "xdr_am_GETATTR3resok:");
   1564 
   1565   if (!xdr_am_fattr3(xdrs, &objp->obj_attributes))
   1566     return FALSE;
   1567   return TRUE;
   1568 }
   1569 
   1570 bool_t
   1571 xdr_am_GETATTR3res(XDR *xdrs, am_GETATTR3res *objp)
   1572 {
   1573   if (amuDebug(D_XDRTRACE))
   1574     plog(XLOG_DEBUG, "xdr_am_GETATTR3res:");
   1575 
   1576   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1577     return FALSE;
   1578   switch (objp->status) {
   1579   case AM_NFS3_OK:
   1580     if (!xdr_am_GETATTR3resok(xdrs, &objp->res_u.ok))
   1581       return FALSE;
   1582     break;
   1583   default:
   1584     break;
   1585   }
   1586   return TRUE;
   1587 }
   1588 
   1589 bool_t
   1590 xdr_am_time_how(XDR *xdrs, am_time_how *objp)
   1591 {
   1592   if (amuDebug(D_XDRTRACE))
   1593     plog(XLOG_DEBUG, "xdr_am_time_how:");
   1594 
   1595   if (!xdr_enum(xdrs, (enum_t *) objp))
   1596     return FALSE;
   1597   return TRUE;
   1598 }
   1599 
   1600 bool_t
   1601 xdr_am_set_mode3(XDR *xdrs, am_set_mode3 *objp)
   1602 {
   1603   if (amuDebug(D_XDRTRACE))
   1604     plog(XLOG_DEBUG, "xdr_am_set_mode3:");
   1605 
   1606   if (!xdr_bool(xdrs, &objp->set_it))
   1607     return FALSE;
   1608   switch (objp->set_it) {
   1609   case TRUE:
   1610     if (!xdr_am_mode3(xdrs, &objp->am_set_mode3_u.mode))
   1611       return FALSE;
   1612     break;
   1613   default:
   1614     break;
   1615   }
   1616   return TRUE;
   1617 }
   1618 
   1619 bool_t
   1620 xdr_am_set_uid3(XDR *xdrs, am_set_uid3 *objp)
   1621 {
   1622   if (amuDebug(D_XDRTRACE))
   1623     plog(XLOG_DEBUG, "xdr_am_set_uid3:");
   1624 
   1625   if (!xdr_bool(xdrs, &objp->set_it))
   1626     return FALSE;
   1627   switch (objp->set_it) {
   1628   case TRUE:
   1629     if (!xdr_am_uid3(xdrs, &objp->am_set_uid3_u.uid))
   1630       return FALSE;
   1631     break;
   1632   default:
   1633     break;
   1634   }
   1635   return TRUE;
   1636 }
   1637 
   1638 bool_t
   1639 xdr_am_set_gid3(XDR *xdrs, am_set_gid3 *objp)
   1640 {
   1641   if (amuDebug(D_XDRTRACE))
   1642     plog(XLOG_DEBUG, "xdr_am_set_gid3:");
   1643 
   1644   if (!xdr_bool(xdrs, &objp->set_it))
   1645     return FALSE;
   1646   switch (objp->set_it) {
   1647   case TRUE:
   1648     if (!xdr_am_gid3(xdrs, &objp->am_set_gid3_u.gid))
   1649       return FALSE;
   1650     break;
   1651   default:
   1652     break;
   1653   }
   1654   return TRUE;
   1655 }
   1656 
   1657 bool_t
   1658 xdr_am_set_size3(XDR *xdrs, am_set_size3 *objp)
   1659 {
   1660   if (amuDebug(D_XDRTRACE))
   1661     plog(XLOG_DEBUG, "xdr_am_set_size3:");
   1662 
   1663   if (!xdr_bool(xdrs, &objp->set_it))
   1664     return FALSE;
   1665   switch (objp->set_it) {
   1666   case TRUE:
   1667     if (!xdr_am_size3(xdrs, &objp->am_set_size3_u.size))
   1668       return FALSE;
   1669     break;
   1670   default:
   1671     break;
   1672   }
   1673   return TRUE;
   1674 }
   1675 
   1676 bool_t
   1677 xdr_am_set_atime(XDR *xdrs, am_set_atime *objp)
   1678 {
   1679   if (amuDebug(D_XDRTRACE))
   1680     plog(XLOG_DEBUG, "xdr_am_set_atime:");
   1681 
   1682   if (!xdr_am_time_how(xdrs, &objp->set_it))
   1683     return FALSE;
   1684   switch (objp->set_it) {
   1685   case AM_SET_TO_CLIENT_TIME:
   1686     if (!xdr_am_nfstime3(xdrs, &objp->am_set_atime_u.atime))
   1687       return FALSE;
   1688     break;
   1689   default:
   1690     break;
   1691   }
   1692   return TRUE;
   1693 }
   1694 
   1695 bool_t
   1696 xdr_am_set_mtime(XDR *xdrs, am_set_mtime *objp)
   1697 {
   1698   if (amuDebug(D_XDRTRACE))
   1699     plog(XLOG_DEBUG, "xdr_am_set_mtime:");
   1700 
   1701   if (!xdr_am_time_how(xdrs, &objp->set_it))
   1702     return FALSE;
   1703   switch (objp->set_it) {
   1704   case AM_SET_TO_CLIENT_TIME:
   1705     if (!xdr_am_nfstime3(xdrs, &objp->am_set_mtime_u.mtime))
   1706       return FALSE;
   1707     break;
   1708   default:
   1709     break;
   1710   }
   1711   return TRUE;
   1712 }
   1713 
   1714 bool_t
   1715 xdr_am_sattr3(XDR *xdrs, am_sattr3 *objp)
   1716 {
   1717   if (amuDebug(D_XDRTRACE))
   1718     plog(XLOG_DEBUG, "xdr_am_sattr3:");
   1719 
   1720   if (!xdr_am_set_mode3(xdrs, &objp->mode))
   1721     return FALSE;
   1722   if (!xdr_am_set_uid3(xdrs, &objp->uid))
   1723     return FALSE;
   1724   if (!xdr_am_set_gid3(xdrs, &objp->gid))
   1725     return FALSE;
   1726   if (!xdr_am_set_size3(xdrs, &objp->size))
   1727      return FALSE;
   1728   if (!xdr_am_set_atime(xdrs, &objp->atime))
   1729     return FALSE;
   1730   if (!xdr_am_set_mtime(xdrs, &objp->mtime))
   1731     return FALSE;
   1732   return TRUE;
   1733 }
   1734 
   1735 bool_t
   1736 xdr_am_createmode3(XDR *xdrs, am_createmode3 *objp)
   1737 {
   1738   if (amuDebug(D_XDRTRACE))
   1739     plog(XLOG_DEBUG, "xdr_am_createmode3:");
   1740 
   1741   if (!xdr_enum(xdrs, (enum_t *) objp))
   1742     return FALSE;
   1743   return TRUE;
   1744 }
   1745 
   1746 bool_t
   1747 xdr_am_createverf3(XDR *xdrs, am_createverf3 objp)
   1748 {
   1749   if (amuDebug(D_XDRTRACE))
   1750     plog(XLOG_DEBUG, "xdr_am_createverf3:");
   1751 
   1752   if (!xdr_opaque(xdrs, objp, AM_NFS3_CREATEVERFSIZE))
   1753     return FALSE;
   1754   return TRUE;
   1755 }
   1756 
   1757 bool_t
   1758 xdr_am_createhow3(XDR *xdrs, am_createhow3 *objp)
   1759 {
   1760   if (amuDebug(D_XDRTRACE))
   1761     plog(XLOG_DEBUG, "xdr_am_createhow3:");
   1762 
   1763    if (!xdr_am_createmode3(xdrs, &objp->mode))
   1764      return FALSE;
   1765   switch (objp->mode) {
   1766   case AM_UNCHECKED:
   1767     if (!xdr_am_sattr3(xdrs, &objp->am_createhow3_u.obj_attributes))
   1768       return FALSE;
   1769     break;
   1770   case AM_GUARDED:
   1771     if (!xdr_am_sattr3(xdrs, &objp->am_createhow3_u.g_obj_attributes))
   1772       return FALSE;
   1773     break;
   1774   case AM_EXCLUSIVE:
   1775     if (!xdr_am_createverf3(xdrs, objp->am_createhow3_u.verf))
   1776       return FALSE;
   1777     break;
   1778   default:
   1779     return FALSE;
   1780   }
   1781   return TRUE;
   1782 }
   1783 
   1784 bool_t
   1785 xdr_am_CREATE3args(XDR *xdrs, am_CREATE3args *objp)
   1786 {
   1787   if (amuDebug(D_XDRTRACE))
   1788     plog(XLOG_DEBUG, "xdr_am_CREATE3args:");
   1789 
   1790   if (!xdr_am_diropargs3(xdrs, &objp->where))
   1791     return FALSE;
   1792   if (!xdr_am_createhow3(xdrs, &objp->how))
   1793     return FALSE;
   1794   return TRUE;
   1795 }
   1796 
   1797 bool_t
   1798 xdr_am_post_op_fh3(XDR *xdrs, am_post_op_fh3 *objp)
   1799 {
   1800   if (amuDebug(D_XDRTRACE))
   1801     plog(XLOG_DEBUG, "xdr_am_post_op_fh3:");
   1802 
   1803   if (!xdr_bool(xdrs, &objp->handle_follows))
   1804     return FALSE;
   1805   switch (objp->handle_follows) {
   1806   case TRUE:
   1807     if (!xdr_am_nfs_fh3(xdrs, &objp->am_post_op_fh3_u.handle))
   1808       return FALSE;
   1809     break;
   1810   case FALSE:
   1811     break;
   1812   default:
   1813     return FALSE;
   1814   }
   1815   return TRUE;
   1816 }
   1817 
   1818 bool_t
   1819 xdr_am_CREATE3resok(XDR *xdrs, am_CREATE3resok *objp)
   1820 {
   1821   if (amuDebug(D_XDRTRACE))
   1822     plog(XLOG_DEBUG, "xdr_am_CREATE3resok:");
   1823 
   1824   if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
   1825     return FALSE;
   1826   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   1827     return FALSE;
   1828   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   1829     return FALSE;
   1830   return TRUE;
   1831 }
   1832 
   1833 bool_t
   1834 xdr_am_CREATE3resfail(XDR *xdrs, am_CREATE3resfail *objp)
   1835 {
   1836   if (amuDebug(D_XDRTRACE))
   1837     plog(XLOG_DEBUG, "xdr_am_CREATE3resfail:");
   1838 
   1839   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   1840     return FALSE;
   1841   return TRUE;
   1842 }
   1843 
   1844 bool_t
   1845 xdr_am_CREATE3res(XDR *xdrs, am_CREATE3res *objp)
   1846 {
   1847   if (amuDebug(D_XDRTRACE))
   1848     plog(XLOG_DEBUG, "xdr_am_CREATE3res:");
   1849 
   1850   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1851     return FALSE;
   1852   switch (objp->status) {
   1853   case AM_NFS3_OK:
   1854     if (!xdr_am_CREATE3resok(xdrs, &objp->res_u.ok))
   1855       return FALSE;
   1856     break;
   1857   default:
   1858     if (!xdr_am_CREATE3resfail(xdrs, &objp->res_u.fail))
   1859       return FALSE;
   1860     break;
   1861   }
   1862   return TRUE;
   1863 }
   1864 
   1865 bool_t
   1866 xdr_am_REMOVE3args(XDR *xdrs, am_REMOVE3args *objp)
   1867 {
   1868   if (amuDebug(D_XDRTRACE))
   1869     plog(XLOG_DEBUG, "xdr_am_REMOVE3args:");
   1870 
   1871   if (!xdr_am_diropargs3(xdrs, &objp->object))
   1872     return FALSE;
   1873   return TRUE;
   1874 }
   1875 
   1876 bool_t
   1877 xdr_am_REMOVE3resok(XDR *xdrs, am_REMOVE3resok *objp)
   1878 {
   1879   if (amuDebug(D_XDRTRACE))
   1880     plog(XLOG_DEBUG, "xdr_am_REMOVE3resok:");
   1881 
   1882   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   1883     return FALSE;
   1884   return TRUE;
   1885 }
   1886 
   1887 bool_t
   1888 xdr_am_REMOVE3resfail(XDR *xdrs, am_REMOVE3resfail *objp)
   1889 {
   1890   if (amuDebug(D_XDRTRACE))
   1891     plog(XLOG_DEBUG, "xdr_am_REMOVE3resfail:");
   1892 
   1893   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   1894     return FALSE;
   1895   return TRUE;
   1896 }
   1897 
   1898 bool_t
   1899 xdr_am_REMOVE3res(XDR *xdrs, am_REMOVE3res *objp)
   1900 {
   1901   if (amuDebug(D_XDRTRACE))
   1902     plog(XLOG_DEBUG, "xdr_am_REMOVE3res:");
   1903 
   1904   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1905     return FALSE;
   1906   switch (objp->status) {
   1907   case AM_NFS3_OK:
   1908     if (!xdr_am_REMOVE3resok(xdrs, &objp->res_u.ok))
   1909       return FALSE;
   1910     break;
   1911   default:
   1912     if (!xdr_am_REMOVE3resfail(xdrs, &objp->res_u.fail))
   1913       return FALSE;
   1914     break;
   1915   }
   1916   return TRUE;
   1917 }
   1918 
   1919 bool_t
   1920 xdr_am_READ3args(XDR *xdrs, am_READ3args *objp)
   1921 {
   1922   if (amuDebug(D_XDRTRACE))
   1923     plog(XLOG_DEBUG, "xdr_am_READ3args:");
   1924 
   1925   if (!xdr_am_nfs_fh3(xdrs, &objp->file))
   1926     return FALSE;
   1927   if (!xdr_am_offset3(xdrs, &objp->offset))
   1928     return FALSE;
   1929   if (!xdr_am_count3(xdrs, &objp->count))
   1930     return FALSE;
   1931   return TRUE;
   1932 }
   1933 
   1934 bool_t
   1935 xdr_am_READ3resok(XDR *xdrs, am_READ3resok *objp)
   1936 {
   1937   if (amuDebug(D_XDRTRACE))
   1938     plog(XLOG_DEBUG, "xdr_am_READ3resok:");
   1939 
   1940   if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
   1941     return FALSE;
   1942   if (!xdr_am_count3(xdrs, &objp->count))
   1943     return FALSE;
   1944   if (!xdr_bool(xdrs, &objp->eof))
   1945     return FALSE;
   1946   if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
   1947     return FALSE;
   1948   return TRUE;
   1949 }
   1950 
   1951 bool_t
   1952 xdr_am_READ3resfail(XDR *xdrs, am_READ3resfail *objp)
   1953 {
   1954   if (amuDebug(D_XDRTRACE))
   1955     plog(XLOG_DEBUG, "xdr_am_READ3resfail:");
   1956 
   1957   if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
   1958     return FALSE;
   1959   return TRUE;
   1960 }
   1961 
   1962 bool_t
   1963 xdr_am_READ3res(XDR *xdrs, am_READ3res *objp)
   1964 {
   1965   if (amuDebug(D_XDRTRACE))
   1966     plog(XLOG_DEBUG, "xdr_am_READ3res:");
   1967 
   1968   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   1969     return FALSE;
   1970   switch (objp->status) {
   1971   case AM_NFS3_OK:
   1972     if (!xdr_am_READ3resok(xdrs, &objp->res_u.ok))
   1973       return FALSE;
   1974     break;
   1975   default:
   1976     if (!xdr_am_READ3resfail(xdrs, &objp->res_u.fail))
   1977       return FALSE;
   1978     break;
   1979   }
   1980   return TRUE;
   1981 }
   1982 
   1983 bool_t
   1984 xdr_am_FSINFO3args(XDR *xdrs, am_FSINFO3args *objp)
   1985 {
   1986   if (amuDebug(D_XDRTRACE))
   1987     plog(XLOG_DEBUG, "xdr_am_FSINFO3args:");
   1988 
   1989   if (!xdr_am_nfs_fh3(xdrs, &objp->fsroot))
   1990     return FALSE;
   1991   return TRUE;
   1992 }
   1993 
   1994 bool_t
   1995 xdr_am_FSINFO3resok(XDR *xdrs, am_FSINFO3resok *objp)
   1996 {
   1997   register int32_t *buf;
   1998 
   1999   if (amuDebug(D_XDRTRACE))
   2000     plog(XLOG_DEBUG, "xdr_am_FSINFO3resok:");
   2001 
   2002   if (xdrs->x_op == XDR_ENCODE) {
   2003     if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2004       return FALSE;
   2005     buf = XDR_INLINE(xdrs, 7 * BYTES_PER_XDR_UNIT);
   2006     if (buf == NULL) {
   2007       if (!xdr_u_int(xdrs, &objp->rtmax))
   2008         return FALSE;
   2009       if (!xdr_u_int(xdrs, &objp->rtpref))
   2010         return FALSE;
   2011       if (!xdr_u_int(xdrs, &objp->rtmult))
   2012         return FALSE;
   2013       if (!xdr_u_int(xdrs, &objp->wtmax))
   2014         return FALSE;
   2015       if (!xdr_u_int(xdrs, &objp->wtpref))
   2016         return FALSE;
   2017       if (!xdr_u_int(xdrs, &objp->wtmult))
   2018         return FALSE;
   2019       if (!xdr_u_int(xdrs, &objp->dtpref))
   2020         return FALSE;
   2021     } else {
   2022       IXDR_PUT_U_LONG(buf, objp->rtmax);
   2023       IXDR_PUT_U_LONG(buf, objp->rtpref);
   2024       IXDR_PUT_U_LONG(buf, objp->rtmult);
   2025       IXDR_PUT_U_LONG(buf, objp->wtmax);
   2026       IXDR_PUT_U_LONG(buf, objp->wtpref);
   2027       IXDR_PUT_U_LONG(buf, objp->wtmult);
   2028       IXDR_PUT_U_LONG(buf, objp->dtpref);
   2029     }
   2030     if (!xdr_am_size3(xdrs, &objp->maxfilesize))
   2031       return FALSE;
   2032     if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
   2033       return FALSE;
   2034     if (!xdr_u_int(xdrs, &objp->properties))
   2035       return FALSE;
   2036     return TRUE;
   2037   } else if (xdrs->x_op == XDR_DECODE) {
   2038     if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2039       return FALSE;
   2040     buf = XDR_INLINE(xdrs, 7 * BYTES_PER_XDR_UNIT);
   2041     if (buf == NULL) {
   2042       if (!xdr_u_int (xdrs, &objp->rtmax))
   2043         return FALSE;
   2044       if (!xdr_u_int (xdrs, &objp->rtpref))
   2045         return FALSE;
   2046       if (!xdr_u_int (xdrs, &objp->rtmult))
   2047         return FALSE;
   2048       if (!xdr_u_int (xdrs, &objp->wtmax))
   2049         return FALSE;
   2050       if (!xdr_u_int(xdrs, &objp->wtpref))
   2051         return FALSE;
   2052       if (!xdr_u_int(xdrs, &objp->wtmult))
   2053         return FALSE;
   2054       if (!xdr_u_int(xdrs, &objp->dtpref))
   2055         return FALSE;
   2056     } else {
   2057       objp->rtmax = IXDR_GET_U_LONG(buf);
   2058       objp->rtpref = IXDR_GET_U_LONG(buf);
   2059       objp->rtmult = IXDR_GET_U_LONG(buf);
   2060       objp->wtmax = IXDR_GET_U_LONG(buf);
   2061       objp->wtpref = IXDR_GET_U_LONG(buf);
   2062       objp->wtmult = IXDR_GET_U_LONG(buf);
   2063       objp->dtpref = IXDR_GET_U_LONG(buf);
   2064     }
   2065     if (!xdr_am_size3(xdrs, &objp->maxfilesize))
   2066       return FALSE;
   2067     if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
   2068       return FALSE;
   2069     if (!xdr_u_int(xdrs, &objp->properties))
   2070       return FALSE;
   2071     return TRUE;
   2072   }
   2073 
   2074   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2075     return FALSE;
   2076   if (!xdr_u_int(xdrs, &objp->rtmax))
   2077     return FALSE;
   2078   if (!xdr_u_int(xdrs, &objp->rtpref))
   2079     return FALSE;
   2080   if (!xdr_u_int(xdrs, &objp->rtmult))
   2081     return FALSE;
   2082   if (!xdr_u_int(xdrs, &objp->wtmax))
   2083     return FALSE;
   2084   if (!xdr_u_int(xdrs, &objp->wtpref))
   2085     return FALSE;
   2086   if (!xdr_u_int(xdrs, &objp->wtmult))
   2087     return FALSE;
   2088   if (!xdr_u_int(xdrs, &objp->dtpref))
   2089    return FALSE;
   2090   if (!xdr_am_size3(xdrs, &objp->maxfilesize))
   2091     return FALSE;
   2092   if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
   2093     return FALSE;
   2094   if (!xdr_u_int(xdrs, &objp->properties))
   2095     return FALSE;
   2096   return TRUE;
   2097 }
   2098 
   2099 bool_t
   2100 xdr_am_FSINFO3resfail(XDR *xdrs, am_FSINFO3resfail *objp)
   2101 {
   2102   if (amuDebug(D_XDRTRACE))
   2103     plog(XLOG_DEBUG, "xdr_am_FSINFO3resfail:");
   2104 
   2105   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2106     return FALSE;
   2107   return TRUE;
   2108 }
   2109 
   2110 bool_t
   2111 xdr_am_FSINFO3res(XDR *xdrs, am_FSINFO3res *objp)
   2112 {
   2113   if (amuDebug(D_XDRTRACE))
   2114     plog(XLOG_DEBUG, "xdr_am_FSINFO3res:");
   2115 
   2116   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2117     return FALSE;
   2118   switch (objp->status) {
   2119   case AM_NFS3_OK:
   2120     if (!xdr_am_FSINFO3resok(xdrs, &objp->res_u.ok))
   2121       return FALSE;
   2122     break;
   2123   default:
   2124     if (!xdr_am_FSINFO3resfail(xdrs, &objp->res_u.fail))
   2125       return FALSE;
   2126     break;
   2127   }
   2128   return TRUE;
   2129 }
   2130 
   2131 bool_t
   2132 xdr_am_FSSTAT3args(XDR *xdrs, am_FSSTAT3args *objp)
   2133 {
   2134   if (amuDebug(D_XDRTRACE))
   2135     plog(XLOG_DEBUG, "xdr_am_FSSTAT3args:");
   2136 
   2137   if (!xdr_am_nfs_fh3(xdrs, &objp->fsroot))
   2138     return FALSE;
   2139   return TRUE;
   2140 }
   2141 
   2142 bool_t
   2143 xdr_am_FSSTAT3resok(XDR *xdrs, am_FSSTAT3resok *objp)
   2144 {
   2145   if (amuDebug(D_XDRTRACE))
   2146     plog(XLOG_DEBUG, "xdr_am_FSSTAT3resok:");
   2147 
   2148   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2149     return FALSE;
   2150   if (!xdr_am_size3(xdrs, &objp->tbytes))
   2151     return FALSE;
   2152   if (!xdr_am_size3(xdrs, &objp->fbytes))
   2153     return FALSE;
   2154   if (!xdr_am_size3(xdrs, &objp->abytes))
   2155     return FALSE;
   2156   if (!xdr_am_size3(xdrs, &objp->tfiles))
   2157     return FALSE;
   2158   if (!xdr_am_size3(xdrs, &objp->ffiles))
   2159     return FALSE;
   2160   if (!xdr_am_size3(xdrs, &objp->afiles))
   2161     return FALSE;
   2162   if (!xdr_u_int(xdrs, &objp->invarsec))
   2163     return FALSE;
   2164   return TRUE;
   2165 }
   2166 
   2167 bool_t
   2168 xdr_am_FSSTAT3resfail(XDR *xdrs, am_FSSTAT3resfail *objp)
   2169 {
   2170   if (amuDebug(D_XDRTRACE))
   2171     plog(XLOG_DEBUG, "xdr_am_FSSTAT3resfail:");
   2172 
   2173   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2174     return FALSE;
   2175   return TRUE;
   2176 }
   2177 
   2178 bool_t
   2179 xdr_am_FSSTAT3res(XDR *xdrs, am_FSSTAT3res *objp)
   2180 {
   2181   if (amuDebug(D_XDRTRACE))
   2182     plog(XLOG_DEBUG, "xdr_am_FSSTAT3res:");
   2183 
   2184   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2185     return FALSE;
   2186   switch (objp->status) {
   2187   case AM_NFS3_OK:
   2188     if (!xdr_am_FSSTAT3resok(xdrs, &objp->res_u.ok))
   2189       return FALSE;
   2190     break;
   2191   default:
   2192     if (!xdr_am_FSSTAT3resfail(xdrs, &objp->res_u.fail))
   2193       return FALSE;
   2194     break;
   2195   }
   2196   return TRUE;
   2197 }
   2198 
   2199 bool_t
   2200 xdr_am_PATHCONF3args(XDR *xdrs, am_PATHCONF3args *objp)
   2201 {
   2202   if (amuDebug(D_XDRTRACE))
   2203     plog(XLOG_DEBUG, "xdr_am_PATHCONF3args:");
   2204 
   2205   if (!xdr_am_nfs_fh3(xdrs, &objp->object))
   2206     return FALSE;
   2207   return TRUE;
   2208 }
   2209 
   2210 bool_t
   2211 xdr_am_PATHCONF3resok(XDR *xdrs, am_PATHCONF3resok *objp)
   2212 {
   2213   register int32_t *buf;
   2214 
   2215   if (amuDebug(D_XDRTRACE))
   2216     plog(XLOG_DEBUG, "xdr_am_PATHCONF3resok:");
   2217 
   2218   if (xdrs->x_op == XDR_ENCODE) {
   2219     if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2220       return FALSE;
   2221     buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
   2222     if (buf == NULL) {
   2223       if (!xdr_u_int(xdrs, &objp->linkmax))
   2224         return FALSE;
   2225       if (!xdr_u_int(xdrs, &objp->name_max))
   2226         return FALSE;
   2227       if (!xdr_bool(xdrs, &objp->no_trunc))
   2228         return FALSE;
   2229       if (!xdr_bool(xdrs, &objp->chown_restricted))
   2230         return FALSE;
   2231       if (!xdr_bool(xdrs, &objp->case_insensitive))
   2232         return FALSE;
   2233       if (!xdr_bool(xdrs, &objp->case_preserving))
   2234         return FALSE;
   2235     } else {
   2236       IXDR_PUT_U_LONG(buf, objp->linkmax);
   2237       IXDR_PUT_U_LONG(buf, objp->name_max);
   2238       IXDR_PUT_BOOL(buf, objp->no_trunc);
   2239       IXDR_PUT_BOOL(buf, objp->chown_restricted);
   2240       IXDR_PUT_BOOL(buf, objp->case_insensitive);
   2241       IXDR_PUT_BOOL(buf, objp->case_preserving);
   2242     }
   2243     return TRUE;
   2244   } else if (xdrs->x_op == XDR_DECODE) {
   2245     if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2246       return FALSE;
   2247     buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
   2248     if (buf == NULL) {
   2249       if (!xdr_u_int(xdrs, &objp->linkmax))
   2250         return FALSE;
   2251       if (!xdr_u_int(xdrs, &objp->name_max))
   2252         return FALSE;
   2253       if (!xdr_bool(xdrs, &objp->no_trunc))
   2254         return FALSE;
   2255       if (!xdr_bool(xdrs, &objp->chown_restricted))
   2256         return FALSE;
   2257       if (!xdr_bool(xdrs, &objp->case_insensitive))
   2258         return FALSE;
   2259       if (!xdr_bool(xdrs, &objp->case_preserving))
   2260         return FALSE;
   2261     } else {
   2262       objp->linkmax = IXDR_GET_U_LONG(buf);
   2263       objp->name_max = IXDR_GET_U_LONG(buf);
   2264       objp->no_trunc = IXDR_GET_BOOL(buf);
   2265       objp->chown_restricted = IXDR_GET_BOOL(buf);
   2266       objp->case_insensitive = IXDR_GET_BOOL(buf);
   2267       objp->case_preserving = IXDR_GET_BOOL(buf);
   2268     }
   2269     return TRUE;
   2270   }
   2271 
   2272   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2273     return FALSE;
   2274   if (!xdr_u_int(xdrs, &objp->linkmax))
   2275     return FALSE;
   2276   if (!xdr_u_int(xdrs, &objp->name_max))
   2277     return FALSE;
   2278   if (!xdr_bool(xdrs, &objp->no_trunc))
   2279     return FALSE;
   2280   if (!xdr_bool(xdrs, &objp->chown_restricted))
   2281     return FALSE;
   2282   if (!xdr_bool(xdrs, &objp->case_insensitive))
   2283     return FALSE;
   2284   if (!xdr_bool(xdrs, &objp->case_preserving))
   2285     return FALSE;
   2286   return TRUE;
   2287 }
   2288 
   2289 bool_t
   2290 xdr_am_PATHCONF3resfail(XDR *xdrs, am_PATHCONF3resfail *objp)
   2291 {
   2292   if (amuDebug(D_XDRTRACE))
   2293     plog(XLOG_DEBUG, "xdr_am_PATHCONF3resfail:");
   2294 
   2295   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2296     return FALSE;
   2297   return TRUE;
   2298 }
   2299 
   2300 bool_t
   2301 xdr_am_PATHCONF3res(XDR *xdrs, am_PATHCONF3res *objp)
   2302 {
   2303   if (amuDebug(D_XDRTRACE))
   2304     plog(XLOG_DEBUG, "xdr_am_PATHCONF3res:");
   2305 
   2306   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2307     return FALSE;
   2308   switch (objp->status) {
   2309   case AM_NFS3_OK:
   2310     if (!xdr_am_PATHCONF3resok(xdrs, &objp->res_u.ok))
   2311       return FALSE;
   2312     break;
   2313   default:
   2314     if (!xdr_am_PATHCONF3resfail(xdrs, &objp->res_u.fail))
   2315       return FALSE;
   2316     break;
   2317   }
   2318   return TRUE;
   2319 }
   2320 
   2321 bool_t
   2322 xdr_am_nfspath3(XDR *xdrs, am_nfspath3 *objp)
   2323 {
   2324   if (amuDebug(D_XDRTRACE))
   2325     plog(XLOG_DEBUG, "xdr_am_nfspath3:");
   2326 
   2327   if (!xdr_string(xdrs, objp, ~0))
   2328     return FALSE;
   2329   return TRUE;
   2330 }
   2331 
   2332 bool_t
   2333 xdr_am_symlinkdata3(XDR *xdrs, am_symlinkdata3 *objp)
   2334 {
   2335   if (amuDebug(D_XDRTRACE))
   2336     plog(XLOG_DEBUG, "xdr_am_symlinkdata3:");
   2337 
   2338   if (!xdr_am_sattr3(xdrs, &objp->symlink_attributes))
   2339     return FALSE;
   2340   if (!xdr_am_nfspath3(xdrs, &objp->symlink_data))
   2341     return FALSE;
   2342   return TRUE;
   2343 }
   2344 
   2345 bool_t
   2346 xdr_am_SYMLINK3args(XDR *xdrs, am_SYMLINK3args *objp)
   2347 {
   2348   if (amuDebug(D_XDRTRACE))
   2349     plog(XLOG_DEBUG, "xdr_am_SYMLINK3args:");
   2350 
   2351   if (!xdr_am_diropargs3(xdrs, &objp->where))
   2352     return FALSE;
   2353   if (!xdr_am_symlinkdata3(xdrs, &objp->symlink))
   2354     return FALSE;
   2355   return TRUE;
   2356 }
   2357 
   2358 bool_t
   2359 xdr_am_SYMLINK3resok(XDR *xdrs, am_SYMLINK3resok *objp)
   2360 {
   2361   if (amuDebug(D_XDRTRACE))
   2362     plog(XLOG_DEBUG, "xdr_am_SYMLINK3resok:");
   2363 
   2364   if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
   2365     return FALSE;
   2366   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2367     return FALSE;
   2368   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2369     return FALSE;
   2370   return TRUE;
   2371 }
   2372 
   2373 bool_t
   2374 xdr_am_SYMLINK3resfail(XDR *xdrs, am_SYMLINK3resfail *objp)
   2375 {
   2376   if (amuDebug(D_XDRTRACE))
   2377     plog(XLOG_DEBUG, "xdr_am_SYMLINK3resfail:");
   2378 
   2379   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2380     return FALSE;
   2381   return TRUE;
   2382 }
   2383 
   2384 bool_t
   2385 xdr_am_SYMLINK3res(XDR *xdrs, am_SYMLINK3res *objp)
   2386 {
   2387   if (amuDebug(D_XDRTRACE))
   2388     plog(XLOG_DEBUG, "xdr_am_SYMLINK3res:");
   2389 
   2390   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2391     return FALSE;
   2392   switch (objp->status) {
   2393   case AM_NFS3_OK:
   2394     if (!xdr_am_SYMLINK3resok(xdrs, &objp->res_u.ok))
   2395       return FALSE;
   2396     break;
   2397   default:
   2398     if (!xdr_am_SYMLINK3resfail(xdrs, &objp->res_u.fail))
   2399       return FALSE;
   2400     break;
   2401   }
   2402   return TRUE;
   2403 }
   2404 
   2405 bool_t
   2406 xdr_am_READLINK3args(XDR *xdrs, am_READLINK3args *objp)
   2407 {
   2408   if (amuDebug(D_XDRTRACE))
   2409     plog(XLOG_DEBUG, "xdr_am_READLINK3args:");
   2410 
   2411   if (!xdr_am_nfs_fh3(xdrs, &objp->symlink))
   2412     return FALSE;
   2413   return TRUE;
   2414 }
   2415 
   2416 bool_t
   2417 xdr_am_READLINK3resok(XDR *xdrs, am_READLINK3resok *objp)
   2418 {
   2419   if (amuDebug(D_XDRTRACE))
   2420     plog(XLOG_DEBUG, "xdr_am_READLINK3resok:");
   2421 
   2422   if (!xdr_am_post_op_attr(xdrs, &objp->symlink_attributes))
   2423     return FALSE;
   2424   if (!xdr_am_nfspath3(xdrs, &objp->data))
   2425     return FALSE;
   2426   return TRUE;
   2427 }
   2428 
   2429 bool_t
   2430 xdr_am_READLINK3resfail(XDR *xdrs, am_READLINK3resfail *objp)
   2431 {
   2432   if (amuDebug(D_XDRTRACE))
   2433     plog(XLOG_DEBUG, "xdr_am_READLINK3resfail:");
   2434 
   2435   if (!xdr_am_post_op_attr(xdrs, &objp->symlink_attributes))
   2436     return FALSE;
   2437   return TRUE;
   2438 }
   2439 
   2440 bool_t
   2441 xdr_am_READLINK3res(XDR *xdrs, am_READLINK3res *objp)
   2442 {
   2443   if (amuDebug(D_XDRTRACE))
   2444     plog(XLOG_DEBUG, "xdr_am_READLINK3res:");
   2445 
   2446   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2447     return FALSE;
   2448   switch (objp->status) {
   2449   case AM_NFS3_OK:
   2450     if (!xdr_am_READLINK3resok(xdrs, &objp->res_u.ok))
   2451       return FALSE;
   2452     break;
   2453   default:
   2454     if (!xdr_am_READLINK3resfail(xdrs, &objp->res_u.fail))
   2455       return FALSE;
   2456     break;
   2457   }
   2458   return TRUE;
   2459 }
   2460 
   2461 bool_t
   2462 xdr_am_devicedata3(XDR *xdrs, am_devicedata3 *objp)
   2463 {
   2464   if (amuDebug(D_XDRTRACE))
   2465     plog(XLOG_DEBUG, "xdr_am_devicedata3:");
   2466 
   2467   if (!xdr_am_sattr3(xdrs, &objp->dev_attributes))
   2468     return FALSE;
   2469   if (!xdr_am_specdata3(xdrs, &objp->spec))
   2470     return FALSE;
   2471   return TRUE;
   2472 }
   2473 
   2474 bool_t
   2475 xdr_am_mknoddata3(XDR *xdrs, am_mknoddata3 *objp)
   2476 {
   2477   if (amuDebug(D_XDRTRACE))
   2478     plog(XLOG_DEBUG, "xdr_am_mknoddata3:");
   2479 
   2480   if (!xdr_am_ftype3(xdrs, &objp->type))
   2481     return FALSE;
   2482   switch (objp->type) {
   2483   case AM_NF3CHR:
   2484     if (!xdr_am_devicedata3(xdrs, &objp->am_mknoddata3_u.chr_device))
   2485       return FALSE;
   2486     break;
   2487   case AM_NF3BLK:
   2488     if (!xdr_am_devicedata3(xdrs, &objp->am_mknoddata3_u.blk_device))
   2489       return FALSE;
   2490     break;
   2491   case AM_NF3SOCK:
   2492     if (!xdr_am_sattr3(xdrs, &objp->am_mknoddata3_u.sock_attributes))
   2493       return FALSE;
   2494     break;
   2495   case AM_NF3FIFO:
   2496     if (!xdr_am_sattr3(xdrs, &objp->am_mknoddata3_u.pipe_attributes))
   2497       return FALSE;
   2498     break;
   2499   default:
   2500     break;
   2501   }
   2502   return TRUE;
   2503 }
   2504 
   2505 bool_t
   2506 xdr_am_MKNOD3args(XDR *xdrs, am_MKNOD3args *objp)
   2507 {
   2508   if (amuDebug(D_XDRTRACE))
   2509     plog(XLOG_DEBUG, "xdr_am_MKNOD3args:");
   2510 
   2511   if (!xdr_am_diropargs3(xdrs, &objp->where))
   2512     return FALSE;
   2513   if (!xdr_am_mknoddata3(xdrs, &objp->what))
   2514     return FALSE;
   2515   return TRUE;
   2516 }
   2517 
   2518 bool_t
   2519 xdr_am_MKNOD3resok(XDR *xdrs, am_MKNOD3resok *objp)
   2520 {
   2521   if (amuDebug(D_XDRTRACE))
   2522     plog(XLOG_DEBUG, "xdr_am_MKNOD3resok:");
   2523 
   2524   if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
   2525     return FALSE;
   2526   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2527     return FALSE;
   2528   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2529     return FALSE;
   2530   return TRUE;
   2531 }
   2532 
   2533 bool_t
   2534 xdr_am_MKNOD3resfail(XDR *xdrs, am_MKNOD3resfail *objp)
   2535 {
   2536   if (amuDebug(D_XDRTRACE))
   2537     plog(XLOG_DEBUG, "xdr_am_MKNOD3resfail:");
   2538 
   2539   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2540     return FALSE;
   2541   return TRUE;
   2542 }
   2543 
   2544 bool_t
   2545 xdr_am_MKNOD3res(XDR *xdrs, am_MKNOD3res *objp)
   2546 {
   2547   if (amuDebug(D_XDRTRACE))
   2548     plog(XLOG_DEBUG, ":");
   2549 
   2550   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2551     return FALSE;
   2552   switch (objp->status) {
   2553   case AM_NFS3_OK:
   2554     if (!xdr_am_MKNOD3resok(xdrs, &objp->res_u.ok))
   2555       return FALSE;
   2556     break;
   2557   default:
   2558     if (!xdr_am_MKNOD3resfail(xdrs, &objp->res_u.fail))
   2559       return FALSE;
   2560     break;
   2561   }
   2562   return TRUE;
   2563 }
   2564 
   2565 bool_t
   2566 xdr_am_MKDIR3args(XDR *xdrs, am_MKDIR3args *objp)
   2567 {
   2568   if (amuDebug(D_XDRTRACE))
   2569     plog(XLOG_DEBUG, ":");
   2570 
   2571   if (!xdr_am_diropargs3(xdrs, &objp->where))
   2572     return FALSE;
   2573   if (!xdr_am_sattr3(xdrs, &objp->attributes))
   2574     return FALSE;
   2575   return TRUE;
   2576 }
   2577 
   2578 bool_t
   2579 xdr_am_MKDIR3resok(XDR *xdrs, am_MKDIR3resok *objp)
   2580 {
   2581   if (amuDebug(D_XDRTRACE))
   2582     plog(XLOG_DEBUG, "xdr_am_MKDIR3resok:");
   2583 
   2584   if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
   2585     return FALSE;
   2586   if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
   2587     return FALSE;
   2588   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2589     return FALSE;
   2590   return TRUE;
   2591 }
   2592 
   2593 bool_t
   2594 xdr_am_MKDIR3resfail(XDR *xdrs, am_MKDIR3resfail *objp)
   2595 {
   2596   if (amuDebug(D_XDRTRACE))
   2597     plog(XLOG_DEBUG, "xdr_am_MKDIR3resfail:");
   2598 
   2599   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2600     return FALSE;
   2601   return TRUE;
   2602 }
   2603 
   2604 bool_t
   2605 xdr_am_MKDIR3res(XDR *xdrs, am_MKDIR3res *objp)
   2606 {
   2607   if (amuDebug(D_XDRTRACE))
   2608     plog(XLOG_DEBUG, "xdr_am_MKDIR3res:");
   2609 
   2610   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2611     return FALSE;
   2612   switch (objp->status) {
   2613   case AM_NFS3_OK:
   2614     if (!xdr_am_MKDIR3resok(xdrs, &objp->res_u.ok))
   2615       return FALSE;
   2616     break;
   2617   default:
   2618     if (!xdr_am_MKDIR3resfail(xdrs, &objp->res_u.fail))
   2619       return FALSE;
   2620     break;
   2621   }
   2622   return TRUE;
   2623 }
   2624 
   2625 bool_t
   2626 xdr_am_RMDIR3args(XDR *xdrs, am_RMDIR3args *objp)
   2627 {
   2628   if (amuDebug(D_XDRTRACE))
   2629     plog(XLOG_DEBUG, "xdr_am_RMDIR3args:");
   2630 
   2631   if (!xdr_am_diropargs3(xdrs, &objp->object))
   2632     return FALSE;
   2633   return TRUE;
   2634 }
   2635 
   2636 bool_t
   2637 xdr_am_RMDIR3resok(XDR *xdrs, am_RMDIR3resok *objp)
   2638 {
   2639   if (amuDebug(D_XDRTRACE))
   2640     plog(XLOG_DEBUG, "xdr_am_RMDIR3resok:");
   2641 
   2642   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2643     return FALSE;
   2644   return TRUE;
   2645 }
   2646 
   2647 bool_t
   2648 xdr_am_RMDIR3resfail(XDR *xdrs, am_RMDIR3resfail *objp)
   2649 {
   2650   if (amuDebug(D_XDRTRACE))
   2651     plog(XLOG_DEBUG, "xdr_am_RMDIR3resfail:");
   2652 
   2653   if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
   2654     return FALSE;
   2655   return TRUE;
   2656 }
   2657 
   2658 bool_t
   2659 xdr_am_RMDIR3res(XDR *xdrs, am_RMDIR3res *objp)
   2660 {
   2661   if (amuDebug(D_XDRTRACE))
   2662     plog(XLOG_DEBUG, "xdr_am_RMDIR3res:");
   2663 
   2664   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2665     return FALSE;
   2666   switch (objp->status) {
   2667   case AM_NFS3_OK:
   2668     if (!xdr_am_RMDIR3resok(xdrs, &objp->res_u.ok))
   2669       return FALSE;
   2670     break;
   2671   default:
   2672     if (!xdr_am_RMDIR3resfail(xdrs, &objp->res_u.fail))
   2673       return FALSE;
   2674     break;
   2675   }
   2676   return TRUE;
   2677 }
   2678 
   2679 bool_t
   2680 xdr_am_RENAME3args(XDR *xdrs, am_RENAME3args *objp)
   2681 {
   2682   if (amuDebug(D_XDRTRACE))
   2683     plog(XLOG_DEBUG, "xdr_am_RENAME3args:");
   2684 
   2685   if (!xdr_am_diropargs3(xdrs, &objp->from))
   2686     return FALSE;
   2687   if (!xdr_am_diropargs3(xdrs, &objp->to))
   2688     return FALSE;
   2689   return TRUE;
   2690 }
   2691 
   2692 bool_t
   2693 xdr_am_RENAME3resok(XDR *xdrs, am_RENAME3resok *objp)
   2694 {
   2695   if (amuDebug(D_XDRTRACE))
   2696     plog(XLOG_DEBUG, "xdr_am_RENAME3resok:");
   2697 
   2698   if (!xdr_am_wcc_data(xdrs, &objp->fromdir_wcc))
   2699     return FALSE;
   2700   if (!xdr_am_wcc_data(xdrs, &objp->todir_wcc))
   2701     return FALSE;
   2702   return TRUE;
   2703 }
   2704 
   2705 bool_t
   2706 xdr_am_RENAME3resfail(XDR *xdrs, am_RENAME3resfail *objp)
   2707 {
   2708   if (amuDebug(D_XDRTRACE))
   2709     plog(XLOG_DEBUG, "xdr_am_RENAME3resfail:");
   2710 
   2711   if (!xdr_am_wcc_data(xdrs, &objp->fromdir_wcc))
   2712     return FALSE;
   2713   if (!xdr_am_wcc_data(xdrs, &objp->todir_wcc))
   2714     return FALSE;
   2715   return TRUE;
   2716 }
   2717 
   2718 bool_t
   2719 xdr_am_RENAME3res(XDR *xdrs, am_RENAME3res *objp)
   2720 {
   2721   if (amuDebug(D_XDRTRACE))
   2722     plog(XLOG_DEBUG, "xdr_am_RENAME3res:");
   2723 
   2724   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2725     return FALSE;
   2726   switch (objp->status) {
   2727   case AM_NFS3_OK:
   2728     if (!xdr_am_RENAME3resok(xdrs, &objp->res_u.ok))
   2729       return FALSE;
   2730     break;
   2731   default:
   2732     if (!xdr_am_RENAME3resfail(xdrs, &objp->res_u.fail))
   2733       return FALSE;
   2734     break;
   2735   }
   2736   return TRUE;
   2737 }
   2738 
   2739 bool_t
   2740 xdr_am_READDIRPLUS3args(XDR *xdrs, am_READDIRPLUS3args *objp)
   2741 {
   2742   if (amuDebug(D_XDRTRACE))
   2743     plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3args:");
   2744 
   2745   if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
   2746     return FALSE;
   2747   if (!xdr_am_cookie3(xdrs, &objp->cookie))
   2748     return FALSE;
   2749   if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
   2750     return FALSE;
   2751   if (!xdr_am_count3(xdrs, &objp->dircount))
   2752     return FALSE;
   2753   if (!xdr_am_count3(xdrs, &objp->maxcount))
   2754     return FALSE;
   2755   return TRUE;
   2756 }
   2757 
   2758 bool_t
   2759 xdr_am_entryplus3(XDR *xdrs, am_entryplus3 *objp)
   2760 {
   2761   if (amuDebug(D_XDRTRACE))
   2762     plog(XLOG_DEBUG, "xdr_am_entryplus3:");
   2763 
   2764    if (!xdr_am_fileid3(xdrs, &objp->fileid))
   2765      return FALSE;
   2766    if (!xdr_am_filename3(xdrs, &objp->name))
   2767      return FALSE;
   2768    if (!xdr_am_cookie3(xdrs, &objp->cookie))
   2769      return FALSE;
   2770    if (!xdr_am_post_op_attr(xdrs, &objp->name_attributes))
   2771      return FALSE;
   2772    if (!xdr_am_post_op_fh3(xdrs, &objp->name_handle))
   2773      return FALSE;
   2774    if (!xdr_pointer(xdrs, (char **)&objp->nextentry,
   2775                    sizeof(am_entryplus3), (xdrproc_t) xdr_am_entryplus3))
   2776      return FALSE;
   2777   return TRUE;
   2778 }
   2779 
   2780 bool_t
   2781 xdr_am_dirlistplus3(XDR *xdrs, am_dirlistplus3 *objp)
   2782 {
   2783   if (amuDebug(D_XDRTRACE))
   2784     plog(XLOG_DEBUG, "xdr_am_dirlistplus3:");
   2785 
   2786   if (!xdr_pointer(xdrs, (char **)&objp->entries,
   2787                    sizeof(am_entryplus3), (xdrproc_t) xdr_am_entryplus3))
   2788     return FALSE;
   2789   if (!xdr_bool(xdrs, &objp->eof))
   2790     return FALSE;
   2791   return TRUE;
   2792 }
   2793 
   2794 bool_t
   2795 xdr_am_READDIRPLUS3resok(XDR *xdrs, am_READDIRPLUS3resok *objp)
   2796 {
   2797   if (amuDebug(D_XDRTRACE))
   2798     plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3resok:");
   2799 
   2800   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   2801     return FALSE;
   2802   if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
   2803     return FALSE;
   2804   if (!xdr_am_dirlistplus3(xdrs, &objp->reply))
   2805     return FALSE;
   2806   return TRUE;
   2807 }
   2808 
   2809 bool_t
   2810 xdr_am_READDIRPLUS3resfail(XDR *xdrs, am_READDIRPLUS3resfail *objp)
   2811 {
   2812   if (amuDebug(D_XDRTRACE))
   2813     plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3resfail:");
   2814 
   2815   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   2816     return FALSE;
   2817   return TRUE;
   2818 }
   2819 
   2820 bool_t
   2821 xdr_am_READDIRPLUS3res(XDR *xdrs, am_READDIRPLUS3res *objp)
   2822 {
   2823   if (amuDebug(D_XDRTRACE))
   2824     plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3res:");
   2825 
   2826   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2827     return FALSE;
   2828   switch (objp->status) {
   2829   case AM_NFS3_OK:
   2830     if (!xdr_am_READDIRPLUS3resok(xdrs, &objp->res_u.ok))
   2831       return FALSE;
   2832     break;
   2833   default:
   2834     if (!xdr_am_READDIRPLUS3resfail(xdrs, &objp->res_u.fail))
   2835       return FALSE;
   2836     break;
   2837   }
   2838   return TRUE;
   2839 }
   2840 
   2841 bool_t
   2842 xdr_am_READDIR3args(XDR *xdrs, am_READDIR3args *objp)
   2843 {
   2844   if (amuDebug(D_XDRTRACE))
   2845     plog(XLOG_DEBUG, "xdr_am_READDIR3args:");
   2846 
   2847   if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
   2848     return FALSE;
   2849   if (!xdr_am_cookie3(xdrs, &objp->cookie))
   2850     return FALSE;
   2851   if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
   2852     return FALSE;
   2853   if (!xdr_am_count3(xdrs, &objp->count))
   2854     return FALSE;
   2855   return TRUE;
   2856 }
   2857 
   2858 bool_t
   2859 xdr_am_entry3(XDR *xdrs, am_entry3 *objp)
   2860 {
   2861   if (amuDebug(D_XDRTRACE))
   2862     plog(XLOG_DEBUG, "xdr_am_entry3:");
   2863 
   2864   if (!xdr_am_fileid3(xdrs, &objp->fileid))
   2865     return FALSE;
   2866   if (!xdr_am_filename3(xdrs, &objp->name))
   2867     return FALSE;
   2868   if (!xdr_am_cookie3(xdrs, &objp->cookie))
   2869     return FALSE;
   2870   if (!xdr_pointer(xdrs, (char **)&objp->nextentry,
   2871                    sizeof(am_entry3), (xdrproc_t) xdr_am_entry3))
   2872     return FALSE;
   2873   return TRUE;
   2874 }
   2875 
   2876 bool_t
   2877 xdr_am_dirlist3(XDR *xdrs, am_dirlist3 *objp)
   2878 {
   2879   if (amuDebug(D_XDRTRACE))
   2880     plog(XLOG_DEBUG, "xdr_am_dirlist3:");
   2881 
   2882   if (!xdr_pointer(xdrs, (char **)&objp->entries,
   2883                    sizeof(am_entry3), (xdrproc_t) xdr_am_entry3))
   2884     return FALSE;
   2885   if (!xdr_bool (xdrs, &objp->eof))
   2886     return FALSE;
   2887   return TRUE;
   2888 }
   2889 
   2890 bool_t
   2891 xdr_am_READDIR3resok(XDR *xdrs, am_READDIR3resok *objp)
   2892 {
   2893   if (amuDebug(D_XDRTRACE))
   2894     plog(XLOG_DEBUG, "xdr_am_READDIR3resok:");
   2895 
   2896   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   2897     return FALSE;
   2898   if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
   2899     return FALSE;
   2900   if (!xdr_am_dirlist3(xdrs, &objp->reply))
   2901     return FALSE;
   2902   return TRUE;
   2903 }
   2904 
   2905 bool_t
   2906 xdr_am_READDIR3resfail(XDR *xdrs, am_READDIR3resfail *objp)
   2907 {
   2908   if (amuDebug(D_XDRTRACE))
   2909     plog(XLOG_DEBUG, "xdr_am_READDIR3resfail:");
   2910 
   2911   if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
   2912     return FALSE;
   2913   return TRUE;
   2914 }
   2915 
   2916 bool_t
   2917 xdr_am_READDIR3res(XDR *xdrs, am_READDIR3res *objp)
   2918 {
   2919   if (amuDebug(D_XDRTRACE))
   2920     plog(XLOG_DEBUG, "xdr_am_READDIR3res:");
   2921 
   2922   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2923     return FALSE;
   2924   switch (objp->status) {
   2925   case AM_NFS3_OK:
   2926     if (!xdr_am_READDIR3resok(xdrs, &objp->res_u.ok))
   2927       return FALSE;
   2928     break;
   2929   default:
   2930     if (!xdr_am_READDIR3resfail(xdrs, &objp->res_u.fail))
   2931       return FALSE;
   2932     break;
   2933   }
   2934   return TRUE;
   2935 }
   2936 
   2937 bool_t
   2938 xdr_am_LINK3args(XDR *xdrs, am_LINK3args *objp)
   2939 {
   2940   if (amuDebug(D_XDRTRACE))
   2941     plog(XLOG_DEBUG, "xdr_am_LINK3args:");
   2942 
   2943   if (!xdr_am_nfs_fh3(xdrs, &objp->file))
   2944     return FALSE;
   2945   if (!xdr_am_diropargs3(xdrs, &objp->link))
   2946     return FALSE;
   2947   return TRUE;
   2948 }
   2949 
   2950 bool_t
   2951 xdr_am_LINK3resok(XDR *xdrs, am_LINK3resok *objp)
   2952 {
   2953   if (amuDebug(D_XDRTRACE))
   2954     plog(XLOG_DEBUG, "xdr_am_LINK3resok:");
   2955 
   2956   if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
   2957     return FALSE;
   2958   if (!xdr_am_wcc_data(xdrs, &objp->linkdir_wcc))
   2959     return FALSE;
   2960   return TRUE;
   2961 }
   2962 
   2963 bool_t
   2964 xdr_am_LINK3resfail(XDR *xdrs, am_LINK3resfail *objp)
   2965 {
   2966   if (amuDebug(D_XDRTRACE))
   2967     plog(XLOG_DEBUG, "xdr_am_LINK3resfail:");
   2968 
   2969   if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
   2970     return FALSE;
   2971   if (!xdr_am_wcc_data(xdrs, &objp->linkdir_wcc))
   2972     return FALSE;
   2973   return TRUE;
   2974 }
   2975 
   2976 bool_t
   2977 xdr_am_LINK3res(XDR *xdrs, am_LINK3res *objp)
   2978 {
   2979   if (amuDebug(D_XDRTRACE))
   2980     plog(XLOG_DEBUG, "xdr_am_LINK3res:");
   2981 
   2982   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   2983     return FALSE;
   2984   switch (objp->status) {
   2985   case AM_NFS3_OK:
   2986     if (!xdr_am_LINK3resok(xdrs, &objp->res_u.ok))
   2987       return FALSE;
   2988     break;
   2989   default:
   2990     if (!xdr_am_LINK3resfail(xdrs, &objp->res_u.fail))
   2991       return FALSE;
   2992     break;
   2993   }
   2994   return TRUE;
   2995 }
   2996 
   2997 bool_t
   2998 xdr_am_sattrguard3(XDR *xdrs, am_sattrguard3 *objp)
   2999 {
   3000   if (amuDebug(D_XDRTRACE))
   3001     plog(XLOG_DEBUG, "xdr_am_sattrguard3:");
   3002 
   3003   if (!xdr_bool(xdrs, &objp->check))
   3004     return FALSE;
   3005   switch (objp->check) {
   3006   case TRUE:
   3007     if (!xdr_am_nfstime3(xdrs, &objp->am_sattrguard3_u.obj_ctime))
   3008       return FALSE;
   3009     break;
   3010   case FALSE:
   3011     break;
   3012   default:
   3013     return FALSE;
   3014   }
   3015   return TRUE;
   3016 }
   3017 
   3018 bool_t
   3019 xdr_am_SETATTR3args(XDR *xdrs, am_SETATTR3args *objp)
   3020 {
   3021   if (amuDebug(D_XDRTRACE))
   3022     plog(XLOG_DEBUG, "xdr_am_SETATTR3args:");
   3023 
   3024   if (!xdr_am_nfs_fh3(xdrs, &objp->object))
   3025     return FALSE;
   3026   if (!xdr_am_sattr3(xdrs, &objp->new_attributes))
   3027     return FALSE;
   3028   if (!xdr_am_sattrguard3(xdrs, &objp->guard))
   3029     return FALSE;
   3030   return TRUE;
   3031 }
   3032 
   3033 bool_t
   3034 xdr_am_SETATTR3resok(XDR *xdrs, am_SETATTR3resok *objp)
   3035 {
   3036   if (amuDebug(D_XDRTRACE))
   3037     plog(XLOG_DEBUG, "xdr_am_SETATTR3resok:");
   3038 
   3039   if (!xdr_am_wcc_data(xdrs, &objp->obj_wcc))
   3040     return FALSE;
   3041   return TRUE;
   3042 }
   3043 
   3044 bool_t
   3045 xdr_am_SETATTR3resfail(XDR *xdrs, am_SETATTR3resfail *objp)
   3046 {
   3047   if (amuDebug(D_XDRTRACE))
   3048     plog(XLOG_DEBUG, "xdr_am_SETATTR3resfail:");
   3049 
   3050   if (!xdr_am_wcc_data(xdrs, &objp->obj_wcc))
   3051     return FALSE;
   3052   return TRUE;
   3053 }
   3054 
   3055 bool_t
   3056 xdr_am_SETATTR3res(XDR *xdrs, am_SETATTR3res *objp)
   3057 {
   3058   if (amuDebug(D_XDRTRACE))
   3059     plog(XLOG_DEBUG, "xdr_am_SETATTR3res:");
   3060 
   3061   if (!xdr_am_nfsstat3(xdrs, &objp->status))
   3062     return FALSE;
   3063   switch (objp->status) {
   3064   case AM_NFS3_OK:
   3065     if (!xdr_am_SETATTR3resok(xdrs, &objp->res_u.ok))
   3066       return FALSE;
   3067     break;
   3068   default:
   3069     if (!xdr_am_SETATTR3resfail(xdrs, &objp->res_u.fail))
   3070       return FALSE;
   3071     break;
   3072   }
   3073   return TRUE;
   3074 }
   3075 #endif /* HAVE_FS_NFS3 */
   3076