#include #include "nfs.h" bool_t xdr_fhandle(xdrs, objp) XDR *xdrs; fhandle objp; { if (!xdr_opaque(xdrs, objp, FHSIZE)) { return (FALSE); } return (TRUE); } bool_t xdr_nfscookie(xdrs, objp) XDR *xdrs; nfscookie objp; { if (!xdr_opaque(xdrs, objp, MAXCOOKIESIZE)) { return (FALSE); } return (TRUE); } bool_t xdr_nfsdata(xdrs, objp) XDR *xdrs; nfsdata *objp; { if (!xdr_bytes(xdrs, (char **)&objp->nfsdata_val, (u_int *)&objp->nfsdata_len, MAXDATA)) { return (FALSE); } return (TRUE); } bool_t xdr_filename(xdrs, objp) XDR *xdrs; filename *objp; { if (!xdr_string(xdrs, objp, MAXNAMLEN)) { return (FALSE); } return (TRUE); } bool_t xdr_path(xdrs, objp) XDR *xdrs; path *objp; { if (!xdr_string(xdrs, objp, MAXPATHLEN)) { return (FALSE); } return (TRUE); } bool_t xdr_stat_enum(xdrs, objp) XDR *xdrs; stat_enum *objp; { if (!xdr_enum(xdrs, (enum_t *)objp)) { return (FALSE); } return (TRUE); } bool_t xdr_fhstatus(xdrs, objp) XDR *xdrs; fhstatus *objp; { if (!xdr_u_int(xdrs, &objp->fhs_status)) { return (FALSE); } switch (objp->fhs_status) { case 0: if (!xdr_fhandle(xdrs, &objp->fhstatus_u.fhs_fhandle)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_dirpath(xdrs, objp) XDR *xdrs; dirpath *objp; { if (!xdr_string(xdrs, objp, MAXPATHLEN)) { return (FALSE); } return (TRUE); } bool_t xdr_name(xdrs, objp) XDR *xdrs; name *objp; { if (!xdr_string(xdrs, objp, MAXNAMLEN)) { return (FALSE); } return (TRUE); } bool_t xdr_mountlist(xdrs, objp) XDR *xdrs; mountlist *objp; { if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), xdr_mountbody)) { return (FALSE); } return (TRUE); } bool_t xdr_mountbody(xdrs, objp) XDR *xdrs; mountbody *objp; { if (!xdr_name(xdrs, &objp->ml_hostname)) { return (FALSE); } if (!xdr_dirpath(xdrs, &objp->ml_directory)) { return (FALSE); } if (!xdr_mountlist(xdrs, &objp->ml_next)) { return (FALSE); } return (TRUE); } bool_t xdr_groups(xdrs, objp) XDR *xdrs; groups *objp; { if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), xdr_groupnode)) { return (FALSE); } return (TRUE); } bool_t xdr_groupnode(xdrs, objp) XDR *xdrs; groupnode *objp; { if (!xdr_name(xdrs, &objp->gr_name)) { return (FALSE); } if (!xdr_groups(xdrs, &objp->gr_next)) { return (FALSE); } return (TRUE); } bool_t xdr_exports(xdrs, objp) XDR *xdrs; exports *objp; { if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), xdr_exportnode)) { return (FALSE); } return (TRUE); } bool_t xdr_exportnode(xdrs, objp) XDR *xdrs; exportnode *objp; { if (!xdr_dirpath(xdrs, &objp->ex_dir)) { return (FALSE); } if (!xdr_groups(xdrs, &objp->ex_groups)) { return (FALSE); } if (!xdr_exports(xdrs, &objp->ex_next)) { return (FALSE); } return (TRUE); } bool_t xdr_ppathcnf(xdrs, objp) XDR *xdrs; ppathcnf *objp; { if (!xdr_int(xdrs, &objp->pc_link_max)) { return (FALSE); } if (!xdr_short(xdrs, &objp->pc_max_canon)) { return (FALSE); } if (!xdr_short(xdrs, &objp->pc_max_input)) { return (FALSE); } if (!xdr_short(xdrs, &objp->pc_name_max)) { return (FALSE); } if (!xdr_short(xdrs, &objp->pc_path_max)) { return (FALSE); } if (!xdr_short(xdrs, &objp->pc_pipe_buf)) { return (FALSE); } if (!xdr_u_char(xdrs, &objp->pc_vdisable)) { return (FALSE); } if (!xdr_char(xdrs, &objp->pc_xxx)) { return (FALSE); } if (!xdr_vector(xdrs, (char *)objp->pc_mask, 2, sizeof(short), xdr_short)) { return (FALSE); } return (TRUE); } bool_t xdr_ftype(xdrs, objp) XDR *xdrs; ftype *objp; { if (!xdr_enum(xdrs, (enum_t *)objp)) { return (FALSE); } return (TRUE); } bool_t xdr_nfstimeval(xdrs, objp) XDR *xdrs; nfstimeval *objp; { if (!xdr_u_int(xdrs, &objp->seconds)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->useconds)) { return (FALSE); } return (TRUE); } bool_t xdr_fattr(xdrs, objp) XDR *xdrs; fattr *objp; { if (!xdr_ftype(xdrs, &objp->type)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->mode)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->nlink)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->uid)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->gid)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->size)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->blocksize)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->rdev)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->blocks)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->fsid)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->fileid)) { return (FALSE); } if (!xdr_nfstimeval(xdrs, &objp->atime)) { return (FALSE); } if (!xdr_nfstimeval(xdrs, &objp->mtime)) { return (FALSE); } if (!xdr_nfstimeval(xdrs, &objp->ctime)) { return (FALSE); } return (TRUE); } bool_t xdr_attrstat(xdrs, objp) XDR *xdrs; attrstat *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_fattr(xdrs, &objp->attrstat_u.attributes)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_sattr(xdrs, objp) XDR *xdrs; sattr *objp; { if (!xdr_u_int(xdrs, &objp->mode)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->uid)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->gid)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->size)) { return (FALSE); } if (!xdr_nfstimeval(xdrs, &objp->atime)) { return (FALSE); } if (!xdr_nfstimeval(xdrs, &objp->mtime)) { return (FALSE); } return (TRUE); } bool_t xdr_diropargs(xdrs, objp) XDR *xdrs; diropargs *objp; { if (!xdr_fhandle(xdrs, objp->dir)) { return (FALSE); } if (!xdr_filename(xdrs, &objp->name)) { return (FALSE); } return (TRUE); } bool_t xdr_diropok_struct(xdrs, objp) XDR *xdrs; diropok_struct *objp; { if (!xdr_fhandle(xdrs, objp->file)) { return (FALSE); } if (!xdr_fattr(xdrs, &objp->attributes)) { return (FALSE); } return (TRUE); } bool_t xdr_diropres(xdrs, objp) XDR *xdrs; diropres *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_diropok_struct(xdrs, &objp->diropres_u.diropok)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_sattrargs(xdrs, objp) XDR *xdrs; sattrargs *objp; { if (!xdr_fhandle(xdrs, objp->file)) { return (FALSE); } if (!xdr_sattr(xdrs, &objp->attributes)) { return (FALSE); } return (TRUE); } bool_t xdr_readlinkres(xdrs, objp) XDR *xdrs; readlinkres *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_path(xdrs, &objp->readlinkres_u.data)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_readargs(xdrs, objp) XDR *xdrs; readargs *objp; { if (!xdr_fhandle(xdrs, objp->file)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->offset)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->count)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->totalcount)) { return (FALSE); } return (TRUE); } bool_t xdr_readres_struct(xdrs, objp) XDR *xdrs; readres_struct *objp; { if (!xdr_fattr(xdrs, &objp->attributes)) { return (FALSE); } if (!xdr_nfsdata(xdrs, &objp->data)) { return (FALSE); } return (TRUE); } bool_t xdr_readres(xdrs, objp) XDR *xdrs; readres *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_readres_struct(xdrs, &objp->readres_u.readres_vals)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_writeargs(xdrs, objp) XDR *xdrs; writeargs *objp; { if (!xdr_fhandle(xdrs, objp->file)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->beginoffset)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->offset)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->totalcount)) { return (FALSE); } if (!xdr_nfsdata(xdrs, &objp->data)) { return (FALSE); } return (TRUE); } bool_t xdr_createargs(xdrs, objp) XDR *xdrs; createargs *objp; { if (!xdr_diropargs(xdrs, &objp->where)) { return (FALSE); } if (!xdr_sattr(xdrs, &objp->attributes)) { return (FALSE); } return (TRUE); } bool_t xdr_renameargs(xdrs, objp) XDR *xdrs; renameargs *objp; { if (!xdr_diropargs(xdrs, &objp->from)) { return (FALSE); } if (!xdr_diropargs(xdrs, &objp->to)) { return (FALSE); } return (TRUE); } bool_t xdr_linkargs(xdrs, objp) XDR *xdrs; linkargs *objp; { if (!xdr_fhandle(xdrs, objp->from)) { return (FALSE); } if (!xdr_diropargs(xdrs, &objp->to)) { return (FALSE); } return (TRUE); } bool_t xdr_symlinkargs(xdrs, objp) XDR *xdrs; symlinkargs *objp; { if (!xdr_diropargs(xdrs, &objp->from)) { return (FALSE); } if (!xdr_path(xdrs, &objp->to)) { return (FALSE); } if (!xdr_sattr(xdrs, &objp->attributes)) { return (FALSE); } return (TRUE); } bool_t xdr_readdirargs(xdrs, objp) XDR *xdrs; readdirargs *objp; { if (!xdr_fhandle(xdrs, objp->dir)) { return (FALSE); } if (!xdr_nfscookie(xdrs, objp->cookie)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->count)) { return (FALSE); } return (TRUE); } bool_t xdr_entry(xdrs, objp) XDR *xdrs; entry *objp; { if (!xdr_u_int(xdrs, &objp->fileid)) { return (FALSE); } if (!xdr_filename(xdrs, &objp->name)) { return (FALSE); } if (!xdr_nfscookie(xdrs, objp->cookie)) { return (FALSE); } if (!xdr_pointer(xdrs, (char **)&objp->nextentry, sizeof(entry), xdr_entry)) { return (FALSE); } return (TRUE); } bool_t xdr_readdirok_struct(xdrs, objp) XDR *xdrs; readdirok_struct *objp; { if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof(entry), xdr_entry)) { return (FALSE); } if (!xdr_bool(xdrs, &objp->eof)) { return (FALSE); } return (TRUE); } bool_t xdr_readdirres(xdrs, objp) XDR *xdrs; readdirres *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_readdirok_struct(xdrs, &objp->readdirres_u.readdirok)) { return (FALSE); } break; } return (TRUE); } bool_t xdr_info_struct(xdrs, objp) XDR *xdrs; info_struct *objp; { if (!xdr_u_int(xdrs, &objp->tsize)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->bsize)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->blocks)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->bfree)) { return (FALSE); } if (!xdr_u_int(xdrs, &objp->bavail)) { return (FALSE); } return (TRUE); } bool_t xdr_statfsres(xdrs, objp) XDR *xdrs; statfsres *objp; { if (!xdr_stat_enum(xdrs, &objp->status)) { return (FALSE); } switch (objp->status) { case NFS_OK: if (!xdr_info_struct(xdrs, &objp->statfsres_u.info)) { return (FALSE); } break; } return (TRUE); }