4284 (uint_t *)&objp->nfs_argop4_u.oprelease_lockowner.
4285 lock_owner.owner_len, NFS4_OPAQUE_LIMIT));
4286 case OP_ILLEGAL:
4287 return (TRUE);
4288 }
4289 return (FALSE);
4290 }
4291
4292 static bool_t
4293 xdr_cnfs_argop4_wrap(XDR *xdrs, nfs_argop4 *objp)
4294 {
4295 if (!xdr_int(xdrs, (int *)&objp->argop))
4296 return (FALSE);
4297
4298 return (xdr_nfs_argop4(xdrs, objp));
4299 }
4300
4301 static bool_t
4302 xdr_snfs_argop4(XDR *xdrs, nfs_argop4 *objp)
4303 {
4304 if (!xdr_int(xdrs, (int *)&objp->argop))
4305 return (FALSE);
4306
4307 switch (objp->argop) {
4308 case OP_PUTFH:
4309 return (xdr_decode_nfs_fh4(xdrs,
4310 &objp->nfs_argop4_u.opputfh.object));
4311 default:
4312 return (xdr_nfs_argop4(xdrs, objp));
4313 }
4314 }
4315
4316 /*
4317 * Client side encode only arg op processing
4318 */
4319 static bool_t
4320 xdr_cnfs_argop4(XDR *xdrs, nfs_argop4 *objp)
4321 {
4322 int len;
4323 int op;
4324 nfs4_sharedfh_t *sfh;
4325 mntinfo4_t *mi;
4326 rpc_inline_t *ptr;
4327
4328 ASSERT(xdrs->x_op == XDR_ENCODE);
4329
4330 /*
4331 * Special case the private pseudo ops
4332 */
4333 if (!(objp->argop & SUNW_PRIVATE_OP))
4745 case OP_SETCLIENTID_CONFIRM:
4746 return (xdr_int(xdrs,
4747 (int32_t *)&objp->nfs_resop4_u.opsetclientid_confirm.
4748 status));
4749 case OP_VERIFY:
4750 return (xdr_int(xdrs,
4751 (int32_t *)&objp->nfs_resop4_u.opverify.status));
4752 case OP_RELEASE_LOCKOWNER:
4753 return (xdr_int(xdrs,
4754 (int32_t *)&objp->nfs_resop4_u.oprelease_lockowner.status));
4755 case OP_ILLEGAL:
4756 return (xdr_int(xdrs,
4757 (int32_t *)&objp->nfs_resop4_u.opillegal.status));
4758 }
4759 return (FALSE);
4760 }
4761
4762 static bool_t
4763 xdr_snfs_resop4(XDR *xdrs, nfs_resop4 *objp)
4764 {
4765 if (!xdr_int(xdrs, (int *)&objp->resop))
4766 return (FALSE);
4767
4768 switch (objp->resop) {
4769 case OP_GETFH:
4770 if (!XDR_PUTINT32(xdrs,
4771 (int32_t *)&objp->nfs_resop4_u.opgetfh.status))
4772 return (FALSE);
4773 if (objp->nfs_resop4_u.opgetfh.status != NFS4_OK)
4774 return (TRUE);
4775 return (xdr_encode_nfs_fh4(xdrs,
4776 &objp->nfs_resop4_u.opgetfh.object));
4777 default:
4778 return (xdr_nfs_resop4(xdrs, objp));
4779 }
4780 }
4781
4782 static bool_t
4783 xdr_nfs_resop4_clnt(XDR *xdrs, nfs_resop4 *objp, nfs_argop4 *aobjp)
4784 {
4785 if (!xdr_int(xdrs, (int *)&objp->resop))
4786 return (FALSE);
4787 /*
4788 * These should be ordered by frequency of use
4789 */
4790 switch (objp->resop) {
4791 case OP_PUTFH:
4792 return (xdr_int(xdrs,
4793 (int32_t *)&objp->nfs_resop4_u.opputfh.status));
4794 case OP_GETATTR:
4795 if (!xdr_int(xdrs,
4796 (int32_t *)&objp->nfs_resop4_u.opgetattr.status))
4797 return (FALSE);
4798 if (objp->nfs_resop4_u.opgetattr.status != NFS4_OK)
4799 return (TRUE);
|
4284 (uint_t *)&objp->nfs_argop4_u.oprelease_lockowner.
4285 lock_owner.owner_len, NFS4_OPAQUE_LIMIT));
4286 case OP_ILLEGAL:
4287 return (TRUE);
4288 }
4289 return (FALSE);
4290 }
4291
4292 static bool_t
4293 xdr_cnfs_argop4_wrap(XDR *xdrs, nfs_argop4 *objp)
4294 {
4295 if (!xdr_int(xdrs, (int *)&objp->argop))
4296 return (FALSE);
4297
4298 return (xdr_nfs_argop4(xdrs, objp));
4299 }
4300
4301 static bool_t
4302 xdr_snfs_argop4(XDR *xdrs, nfs_argop4 *objp)
4303 {
4304 uint_t pos;
4305 bool_t ret;
4306
4307 if (xdrs->x_op == XDR_DECODE)
4308 pos = XDR_GETPOS(xdrs);
4309
4310 if (!xdr_int(xdrs, (int *)&objp->argop))
4311 return (FALSE);
4312
4313 switch (objp->argop) {
4314 case OP_PUTFH:
4315 ret = xdr_decode_nfs_fh4(xdrs,
4316 &objp->nfs_argop4_u.opputfh.object);
4317 break;
4318 default:
4319 ret = xdr_nfs_argop4(xdrs, objp);
4320 break;
4321 }
4322
4323 if (ret && xdrs->x_op == XDR_DECODE)
4324 objp->opsize = XDR_GETPOS(xdrs) - pos;
4325
4326 return (ret);
4327 }
4328
4329 /*
4330 * Client side encode only arg op processing
4331 */
4332 static bool_t
4333 xdr_cnfs_argop4(XDR *xdrs, nfs_argop4 *objp)
4334 {
4335 int len;
4336 int op;
4337 nfs4_sharedfh_t *sfh;
4338 mntinfo4_t *mi;
4339 rpc_inline_t *ptr;
4340
4341 ASSERT(xdrs->x_op == XDR_ENCODE);
4342
4343 /*
4344 * Special case the private pseudo ops
4345 */
4346 if (!(objp->argop & SUNW_PRIVATE_OP))
4758 case OP_SETCLIENTID_CONFIRM:
4759 return (xdr_int(xdrs,
4760 (int32_t *)&objp->nfs_resop4_u.opsetclientid_confirm.
4761 status));
4762 case OP_VERIFY:
4763 return (xdr_int(xdrs,
4764 (int32_t *)&objp->nfs_resop4_u.opverify.status));
4765 case OP_RELEASE_LOCKOWNER:
4766 return (xdr_int(xdrs,
4767 (int32_t *)&objp->nfs_resop4_u.oprelease_lockowner.status));
4768 case OP_ILLEGAL:
4769 return (xdr_int(xdrs,
4770 (int32_t *)&objp->nfs_resop4_u.opillegal.status));
4771 }
4772 return (FALSE);
4773 }
4774
4775 static bool_t
4776 xdr_snfs_resop4(XDR *xdrs, nfs_resop4 *objp)
4777 {
4778 uint_t pos;
4779 bool_t ret;
4780
4781 if (xdrs->x_op == XDR_ENCODE)
4782 pos = XDR_GETPOS(xdrs);
4783
4784 if (!xdr_int(xdrs, (int *)&objp->resop))
4785 return (FALSE);
4786
4787 switch (objp->resop) {
4788 case OP_GETFH:
4789 if (!XDR_PUTINT32(xdrs,
4790 (int32_t *)&objp->nfs_resop4_u.opgetfh.status))
4791 return (FALSE);
4792 if (objp->nfs_resop4_u.opgetfh.status != NFS4_OK)
4793 ret = TRUE;
4794 else
4795 ret = xdr_encode_nfs_fh4(xdrs,
4796 &objp->nfs_resop4_u.opgetfh.object);
4797 break;
4798 default:
4799 ret = xdr_nfs_resop4(xdrs, objp);
4800 break;
4801 }
4802
4803 if (ret && xdrs->x_op == XDR_ENCODE)
4804 objp->opsize = XDR_GETPOS(xdrs) - pos;
4805
4806 return (ret);
4807 }
4808
4809 static bool_t
4810 xdr_nfs_resop4_clnt(XDR *xdrs, nfs_resop4 *objp, nfs_argop4 *aobjp)
4811 {
4812 if (!xdr_int(xdrs, (int *)&objp->resop))
4813 return (FALSE);
4814 /*
4815 * These should be ordered by frequency of use
4816 */
4817 switch (objp->resop) {
4818 case OP_PUTFH:
4819 return (xdr_int(xdrs,
4820 (int32_t *)&objp->nfs_resop4_u.opputfh.status));
4821 case OP_GETATTR:
4822 if (!xdr_int(xdrs,
4823 (int32_t *)&objp->nfs_resop4_u.opgetattr.status))
4824 return (FALSE);
4825 if (objp->nfs_resop4_u.opgetattr.status != NFS4_OK)
4826 return (TRUE);
|