static bool_t xdr_mntlistencode(XDR *xdrs, HASHSET *mntlist) { HASHSET_ITERATOR iterator = h_iterator(*mntlist); for (;;) { struct mntentry *m = (struct mntentry *)h_next(iterator); bool_t more_data = (m != NULL); if (!xdr_bool(xdrs, &more_data)) { if (iterator != NULL) free(iterator); return (FALSE); } if (!more_data) break; if ((!xdr_name(xdrs, &m->m_host)) || (!xdr_dirpath(xdrs, &m->m_path))) { if (iterator != NULL) free(iterator); return (FALSE); } } if (iterator != NULL) free(iterator); return (TRUE); }
bool_t xdr_exportnode (XDR *xdrs, exportnode *objp) { if (!xdr_dirpath (xdrs, &objp->ex_dir)) return FALSE; if (!xdr_groups (xdrs, &objp->ex_groups)) return FALSE; if (!xdr_exports (xdrs, &objp->ex_next)) return FALSE; return TRUE; }
bool_t xdr_mountbody (XDR *xdrs, mountbody *objp) { if (!xdr_name (xdrs, &objp->ml_hostname)) return FALSE; if (!xdr_dirpath (xdrs, &objp->ml_directory)) return FALSE; if (!xdr_mountlist (xdrs, &objp->ml_next)) return FALSE; return TRUE; }
bool_t xdr_mountbody(register 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_exportnode(register 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_exportnode (XDR *xdrs, exportnode *objp) { register long *buf; if (!xdr_dirpath (xdrs, &objp->filesys)) return FALSE; if (!xdr_grouplist (xdrs, &objp->groups)) return FALSE; if (!xdr_exportlist (xdrs, &objp->next)) return FALSE; return TRUE; }
bool_t xdr_mountnode (XDR *xdrs, mountnode *objp) { register long *buf; if (!xdr_name (xdrs, &objp->hostname)) return FALSE; if (!xdr_dirpath (xdrs, &objp->directory)) return FALSE; if (!xdr_mountlist (xdrs, &objp->nextentry)) return FALSE; return TRUE; }
bool_t xdr_mountbody(XDR *xdrs, mountbody *objp) { if (amuDebug(D_XDRTRACE)) plog(XLOG_DEBUG, "xdr_mountbody:"); 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_exportnode(XDR *xdrs, exportnode *objp) { if (amuDebug(D_XDRTRACE)) plog(XLOG_DEBUG, "xdr_exportnode:"); 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); }
/* Decode the mount path from the network message in inmsg * into the memory referenced by outpath.iov_base. * The size allocated for outpath.iov_base is outpath.iov_len. * The size of the path extracted from the message is returned. */ ssize_t xdr_to_mountpath (struct iovec outpath, struct iovec inmsg) { XDR xdr; ssize_t ret = -1; char *mntpath = NULL; if ((!outpath.iov_base) || (!inmsg.iov_base)) return -1; xdrmem_create (&xdr, inmsg.iov_base, (unsigned int)inmsg.iov_len, XDR_DECODE); mntpath = outpath.iov_base; if (!xdr_dirpath (&xdr, (dirpath *)&mntpath)) { ret = -1; goto ret; } ret = xdr_decoded_length (xdr); ret: return ret; }