bool_t xdr_rpcbs_addrlist(XDR *xdrs, rpcbs_addrlist *objp) { struct rpcbs_addrlist **pnext; if (!xdr_u_int32_t(xdrs, &objp->prog)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->vers)) { return (FALSE); } if (!xdr_int(xdrs, &objp->success)) { return (FALSE); } if (!xdr_int(xdrs, &objp->failure)) { return (FALSE); } if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { return (FALSE); } pnext = &objp->next; if (!xdr_pointer(xdrs, (char **) pnext, sizeof (rpcbs_addrlist), (xdrproc_t)xdr_rpcbs_addrlist)) { return (FALSE); } return (TRUE); }
/* * XDR the MSG_DENIED part of a reply message union */ bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr) { enum reject_stat *prj_stat; enum auth_stat *prj_why; assert(xdrs != NULL); assert(rr != NULL); prj_stat = &rr->rj_stat; /* personalized union, rather than calling xdr_union */ if (! xdr_enum(xdrs, (enum_t *) prj_stat)) return (FALSE); switch (rr->rj_stat) { case RPC_MISMATCH: if (! xdr_u_int32_t(xdrs, &(rr->rj_vers.low))) return (FALSE); return (xdr_u_int32_t(xdrs, &(rr->rj_vers.high))); case AUTH_ERROR: prj_why = &rr->rj_why; return (xdr_enum(xdrs, (enum_t *) prj_why)); } /* NOTREACHED */ assert(0); return (FALSE); }
/* * XDR the MSG_ACCEPTED part of a reply message union */ bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar) { enum accept_stat *par_stat; assert(xdrs != NULL); assert(ar != NULL); par_stat = &ar->ar_stat; /* personalized union, rather than calling xdr_union */ if (! xdr_opaque_auth(xdrs, &(ar->ar_verf))) return (FALSE); if (! xdr_enum(xdrs, (enum_t *) par_stat)) return (FALSE); switch (ar->ar_stat) { case SUCCESS: return ((*(ar->ar_results.proc))(xdrs, ar->ar_results.where)); case PROG_MISMATCH: if (! xdr_u_int32_t(xdrs, &(ar->ar_vers.low))) return (FALSE); return (xdr_u_int32_t(xdrs, &(ar->ar_vers.high))); case GARBAGE_ARGS: case SYSTEM_ERR: case PROC_UNAVAIL: case PROG_UNAVAIL: break; } return (TRUE); /* TRUE => open ended set of problems */ }
/* * Serializes the "static part" of a call message header. * The fields include: rm_xid, rm_direction, rpcvers, prog, and vers. * The rm_xid is not really static, but the user can easily munge on the fly. */ bool_t xdr_callhdr(XDR *xdrs, struct rpc_msg *cmsg) { cmsg->rm_direction = CALL; cmsg->rm_call.cb_rpcvers = RPC_MSG_VERSION; if (xdrs->x_op == XDR_ENCODE && xdr_u_int32_t(xdrs, &(cmsg->rm_xid)) && xdr_enum(xdrs, (enum_t *)&(cmsg->rm_direction)) && xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_rpcvers)) && xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_prog))) return (xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_vers))); return (FALSE); }
bool_t xdr_uint32(XDR *xdrs, uint32 *objp) { if (!xdr_u_int32_t(xdrs, objp)) return (FALSE); return (TRUE); }
/* * XDR the MSG_DENIED part of a reply message union */ bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr) { /* personalized union, rather than calling xdr_union */ if (! xdr_enum(xdrs, (enum_t *)&(rr->rj_stat))) return (FALSE); switch (rr->rj_stat) { case RPC_MISMATCH: if (!xdr_u_int32_t(xdrs, &(rr->rj_vers.low))) return (FALSE); return (xdr_u_int32_t(xdrs, &(rr->rj_vers.high))); case AUTH_ERROR: return (xdr_enum(xdrs, (enum_t *)&(rr->rj_why))); } return (FALSE); }
/* * XDR a reply message */ bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg) { if (xdr_u_int32_t(xdrs, &(rmsg->rm_xid)) && xdr_enum(xdrs, (enum_t *)&(rmsg->rm_direction)) && rmsg->rm_direction == REPLY) return (xdr_union(xdrs, (enum_t *)&(rmsg->rm_reply.rp_stat), (caddr_t)&(rmsg->rm_reply.ru), reply_dscrm, NULL)); return (FALSE); }
bool_t xdr_uvfs_fh(XDR *xdrs, uvfs_fh *objp) { register int32_t *buf; if (!xdr_u_int32_t(xdrs, objp)) { return (FALSE); } return (TRUE); }
/* * XDR the MSG_ACCEPTED part of a reply message union */ bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar) { /* personalized union, rather than calling xdr_union */ if (! xdr_opaque_auth(xdrs, &(ar->ar_verf))) return (FALSE); if (! xdr_enum(xdrs, (enum_t *)&(ar->ar_stat))) return (FALSE); switch (ar->ar_stat) { case SUCCESS: return ((*(ar->ar_results.proc))(xdrs, ar->ar_results.where)); case PROG_MISMATCH: if (!xdr_u_int32_t(xdrs, &(ar->ar_vers.low))) return (FALSE); return (xdr_u_int32_t(xdrs, &(ar->ar_vers.high))); default: return (TRUE); /* TRUE => open ended set of problems */ } }
/* * Serializes the "static part" of a call message header. * The fields include: rm_xid, rm_direction, rpcvers, prog, and vers. * The rm_xid is not really static, but the user can easily munge on the fly. */ bool_t xdr_callhdr(XDR *xdrs, struct rpc_msg *cmsg) { enum msg_type *prm_direction; assert(xdrs != NULL); assert(cmsg != NULL); prm_direction = &cmsg->rm_direction; cmsg->rm_direction = CALL; cmsg->rm_call.cb_rpcvers = RPC_MSG_VERSION; if ( (xdrs->x_op == XDR_ENCODE) && xdr_u_int32_t(xdrs, &(cmsg->rm_xid)) && xdr_enum(xdrs, (enum_t *) prm_direction) && xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_rpcvers)) && xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_prog)) ) return (xdr_u_int32_t(xdrs, &(cmsg->rm_call.cb_vers))); return (FALSE); }
/* * XDR the MSG_DENIED part of a reply message union */ bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr) { _DIAGASSERT(xdrs != NULL); _DIAGASSERT(rr != NULL); /* personalized union, rather than calling xdr_union */ if (! xdr_enum(xdrs, (enum_t *)(void *)&(rr->rj_stat))) return (FALSE); switch (rr->rj_stat) { case RPC_MISMATCH: if (! xdr_u_int32_t(xdrs, &(rr->rj_vers.low))) return (FALSE); return (xdr_u_int32_t(xdrs, &(rr->rj_vers.high))); case AUTH_ERROR: return (xdr_enum(xdrs, (enum_t *)(void *)&(rr->rj_why))); } /* NOTREACHED */ return (FALSE); }
bool_t xdr_uvfs_accessargs(XDR *xdrs, uvfs_accessargs *objp) { register int32_t *buf; if (!xdr_uvfs_fh(xdrs, &objp->object)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->access)) { return (FALSE); } return (TRUE); }
/* * XDR a reply message */ bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg) { _DIAGASSERT(xdrs != NULL); _DIAGASSERT(rmsg != NULL); if ( xdr_u_int32_t(xdrs, &(rmsg->rm_xid)) && xdr_enum(xdrs, (enum_t *)(void *)&(rmsg->rm_direction)) && (rmsg->rm_direction == REPLY) ) return (xdr_union(xdrs, (enum_t *)(void *)&(rmsg->rm_reply.rp_stat), (caddr_t)(void *)&(rmsg->rm_reply.ru), reply_dscrm, NULL_xdrproc_t)); return (FALSE); }
bool_t xdr_nlm4_holder(XDR *xdrs, nlm4_holder *objp) { if (!xdr_bool(xdrs, &objp->exclusive)) return (FALSE); if (!xdr_u_int32_t(xdrs, &objp->svid)) return (FALSE); if (!xdr_netobj(xdrs, &objp->oh)) return (FALSE); if (!xdr_u_int64_t(xdrs, &objp->l_offset)) return (FALSE); if (!xdr_u_int64_t(xdrs, &objp->l_len)) return (FALSE); return (TRUE); }
bool_t xdr_uvfs_commitargs(XDR *xdrs, uvfs_commitargs *objp) { register int32_t *buf; if (!xdr_uvfs_fh(xdrs, &objp->file)) { return (FALSE); } if (!xdr_u_int64_t(xdrs, &objp->offset)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->count)) { return (FALSE); } return (TRUE); }
bool_t xdr_uvfs_readdirargs(XDR *xdrs, uvfs_readdirargs *objp) { register int32_t *buf; if (!xdr_uvfs_fh(xdrs, &objp->dir)) { return (FALSE); } if (!xdr_u_int64_t(xdrs, &objp->cookie)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->count)) { return (FALSE); } return (TRUE); }
bool_t xdr_nlm4_lock(XDR *xdrs, nlm4_lock *objp) { if (!xdr_string(xdrs, &objp->caller_name, MAXNAMELEN)) return (FALSE); if (!xdr_netobj(xdrs, &objp->fh)) return (FALSE); if (!xdr_netobj(xdrs, &objp->oh)) return (FALSE); if (!xdr_u_int32_t(xdrs, &objp->svid)) return (FALSE); if (!xdr_u_int64_t(xdrs, &objp->l_offset)) return (FALSE); if (!xdr_u_int64_t(xdrs, &objp->l_len)) return (FALSE); return (TRUE); }
bool_t xdr_uvfs_direntry(XDR *xdrs, uvfs_direntry *objp) { register int32_t *buf; if (!xdr_u_int64_t(xdrs, &objp->fileid)) { return (FALSE); } if (!xdr_u_int64_t(xdrs, &objp->cookie)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->type)) { return (FALSE); } if (!xdr_uvfs_filename(xdrs, &objp->name)) { return (FALSE); } return (TRUE); }
/* * XDR a reply message */ bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg) { enum msg_type *prm_direction; enum reply_stat *prp_stat; assert(xdrs != NULL); assert(rmsg != NULL); prm_direction = &rmsg->rm_direction; prp_stat = &rmsg->rm_reply.rp_stat; if ( xdr_u_int32_t(xdrs, &(rmsg->rm_xid)) && xdr_enum(xdrs, (enum_t *) prm_direction) && (rmsg->rm_direction == REPLY) ) return (xdr_union(xdrs, (enum_t *) prp_stat, (caddr_t)(void *)&(rmsg->rm_reply.ru), reply_dscrm, NULL_xdrproc_t)); return (FALSE); }
bool_t xdr_uvfs_writeargs(XDR *xdrs, uvfs_writeargs *objp) { register int32_t *buf; if (!xdr_uvfs_fh(xdrs, &objp->file)) { return (FALSE); } if (!xdr_u_int64_t(xdrs, &objp->offset)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->count)) { return (FALSE); } if (!xdr_stable_how(xdrs, &objp->stable)) { return (FALSE); } if (!xdr_bytes(xdrs, (char **)&objp->data.val, (u_int *)&objp->data.len, ~0)) { return (FALSE); } return (TRUE); }
bool_t xdr_rpcbs_rmtcalllist(XDR *xdrs, rpcbs_rmtcalllist *objp) { int32_t *buf; struct rpcbs_rmtcalllist **pnext; if (xdrs->x_op == XDR_ENCODE) { buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); if (buf == NULL) { if (!xdr_u_int32_t(xdrs, &objp->prog)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->vers)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->proc)) { return (FALSE); } if (!xdr_int(xdrs, &objp->success)) { return (FALSE); } if (!xdr_int(xdrs, &objp->failure)) { return (FALSE); } if (!xdr_int(xdrs, &objp->indirect)) { return (FALSE); } } else { IXDR_PUT_U_INT32(buf, objp->prog); IXDR_PUT_U_INT32(buf, objp->vers); IXDR_PUT_U_INT32(buf, objp->proc); IXDR_PUT_INT32(buf, objp->success); IXDR_PUT_INT32(buf, objp->failure); IXDR_PUT_INT32(buf, objp->indirect); } if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { return (FALSE); } pnext = &objp->next; if (!xdr_pointer(xdrs, (char **) pnext, sizeof (rpcbs_rmtcalllist), (xdrproc_t)xdr_rpcbs_rmtcalllist)) { return (FALSE); } return (TRUE); } else if (xdrs->x_op == XDR_DECODE) { buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT); if (buf == NULL) { if (!xdr_u_int32_t(xdrs, &objp->prog)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->vers)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->proc)) { return (FALSE); } if (!xdr_int(xdrs, &objp->success)) { return (FALSE); } if (!xdr_int(xdrs, &objp->failure)) { return (FALSE); } if (!xdr_int(xdrs, &objp->indirect)) { return (FALSE); } } else { objp->prog = (rpcprog_t)IXDR_GET_U_INT32(buf); objp->vers = (rpcvers_t)IXDR_GET_U_INT32(buf); objp->proc = (rpcproc_t)IXDR_GET_U_INT32(buf); objp->success = (int)IXDR_GET_INT32(buf); objp->failure = (int)IXDR_GET_INT32(buf); objp->indirect = (int)IXDR_GET_INT32(buf); } if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { return (FALSE); } if (!xdr_pointer(xdrs, (char **) pnext, sizeof (rpcbs_rmtcalllist), (xdrproc_t)xdr_rpcbs_rmtcalllist)) { return (FALSE); } return (TRUE); } if (!xdr_u_int32_t(xdrs, &objp->prog)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->vers)) { return (FALSE); } if (!xdr_u_int32_t(xdrs, &objp->proc)) { return (FALSE); } if (!xdr_int(xdrs, &objp->success)) { return (FALSE); } if (!xdr_int(xdrs, &objp->failure)) { return (FALSE); } if (!xdr_int(xdrs, &objp->indirect)) { return (FALSE); } if (!xdr_string(xdrs, &objp->netid, (u_int)~0)) { return (FALSE); } if (!xdr_pointer(xdrs, (char **) pnext, sizeof (rpcbs_rmtcalllist), (xdrproc_t)xdr_rpcbs_rmtcalllist)) { return (FALSE); } return (TRUE); }