xref: /illumos-gate/usr/src/uts/common/fs/nfs/nfs4x_xdr.c (revision f44e1126)
1*f44e1126SVitaliy Gusev /*
2*f44e1126SVitaliy Gusev  * CDDL HEADER START
3*f44e1126SVitaliy Gusev  *
4*f44e1126SVitaliy Gusev  * The contents of this file are subject to the terms of the
5*f44e1126SVitaliy Gusev  * Common Development and Distribution License (the "License").
6*f44e1126SVitaliy Gusev  * You may not use this file except in compliance with the License.
7*f44e1126SVitaliy Gusev  *
8*f44e1126SVitaliy Gusev  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*f44e1126SVitaliy Gusev  * or http://www.opensolaris.org/os/licensing.
10*f44e1126SVitaliy Gusev  * See the License for the specific language governing permissions
11*f44e1126SVitaliy Gusev  * and limitations under the License.
12*f44e1126SVitaliy Gusev  *
13*f44e1126SVitaliy Gusev  * When distributing Covered Code, include this CDDL HEADER in each
14*f44e1126SVitaliy Gusev  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*f44e1126SVitaliy Gusev  * If applicable, add the following below this CDDL HEADER, with the
16*f44e1126SVitaliy Gusev  * fields enclosed by brackets "[]" replaced with your own identifying
17*f44e1126SVitaliy Gusev  * information: Portions Copyright [yyyy] [name of copyright owner]
18*f44e1126SVitaliy Gusev  *
19*f44e1126SVitaliy Gusev  * CDDL HEADER END
20*f44e1126SVitaliy Gusev  */
21*f44e1126SVitaliy Gusev /*
22*f44e1126SVitaliy Gusev  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23*f44e1126SVitaliy Gusev  * Use is subject to license terms.
24*f44e1126SVitaliy Gusev  * Copyright 2017 RackTop Systems.
25*f44e1126SVitaliy Gusev  */
26*f44e1126SVitaliy Gusev 
27*f44e1126SVitaliy Gusev /*
28*f44e1126SVitaliy Gusev  * This file contains the xdr for datatypes and operations that are
29*f44e1126SVitaliy Gusev  * specific to NFSv4 minor version 1 (i.e., datatypes that
30*f44e1126SVitaliy Gusev  * were either introduced or changed by the NFSv4.1 specification).
31*f44e1126SVitaliy Gusev  */
32*f44e1126SVitaliy Gusev 
33*f44e1126SVitaliy Gusev /*
34*f44e1126SVitaliy Gusev  * INSTRUCTIONS for updating to a new NFSv4.1:
35*f44e1126SVitaliy Gusev  *
36*f44e1126SVitaliy Gusev  *    **DO NOT** simply replace this file with code rpcgen creates
37*f44e1126SVitaliy Gusev  *    and then remove non-NFS41 code.  The file now contains the hand
38*f44e1126SVitaliy Gusev  *    coded xdr for the NFS4.1 attributes.  If you run rpcgen,
39*f44e1126SVitaliy Gusev  *    then those, and future changes, should be manually integrated.
40*f44e1126SVitaliy Gusev  */
41*f44e1126SVitaliy Gusev #include <sys/statvfs.h>
42*f44e1126SVitaliy Gusev #include <sys/sysmacros.h>
43*f44e1126SVitaliy Gusev #include <sys/sdt.h>
44*f44e1126SVitaliy Gusev #include <nfs/nfs4.h>
45*f44e1126SVitaliy Gusev #include <nfs/nfs4_attr.h>
46*f44e1126SVitaliy Gusev 
47*f44e1126SVitaliy Gusev #ifndef _KERNEL
48*f44e1126SVitaliy Gusev #include <stdlib.h>
49*f44e1126SVitaliy Gusev #endif /* !_KERNEL */
50*f44e1126SVitaliy Gusev 
51*f44e1126SVitaliy Gusev /* modified version */
52*f44e1126SVitaliy Gusev bool_t
xdr_verifier4(XDR * xdrs,verifier4 * objp)53*f44e1126SVitaliy Gusev xdr_verifier4(XDR *xdrs, verifier4 *objp)
54*f44e1126SVitaliy Gusev {
55*f44e1126SVitaliy Gusev 	if (!xdr_u_longlong_t(xdrs, (u_longlong_t *)objp))
56*f44e1126SVitaliy Gusev 		return (FALSE);
57*f44e1126SVitaliy Gusev 	return (TRUE);
58*f44e1126SVitaliy Gusev }
59*f44e1126SVitaliy Gusev 
60*f44e1126SVitaliy Gusev bool_t
xdr_sequenceid4(XDR * xdrs,sequenceid4 * objp)61*f44e1126SVitaliy Gusev xdr_sequenceid4(XDR *xdrs, sequenceid4 *objp)
62*f44e1126SVitaliy Gusev {
63*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
64*f44e1126SVitaliy Gusev 		return (FALSE);
65*f44e1126SVitaliy Gusev 	return (TRUE);
66*f44e1126SVitaliy Gusev }
67*f44e1126SVitaliy Gusev 
68*f44e1126SVitaliy Gusev bool_t
xdr_sessionid4(XDR * xdrs,sessionid4 objp)69*f44e1126SVitaliy Gusev xdr_sessionid4(XDR *xdrs, sessionid4 objp)
70*f44e1126SVitaliy Gusev {
71*f44e1126SVitaliy Gusev 	if (!xdr_opaque(xdrs, objp, NFS4_SESSIONID_SIZE))
72*f44e1126SVitaliy Gusev 		return (FALSE);
73*f44e1126SVitaliy Gusev 	return (TRUE);
74*f44e1126SVitaliy Gusev }
75*f44e1126SVitaliy Gusev 
76*f44e1126SVitaliy Gusev bool_t
xdr_slotid4(XDR * xdrs,slotid4 * objp)77*f44e1126SVitaliy Gusev xdr_slotid4(XDR *xdrs, slotid4 *objp)
78*f44e1126SVitaliy Gusev {
79*f44e1126SVitaliy Gusev 
80*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
81*f44e1126SVitaliy Gusev 		return (FALSE);
82*f44e1126SVitaliy Gusev 	return (TRUE);
83*f44e1126SVitaliy Gusev }
84*f44e1126SVitaliy Gusev 
85*f44e1126SVitaliy Gusev bool_t
xdr_change_policy4(XDR * xdrs,change_policy4 * objp)86*f44e1126SVitaliy Gusev xdr_change_policy4(XDR *xdrs, change_policy4 *objp)
87*f44e1126SVitaliy Gusev {
88*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->cp_major))
89*f44e1126SVitaliy Gusev 		return (FALSE);
90*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->cp_minor))
91*f44e1126SVitaliy Gusev 		return (FALSE);
92*f44e1126SVitaliy Gusev 	return (TRUE);
93*f44e1126SVitaliy Gusev }
94*f44e1126SVitaliy Gusev 
95*f44e1126SVitaliy Gusev bool_t
xdr_aclflag4(XDR * xdrs,aclflag4 * objp)96*f44e1126SVitaliy Gusev xdr_aclflag4(XDR *xdrs, aclflag4 *objp)
97*f44e1126SVitaliy Gusev {
98*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
99*f44e1126SVitaliy Gusev 		return (FALSE);
100*f44e1126SVitaliy Gusev 	return (TRUE);
101*f44e1126SVitaliy Gusev }
102*f44e1126SVitaliy Gusev 
103*f44e1126SVitaliy Gusev bool_t
xdr_nfsacl41(XDR * xdrs,nfsacl41 * objp)104*f44e1126SVitaliy Gusev xdr_nfsacl41(XDR *xdrs, nfsacl41 *objp)
105*f44e1126SVitaliy Gusev {
106*f44e1126SVitaliy Gusev 	if (!xdr_aclflag4(xdrs, &objp->na41_flag))
107*f44e1126SVitaliy Gusev 		return (FALSE);
108*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->na41_aces.na41_aces_val,
109*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->na41_aces.na41_aces_len, ~0, sizeof (nfsace4),
110*f44e1126SVitaliy Gusev 	    (xdrproc_t)xdr_nfsace4))
111*f44e1126SVitaliy Gusev 		return (FALSE);
112*f44e1126SVitaliy Gusev 	return (TRUE);
113*f44e1126SVitaliy Gusev }
114*f44e1126SVitaliy Gusev 
115*f44e1126SVitaliy Gusev bool_t
xdr_mode_masked4(XDR * xdrs,mode_masked4 * objp)116*f44e1126SVitaliy Gusev xdr_mode_masked4(XDR *xdrs, mode_masked4 *objp)
117*f44e1126SVitaliy Gusev {
118*f44e1126SVitaliy Gusev 	if (!xdr_mode4(xdrs, &objp->mm_value_to_set))
119*f44e1126SVitaliy Gusev 		return (FALSE);
120*f44e1126SVitaliy Gusev 	if (!xdr_mode4(xdrs, &objp->mm_mask_bits))
121*f44e1126SVitaliy Gusev 		return (FALSE);
122*f44e1126SVitaliy Gusev 	return (TRUE);
123*f44e1126SVitaliy Gusev }
124*f44e1126SVitaliy Gusev 
125*f44e1126SVitaliy Gusev bool_t
xdr_nfs_impl_id4(XDR * xdrs,nfs_impl_id4 * objp)126*f44e1126SVitaliy Gusev xdr_nfs_impl_id4(XDR *xdrs, nfs_impl_id4 *objp)
127*f44e1126SVitaliy Gusev {
128*f44e1126SVitaliy Gusev 	if (!xdr_utf8str_cis(xdrs, &objp->nii_domain))
129*f44e1126SVitaliy Gusev 		return (FALSE);
130*f44e1126SVitaliy Gusev 	if (!xdr_utf8str_cs(xdrs, &objp->nii_name))
131*f44e1126SVitaliy Gusev 		return (FALSE);
132*f44e1126SVitaliy Gusev 	if (!xdr_nfstime4(xdrs, &objp->nii_date))
133*f44e1126SVitaliy Gusev 		return (FALSE);
134*f44e1126SVitaliy Gusev 	return (TRUE);
135*f44e1126SVitaliy Gusev }
136*f44e1126SVitaliy Gusev 
137*f44e1126SVitaliy Gusev bool_t
xdr_layouttype4(XDR * xdrs,layouttype4 * objp)138*f44e1126SVitaliy Gusev xdr_layouttype4(XDR *xdrs, layouttype4 *objp)
139*f44e1126SVitaliy Gusev {
140*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
141*f44e1126SVitaliy Gusev 		return (FALSE);
142*f44e1126SVitaliy Gusev 	return (TRUE);
143*f44e1126SVitaliy Gusev }
144*f44e1126SVitaliy Gusev 
145*f44e1126SVitaliy Gusev bool_t
xdr_layout_content4(XDR * xdrs,layout_content4 * objp)146*f44e1126SVitaliy Gusev xdr_layout_content4(XDR *xdrs, layout_content4 *objp)
147*f44e1126SVitaliy Gusev {
148*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->loc_type))
149*f44e1126SVitaliy Gusev 		return (FALSE);
150*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->loc_body.loc_body_val,
151*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->loc_body.loc_body_len, ~0))
152*f44e1126SVitaliy Gusev 		return (FALSE);
153*f44e1126SVitaliy Gusev 	return (TRUE);
154*f44e1126SVitaliy Gusev }
155*f44e1126SVitaliy Gusev 
156*f44e1126SVitaliy Gusev bool_t
xdr_layoutiomode4(XDR * xdrs,layoutiomode4 * objp)157*f44e1126SVitaliy Gusev xdr_layoutiomode4(XDR *xdrs, layoutiomode4 *objp)
158*f44e1126SVitaliy Gusev {
159*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
160*f44e1126SVitaliy Gusev 		return (FALSE);
161*f44e1126SVitaliy Gusev 	return (TRUE);
162*f44e1126SVitaliy Gusev }
163*f44e1126SVitaliy Gusev 
164*f44e1126SVitaliy Gusev 
165*f44e1126SVitaliy Gusev bool_t
xdr_layout4(XDR * xdrs,layout4 * objp)166*f44e1126SVitaliy Gusev xdr_layout4(XDR *xdrs, layout4 *objp)
167*f44e1126SVitaliy Gusev {
168*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->lo_offset))
169*f44e1126SVitaliy Gusev 		return (FALSE);
170*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->lo_length))
171*f44e1126SVitaliy Gusev 		return (FALSE);
172*f44e1126SVitaliy Gusev 	if (!xdr_layoutiomode4(xdrs, &objp->lo_iomode))
173*f44e1126SVitaliy Gusev 		return (FALSE);
174*f44e1126SVitaliy Gusev 	if (!xdr_layout_content4(xdrs, &objp->lo_content))
175*f44e1126SVitaliy Gusev 		return (FALSE);
176*f44e1126SVitaliy Gusev 	return (TRUE);
177*f44e1126SVitaliy Gusev }
178*f44e1126SVitaliy Gusev 
179*f44e1126SVitaliy Gusev bool_t
xdr_deviceid4(XDR * xdrs,deviceid4 objp)180*f44e1126SVitaliy Gusev xdr_deviceid4(XDR *xdrs, deviceid4 objp)
181*f44e1126SVitaliy Gusev {
182*f44e1126SVitaliy Gusev 	if (!xdr_opaque(xdrs, objp, NFS4_DEVICEID4_SIZE))
183*f44e1126SVitaliy Gusev 		return (FALSE);
184*f44e1126SVitaliy Gusev 	return (TRUE);
185*f44e1126SVitaliy Gusev }
186*f44e1126SVitaliy Gusev 
187*f44e1126SVitaliy Gusev bool_t
xdr_device_addr4(XDR * xdrs,device_addr4 * objp)188*f44e1126SVitaliy Gusev xdr_device_addr4(XDR *xdrs, device_addr4 *objp)
189*f44e1126SVitaliy Gusev {
190*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->da_layout_type))
191*f44e1126SVitaliy Gusev 		return (FALSE);
192*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->da_addr_body.da_addr_body_val,
193*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->da_addr_body.da_addr_body_len, ~0))
194*f44e1126SVitaliy Gusev 		return (FALSE);
195*f44e1126SVitaliy Gusev 	return (TRUE);
196*f44e1126SVitaliy Gusev }
197*f44e1126SVitaliy Gusev 
198*f44e1126SVitaliy Gusev bool_t
xdr_layoutupdate4(XDR * xdrs,layoutupdate4 * objp)199*f44e1126SVitaliy Gusev xdr_layoutupdate4(XDR *xdrs, layoutupdate4 *objp)
200*f44e1126SVitaliy Gusev {
201*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->lou_type))
202*f44e1126SVitaliy Gusev 		return (FALSE);
203*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->lou_body.lou_body_val,
204*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->lou_body.lou_body_len, ~0))
205*f44e1126SVitaliy Gusev 		return (FALSE);
206*f44e1126SVitaliy Gusev 	return (TRUE);
207*f44e1126SVitaliy Gusev }
208*f44e1126SVitaliy Gusev 
209*f44e1126SVitaliy Gusev bool_t
xdr_layoutreturn_type4(XDR * xdrs,layoutreturn_type4 * objp)210*f44e1126SVitaliy Gusev xdr_layoutreturn_type4(XDR *xdrs, layoutreturn_type4 *objp)
211*f44e1126SVitaliy Gusev {
212*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
213*f44e1126SVitaliy Gusev 		return (FALSE);
214*f44e1126SVitaliy Gusev 	return (TRUE);
215*f44e1126SVitaliy Gusev }
216*f44e1126SVitaliy Gusev /* layouttype4 specific data */
217*f44e1126SVitaliy Gusev 
218*f44e1126SVitaliy Gusev bool_t
xdr_layoutreturn_file4(XDR * xdrs,layoutreturn_file4 * objp)219*f44e1126SVitaliy Gusev xdr_layoutreturn_file4(XDR *xdrs, layoutreturn_file4 *objp)
220*f44e1126SVitaliy Gusev {
221*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->lrf_offset))
222*f44e1126SVitaliy Gusev 		return (FALSE);
223*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->lrf_length))
224*f44e1126SVitaliy Gusev 		return (FALSE);
225*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->lrf_stateid))
226*f44e1126SVitaliy Gusev 		return (FALSE);
227*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->lrf_body.lrf_body_val,
228*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->lrf_body.lrf_body_len, ~0))
229*f44e1126SVitaliy Gusev 		return (FALSE);
230*f44e1126SVitaliy Gusev 	return (TRUE);
231*f44e1126SVitaliy Gusev }
232*f44e1126SVitaliy Gusev 
233*f44e1126SVitaliy Gusev bool_t
xdr_layoutreturn4(XDR * xdrs,layoutreturn4 * objp)234*f44e1126SVitaliy Gusev xdr_layoutreturn4(XDR *xdrs, layoutreturn4 *objp)
235*f44e1126SVitaliy Gusev {
236*f44e1126SVitaliy Gusev 	if (!xdr_layoutreturn_type4(xdrs, &objp->lr_returntype))
237*f44e1126SVitaliy Gusev 		return (FALSE);
238*f44e1126SVitaliy Gusev 	switch (objp->lr_returntype) {
239*f44e1126SVitaliy Gusev 	case LAYOUTRETURN4_FILE:
240*f44e1126SVitaliy Gusev 		if (!xdr_layoutreturn_file4(xdrs,
241*f44e1126SVitaliy Gusev 		    &objp->layoutreturn4_u.lr_layout))
242*f44e1126SVitaliy Gusev 			return (FALSE);
243*f44e1126SVitaliy Gusev 		break;
244*f44e1126SVitaliy Gusev 	}
245*f44e1126SVitaliy Gusev 	return (TRUE);
246*f44e1126SVitaliy Gusev }
247*f44e1126SVitaliy Gusev 
248*f44e1126SVitaliy Gusev 
249*f44e1126SVitaliy Gusev bool_t
xdr_fs4_status_type(XDR * xdrs,fs4_status_type * objp)250*f44e1126SVitaliy Gusev xdr_fs4_status_type(XDR *xdrs, fs4_status_type *objp)
251*f44e1126SVitaliy Gusev {
252*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
253*f44e1126SVitaliy Gusev 		return (FALSE);
254*f44e1126SVitaliy Gusev 	return (TRUE);
255*f44e1126SVitaliy Gusev }
256*f44e1126SVitaliy Gusev 
257*f44e1126SVitaliy Gusev bool_t
xdr_fs4_status(XDR * xdrs,fs4_status * objp)258*f44e1126SVitaliy Gusev xdr_fs4_status(XDR *xdrs, fs4_status *objp)
259*f44e1126SVitaliy Gusev {
260*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->fss_absent))
261*f44e1126SVitaliy Gusev 		return (FALSE);
262*f44e1126SVitaliy Gusev 	if (!xdr_fs4_status_type(xdrs, &objp->fss_type))
263*f44e1126SVitaliy Gusev 		return (FALSE);
264*f44e1126SVitaliy Gusev 	if (!xdr_utf8str_cs(xdrs, &objp->fss_source))
265*f44e1126SVitaliy Gusev 		return (FALSE);
266*f44e1126SVitaliy Gusev 	if (!xdr_utf8str_cs(xdrs, &objp->fss_current))
267*f44e1126SVitaliy Gusev 		return (FALSE);
268*f44e1126SVitaliy Gusev 	if (!xdr_int32_t(xdrs, &objp->fss_age))
269*f44e1126SVitaliy Gusev 		return (FALSE);
270*f44e1126SVitaliy Gusev 	if (!xdr_nfstime4(xdrs, &objp->fss_version))
271*f44e1126SVitaliy Gusev 		return (FALSE);
272*f44e1126SVitaliy Gusev 	return (TRUE);
273*f44e1126SVitaliy Gusev }
274*f44e1126SVitaliy Gusev 
275*f44e1126SVitaliy Gusev bool_t
xdr_threshold4_read_size(XDR * xdrs,threshold4_read_size * objp)276*f44e1126SVitaliy Gusev xdr_threshold4_read_size(XDR *xdrs, threshold4_read_size *objp)
277*f44e1126SVitaliy Gusev {
278*f44e1126SVitaliy Gusev 
279*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, objp))
280*f44e1126SVitaliy Gusev 		return (FALSE);
281*f44e1126SVitaliy Gusev 	return (TRUE);
282*f44e1126SVitaliy Gusev }
283*f44e1126SVitaliy Gusev 
284*f44e1126SVitaliy Gusev bool_t
xdr_threshold4_write_size(XDR * xdrs,threshold4_write_size * objp)285*f44e1126SVitaliy Gusev xdr_threshold4_write_size(XDR *xdrs, threshold4_write_size *objp)
286*f44e1126SVitaliy Gusev {
287*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, objp))
288*f44e1126SVitaliy Gusev 		return (FALSE);
289*f44e1126SVitaliy Gusev 	return (TRUE);
290*f44e1126SVitaliy Gusev }
291*f44e1126SVitaliy Gusev 
292*f44e1126SVitaliy Gusev bool_t
xdr_threshold4_read_iosize(XDR * xdrs,threshold4_read_iosize * objp)293*f44e1126SVitaliy Gusev xdr_threshold4_read_iosize(XDR *xdrs, threshold4_read_iosize *objp)
294*f44e1126SVitaliy Gusev {
295*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, objp))
296*f44e1126SVitaliy Gusev 		return (FALSE);
297*f44e1126SVitaliy Gusev 	return (TRUE);
298*f44e1126SVitaliy Gusev }
299*f44e1126SVitaliy Gusev 
300*f44e1126SVitaliy Gusev bool_t
xdr_threshold4_write_iosize(XDR * xdrs,threshold4_write_iosize * objp)301*f44e1126SVitaliy Gusev xdr_threshold4_write_iosize(XDR *xdrs, threshold4_write_iosize *objp)
302*f44e1126SVitaliy Gusev {
303*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, objp))
304*f44e1126SVitaliy Gusev 		return (FALSE);
305*f44e1126SVitaliy Gusev 	return (TRUE);
306*f44e1126SVitaliy Gusev }
307*f44e1126SVitaliy Gusev 
308*f44e1126SVitaliy Gusev bool_t
xdr_threshold_item4(XDR * xdrs,threshold_item4 * objp)309*f44e1126SVitaliy Gusev xdr_threshold_item4(XDR *xdrs, threshold_item4 *objp)
310*f44e1126SVitaliy Gusev {
311*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->thi_layout_type))
312*f44e1126SVitaliy Gusev 		return (FALSE);
313*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->thi_hintset))
314*f44e1126SVitaliy Gusev 		return (FALSE);
315*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->thi_hintlist.thi_hintlist_val,
316*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->thi_hintlist.thi_hintlist_len, ~0))
317*f44e1126SVitaliy Gusev 		return (FALSE);
318*f44e1126SVitaliy Gusev 	return (TRUE);
319*f44e1126SVitaliy Gusev }
320*f44e1126SVitaliy Gusev 
321*f44e1126SVitaliy Gusev bool_t
xdr_mdsthreshold4(XDR * xdrs,mdsthreshold4 * objp)322*f44e1126SVitaliy Gusev xdr_mdsthreshold4(XDR *xdrs, mdsthreshold4 *objp)
323*f44e1126SVitaliy Gusev {
324*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->mth_hints.mth_hints_val,
325*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->mth_hints.mth_hints_len, ~0,
326*f44e1126SVitaliy Gusev 	    sizeof (threshold_item4), (xdrproc_t)xdr_threshold_item4))
327*f44e1126SVitaliy Gusev 		return (FALSE);
328*f44e1126SVitaliy Gusev 	return (TRUE);
329*f44e1126SVitaliy Gusev }
330*f44e1126SVitaliy Gusev 
331*f44e1126SVitaliy Gusev bool_t
xdr_retention_get4(XDR * xdrs,retention_get4 * objp)332*f44e1126SVitaliy Gusev xdr_retention_get4(XDR *xdrs, retention_get4 *objp)
333*f44e1126SVitaliy Gusev {
334*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->rg_duration))
335*f44e1126SVitaliy Gusev 		return (FALSE);
336*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->rg_begin_time.rg_begin_time_val,
337*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->rg_begin_time.rg_begin_time_len, 1,
338*f44e1126SVitaliy Gusev 	    sizeof (nfstime4), (xdrproc_t)xdr_nfstime4))
339*f44e1126SVitaliy Gusev 		return (FALSE);
340*f44e1126SVitaliy Gusev 	return (TRUE);
341*f44e1126SVitaliy Gusev }
342*f44e1126SVitaliy Gusev 
343*f44e1126SVitaliy Gusev bool_t
xdr_retention_set4(XDR * xdrs,retention_set4 * objp)344*f44e1126SVitaliy Gusev xdr_retention_set4(XDR *xdrs, retention_set4 *objp)
345*f44e1126SVitaliy Gusev {
346*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->rs_enable))
347*f44e1126SVitaliy Gusev 		return (FALSE);
348*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->rs_duration.rs_duration_val,
349*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->rs_duration.rs_duration_len, 1, sizeof (uint64_t),
350*f44e1126SVitaliy Gusev 	    (xdrproc_t)xdr_uint64_t))
351*f44e1126SVitaliy Gusev 		return (FALSE);
352*f44e1126SVitaliy Gusev 	return (TRUE);
353*f44e1126SVitaliy Gusev }
354*f44e1126SVitaliy Gusev 
355*f44e1126SVitaliy Gusev bool_t
xdr_fs_charset_cap4(XDR * xdrs,fs_charset_cap4 * objp)356*f44e1126SVitaliy Gusev xdr_fs_charset_cap4(XDR *xdrs, fs_charset_cap4 *objp)
357*f44e1126SVitaliy Gusev {
358*f44e1126SVitaliy Gusev 
359*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
360*f44e1126SVitaliy Gusev 		return (FALSE);
361*f44e1126SVitaliy Gusev 	return (TRUE);
362*f44e1126SVitaliy Gusev }
363*f44e1126SVitaliy Gusev 
364*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_mode_set_masked(XDR * xdrs,fattr4_mode_set_masked * objp)365*f44e1126SVitaliy Gusev xdr_fattr4_mode_set_masked(XDR *xdrs, fattr4_mode_set_masked *objp)
366*f44e1126SVitaliy Gusev {
367*f44e1126SVitaliy Gusev 	if (!xdr_mode_masked4(xdrs, objp))
368*f44e1126SVitaliy Gusev 		return (FALSE);
369*f44e1126SVitaliy Gusev 	return (TRUE);
370*f44e1126SVitaliy Gusev }
371*f44e1126SVitaliy Gusev 
372*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_dir_notif_delay(XDR * xdrs,fattr4_dir_notif_delay * objp)373*f44e1126SVitaliy Gusev xdr_fattr4_dir_notif_delay(XDR *xdrs, fattr4_dir_notif_delay *objp)
374*f44e1126SVitaliy Gusev {
375*f44e1126SVitaliy Gusev 
376*f44e1126SVitaliy Gusev 	if (!xdr_nfstime4(xdrs, objp))
377*f44e1126SVitaliy Gusev 		return (FALSE);
378*f44e1126SVitaliy Gusev 	return (TRUE);
379*f44e1126SVitaliy Gusev }
380*f44e1126SVitaliy Gusev 
381*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_dirent_notif_delay(XDR * xdrs,fattr4_dirent_notif_delay * objp)382*f44e1126SVitaliy Gusev xdr_fattr4_dirent_notif_delay(XDR *xdrs, fattr4_dirent_notif_delay *objp)
383*f44e1126SVitaliy Gusev {
384*f44e1126SVitaliy Gusev 	if (!xdr_nfstime4(xdrs, objp))
385*f44e1126SVitaliy Gusev 		return (FALSE);
386*f44e1126SVitaliy Gusev 	return (TRUE);
387*f44e1126SVitaliy Gusev }
388*f44e1126SVitaliy Gusev 
389*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_fs_layout_types(XDR * xdrs,fattr4_fs_layout_types * objp)390*f44e1126SVitaliy Gusev xdr_fattr4_fs_layout_types(XDR *xdrs, fattr4_fs_layout_types *objp)
391*f44e1126SVitaliy Gusev {
392*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->fattr4_fs_layout_types_val,
393*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->fattr4_fs_layout_types_len, ~0,
394*f44e1126SVitaliy Gusev 	    sizeof (layouttype4), (xdrproc_t)xdr_layouttype4))
395*f44e1126SVitaliy Gusev 		return (FALSE);
396*f44e1126SVitaliy Gusev 	return (TRUE);
397*f44e1126SVitaliy Gusev }
398*f44e1126SVitaliy Gusev 
399*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_fs_status(XDR * xdrs,fattr4_fs_status * objp)400*f44e1126SVitaliy Gusev xdr_fattr4_fs_status(XDR *xdrs, fattr4_fs_status *objp)
401*f44e1126SVitaliy Gusev {
402*f44e1126SVitaliy Gusev 	if (!xdr_fs4_status(xdrs, objp))
403*f44e1126SVitaliy Gusev 		return (FALSE);
404*f44e1126SVitaliy Gusev 	return (TRUE);
405*f44e1126SVitaliy Gusev }
406*f44e1126SVitaliy Gusev 
407*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_fs_charset_cap4(XDR * xdrs,fattr4_fs_charset_cap * objp)408*f44e1126SVitaliy Gusev xdr_fattr4_fs_charset_cap4(XDR *xdrs, fattr4_fs_charset_cap *objp)
409*f44e1126SVitaliy Gusev {
410*f44e1126SVitaliy Gusev 	if (!xdr_fs_charset_cap4(xdrs, objp))
411*f44e1126SVitaliy Gusev 		return (FALSE);
412*f44e1126SVitaliy Gusev 	return (TRUE);
413*f44e1126SVitaliy Gusev }
414*f44e1126SVitaliy Gusev 
415*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_retention_get(XDR * xdrs,fattr4_retention_get * objp)416*f44e1126SVitaliy Gusev xdr_fattr4_retention_get(XDR *xdrs, fattr4_retention_get *objp)
417*f44e1126SVitaliy Gusev {
418*f44e1126SVitaliy Gusev 	if (!xdr_retention_get4(xdrs, objp))
419*f44e1126SVitaliy Gusev 		return (FALSE);
420*f44e1126SVitaliy Gusev 	return (TRUE);
421*f44e1126SVitaliy Gusev }
422*f44e1126SVitaliy Gusev 
423*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_retention_set(XDR * xdrs,fattr4_retention_set * objp)424*f44e1126SVitaliy Gusev xdr_fattr4_retention_set(XDR *xdrs, fattr4_retention_set *objp)
425*f44e1126SVitaliy Gusev {
426*f44e1126SVitaliy Gusev 	if (!xdr_retention_set4(xdrs, objp))
427*f44e1126SVitaliy Gusev 		return (FALSE);
428*f44e1126SVitaliy Gusev 	return (TRUE);
429*f44e1126SVitaliy Gusev }
430*f44e1126SVitaliy Gusev 
431*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_retentevt_get(XDR * xdrs,fattr4_retentevt_get * objp)432*f44e1126SVitaliy Gusev xdr_fattr4_retentevt_get(XDR *xdrs, fattr4_retentevt_get *objp)
433*f44e1126SVitaliy Gusev {
434*f44e1126SVitaliy Gusev 	if (!xdr_retention_get4(xdrs, objp))
435*f44e1126SVitaliy Gusev 		return (FALSE);
436*f44e1126SVitaliy Gusev 	return (TRUE);
437*f44e1126SVitaliy Gusev }
438*f44e1126SVitaliy Gusev 
439*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_retentevt_set(XDR * xdrs,fattr4_retentevt_set * objp)440*f44e1126SVitaliy Gusev xdr_fattr4_retentevt_set(XDR *xdrs, fattr4_retentevt_set *objp)
441*f44e1126SVitaliy Gusev {
442*f44e1126SVitaliy Gusev 	if (!xdr_retention_set4(xdrs, objp))
443*f44e1126SVitaliy Gusev 		return (FALSE);
444*f44e1126SVitaliy Gusev 	return (TRUE);
445*f44e1126SVitaliy Gusev }
446*f44e1126SVitaliy Gusev 
447*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_retention_hold(XDR * xdrs,fattr4_retention_hold * objp)448*f44e1126SVitaliy Gusev xdr_fattr4_retention_hold(XDR *xdrs, fattr4_retention_hold *objp)
449*f44e1126SVitaliy Gusev {
450*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, objp))
451*f44e1126SVitaliy Gusev 		return (FALSE);
452*f44e1126SVitaliy Gusev 	return (TRUE);
453*f44e1126SVitaliy Gusev }
454*f44e1126SVitaliy Gusev 
455*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_dacl(XDR * xdrs,fattr4_dacl * objp)456*f44e1126SVitaliy Gusev xdr_fattr4_dacl(XDR *xdrs, fattr4_dacl *objp)
457*f44e1126SVitaliy Gusev {
458*f44e1126SVitaliy Gusev 	if (!xdr_nfsacl41(xdrs, objp))
459*f44e1126SVitaliy Gusev 		return (FALSE);
460*f44e1126SVitaliy Gusev 	return (TRUE);
461*f44e1126SVitaliy Gusev }
462*f44e1126SVitaliy Gusev 
463*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_sacl(XDR * xdrs,fattr4_sacl * objp)464*f44e1126SVitaliy Gusev xdr_fattr4_sacl(XDR *xdrs, fattr4_sacl *objp)
465*f44e1126SVitaliy Gusev {
466*f44e1126SVitaliy Gusev 	if (!xdr_nfsacl41(xdrs, objp))
467*f44e1126SVitaliy Gusev 		return (FALSE);
468*f44e1126SVitaliy Gusev 	return (TRUE);
469*f44e1126SVitaliy Gusev }
470*f44e1126SVitaliy Gusev 
471*f44e1126SVitaliy Gusev bool_t
xdr_client_owner4(XDR * xdrs,client_owner4 * objp)472*f44e1126SVitaliy Gusev xdr_client_owner4(XDR *xdrs, client_owner4 *objp)
473*f44e1126SVitaliy Gusev {
474*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->co_verifier))
475*f44e1126SVitaliy Gusev 		return (FALSE);
476*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->co_ownerid.co_ownerid_val,
477*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->co_ownerid.co_ownerid_len, NFS4_OPAQUE_LIMIT))
478*f44e1126SVitaliy Gusev 		return (FALSE);
479*f44e1126SVitaliy Gusev 	return (TRUE);
480*f44e1126SVitaliy Gusev }
481*f44e1126SVitaliy Gusev 
482*f44e1126SVitaliy Gusev bool_t
xdr_server_owner4(XDR * xdrs,server_owner4 * objp)483*f44e1126SVitaliy Gusev xdr_server_owner4(XDR *xdrs, server_owner4 *objp)
484*f44e1126SVitaliy Gusev {
485*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->so_minor_id))
486*f44e1126SVitaliy Gusev 		return (FALSE);
487*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->so_major_id.so_major_id_val,
488*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->so_major_id.so_major_id_len, NFS4_OPAQUE_LIMIT))
489*f44e1126SVitaliy Gusev 		return (FALSE);
490*f44e1126SVitaliy Gusev 	return (TRUE);
491*f44e1126SVitaliy Gusev }
492*f44e1126SVitaliy Gusev 
493*f44e1126SVitaliy Gusev bool_t
xdr_state_owner4(XDR * xdrs,state_owner4 * objp)494*f44e1126SVitaliy Gusev xdr_state_owner4(XDR *xdrs, state_owner4 *objp)
495*f44e1126SVitaliy Gusev {
496*f44e1126SVitaliy Gusev 	if (!xdr_clientid4(xdrs, &objp->clientid))
497*f44e1126SVitaliy Gusev 		return (FALSE);
498*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->owner.owner_val,
499*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->owner.owner_len, NFS4_OPAQUE_LIMIT))
500*f44e1126SVitaliy Gusev 		return (FALSE);
501*f44e1126SVitaliy Gusev 	return (TRUE);
502*f44e1126SVitaliy Gusev }
503*f44e1126SVitaliy Gusev 
504*f44e1126SVitaliy Gusev /* Input for computing subkeys */
505*f44e1126SVitaliy Gusev 
506*f44e1126SVitaliy Gusev bool_t
xdr_ssv_subkey4(XDR * xdrs,ssv_subkey4 * objp)507*f44e1126SVitaliy Gusev xdr_ssv_subkey4(XDR *xdrs, ssv_subkey4 *objp)
508*f44e1126SVitaliy Gusev {
509*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
510*f44e1126SVitaliy Gusev 		return (FALSE);
511*f44e1126SVitaliy Gusev 	return (TRUE);
512*f44e1126SVitaliy Gusev }
513*f44e1126SVitaliy Gusev 
514*f44e1126SVitaliy Gusev 
515*f44e1126SVitaliy Gusev /* Input for computing smt_hmac */
516*f44e1126SVitaliy Gusev 
517*f44e1126SVitaliy Gusev bool_t
xdr_ssv_mic_plain_tkn4(XDR * xdrs,ssv_mic_plain_tkn4 * objp)518*f44e1126SVitaliy Gusev xdr_ssv_mic_plain_tkn4(XDR *xdrs, ssv_mic_plain_tkn4 *objp)
519*f44e1126SVitaliy Gusev {
520*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->smpt_ssv_seq))
521*f44e1126SVitaliy Gusev 		return (FALSE);
522*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs,
523*f44e1126SVitaliy Gusev 	    (char **)&objp->smpt_orig_plain.smpt_orig_plain_val,
524*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->smpt_orig_plain.smpt_orig_plain_len, ~0))
525*f44e1126SVitaliy Gusev 		return (FALSE);
526*f44e1126SVitaliy Gusev 	return (TRUE);
527*f44e1126SVitaliy Gusev }
528*f44e1126SVitaliy Gusev 
529*f44e1126SVitaliy Gusev 
530*f44e1126SVitaliy Gusev /* SSV GSS PerMsgToken token */
531*f44e1126SVitaliy Gusev 
532*f44e1126SVitaliy Gusev bool_t
xdr_ssv_mic_tkn4(XDR * xdrs,ssv_mic_tkn4 * objp)533*f44e1126SVitaliy Gusev xdr_ssv_mic_tkn4(XDR *xdrs, ssv_mic_tkn4 *objp)
534*f44e1126SVitaliy Gusev {
535*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->smt_ssv_seq))
536*f44e1126SVitaliy Gusev 		return (FALSE);
537*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->smt_hmac.smt_hmac_val,
538*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->smt_hmac.smt_hmac_len, ~0))
539*f44e1126SVitaliy Gusev 		return (FALSE);
540*f44e1126SVitaliy Gusev 	return (TRUE);
541*f44e1126SVitaliy Gusev }
542*f44e1126SVitaliy Gusev 
543*f44e1126SVitaliy Gusev 
544*f44e1126SVitaliy Gusev /* Input for computing ssct_encr_data and ssct_hmac */
545*f44e1126SVitaliy Gusev 
546*f44e1126SVitaliy Gusev bool_t
xdr_ssv_seal_plain_tkn4(XDR * xdrs,ssv_seal_plain_tkn4 * objp)547*f44e1126SVitaliy Gusev xdr_ssv_seal_plain_tkn4(XDR *xdrs, ssv_seal_plain_tkn4 *objp)
548*f44e1126SVitaliy Gusev {
549*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs,
550*f44e1126SVitaliy Gusev 	    (char **)&objp->sspt_confounder.sspt_confounder_val,
551*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->sspt_confounder.sspt_confounder_len, ~0))
552*f44e1126SVitaliy Gusev 		return (FALSE);
553*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->sspt_ssv_seq))
554*f44e1126SVitaliy Gusev 		return (FALSE);
555*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs,
556*f44e1126SVitaliy Gusev 	    (char **)&objp->sspt_orig_plain.sspt_orig_plain_val,
557*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->sspt_orig_plain.sspt_orig_plain_len, ~0))
558*f44e1126SVitaliy Gusev 		return (FALSE);
559*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->sspt_pad.sspt_pad_val,
560*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->sspt_pad.sspt_pad_len, ~0))
561*f44e1126SVitaliy Gusev 		return (FALSE);
562*f44e1126SVitaliy Gusev 	return (TRUE);
563*f44e1126SVitaliy Gusev }
564*f44e1126SVitaliy Gusev 
565*f44e1126SVitaliy Gusev 
566*f44e1126SVitaliy Gusev /* SSV GSS SealedMessage token */
567*f44e1126SVitaliy Gusev 
568*f44e1126SVitaliy Gusev bool_t
xdr_ssv_seal_cipher_tkn4(XDR * xdrs,ssv_seal_cipher_tkn4 * objp)569*f44e1126SVitaliy Gusev xdr_ssv_seal_cipher_tkn4(XDR *xdrs, ssv_seal_cipher_tkn4 *objp)
570*f44e1126SVitaliy Gusev {
571*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->ssct_ssv_seq))
572*f44e1126SVitaliy Gusev 		return (FALSE);
573*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssct_iv.ssct_iv_val,
574*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssct_iv.ssct_iv_len, ~0))
575*f44e1126SVitaliy Gusev 		return (FALSE);
576*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssct_encr_data.ssct_encr_data_val,
577*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssct_encr_data.ssct_encr_data_len, ~0))
578*f44e1126SVitaliy Gusev 		return (FALSE);
579*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssct_hmac.ssct_hmac_val,
580*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssct_hmac.ssct_hmac_len, ~0))
581*f44e1126SVitaliy Gusev 		return (FALSE);
582*f44e1126SVitaliy Gusev 	return (TRUE);
583*f44e1126SVitaliy Gusev }
584*f44e1126SVitaliy Gusev 
585*f44e1126SVitaliy Gusev 
586*f44e1126SVitaliy Gusev bool_t
xdr_fs_locations_server4(XDR * xdrs,fs_locations_server4 * objp)587*f44e1126SVitaliy Gusev xdr_fs_locations_server4(XDR *xdrs, fs_locations_server4 *objp)
588*f44e1126SVitaliy Gusev {
589*f44e1126SVitaliy Gusev 	if (!xdr_int32_t(xdrs, &objp->fls_currency))
590*f44e1126SVitaliy Gusev 		return (FALSE);
591*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->fls_info.fls_info_val,
592*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->fls_info.fls_info_len, ~0))
593*f44e1126SVitaliy Gusev 		return (FALSE);
594*f44e1126SVitaliy Gusev 	if (!xdr_utf8str_cis(xdrs, &objp->fls_server))
595*f44e1126SVitaliy Gusev 		return (FALSE);
596*f44e1126SVitaliy Gusev 	return (TRUE);
597*f44e1126SVitaliy Gusev }
598*f44e1126SVitaliy Gusev 
599*f44e1126SVitaliy Gusev bool_t
xdr_fs_locations_item4(XDR * xdrs,fs_locations_item4 * objp)600*f44e1126SVitaliy Gusev xdr_fs_locations_item4(XDR *xdrs, fs_locations_item4 *objp)
601*f44e1126SVitaliy Gusev {
602*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->fli_entries.fli_entries_val,
603*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->fli_entries.fli_entries_len, ~0,
604*f44e1126SVitaliy Gusev 	    sizeof (fs_locations_server4), (xdrproc_t)xdr_fs_locations_server4))
605*f44e1126SVitaliy Gusev 		return (FALSE);
606*f44e1126SVitaliy Gusev 	if (!xdr_pathname4(xdrs, &objp->fli_rootpath))
607*f44e1126SVitaliy Gusev 		return (FALSE);
608*f44e1126SVitaliy Gusev 	return (TRUE);
609*f44e1126SVitaliy Gusev }
610*f44e1126SVitaliy Gusev 
611*f44e1126SVitaliy Gusev bool_t
xdr_fs_locations_info4(XDR * xdrs,fs_locations_info4 * objp)612*f44e1126SVitaliy Gusev xdr_fs_locations_info4(XDR *xdrs, fs_locations_info4 *objp)
613*f44e1126SVitaliy Gusev {
614*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->fli_flags))
615*f44e1126SVitaliy Gusev 		return (FALSE);
616*f44e1126SVitaliy Gusev 	if (!xdr_int32_t(xdrs, &objp->fli_valid_for))
617*f44e1126SVitaliy Gusev 		return (FALSE);
618*f44e1126SVitaliy Gusev 	if (!xdr_pathname4(xdrs, &objp->fli_fs_root))
619*f44e1126SVitaliy Gusev 		return (FALSE);
620*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->fli_items.fli_items_val,
621*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->fli_items.fli_items_len, ~0,
622*f44e1126SVitaliy Gusev 	    sizeof (fs_locations_item4), (xdrproc_t)xdr_fs_locations_item4))
623*f44e1126SVitaliy Gusev 		return (FALSE);
624*f44e1126SVitaliy Gusev 	return (TRUE);
625*f44e1126SVitaliy Gusev }
626*f44e1126SVitaliy Gusev 
627*f44e1126SVitaliy Gusev bool_t
xdr_fattr4_fs_locations_info(XDR * xdrs,fattr4_fs_locations_info * objp)628*f44e1126SVitaliy Gusev xdr_fattr4_fs_locations_info(XDR *xdrs, fattr4_fs_locations_info *objp)
629*f44e1126SVitaliy Gusev {
630*f44e1126SVitaliy Gusev 	if (!xdr_fs_locations_info4(xdrs, objp))
631*f44e1126SVitaliy Gusev 		return (FALSE);
632*f44e1126SVitaliy Gusev 	return (TRUE);
633*f44e1126SVitaliy Gusev }
634*f44e1126SVitaliy Gusev 
635*f44e1126SVitaliy Gusev bool_t
xdr_nfl_util4(XDR * xdrs,nfl_util4 * objp)636*f44e1126SVitaliy Gusev xdr_nfl_util4(XDR *xdrs, nfl_util4 *objp)
637*f44e1126SVitaliy Gusev {
638*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
639*f44e1126SVitaliy Gusev 		return (FALSE);
640*f44e1126SVitaliy Gusev 	return (TRUE);
641*f44e1126SVitaliy Gusev }
642*f44e1126SVitaliy Gusev 
643*f44e1126SVitaliy Gusev bool_t
xdr_filelayout_hint_care4(XDR * xdrs,filelayout_hint_care4 * objp)644*f44e1126SVitaliy Gusev xdr_filelayout_hint_care4(XDR *xdrs, filelayout_hint_care4 *objp)
645*f44e1126SVitaliy Gusev {
646*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
647*f44e1126SVitaliy Gusev 		return (FALSE);
648*f44e1126SVitaliy Gusev 	return (TRUE);
649*f44e1126SVitaliy Gusev }
650*f44e1126SVitaliy Gusev 
651*f44e1126SVitaliy Gusev 
652*f44e1126SVitaliy Gusev bool_t
xdr_multipath_list4(XDR * xdrs,multipath_list4 * objp)653*f44e1126SVitaliy Gusev xdr_multipath_list4(XDR *xdrs, multipath_list4 *objp)
654*f44e1126SVitaliy Gusev {
655*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->multipath_list4_val,
656*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->multipath_list4_len, ~0,
657*f44e1126SVitaliy Gusev 	    sizeof (netaddr4), (xdrproc_t)xdr_netaddr4))
658*f44e1126SVitaliy Gusev 		return (FALSE);
659*f44e1126SVitaliy Gusev 	return (TRUE);
660*f44e1126SVitaliy Gusev }
661*f44e1126SVitaliy Gusev 
662*f44e1126SVitaliy Gusev /* Encoded in the da_addr_body field of type device_addr4: */
663*f44e1126SVitaliy Gusev 
664*f44e1126SVitaliy Gusev bool_t
xdr_nfsv4_1_file_layout_ds_addr4(XDR * xdrs,nfsv4_1_file_layout_ds_addr4 * objp)665*f44e1126SVitaliy Gusev xdr_nfsv4_1_file_layout_ds_addr4(XDR *xdrs, nfsv4_1_file_layout_ds_addr4 *objp)
666*f44e1126SVitaliy Gusev {
667*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
668*f44e1126SVitaliy Gusev 	    (char **)&objp->nflda_stripe_indices.nflda_stripe_indices_val,
669*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nflda_stripe_indices.nflda_stripe_indices_len, ~0,
670*f44e1126SVitaliy Gusev 	    sizeof (uint32_t), (xdrproc_t)xdr_uint32_t))
671*f44e1126SVitaliy Gusev 		return (FALSE);
672*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
673*f44e1126SVitaliy Gusev 	    (char **)&objp->nflda_multipath_ds_list.nflda_multipath_ds_list_val,
674*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nflda_multipath_ds_list.
675*f44e1126SVitaliy Gusev 	    nflda_multipath_ds_list_len, ~0, sizeof (multipath_list4),
676*f44e1126SVitaliy Gusev 	    (xdrproc_t)xdr_multipath_list4))
677*f44e1126SVitaliy Gusev 		return (FALSE);
678*f44e1126SVitaliy Gusev 	return (TRUE);
679*f44e1126SVitaliy Gusev }
680*f44e1126SVitaliy Gusev 
681*f44e1126SVitaliy Gusev 
682*f44e1126SVitaliy Gusev /* Encoded in the loc_body field of type layout_content4: */
683*f44e1126SVitaliy Gusev 
684*f44e1126SVitaliy Gusev bool_t
xdr_nfsv4_1_file_layout4(XDR * xdrs,nfsv4_1_file_layout4 * objp)685*f44e1126SVitaliy Gusev xdr_nfsv4_1_file_layout4(XDR *xdrs, nfsv4_1_file_layout4 *objp)
686*f44e1126SVitaliy Gusev {
687*f44e1126SVitaliy Gusev 	if (!xdr_deviceid4(xdrs, objp->nfl_deviceid))
688*f44e1126SVitaliy Gusev 		return (FALSE);
689*f44e1126SVitaliy Gusev 	if (!xdr_nfl_util4(xdrs, &objp->nfl_util))
690*f44e1126SVitaliy Gusev 		return (FALSE);
691*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->nfl_first_stripe_index))
692*f44e1126SVitaliy Gusev 		return (FALSE);
693*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->nfl_pattern_offset))
694*f44e1126SVitaliy Gusev 		return (FALSE);
695*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->nfl_fh_list.nfl_fh_list_val,
696*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nfl_fh_list.nfl_fh_list_len, ~0,
697*f44e1126SVitaliy Gusev 	    sizeof (nfs_fh4), (xdrproc_t)xdr_nfs_fh4))
698*f44e1126SVitaliy Gusev 		return (FALSE);
699*f44e1126SVitaliy Gusev 	return (TRUE);
700*f44e1126SVitaliy Gusev }
701*f44e1126SVitaliy Gusev 
702*f44e1126SVitaliy Gusev /*
703*f44e1126SVitaliy Gusev  * Encoded in the lou_body field of type layoutupdate4:
704*f44e1126SVitaliy Gusev  *      Nothing. lou_body is a zero length array of octets.
705*f44e1126SVitaliy Gusev  */
706*f44e1126SVitaliy Gusev 
707*f44e1126SVitaliy Gusev 
708*f44e1126SVitaliy Gusev bool_t
xdr_creatverfattr(XDR * xdrs,creatverfattr * objp)709*f44e1126SVitaliy Gusev xdr_creatverfattr(XDR *xdrs, creatverfattr *objp)
710*f44e1126SVitaliy Gusev {
711*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->cva_verf))
712*f44e1126SVitaliy Gusev 		return (FALSE);
713*f44e1126SVitaliy Gusev 	if (!xdr_fattr4(xdrs, &objp->cva_attrs))
714*f44e1126SVitaliy Gusev 		return (FALSE);
715*f44e1126SVitaliy Gusev 	return (TRUE);
716*f44e1126SVitaliy Gusev }
717*f44e1126SVitaliy Gusev 
718*f44e1126SVitaliy Gusev bool_t
xdr_open_claim_delegate_cur4(XDR * xdrs,open_claim_delegate_cur4 * objp)719*f44e1126SVitaliy Gusev xdr_open_claim_delegate_cur4(XDR *xdrs, open_claim_delegate_cur4 *objp)
720*f44e1126SVitaliy Gusev {
721*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->delegate_stateid))
722*f44e1126SVitaliy Gusev 		return (FALSE);
723*f44e1126SVitaliy Gusev 	if (!xdr_component4(xdrs, &objp->file))
724*f44e1126SVitaliy Gusev 		return (FALSE);
725*f44e1126SVitaliy Gusev 	return (TRUE);
726*f44e1126SVitaliy Gusev }
727*f44e1126SVitaliy Gusev 
728*f44e1126SVitaliy Gusev bool_t
xdr_open_claim4(XDR * xdrs,open_claim4 * objp)729*f44e1126SVitaliy Gusev xdr_open_claim4(XDR *xdrs, open_claim4 *objp)
730*f44e1126SVitaliy Gusev {
731*f44e1126SVitaliy Gusev 	if (!xdr_open_claim_type4(xdrs, &objp->claim))
732*f44e1126SVitaliy Gusev 		return (FALSE);
733*f44e1126SVitaliy Gusev 	switch (objp->claim) {
734*f44e1126SVitaliy Gusev 	case CLAIM_NULL:
735*f44e1126SVitaliy Gusev 		if (!xdr_component4(xdrs, &objp->open_claim4_u.file))
736*f44e1126SVitaliy Gusev 			return (FALSE);
737*f44e1126SVitaliy Gusev 		break;
738*f44e1126SVitaliy Gusev 	case CLAIM_PREVIOUS:
739*f44e1126SVitaliy Gusev 		if (!xdr_open_delegation_type4(xdrs,
740*f44e1126SVitaliy Gusev 		    &objp->open_claim4_u.delegate_type))
741*f44e1126SVitaliy Gusev 			return (FALSE);
742*f44e1126SVitaliy Gusev 		break;
743*f44e1126SVitaliy Gusev 	case CLAIM_DELEGATE_CUR:
744*f44e1126SVitaliy Gusev 		if (!xdr_open_claim_delegate_cur4(xdrs,
745*f44e1126SVitaliy Gusev 		    &objp->open_claim4_u.delegate_cur_info))
746*f44e1126SVitaliy Gusev 			return (FALSE);
747*f44e1126SVitaliy Gusev 		break;
748*f44e1126SVitaliy Gusev 	case CLAIM_DELEGATE_PREV:
749*f44e1126SVitaliy Gusev 		if (!xdr_component4(xdrs,
750*f44e1126SVitaliy Gusev 		    &objp->open_claim4_u.file_delegate_prev))
751*f44e1126SVitaliy Gusev 			return (FALSE);
752*f44e1126SVitaliy Gusev 		break;
753*f44e1126SVitaliy Gusev 	case CLAIM_FH:
754*f44e1126SVitaliy Gusev 		break;
755*f44e1126SVitaliy Gusev 	case CLAIM_DELEG_PREV_FH:
756*f44e1126SVitaliy Gusev 		break;
757*f44e1126SVitaliy Gusev 	case CLAIM_DELEG_CUR_FH:
758*f44e1126SVitaliy Gusev 		if (!xdr_stateid4(xdrs,
759*f44e1126SVitaliy Gusev 		    &objp->open_claim4_u.oc_delegate_stateid))
760*f44e1126SVitaliy Gusev 			return (FALSE);
761*f44e1126SVitaliy Gusev 		break;
762*f44e1126SVitaliy Gusev 	default:
763*f44e1126SVitaliy Gusev 		return (FALSE);
764*f44e1126SVitaliy Gusev 	}
765*f44e1126SVitaliy Gusev 	return (TRUE);
766*f44e1126SVitaliy Gusev }
767*f44e1126SVitaliy Gusev 
768*f44e1126SVitaliy Gusev bool_t
xdr_why_no_delegation4(XDR * xdrs,why_no_delegation4 * objp)769*f44e1126SVitaliy Gusev xdr_why_no_delegation4(XDR *xdrs, why_no_delegation4 *objp)
770*f44e1126SVitaliy Gusev {
771*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
772*f44e1126SVitaliy Gusev 		return (FALSE);
773*f44e1126SVitaliy Gusev 	return (TRUE);
774*f44e1126SVitaliy Gusev }
775*f44e1126SVitaliy Gusev 
776*f44e1126SVitaliy Gusev bool_t
xdr_open_none_delegation4(XDR * xdrs,open_none_delegation4 * objp)777*f44e1126SVitaliy Gusev xdr_open_none_delegation4(XDR *xdrs, open_none_delegation4 *objp)
778*f44e1126SVitaliy Gusev {
779*f44e1126SVitaliy Gusev 	if (!xdr_why_no_delegation4(xdrs, &objp->ond_why))
780*f44e1126SVitaliy Gusev 		return (FALSE);
781*f44e1126SVitaliy Gusev 	switch (objp->ond_why) {
782*f44e1126SVitaliy Gusev 	case WND4_CONTENTION:
783*f44e1126SVitaliy Gusev 		if (!xdr_bool(xdrs,
784*f44e1126SVitaliy Gusev 		    &objp->open_none_delegation4_u.ond_server_will_push_deleg))
785*f44e1126SVitaliy Gusev 			return (FALSE);
786*f44e1126SVitaliy Gusev 		break;
787*f44e1126SVitaliy Gusev 	case WND4_RESOURCE:
788*f44e1126SVitaliy Gusev 		if (!xdr_bool(xdrs, &objp->open_none_delegation4_u.
789*f44e1126SVitaliy Gusev 		    ond_server_will_signal_avail))
790*f44e1126SVitaliy Gusev 			return (FALSE);
791*f44e1126SVitaliy Gusev 		break;
792*f44e1126SVitaliy Gusev 	}
793*f44e1126SVitaliy Gusev 	return (TRUE);
794*f44e1126SVitaliy Gusev }
795*f44e1126SVitaliy Gusev 
796*f44e1126SVitaliy Gusev bool_t
xdr_open_delegation4(XDR * xdrs,open_delegation4 * objp)797*f44e1126SVitaliy Gusev xdr_open_delegation4(XDR *xdrs, open_delegation4 *objp)
798*f44e1126SVitaliy Gusev {
799*f44e1126SVitaliy Gusev 	if (!xdr_open_delegation_type4(xdrs, &objp->delegation_type))
800*f44e1126SVitaliy Gusev 		return (FALSE);
801*f44e1126SVitaliy Gusev 	switch (objp->delegation_type) {
802*f44e1126SVitaliy Gusev 	case OPEN_DELEGATE_NONE:
803*f44e1126SVitaliy Gusev 		break;
804*f44e1126SVitaliy Gusev 	case OPEN_DELEGATE_READ:
805*f44e1126SVitaliy Gusev 		if (!xdr_open_read_delegation4(xdrs,
806*f44e1126SVitaliy Gusev 		    &objp->open_delegation4_u.read))
807*f44e1126SVitaliy Gusev 			return (FALSE);
808*f44e1126SVitaliy Gusev 		break;
809*f44e1126SVitaliy Gusev 	case OPEN_DELEGATE_WRITE:
810*f44e1126SVitaliy Gusev 		if (!xdr_open_write_delegation4(xdrs,
811*f44e1126SVitaliy Gusev 		    &objp->open_delegation4_u.write))
812*f44e1126SVitaliy Gusev 			return (FALSE);
813*f44e1126SVitaliy Gusev 		break;
814*f44e1126SVitaliy Gusev 	case OPEN_DELEGATE_NONE_EXT:
815*f44e1126SVitaliy Gusev 		if (!xdr_open_none_delegation4(xdrs,
816*f44e1126SVitaliy Gusev 		    &objp->open_delegation4_u.od_whynone))
817*f44e1126SVitaliy Gusev 			return (FALSE);
818*f44e1126SVitaliy Gusev 		break;
819*f44e1126SVitaliy Gusev 	default:
820*f44e1126SVitaliy Gusev 		return (FALSE);
821*f44e1126SVitaliy Gusev 	}
822*f44e1126SVitaliy Gusev 	return (TRUE);
823*f44e1126SVitaliy Gusev }
824*f44e1126SVitaliy Gusev 
825*f44e1126SVitaliy Gusev bool_t
xdr_gsshandle4_t(XDR * xdrs,gsshandle4_t * objp)826*f44e1126SVitaliy Gusev xdr_gsshandle4_t(XDR *xdrs, gsshandle4_t *objp)
827*f44e1126SVitaliy Gusev {
828*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->gsshandle4_t_val,
829*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->gsshandle4_t_len, ~0))
830*f44e1126SVitaliy Gusev 		return (FALSE);
831*f44e1126SVitaliy Gusev 	return (TRUE);
832*f44e1126SVitaliy Gusev }
833*f44e1126SVitaliy Gusev 
834*f44e1126SVitaliy Gusev bool_t
xdr_gss_cb_handles4(XDR * xdrs,gss_cb_handles4 * objp)835*f44e1126SVitaliy Gusev xdr_gss_cb_handles4(XDR *xdrs, gss_cb_handles4 *objp)
836*f44e1126SVitaliy Gusev {
837*f44e1126SVitaliy Gusev 	if (!xdr_rpc_gss_svc_t(xdrs, &objp->gcbp_service))
838*f44e1126SVitaliy Gusev 		return (FALSE);
839*f44e1126SVitaliy Gusev 	if (!xdr_gsshandle4_t(xdrs, &objp->gcbp_handle_from_server))
840*f44e1126SVitaliy Gusev 		return (FALSE);
841*f44e1126SVitaliy Gusev 	if (!xdr_gsshandle4_t(xdrs, &objp->gcbp_handle_from_client))
842*f44e1126SVitaliy Gusev 		return (FALSE);
843*f44e1126SVitaliy Gusev 	return (TRUE);
844*f44e1126SVitaliy Gusev }
845*f44e1126SVitaliy Gusev 
846*f44e1126SVitaliy Gusev bool_t
xdr_callback_sec_parms4(XDR * xdrs,callback_sec_parms4 * objp)847*f44e1126SVitaliy Gusev xdr_callback_sec_parms4(XDR *xdrs, callback_sec_parms4 *objp)
848*f44e1126SVitaliy Gusev {
849*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->cb_secflavor))
850*f44e1126SVitaliy Gusev 		return (FALSE);
851*f44e1126SVitaliy Gusev 	switch (objp->cb_secflavor) {
852*f44e1126SVitaliy Gusev 	case AUTH_NONE:
853*f44e1126SVitaliy Gusev 		break;
854*f44e1126SVitaliy Gusev 	case AUTH_SYS:
855*f44e1126SVitaliy Gusev 		if (!xdr_authsys_parms(xdrs,
856*f44e1126SVitaliy Gusev 		    &objp->callback_sec_parms4_u.cbsp_sys_cred))
857*f44e1126SVitaliy Gusev 			return (FALSE);
858*f44e1126SVitaliy Gusev 		break;
859*f44e1126SVitaliy Gusev 	case RPCSEC_GSS:
860*f44e1126SVitaliy Gusev 		if (!xdr_gss_cb_handles4(xdrs,
861*f44e1126SVitaliy Gusev 		    &objp->callback_sec_parms4_u.cbsp_gss_handles))
862*f44e1126SVitaliy Gusev 			return (FALSE);
863*f44e1126SVitaliy Gusev 		break;
864*f44e1126SVitaliy Gusev 	default:
865*f44e1126SVitaliy Gusev 		return (FALSE);
866*f44e1126SVitaliy Gusev 	}
867*f44e1126SVitaliy Gusev 	return (TRUE);
868*f44e1126SVitaliy Gusev }
869*f44e1126SVitaliy Gusev 
870*f44e1126SVitaliy Gusev bool_t
xdr_BACKCHANNEL_CTL4args(XDR * xdrs,BACKCHANNEL_CTL4args * objp)871*f44e1126SVitaliy Gusev xdr_BACKCHANNEL_CTL4args(XDR *xdrs, BACKCHANNEL_CTL4args *objp)
872*f44e1126SVitaliy Gusev {
873*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->bca_cb_program))
874*f44e1126SVitaliy Gusev 		return (FALSE);
875*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->bca_sec_parms.bca_sec_parms_val,
876*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->bca_sec_parms.bca_sec_parms_len, ~0,
877*f44e1126SVitaliy Gusev 	    sizeof (callback_sec_parms4), (xdrproc_t)xdr_callback_sec_parms4))
878*f44e1126SVitaliy Gusev 		return (FALSE);
879*f44e1126SVitaliy Gusev 	return (TRUE);
880*f44e1126SVitaliy Gusev }
881*f44e1126SVitaliy Gusev 
882*f44e1126SVitaliy Gusev bool_t
xdr_BACKCHANNEL_CTL4res(XDR * xdrs,BACKCHANNEL_CTL4res * objp)883*f44e1126SVitaliy Gusev xdr_BACKCHANNEL_CTL4res(XDR *xdrs, BACKCHANNEL_CTL4res *objp)
884*f44e1126SVitaliy Gusev {
885*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->bcr_status))
886*f44e1126SVitaliy Gusev 		return (FALSE);
887*f44e1126SVitaliy Gusev 	return (TRUE);
888*f44e1126SVitaliy Gusev }
889*f44e1126SVitaliy Gusev 
890*f44e1126SVitaliy Gusev bool_t
xdr_channel_dir_from_client4(XDR * xdrs,channel_dir_from_client4 * objp)891*f44e1126SVitaliy Gusev xdr_channel_dir_from_client4(XDR *xdrs, channel_dir_from_client4 *objp)
892*f44e1126SVitaliy Gusev {
893*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
894*f44e1126SVitaliy Gusev 		return (FALSE);
895*f44e1126SVitaliy Gusev 	return (TRUE);
896*f44e1126SVitaliy Gusev }
897*f44e1126SVitaliy Gusev 
898*f44e1126SVitaliy Gusev bool_t
xdr_BIND_CONN_TO_SESSION4args(XDR * xdrs,BIND_CONN_TO_SESSION4args * objp)899*f44e1126SVitaliy Gusev xdr_BIND_CONN_TO_SESSION4args(XDR *xdrs, BIND_CONN_TO_SESSION4args *objp)
900*f44e1126SVitaliy Gusev {
901*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->bctsa_sessid))
902*f44e1126SVitaliy Gusev 		return (FALSE);
903*f44e1126SVitaliy Gusev 	if (!xdr_channel_dir_from_client4(xdrs, &objp->bctsa_dir))
904*f44e1126SVitaliy Gusev 		return (FALSE);
905*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->bctsa_use_conn_in_rdma_mode))
906*f44e1126SVitaliy Gusev 		return (FALSE);
907*f44e1126SVitaliy Gusev 	return (TRUE);
908*f44e1126SVitaliy Gusev }
909*f44e1126SVitaliy Gusev 
910*f44e1126SVitaliy Gusev bool_t
xdr_channel_dir_from_server4(XDR * xdrs,channel_dir_from_server4 * objp)911*f44e1126SVitaliy Gusev xdr_channel_dir_from_server4(XDR *xdrs, channel_dir_from_server4 *objp)
912*f44e1126SVitaliy Gusev {
913*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
914*f44e1126SVitaliy Gusev 		return (FALSE);
915*f44e1126SVitaliy Gusev 	return (TRUE);
916*f44e1126SVitaliy Gusev }
917*f44e1126SVitaliy Gusev 
918*f44e1126SVitaliy Gusev bool_t
xdr_BIND_CONN_TO_SESSION4resok(XDR * xdrs,BIND_CONN_TO_SESSION4resok * objp)919*f44e1126SVitaliy Gusev xdr_BIND_CONN_TO_SESSION4resok(XDR *xdrs, BIND_CONN_TO_SESSION4resok *objp)
920*f44e1126SVitaliy Gusev {
921*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->bctsr_sessid))
922*f44e1126SVitaliy Gusev 		return (FALSE);
923*f44e1126SVitaliy Gusev 	if (!xdr_channel_dir_from_server4(xdrs, &objp->bctsr_dir))
924*f44e1126SVitaliy Gusev 		return (FALSE);
925*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->bctsr_use_conn_in_rdma_mode))
926*f44e1126SVitaliy Gusev 		return (FALSE);
927*f44e1126SVitaliy Gusev 	return (TRUE);
928*f44e1126SVitaliy Gusev }
929*f44e1126SVitaliy Gusev 
930*f44e1126SVitaliy Gusev bool_t
xdr_BIND_CONN_TO_SESSION4res(XDR * xdrs,BIND_CONN_TO_SESSION4res * objp)931*f44e1126SVitaliy Gusev xdr_BIND_CONN_TO_SESSION4res(XDR *xdrs, BIND_CONN_TO_SESSION4res *objp)
932*f44e1126SVitaliy Gusev {
933*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->bctsr_status))
934*f44e1126SVitaliy Gusev 		return (FALSE);
935*f44e1126SVitaliy Gusev 	switch (objp->bctsr_status) {
936*f44e1126SVitaliy Gusev 	case NFS4_OK:
937*f44e1126SVitaliy Gusev 		if (!xdr_BIND_CONN_TO_SESSION4resok(xdrs,
938*f44e1126SVitaliy Gusev 		    &objp->BIND_CONN_TO_SESSION4res_u.bctsr_resok4))
939*f44e1126SVitaliy Gusev 			return (FALSE);
940*f44e1126SVitaliy Gusev 		break;
941*f44e1126SVitaliy Gusev 	}
942*f44e1126SVitaliy Gusev 	return (TRUE);
943*f44e1126SVitaliy Gusev }
944*f44e1126SVitaliy Gusev 
945*f44e1126SVitaliy Gusev bool_t
xdr_state_protect_ops4(XDR * xdrs,state_protect_ops4 * objp)946*f44e1126SVitaliy Gusev xdr_state_protect_ops4(XDR *xdrs, state_protect_ops4 *objp)
947*f44e1126SVitaliy Gusev {
948*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->spo_must_enforce))
949*f44e1126SVitaliy Gusev 		return (FALSE);
950*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->spo_must_allow))
951*f44e1126SVitaliy Gusev 		return (FALSE);
952*f44e1126SVitaliy Gusev 	return (TRUE);
953*f44e1126SVitaliy Gusev }
954*f44e1126SVitaliy Gusev 
955*f44e1126SVitaliy Gusev bool_t
xdr_ssv_sp_parms4(XDR * xdrs,ssv_sp_parms4 * objp)956*f44e1126SVitaliy Gusev xdr_ssv_sp_parms4(XDR *xdrs, ssv_sp_parms4 *objp)
957*f44e1126SVitaliy Gusev {
958*f44e1126SVitaliy Gusev 	if (!xdr_state_protect_ops4(xdrs, &objp->ssp_ops))
959*f44e1126SVitaliy Gusev 		return (FALSE);
960*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->ssp_hash_algs.ssp_hash_algs_val,
961*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssp_hash_algs.ssp_hash_algs_len, ~0,
962*f44e1126SVitaliy Gusev 	    sizeof (sec_oid4), (xdrproc_t)xdr_sec_oid4))
963*f44e1126SVitaliy Gusev 		return (FALSE);
964*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->ssp_encr_algs.ssp_encr_algs_val,
965*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssp_encr_algs.ssp_encr_algs_len, ~0,
966*f44e1126SVitaliy Gusev 	    sizeof (sec_oid4), (xdrproc_t)xdr_sec_oid4))
967*f44e1126SVitaliy Gusev 		return (FALSE);
968*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->ssp_window))
969*f44e1126SVitaliy Gusev 		return (FALSE);
970*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->ssp_num_gss_handles))
971*f44e1126SVitaliy Gusev 		return (FALSE);
972*f44e1126SVitaliy Gusev 	return (TRUE);
973*f44e1126SVitaliy Gusev }
974*f44e1126SVitaliy Gusev 
975*f44e1126SVitaliy Gusev bool_t
xdr_state_protect_how4(XDR * xdrs,state_protect_how4 * objp)976*f44e1126SVitaliy Gusev xdr_state_protect_how4(XDR *xdrs, state_protect_how4 *objp)
977*f44e1126SVitaliy Gusev {
978*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
979*f44e1126SVitaliy Gusev 		return (FALSE);
980*f44e1126SVitaliy Gusev 	return (TRUE);
981*f44e1126SVitaliy Gusev }
982*f44e1126SVitaliy Gusev 
983*f44e1126SVitaliy Gusev bool_t
xdr_state_protect4_a(XDR * xdrs,state_protect4_a * objp)984*f44e1126SVitaliy Gusev xdr_state_protect4_a(XDR *xdrs, state_protect4_a *objp)
985*f44e1126SVitaliy Gusev {
986*f44e1126SVitaliy Gusev 	if (!xdr_state_protect_how4(xdrs, &objp->spa_how))
987*f44e1126SVitaliy Gusev 		return (FALSE);
988*f44e1126SVitaliy Gusev 	switch (objp->spa_how) {
989*f44e1126SVitaliy Gusev 	case SP4_NONE:
990*f44e1126SVitaliy Gusev 		break;
991*f44e1126SVitaliy Gusev 	case SP4_MACH_CRED:
992*f44e1126SVitaliy Gusev 		if (!xdr_state_protect_ops4(xdrs,
993*f44e1126SVitaliy Gusev 		    &objp->state_protect4_a_u.spa_mach_ops))
994*f44e1126SVitaliy Gusev 			return (FALSE);
995*f44e1126SVitaliy Gusev 		break;
996*f44e1126SVitaliy Gusev 	case SP4_SSV:
997*f44e1126SVitaliy Gusev 		if (!xdr_ssv_sp_parms4(xdrs,
998*f44e1126SVitaliy Gusev 		    &objp->state_protect4_a_u.spa_ssv_parms))
999*f44e1126SVitaliy Gusev 			return (FALSE);
1000*f44e1126SVitaliy Gusev 		break;
1001*f44e1126SVitaliy Gusev 	default:
1002*f44e1126SVitaliy Gusev 		return (FALSE);
1003*f44e1126SVitaliy Gusev 	}
1004*f44e1126SVitaliy Gusev 	return (TRUE);
1005*f44e1126SVitaliy Gusev }
1006*f44e1126SVitaliy Gusev 
1007*f44e1126SVitaliy Gusev bool_t
xdr_EXCHANGE_ID4args(XDR * xdrs,EXCHANGE_ID4args * objp)1008*f44e1126SVitaliy Gusev xdr_EXCHANGE_ID4args(XDR *xdrs, EXCHANGE_ID4args *objp)
1009*f44e1126SVitaliy Gusev {
1010*f44e1126SVitaliy Gusev 	if (!xdr_client_owner4(xdrs, &objp->eia_clientowner))
1011*f44e1126SVitaliy Gusev 		return (FALSE);
1012*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->eia_flags))
1013*f44e1126SVitaliy Gusev 		return (FALSE);
1014*f44e1126SVitaliy Gusev 	if (!xdr_state_protect4_a(xdrs, &objp->eia_state_protect))
1015*f44e1126SVitaliy Gusev 		return (FALSE);
1016*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
1017*f44e1126SVitaliy Gusev 	    (char **)&objp->eia_client_impl_id.eia_client_impl_id_val,
1018*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->eia_client_impl_id.eia_client_impl_id_len, 1,
1019*f44e1126SVitaliy Gusev 	    sizeof (nfs_impl_id4), (xdrproc_t)xdr_nfs_impl_id4))
1020*f44e1126SVitaliy Gusev 		return (FALSE);
1021*f44e1126SVitaliy Gusev 	return (TRUE);
1022*f44e1126SVitaliy Gusev }
1023*f44e1126SVitaliy Gusev 
1024*f44e1126SVitaliy Gusev bool_t
xdr_ssv_prot_info4(XDR * xdrs,ssv_prot_info4 * objp)1025*f44e1126SVitaliy Gusev xdr_ssv_prot_info4(XDR *xdrs, ssv_prot_info4 *objp)
1026*f44e1126SVitaliy Gusev {
1027*f44e1126SVitaliy Gusev 	if (!xdr_state_protect_ops4(xdrs, &objp->spi_ops))
1028*f44e1126SVitaliy Gusev 		return (FALSE);
1029*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->spi_hash_alg))
1030*f44e1126SVitaliy Gusev 		return (FALSE);
1031*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->spi_encr_alg))
1032*f44e1126SVitaliy Gusev 		return (FALSE);
1033*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->spi_ssv_len))
1034*f44e1126SVitaliy Gusev 		return (FALSE);
1035*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->spi_window))
1036*f44e1126SVitaliy Gusev 		return (FALSE);
1037*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->spi_handles.spi_handles_val,
1038*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->spi_handles.spi_handles_len, ~0,
1039*f44e1126SVitaliy Gusev 	    sizeof (gsshandle4_t), (xdrproc_t)xdr_gsshandle4_t))
1040*f44e1126SVitaliy Gusev 		return (FALSE);
1041*f44e1126SVitaliy Gusev 	return (TRUE);
1042*f44e1126SVitaliy Gusev }
1043*f44e1126SVitaliy Gusev 
1044*f44e1126SVitaliy Gusev bool_t
xdr_state_protect4_r(XDR * xdrs,state_protect4_r * objp)1045*f44e1126SVitaliy Gusev xdr_state_protect4_r(XDR *xdrs, state_protect4_r *objp)
1046*f44e1126SVitaliy Gusev {
1047*f44e1126SVitaliy Gusev 	if (!xdr_state_protect_how4(xdrs, &objp->spr_how))
1048*f44e1126SVitaliy Gusev 		return (FALSE);
1049*f44e1126SVitaliy Gusev 	switch (objp->spr_how) {
1050*f44e1126SVitaliy Gusev 	case SP4_NONE:
1051*f44e1126SVitaliy Gusev 		break;
1052*f44e1126SVitaliy Gusev 	case SP4_MACH_CRED:
1053*f44e1126SVitaliy Gusev 		if (!xdr_state_protect_ops4(xdrs,
1054*f44e1126SVitaliy Gusev 		    &objp->state_protect4_r_u.spr_mach_ops))
1055*f44e1126SVitaliy Gusev 			return (FALSE);
1056*f44e1126SVitaliy Gusev 		break;
1057*f44e1126SVitaliy Gusev 	case SP4_SSV:
1058*f44e1126SVitaliy Gusev 		if (!xdr_ssv_prot_info4(xdrs,
1059*f44e1126SVitaliy Gusev 		    &objp->state_protect4_r_u.spr_ssv_info))
1060*f44e1126SVitaliy Gusev 			return (FALSE);
1061*f44e1126SVitaliy Gusev 		break;
1062*f44e1126SVitaliy Gusev 	default:
1063*f44e1126SVitaliy Gusev 		return (FALSE);
1064*f44e1126SVitaliy Gusev 	}
1065*f44e1126SVitaliy Gusev 	return (TRUE);
1066*f44e1126SVitaliy Gusev }
1067*f44e1126SVitaliy Gusev 
1068*f44e1126SVitaliy Gusev bool_t
xdr_EXCHANGE_ID4resok(XDR * xdrs,EXCHANGE_ID4resok * objp)1069*f44e1126SVitaliy Gusev xdr_EXCHANGE_ID4resok(XDR *xdrs, EXCHANGE_ID4resok *objp)
1070*f44e1126SVitaliy Gusev {
1071*f44e1126SVitaliy Gusev 	if (!xdr_clientid4(xdrs, &objp->eir_clientid))
1072*f44e1126SVitaliy Gusev 		return (FALSE);
1073*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->eir_sequenceid))
1074*f44e1126SVitaliy Gusev 		return (FALSE);
1075*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->eir_flags))
1076*f44e1126SVitaliy Gusev 		return (FALSE);
1077*f44e1126SVitaliy Gusev 	if (!xdr_state_protect4_r(xdrs, &objp->eir_state_protect))
1078*f44e1126SVitaliy Gusev 		return (FALSE);
1079*f44e1126SVitaliy Gusev 	if (!xdr_server_owner4(xdrs, &objp->eir_server_owner))
1080*f44e1126SVitaliy Gusev 		return (FALSE);
1081*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs,
1082*f44e1126SVitaliy Gusev 	    (char **)&objp->eir_server_scope.eir_server_scope_val,
1083*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->eir_server_scope.eir_server_scope_len,
1084*f44e1126SVitaliy Gusev 	    NFS4_OPAQUE_LIMIT))
1085*f44e1126SVitaliy Gusev 		return (FALSE);
1086*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
1087*f44e1126SVitaliy Gusev 	    (char **)&objp->eir_server_impl_id.eir_server_impl_id_val,
1088*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->eir_server_impl_id.eir_server_impl_id_len, 1,
1089*f44e1126SVitaliy Gusev 	    sizeof (nfs_impl_id4), (xdrproc_t)xdr_nfs_impl_id4))
1090*f44e1126SVitaliy Gusev 		return (FALSE);
1091*f44e1126SVitaliy Gusev 	return (TRUE);
1092*f44e1126SVitaliy Gusev }
1093*f44e1126SVitaliy Gusev 
1094*f44e1126SVitaliy Gusev bool_t
xdr_EXCHANGE_ID4res(XDR * xdrs,EXCHANGE_ID4res * objp)1095*f44e1126SVitaliy Gusev xdr_EXCHANGE_ID4res(XDR *xdrs, EXCHANGE_ID4res *objp)
1096*f44e1126SVitaliy Gusev {
1097*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->eir_status))
1098*f44e1126SVitaliy Gusev 		return (FALSE);
1099*f44e1126SVitaliy Gusev 	switch (objp->eir_status) {
1100*f44e1126SVitaliy Gusev 	case NFS4_OK:
1101*f44e1126SVitaliy Gusev 		if (!xdr_EXCHANGE_ID4resok(xdrs,
1102*f44e1126SVitaliy Gusev 		    &objp->EXCHANGE_ID4res_u.eir_resok4))
1103*f44e1126SVitaliy Gusev 			return (FALSE);
1104*f44e1126SVitaliy Gusev 		break;
1105*f44e1126SVitaliy Gusev 	}
1106*f44e1126SVitaliy Gusev 	return (TRUE);
1107*f44e1126SVitaliy Gusev }
1108*f44e1126SVitaliy Gusev 
1109*f44e1126SVitaliy Gusev bool_t
xdr_channel_attrs4(XDR * xdrs,channel_attrs4 * objp)1110*f44e1126SVitaliy Gusev xdr_channel_attrs4(XDR *xdrs, channel_attrs4 *objp)
1111*f44e1126SVitaliy Gusev {
1112*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_headerpadsize))
1113*f44e1126SVitaliy Gusev 		return (FALSE);
1114*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_maxrequestsize))
1115*f44e1126SVitaliy Gusev 		return (FALSE);
1116*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_maxresponsesize))
1117*f44e1126SVitaliy Gusev 		return (FALSE);
1118*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_maxresponsesize_cached))
1119*f44e1126SVitaliy Gusev 		return (FALSE);
1120*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_maxoperations))
1121*f44e1126SVitaliy Gusev 		return (FALSE);
1122*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->ca_maxrequests))
1123*f44e1126SVitaliy Gusev 		return (FALSE);
1124*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->ca_rdma_ird.ca_rdma_ird_val,
1125*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ca_rdma_ird.ca_rdma_ird_len, 1,
1126*f44e1126SVitaliy Gusev 	    sizeof (uint32_t), (xdrproc_t)xdr_uint32_t))
1127*f44e1126SVitaliy Gusev 		return (FALSE);
1128*f44e1126SVitaliy Gusev 	return (TRUE);
1129*f44e1126SVitaliy Gusev }
1130*f44e1126SVitaliy Gusev 
1131*f44e1126SVitaliy Gusev bool_t
xdr_CREATE_SESSION4args(XDR * xdrs,CREATE_SESSION4args * objp)1132*f44e1126SVitaliy Gusev xdr_CREATE_SESSION4args(XDR *xdrs, CREATE_SESSION4args *objp)
1133*f44e1126SVitaliy Gusev {
1134*f44e1126SVitaliy Gusev 
1135*f44e1126SVitaliy Gusev 	if (!xdr_clientid4(xdrs, &objp->csa_clientid))
1136*f44e1126SVitaliy Gusev 		return (FALSE);
1137*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->csa_sequence))
1138*f44e1126SVitaliy Gusev 		return (FALSE);
1139*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->csa_flags))
1140*f44e1126SVitaliy Gusev 		return (FALSE);
1141*f44e1126SVitaliy Gusev 	if (!xdr_channel_attrs4(xdrs, &objp->csa_fore_chan_attrs))
1142*f44e1126SVitaliy Gusev 		return (FALSE);
1143*f44e1126SVitaliy Gusev 	if (!xdr_channel_attrs4(xdrs, &objp->csa_back_chan_attrs))
1144*f44e1126SVitaliy Gusev 		return (FALSE);
1145*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->csa_cb_program))
1146*f44e1126SVitaliy Gusev 		return (FALSE);
1147*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->csa_sec_parms.csa_sec_parms_val,
1148*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->csa_sec_parms.csa_sec_parms_len, ~0,
1149*f44e1126SVitaliy Gusev 	    sizeof (callback_sec_parms4), (xdrproc_t)xdr_callback_sec_parms4))
1150*f44e1126SVitaliy Gusev 		return (FALSE);
1151*f44e1126SVitaliy Gusev 	return (TRUE);
1152*f44e1126SVitaliy Gusev }
1153*f44e1126SVitaliy Gusev 
1154*f44e1126SVitaliy Gusev bool_t
xdr_CREATE_SESSION4resok(XDR * xdrs,CREATE_SESSION4resok * objp)1155*f44e1126SVitaliy Gusev xdr_CREATE_SESSION4resok(XDR *xdrs, CREATE_SESSION4resok *objp)
1156*f44e1126SVitaliy Gusev {
1157*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->csr_sessionid))
1158*f44e1126SVitaliy Gusev 		return (FALSE);
1159*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->csr_sequence))
1160*f44e1126SVitaliy Gusev 		return (FALSE);
1161*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->csr_flags))
1162*f44e1126SVitaliy Gusev 		return (FALSE);
1163*f44e1126SVitaliy Gusev 	if (!xdr_channel_attrs4(xdrs, &objp->csr_fore_chan_attrs))
1164*f44e1126SVitaliy Gusev 		return (FALSE);
1165*f44e1126SVitaliy Gusev 	if (!xdr_channel_attrs4(xdrs, &objp->csr_back_chan_attrs))
1166*f44e1126SVitaliy Gusev 		return (FALSE);
1167*f44e1126SVitaliy Gusev 	return (TRUE);
1168*f44e1126SVitaliy Gusev }
1169*f44e1126SVitaliy Gusev 
1170*f44e1126SVitaliy Gusev bool_t
xdr_CREATE_SESSION4res(XDR * xdrs,CREATE_SESSION4res * objp)1171*f44e1126SVitaliy Gusev xdr_CREATE_SESSION4res(XDR *xdrs, CREATE_SESSION4res *objp)
1172*f44e1126SVitaliy Gusev {
1173*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->csr_status))
1174*f44e1126SVitaliy Gusev 		return (FALSE);
1175*f44e1126SVitaliy Gusev 	switch (objp->csr_status) {
1176*f44e1126SVitaliy Gusev 	case NFS4_OK:
1177*f44e1126SVitaliy Gusev 		if (!xdr_CREATE_SESSION4resok(xdrs,
1178*f44e1126SVitaliy Gusev 		    &objp->CREATE_SESSION4res_u.csr_resok4))
1179*f44e1126SVitaliy Gusev 			return (FALSE);
1180*f44e1126SVitaliy Gusev 		break;
1181*f44e1126SVitaliy Gusev 	}
1182*f44e1126SVitaliy Gusev 	return (TRUE);
1183*f44e1126SVitaliy Gusev }
1184*f44e1126SVitaliy Gusev 
1185*f44e1126SVitaliy Gusev bool_t
xdr_DESTROY_SESSION4args(XDR * xdrs,DESTROY_SESSION4args * objp)1186*f44e1126SVitaliy Gusev xdr_DESTROY_SESSION4args(XDR *xdrs, DESTROY_SESSION4args *objp)
1187*f44e1126SVitaliy Gusev {
1188*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->dsa_sessionid))
1189*f44e1126SVitaliy Gusev 		return (FALSE);
1190*f44e1126SVitaliy Gusev 	return (TRUE);
1191*f44e1126SVitaliy Gusev }
1192*f44e1126SVitaliy Gusev 
1193*f44e1126SVitaliy Gusev bool_t
xdr_DESTROY_SESSION4res(XDR * xdrs,DESTROY_SESSION4res * objp)1194*f44e1126SVitaliy Gusev xdr_DESTROY_SESSION4res(XDR *xdrs, DESTROY_SESSION4res *objp)
1195*f44e1126SVitaliy Gusev {
1196*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->dsr_status))
1197*f44e1126SVitaliy Gusev 		return (FALSE);
1198*f44e1126SVitaliy Gusev 	return (TRUE);
1199*f44e1126SVitaliy Gusev }
1200*f44e1126SVitaliy Gusev 
1201*f44e1126SVitaliy Gusev bool_t
xdr_FREE_STATEID4args(XDR * xdrs,FREE_STATEID4args * objp)1202*f44e1126SVitaliy Gusev xdr_FREE_STATEID4args(XDR *xdrs, FREE_STATEID4args *objp)
1203*f44e1126SVitaliy Gusev {
1204*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->fsa_stateid))
1205*f44e1126SVitaliy Gusev 		return (FALSE);
1206*f44e1126SVitaliy Gusev 	return (TRUE);
1207*f44e1126SVitaliy Gusev }
1208*f44e1126SVitaliy Gusev 
1209*f44e1126SVitaliy Gusev bool_t
xdr_FREE_STATEID4res(XDR * xdrs,FREE_STATEID4res * objp)1210*f44e1126SVitaliy Gusev xdr_FREE_STATEID4res(XDR *xdrs, FREE_STATEID4res *objp)
1211*f44e1126SVitaliy Gusev {
1212*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->fsr_status))
1213*f44e1126SVitaliy Gusev 		return (FALSE);
1214*f44e1126SVitaliy Gusev 	return (TRUE);
1215*f44e1126SVitaliy Gusev }
1216*f44e1126SVitaliy Gusev 
1217*f44e1126SVitaliy Gusev bool_t
xdr_attr_notice4(XDR * xdrs,attr_notice4 * objp)1218*f44e1126SVitaliy Gusev xdr_attr_notice4(XDR *xdrs, attr_notice4 *objp)
1219*f44e1126SVitaliy Gusev {
1220*f44e1126SVitaliy Gusev 	if (!xdr_nfstime4(xdrs, objp))
1221*f44e1126SVitaliy Gusev 		return (FALSE);
1222*f44e1126SVitaliy Gusev 	return (TRUE);
1223*f44e1126SVitaliy Gusev }
1224*f44e1126SVitaliy Gusev 
1225*f44e1126SVitaliy Gusev bool_t
xdr_GET_DIR_DELEGATION4args(XDR * xdrs,GET_DIR_DELEGATION4args * objp)1226*f44e1126SVitaliy Gusev xdr_GET_DIR_DELEGATION4args(XDR *xdrs, GET_DIR_DELEGATION4args *objp)
1227*f44e1126SVitaliy Gusev {
1228*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->gdda_signal_deleg_avail))
1229*f44e1126SVitaliy Gusev 		return (FALSE);
1230*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gdda_notification_types))
1231*f44e1126SVitaliy Gusev 		return (FALSE);
1232*f44e1126SVitaliy Gusev 	if (!xdr_attr_notice4(xdrs, &objp->gdda_child_attr_delay))
1233*f44e1126SVitaliy Gusev 		return (FALSE);
1234*f44e1126SVitaliy Gusev 	if (!xdr_attr_notice4(xdrs, &objp->gdda_dir_attr_delay))
1235*f44e1126SVitaliy Gusev 		return (FALSE);
1236*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gdda_child_attributes))
1237*f44e1126SVitaliy Gusev 		return (FALSE);
1238*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gdda_dir_attributes))
1239*f44e1126SVitaliy Gusev 		return (FALSE);
1240*f44e1126SVitaliy Gusev 	return (TRUE);
1241*f44e1126SVitaliy Gusev }
1242*f44e1126SVitaliy Gusev 
1243*f44e1126SVitaliy Gusev bool_t
xdr_GET_DIR_DELEGATION4resok(XDR * xdrs,GET_DIR_DELEGATION4resok * objp)1244*f44e1126SVitaliy Gusev xdr_GET_DIR_DELEGATION4resok(XDR *xdrs, GET_DIR_DELEGATION4resok *objp)
1245*f44e1126SVitaliy Gusev {
1246*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->gddr_cookieverf))
1247*f44e1126SVitaliy Gusev 		return (FALSE);
1248*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->gddr_stateid))
1249*f44e1126SVitaliy Gusev 		return (FALSE);
1250*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gddr_notification))
1251*f44e1126SVitaliy Gusev 		return (FALSE);
1252*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gddr_child_attributes))
1253*f44e1126SVitaliy Gusev 		return (FALSE);
1254*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->gddr_dir_attributes))
1255*f44e1126SVitaliy Gusev 		return (FALSE);
1256*f44e1126SVitaliy Gusev 	return (TRUE);
1257*f44e1126SVitaliy Gusev }
1258*f44e1126SVitaliy Gusev 
1259*f44e1126SVitaliy Gusev bool_t
xdr_gddrnf4_status(XDR * xdrs,gddrnf4_status * objp)1260*f44e1126SVitaliy Gusev xdr_gddrnf4_status(XDR *xdrs, gddrnf4_status *objp)
1261*f44e1126SVitaliy Gusev {
1262*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
1263*f44e1126SVitaliy Gusev 		return (FALSE);
1264*f44e1126SVitaliy Gusev 	return (TRUE);
1265*f44e1126SVitaliy Gusev }
1266*f44e1126SVitaliy Gusev 
1267*f44e1126SVitaliy Gusev bool_t
xdr_GET_DIR_DELEGATION4res_non_fatal(XDR * xdrs,GET_DIR_DELEGATION4res_non_fatal * objp)1268*f44e1126SVitaliy Gusev xdr_GET_DIR_DELEGATION4res_non_fatal(XDR *xdrs,
1269*f44e1126SVitaliy Gusev     GET_DIR_DELEGATION4res_non_fatal *objp)
1270*f44e1126SVitaliy Gusev {
1271*f44e1126SVitaliy Gusev 	if (!xdr_gddrnf4_status(xdrs, &objp->gddrnf_status))
1272*f44e1126SVitaliy Gusev 		return (FALSE);
1273*f44e1126SVitaliy Gusev 	switch (objp->gddrnf_status) {
1274*f44e1126SVitaliy Gusev 	case GDD4_OK:
1275*f44e1126SVitaliy Gusev 		if (!xdr_GET_DIR_DELEGATION4resok(xdrs,
1276*f44e1126SVitaliy Gusev 		    &objp->GET_DIR_DELEGATION4res_non_fatal_u.gddrnf_resok4))
1277*f44e1126SVitaliy Gusev 			return (FALSE);
1278*f44e1126SVitaliy Gusev 		break;
1279*f44e1126SVitaliy Gusev 	case GDD4_UNAVAIL:
1280*f44e1126SVitaliy Gusev 		if (!xdr_bool(xdrs, &objp->GET_DIR_DELEGATION4res_non_fatal_u.
1281*f44e1126SVitaliy Gusev 		    gddrnf_will_signal_deleg_avail))
1282*f44e1126SVitaliy Gusev 			return (FALSE);
1283*f44e1126SVitaliy Gusev 		break;
1284*f44e1126SVitaliy Gusev 	default:
1285*f44e1126SVitaliy Gusev 		return (FALSE);
1286*f44e1126SVitaliy Gusev 	}
1287*f44e1126SVitaliy Gusev 	return (TRUE);
1288*f44e1126SVitaliy Gusev }
1289*f44e1126SVitaliy Gusev 
1290*f44e1126SVitaliy Gusev bool_t
xdr_GET_DIR_DELEGATION4res(XDR * xdrs,GET_DIR_DELEGATION4res * objp)1291*f44e1126SVitaliy Gusev xdr_GET_DIR_DELEGATION4res(XDR *xdrs, GET_DIR_DELEGATION4res *objp)
1292*f44e1126SVitaliy Gusev {
1293*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->gddr_status))
1294*f44e1126SVitaliy Gusev 		return (FALSE);
1295*f44e1126SVitaliy Gusev 	switch (objp->gddr_status) {
1296*f44e1126SVitaliy Gusev 	case NFS4_OK:
1297*f44e1126SVitaliy Gusev 		if (!xdr_GET_DIR_DELEGATION4res_non_fatal(xdrs,
1298*f44e1126SVitaliy Gusev 		    &objp->GET_DIR_DELEGATION4res_u.gddr_res_non_fatal4))
1299*f44e1126SVitaliy Gusev 			return (FALSE);
1300*f44e1126SVitaliy Gusev 		break;
1301*f44e1126SVitaliy Gusev 	}
1302*f44e1126SVitaliy Gusev 	return (TRUE);
1303*f44e1126SVitaliy Gusev }
1304*f44e1126SVitaliy Gusev 
1305*f44e1126SVitaliy Gusev /*
1306*f44e1126SVitaliy Gusev  * Special xdr function to encode single word bitmaps for
1307*f44e1126SVitaliy Gusev  * notification bitmaps which only need a single word.
1308*f44e1126SVitaliy Gusev  */
1309*f44e1126SVitaliy Gusev bool_t
xdr_bitmap4_notify(XDR * xdrs,bitmap4 * objp)1310*f44e1126SVitaliy Gusev xdr_bitmap4_notify(XDR *xdrs, bitmap4 *objp)
1311*f44e1126SVitaliy Gusev {
1312*f44e1126SVitaliy Gusev 	int32_t len = 1;
1313*f44e1126SVitaliy Gusev 
1314*f44e1126SVitaliy Gusev 	ASSERT(xdrs->x_op == XDR_ENCODE);
1315*f44e1126SVitaliy Gusev 	if (!XDR_PUTINT32(xdrs, &len))
1316*f44e1126SVitaliy Gusev 		return (FALSE);
1317*f44e1126SVitaliy Gusev #if defined(_BIG_ENDIAN)
1318*f44e1126SVitaliy Gusev 	return (XDR_PUTINT32(xdrs, (int32_t *)objp));
1319*f44e1126SVitaliy Gusev #elif defined(_LITTLE_ENDIAN)
1320*f44e1126SVitaliy Gusev 	return (XDR_PUTINT32(xdrs, (int32_t *)objp+1));
1321*f44e1126SVitaliy Gusev #endif
1322*f44e1126SVitaliy Gusev }
1323*f44e1126SVitaliy Gusev 
1324*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICEINFO4args(XDR * xdrs,GETDEVICEINFO4args * objp)1325*f44e1126SVitaliy Gusev xdr_GETDEVICEINFO4args(XDR *xdrs, GETDEVICEINFO4args *objp)
1326*f44e1126SVitaliy Gusev {
1327*f44e1126SVitaliy Gusev 	if (!xdr_deviceid4(xdrs, objp->gdia_device_id))
1328*f44e1126SVitaliy Gusev 		return (FALSE);
1329*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->gdia_layout_type))
1330*f44e1126SVitaliy Gusev 		return (FALSE);
1331*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->gdia_maxcount))
1332*f44e1126SVitaliy Gusev 		return (FALSE);
1333*f44e1126SVitaliy Gusev 	if (xdrs->x_op == XDR_ENCODE) {
1334*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4_notify(xdrs, &objp->gdia_notify_types))
1335*f44e1126SVitaliy Gusev 			return (FALSE);
1336*f44e1126SVitaliy Gusev 	} else
1337*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4(xdrs, &objp->gdia_notify_types))
1338*f44e1126SVitaliy Gusev 			return (FALSE);
1339*f44e1126SVitaliy Gusev 	return (TRUE);
1340*f44e1126SVitaliy Gusev }
1341*f44e1126SVitaliy Gusev 
1342*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICEINFO4resok(XDR * xdrs,GETDEVICEINFO4resok * objp)1343*f44e1126SVitaliy Gusev xdr_GETDEVICEINFO4resok(XDR *xdrs, GETDEVICEINFO4resok *objp)
1344*f44e1126SVitaliy Gusev {
1345*f44e1126SVitaliy Gusev 	if (!xdr_device_addr4(xdrs, &objp->gdir_device_addr))
1346*f44e1126SVitaliy Gusev 		return (FALSE);
1347*f44e1126SVitaliy Gusev 	if (xdrs->x_op == XDR_ENCODE) {
1348*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4_notify(xdrs, &objp->gdir_notification))
1349*f44e1126SVitaliy Gusev 			return (FALSE);
1350*f44e1126SVitaliy Gusev 	} else
1351*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4(xdrs, &objp->gdir_notification))
1352*f44e1126SVitaliy Gusev 			return (FALSE);
1353*f44e1126SVitaliy Gusev 	return (TRUE);
1354*f44e1126SVitaliy Gusev }
1355*f44e1126SVitaliy Gusev 
1356*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICEINFO4res(XDR * xdrs,GETDEVICEINFO4res * objp)1357*f44e1126SVitaliy Gusev xdr_GETDEVICEINFO4res(XDR *xdrs, GETDEVICEINFO4res *objp)
1358*f44e1126SVitaliy Gusev {
1359*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->gdir_status))
1360*f44e1126SVitaliy Gusev 		return (FALSE);
1361*f44e1126SVitaliy Gusev 	switch (objp->gdir_status) {
1362*f44e1126SVitaliy Gusev 	case NFS4_OK:
1363*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICEINFO4resok(xdrs,
1364*f44e1126SVitaliy Gusev 		    &objp->GETDEVICEINFO4res_u.gdir_resok4))
1365*f44e1126SVitaliy Gusev 			return (FALSE);
1366*f44e1126SVitaliy Gusev 		break;
1367*f44e1126SVitaliy Gusev 	case NFS4ERR_TOOSMALL:
1368*f44e1126SVitaliy Gusev 		if (!xdr_count4(xdrs, &objp->GETDEVICEINFO4res_u.gdir_mincount))
1369*f44e1126SVitaliy Gusev 			return (FALSE);
1370*f44e1126SVitaliy Gusev 		break;
1371*f44e1126SVitaliy Gusev 	}
1372*f44e1126SVitaliy Gusev 	return (TRUE);
1373*f44e1126SVitaliy Gusev }
1374*f44e1126SVitaliy Gusev 
1375*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICELIST4args(XDR * xdrs,GETDEVICELIST4args * objp)1376*f44e1126SVitaliy Gusev xdr_GETDEVICELIST4args(XDR *xdrs, GETDEVICELIST4args *objp)
1377*f44e1126SVitaliy Gusev {
1378*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->gdla_layout_type))
1379*f44e1126SVitaliy Gusev 		return (FALSE);
1380*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->gdla_maxdevices))
1381*f44e1126SVitaliy Gusev 		return (FALSE);
1382*f44e1126SVitaliy Gusev 	if (!xdr_nfs_cookie4(xdrs, &objp->gdla_cookie))
1383*f44e1126SVitaliy Gusev 		return (FALSE);
1384*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->gdla_cookieverf))
1385*f44e1126SVitaliy Gusev 		return (FALSE);
1386*f44e1126SVitaliy Gusev 	return (TRUE);
1387*f44e1126SVitaliy Gusev }
1388*f44e1126SVitaliy Gusev 
1389*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICELIST4resok(XDR * xdrs,GETDEVICELIST4resok * objp)1390*f44e1126SVitaliy Gusev xdr_GETDEVICELIST4resok(XDR *xdrs, GETDEVICELIST4resok *objp)
1391*f44e1126SVitaliy Gusev {
1392*f44e1126SVitaliy Gusev 	if (!xdr_nfs_cookie4(xdrs, &objp->gdlr_cookie))
1393*f44e1126SVitaliy Gusev 		return (FALSE);
1394*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->gdlr_cookieverf))
1395*f44e1126SVitaliy Gusev 		return (FALSE);
1396*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
1397*f44e1126SVitaliy Gusev 	    (char **)&objp->gdlr_deviceid_list.gdlr_deviceid_list_val,
1398*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->gdlr_deviceid_list.gdlr_deviceid_list_len,
1399*f44e1126SVitaliy Gusev 	    ~0, sizeof (deviceid4), (xdrproc_t)xdr_deviceid4))
1400*f44e1126SVitaliy Gusev 		return (FALSE);
1401*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->gdlr_eof))
1402*f44e1126SVitaliy Gusev 		return (FALSE);
1403*f44e1126SVitaliy Gusev 	return (TRUE);
1404*f44e1126SVitaliy Gusev }
1405*f44e1126SVitaliy Gusev 
1406*f44e1126SVitaliy Gusev bool_t
xdr_GETDEVICELIST4res(XDR * xdrs,GETDEVICELIST4res * objp)1407*f44e1126SVitaliy Gusev xdr_GETDEVICELIST4res(XDR *xdrs, GETDEVICELIST4res *objp)
1408*f44e1126SVitaliy Gusev {
1409*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->gdlr_status))
1410*f44e1126SVitaliy Gusev 		return (FALSE);
1411*f44e1126SVitaliy Gusev 	switch (objp->gdlr_status) {
1412*f44e1126SVitaliy Gusev 	case NFS4_OK:
1413*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICELIST4resok(xdrs,
1414*f44e1126SVitaliy Gusev 		    &objp->GETDEVICELIST4res_u.gdlr_resok4))
1415*f44e1126SVitaliy Gusev 			return (FALSE);
1416*f44e1126SVitaliy Gusev 		break;
1417*f44e1126SVitaliy Gusev 	default:
1418*f44e1126SVitaliy Gusev 		break;
1419*f44e1126SVitaliy Gusev 	}
1420*f44e1126SVitaliy Gusev 	return (TRUE);
1421*f44e1126SVitaliy Gusev }
1422*f44e1126SVitaliy Gusev 
1423*f44e1126SVitaliy Gusev bool_t
xdr_newtime4(XDR * xdrs,newtime4 * objp)1424*f44e1126SVitaliy Gusev xdr_newtime4(XDR *xdrs, newtime4 *objp)
1425*f44e1126SVitaliy Gusev {
1426*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->nt_timechanged))
1427*f44e1126SVitaliy Gusev 		return (FALSE);
1428*f44e1126SVitaliy Gusev 	switch (objp->nt_timechanged) {
1429*f44e1126SVitaliy Gusev 	case TRUE:
1430*f44e1126SVitaliy Gusev 		if (!xdr_nfstime4(xdrs, &objp->newtime4_u.nt_time))
1431*f44e1126SVitaliy Gusev 			return (FALSE);
1432*f44e1126SVitaliy Gusev 		break;
1433*f44e1126SVitaliy Gusev 	case FALSE:
1434*f44e1126SVitaliy Gusev 		break;
1435*f44e1126SVitaliy Gusev 	default:
1436*f44e1126SVitaliy Gusev 		return (FALSE);
1437*f44e1126SVitaliy Gusev 	}
1438*f44e1126SVitaliy Gusev 	return (TRUE);
1439*f44e1126SVitaliy Gusev }
1440*f44e1126SVitaliy Gusev 
1441*f44e1126SVitaliy Gusev bool_t
xdr_newoffset4(XDR * xdrs,newoffset4 * objp)1442*f44e1126SVitaliy Gusev xdr_newoffset4(XDR *xdrs, newoffset4 *objp)
1443*f44e1126SVitaliy Gusev {
1444*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->no_newoffset))
1445*f44e1126SVitaliy Gusev 		return (FALSE);
1446*f44e1126SVitaliy Gusev 	switch (objp->no_newoffset) {
1447*f44e1126SVitaliy Gusev 	case TRUE:
1448*f44e1126SVitaliy Gusev 		if (!xdr_offset4(xdrs, &objp->newoffset4_u.no_offset))
1449*f44e1126SVitaliy Gusev 			return (FALSE);
1450*f44e1126SVitaliy Gusev 		break;
1451*f44e1126SVitaliy Gusev 	case FALSE:
1452*f44e1126SVitaliy Gusev 		break;
1453*f44e1126SVitaliy Gusev 	default:
1454*f44e1126SVitaliy Gusev 		return (FALSE);
1455*f44e1126SVitaliy Gusev 	}
1456*f44e1126SVitaliy Gusev 	return (TRUE);
1457*f44e1126SVitaliy Gusev }
1458*f44e1126SVitaliy Gusev 
1459*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTCOMMIT4args(XDR * xdrs,LAYOUTCOMMIT4args * objp)1460*f44e1126SVitaliy Gusev xdr_LAYOUTCOMMIT4args(XDR *xdrs, LAYOUTCOMMIT4args *objp)
1461*f44e1126SVitaliy Gusev {
1462*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->loca_offset))
1463*f44e1126SVitaliy Gusev 		return (FALSE);
1464*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->loca_length))
1465*f44e1126SVitaliy Gusev 		return (FALSE);
1466*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->loca_reclaim))
1467*f44e1126SVitaliy Gusev 		return (FALSE);
1468*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->loca_stateid))
1469*f44e1126SVitaliy Gusev 		return (FALSE);
1470*f44e1126SVitaliy Gusev 	if (!xdr_newoffset4(xdrs, &objp->loca_last_write_offset))
1471*f44e1126SVitaliy Gusev 		return (FALSE);
1472*f44e1126SVitaliy Gusev 	if (!xdr_newtime4(xdrs, &objp->loca_time_modify))
1473*f44e1126SVitaliy Gusev 		return (FALSE);
1474*f44e1126SVitaliy Gusev 	if (!xdr_layoutupdate4(xdrs, &objp->loca_layoutupdate))
1475*f44e1126SVitaliy Gusev 		return (FALSE);
1476*f44e1126SVitaliy Gusev 	return (TRUE);
1477*f44e1126SVitaliy Gusev }
1478*f44e1126SVitaliy Gusev 
1479*f44e1126SVitaliy Gusev bool_t
xdr_newsize4(XDR * xdrs,newsize4 * objp)1480*f44e1126SVitaliy Gusev xdr_newsize4(XDR *xdrs, newsize4 *objp)
1481*f44e1126SVitaliy Gusev {
1482*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->ns_sizechanged))
1483*f44e1126SVitaliy Gusev 		return (FALSE);
1484*f44e1126SVitaliy Gusev 	switch (objp->ns_sizechanged) {
1485*f44e1126SVitaliy Gusev 	case TRUE:
1486*f44e1126SVitaliy Gusev 		if (!xdr_length4(xdrs, &objp->newsize4_u.ns_size))
1487*f44e1126SVitaliy Gusev 			return (FALSE);
1488*f44e1126SVitaliy Gusev 		break;
1489*f44e1126SVitaliy Gusev 	case FALSE:
1490*f44e1126SVitaliy Gusev 		break;
1491*f44e1126SVitaliy Gusev 	default:
1492*f44e1126SVitaliy Gusev 		return (FALSE);
1493*f44e1126SVitaliy Gusev 	}
1494*f44e1126SVitaliy Gusev 	return (TRUE);
1495*f44e1126SVitaliy Gusev }
1496*f44e1126SVitaliy Gusev 
1497*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTCOMMIT4resok(XDR * xdrs,LAYOUTCOMMIT4resok * objp)1498*f44e1126SVitaliy Gusev xdr_LAYOUTCOMMIT4resok(XDR *xdrs, LAYOUTCOMMIT4resok *objp)
1499*f44e1126SVitaliy Gusev {
1500*f44e1126SVitaliy Gusev 	if (!xdr_newsize4(xdrs, &objp->locr_newsize))
1501*f44e1126SVitaliy Gusev 		return (FALSE);
1502*f44e1126SVitaliy Gusev 	return (TRUE);
1503*f44e1126SVitaliy Gusev }
1504*f44e1126SVitaliy Gusev 
1505*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTCOMMIT4res(XDR * xdrs,LAYOUTCOMMIT4res * objp)1506*f44e1126SVitaliy Gusev xdr_LAYOUTCOMMIT4res(XDR *xdrs, LAYOUTCOMMIT4res *objp)
1507*f44e1126SVitaliy Gusev {
1508*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->locr_status))
1509*f44e1126SVitaliy Gusev 		return (FALSE);
1510*f44e1126SVitaliy Gusev 	switch (objp->locr_status) {
1511*f44e1126SVitaliy Gusev 	case NFS4_OK:
1512*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTCOMMIT4resok(xdrs,
1513*f44e1126SVitaliy Gusev 		    &objp->LAYOUTCOMMIT4res_u.locr_resok4))
1514*f44e1126SVitaliy Gusev 			return (FALSE);
1515*f44e1126SVitaliy Gusev 		break;
1516*f44e1126SVitaliy Gusev 	}
1517*f44e1126SVitaliy Gusev 	return (TRUE);
1518*f44e1126SVitaliy Gusev }
1519*f44e1126SVitaliy Gusev 
1520*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTGET4args(XDR * xdrs,LAYOUTGET4args * objp)1521*f44e1126SVitaliy Gusev xdr_LAYOUTGET4args(XDR *xdrs, LAYOUTGET4args *objp)
1522*f44e1126SVitaliy Gusev {
1523*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->loga_signal_layout_avail))
1524*f44e1126SVitaliy Gusev 		return (FALSE);
1525*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->loga_layout_type))
1526*f44e1126SVitaliy Gusev 		return (FALSE);
1527*f44e1126SVitaliy Gusev 	if (!xdr_layoutiomode4(xdrs, &objp->loga_iomode))
1528*f44e1126SVitaliy Gusev 		return (FALSE);
1529*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->loga_offset))
1530*f44e1126SVitaliy Gusev 		return (FALSE);
1531*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->loga_length))
1532*f44e1126SVitaliy Gusev 		return (FALSE);
1533*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->loga_minlength))
1534*f44e1126SVitaliy Gusev 		return (FALSE);
1535*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->loga_stateid))
1536*f44e1126SVitaliy Gusev 		return (FALSE);
1537*f44e1126SVitaliy Gusev 	if (!xdr_count4(xdrs, &objp->loga_maxcount))
1538*f44e1126SVitaliy Gusev 		return (FALSE);
1539*f44e1126SVitaliy Gusev 	return (TRUE);
1540*f44e1126SVitaliy Gusev }
1541*f44e1126SVitaliy Gusev 
1542*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTGET4resok(XDR * xdrs,LAYOUTGET4resok * objp)1543*f44e1126SVitaliy Gusev xdr_LAYOUTGET4resok(XDR *xdrs, LAYOUTGET4resok *objp)
1544*f44e1126SVitaliy Gusev {
1545*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->logr_return_on_close))
1546*f44e1126SVitaliy Gusev 		return (FALSE);
1547*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->logr_stateid))
1548*f44e1126SVitaliy Gusev 		return (FALSE);
1549*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->logr_layout.logr_layout_val,
1550*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->logr_layout.logr_layout_len, ~0,
1551*f44e1126SVitaliy Gusev 	    sizeof (layout4), (xdrproc_t)xdr_layout4))
1552*f44e1126SVitaliy Gusev 		return (FALSE);
1553*f44e1126SVitaliy Gusev 	return (TRUE);
1554*f44e1126SVitaliy Gusev }
1555*f44e1126SVitaliy Gusev 
1556*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTGET4res(XDR * xdrs,LAYOUTGET4res * objp)1557*f44e1126SVitaliy Gusev xdr_LAYOUTGET4res(XDR *xdrs, LAYOUTGET4res *objp)
1558*f44e1126SVitaliy Gusev {
1559*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->logr_status))
1560*f44e1126SVitaliy Gusev 		return (FALSE);
1561*f44e1126SVitaliy Gusev 	switch (objp->logr_status) {
1562*f44e1126SVitaliy Gusev 	case NFS4_OK:
1563*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTGET4resok(xdrs,
1564*f44e1126SVitaliy Gusev 		    &objp->LAYOUTGET4res_u.logr_resok4))
1565*f44e1126SVitaliy Gusev 			return (FALSE);
1566*f44e1126SVitaliy Gusev 		break;
1567*f44e1126SVitaliy Gusev 	case NFS4ERR_LAYOUTTRYLATER:
1568*f44e1126SVitaliy Gusev 		if (!xdr_bool(xdrs,
1569*f44e1126SVitaliy Gusev 		    &objp->LAYOUTGET4res_u.logr_will_signal_layout_avail))
1570*f44e1126SVitaliy Gusev 			return (FALSE);
1571*f44e1126SVitaliy Gusev 		break;
1572*f44e1126SVitaliy Gusev 	}
1573*f44e1126SVitaliy Gusev 	return (TRUE);
1574*f44e1126SVitaliy Gusev }
1575*f44e1126SVitaliy Gusev 
1576*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTRETURN4args(XDR * xdrs,LAYOUTRETURN4args * objp)1577*f44e1126SVitaliy Gusev xdr_LAYOUTRETURN4args(XDR *xdrs, LAYOUTRETURN4args *objp)
1578*f44e1126SVitaliy Gusev {
1579*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->lora_reclaim))
1580*f44e1126SVitaliy Gusev 		return (FALSE);
1581*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->lora_layout_type))
1582*f44e1126SVitaliy Gusev 		return (FALSE);
1583*f44e1126SVitaliy Gusev 	if (!xdr_layoutiomode4(xdrs, &objp->lora_iomode))
1584*f44e1126SVitaliy Gusev 		return (FALSE);
1585*f44e1126SVitaliy Gusev 	if (!xdr_layoutreturn4(xdrs, &objp->lora_layoutreturn))
1586*f44e1126SVitaliy Gusev 		return (FALSE);
1587*f44e1126SVitaliy Gusev 	return (TRUE);
1588*f44e1126SVitaliy Gusev }
1589*f44e1126SVitaliy Gusev 
1590*f44e1126SVitaliy Gusev bool_t
xdr_layoutreturn_stateid(XDR * xdrs,layoutreturn_stateid * objp)1591*f44e1126SVitaliy Gusev xdr_layoutreturn_stateid(XDR *xdrs, layoutreturn_stateid *objp)
1592*f44e1126SVitaliy Gusev {
1593*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->lrs_present))
1594*f44e1126SVitaliy Gusev 		return (FALSE);
1595*f44e1126SVitaliy Gusev 	switch (objp->lrs_present) {
1596*f44e1126SVitaliy Gusev 	case TRUE:
1597*f44e1126SVitaliy Gusev 		if (!xdr_stateid4(xdrs,
1598*f44e1126SVitaliy Gusev 		    &objp->layoutreturn_stateid_u.lrs_stateid))
1599*f44e1126SVitaliy Gusev 			return (FALSE);
1600*f44e1126SVitaliy Gusev 		break;
1601*f44e1126SVitaliy Gusev 	case FALSE:
1602*f44e1126SVitaliy Gusev 		break;
1603*f44e1126SVitaliy Gusev 	default:
1604*f44e1126SVitaliy Gusev 		return (FALSE);
1605*f44e1126SVitaliy Gusev 	}
1606*f44e1126SVitaliy Gusev 	return (TRUE);
1607*f44e1126SVitaliy Gusev }
1608*f44e1126SVitaliy Gusev 
1609*f44e1126SVitaliy Gusev bool_t
xdr_LAYOUTRETURN4res(XDR * xdrs,LAYOUTRETURN4res * objp)1610*f44e1126SVitaliy Gusev xdr_LAYOUTRETURN4res(XDR *xdrs, LAYOUTRETURN4res *objp)
1611*f44e1126SVitaliy Gusev {
1612*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->lorr_status))
1613*f44e1126SVitaliy Gusev 		return (FALSE);
1614*f44e1126SVitaliy Gusev 	switch (objp->lorr_status) {
1615*f44e1126SVitaliy Gusev 	case NFS4_OK:
1616*f44e1126SVitaliy Gusev 		if (!xdr_layoutreturn_stateid(xdrs,
1617*f44e1126SVitaliy Gusev 		    &objp->LAYOUTRETURN4res_u.lorr_stateid))
1618*f44e1126SVitaliy Gusev 			return (FALSE);
1619*f44e1126SVitaliy Gusev 		break;
1620*f44e1126SVitaliy Gusev 	}
1621*f44e1126SVitaliy Gusev 	return (TRUE);
1622*f44e1126SVitaliy Gusev }
1623*f44e1126SVitaliy Gusev 
1624*f44e1126SVitaliy Gusev bool_t
xdr_secinfo_style4(XDR * xdrs,secinfo_style4 * objp)1625*f44e1126SVitaliy Gusev xdr_secinfo_style4(XDR *xdrs, secinfo_style4 *objp)
1626*f44e1126SVitaliy Gusev {
1627*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
1628*f44e1126SVitaliy Gusev 		return (FALSE);
1629*f44e1126SVitaliy Gusev 	return (TRUE);
1630*f44e1126SVitaliy Gusev }
1631*f44e1126SVitaliy Gusev 
1632*f44e1126SVitaliy Gusev bool_t
xdr_SECINFO_NO_NAME4args(XDR * xdrs,SECINFO_NO_NAME4args * objp)1633*f44e1126SVitaliy Gusev xdr_SECINFO_NO_NAME4args(XDR *xdrs, SECINFO_NO_NAME4args *objp)
1634*f44e1126SVitaliy Gusev {
1635*f44e1126SVitaliy Gusev 	if (!xdr_secinfo_style4(xdrs, objp))
1636*f44e1126SVitaliy Gusev 		return (FALSE);
1637*f44e1126SVitaliy Gusev 	return (TRUE);
1638*f44e1126SVitaliy Gusev }
1639*f44e1126SVitaliy Gusev 
1640*f44e1126SVitaliy Gusev bool_t
xdr_SECINFO_NO_NAME4res(XDR * xdrs,SECINFO_NO_NAME4res * objp)1641*f44e1126SVitaliy Gusev xdr_SECINFO_NO_NAME4res(XDR *xdrs, SECINFO_NO_NAME4res *objp)
1642*f44e1126SVitaliy Gusev {
1643*f44e1126SVitaliy Gusev 	if (!xdr_SECINFO4res(xdrs, objp))
1644*f44e1126SVitaliy Gusev 		return (FALSE);
1645*f44e1126SVitaliy Gusev 	return (TRUE);
1646*f44e1126SVitaliy Gusev }
1647*f44e1126SVitaliy Gusev 
1648*f44e1126SVitaliy Gusev bool_t
xdr_SEQUENCE4args(XDR * xdrs,SEQUENCE4args * objp)1649*f44e1126SVitaliy Gusev xdr_SEQUENCE4args(XDR *xdrs, SEQUENCE4args *objp)
1650*f44e1126SVitaliy Gusev {
1651*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->sa_sessionid))
1652*f44e1126SVitaliy Gusev 		return (FALSE);
1653*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->sa_sequenceid))
1654*f44e1126SVitaliy Gusev 		return (FALSE);
1655*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->sa_slotid))
1656*f44e1126SVitaliy Gusev 		return (FALSE);
1657*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->sa_highest_slotid))
1658*f44e1126SVitaliy Gusev 		return (FALSE);
1659*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->sa_cachethis))
1660*f44e1126SVitaliy Gusev 		return (FALSE);
1661*f44e1126SVitaliy Gusev 	return (TRUE);
1662*f44e1126SVitaliy Gusev }
1663*f44e1126SVitaliy Gusev 
1664*f44e1126SVitaliy Gusev bool_t
xdr_SEQUENCE4resok(XDR * xdrs,SEQUENCE4resok * objp)1665*f44e1126SVitaliy Gusev xdr_SEQUENCE4resok(XDR *xdrs, SEQUENCE4resok *objp)
1666*f44e1126SVitaliy Gusev {
1667*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->sr_sessionid))
1668*f44e1126SVitaliy Gusev 		return (FALSE);
1669*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->sr_sequenceid))
1670*f44e1126SVitaliy Gusev 		return (FALSE);
1671*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->sr_slotid))
1672*f44e1126SVitaliy Gusev 		return (FALSE);
1673*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->sr_highest_slotid))
1674*f44e1126SVitaliy Gusev 		return (FALSE);
1675*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->sr_target_highest_slotid))
1676*f44e1126SVitaliy Gusev 		return (FALSE);
1677*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->sr_status_flags))
1678*f44e1126SVitaliy Gusev 		return (FALSE);
1679*f44e1126SVitaliy Gusev 	return (TRUE);
1680*f44e1126SVitaliy Gusev }
1681*f44e1126SVitaliy Gusev 
1682*f44e1126SVitaliy Gusev bool_t
xdr_SEQUENCE4res(XDR * xdrs,SEQUENCE4res * objp)1683*f44e1126SVitaliy Gusev xdr_SEQUENCE4res(XDR *xdrs, SEQUENCE4res *objp)
1684*f44e1126SVitaliy Gusev {
1685*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->sr_status))
1686*f44e1126SVitaliy Gusev 		return (FALSE);
1687*f44e1126SVitaliy Gusev 	switch (objp->sr_status) {
1688*f44e1126SVitaliy Gusev 	case NFS4_OK:
1689*f44e1126SVitaliy Gusev 		if (!xdr_SEQUENCE4resok(xdrs, &objp->SEQUENCE4res_u.sr_resok4))
1690*f44e1126SVitaliy Gusev 			return (FALSE);
1691*f44e1126SVitaliy Gusev 		break;
1692*f44e1126SVitaliy Gusev 	}
1693*f44e1126SVitaliy Gusev 	return (TRUE);
1694*f44e1126SVitaliy Gusev }
1695*f44e1126SVitaliy Gusev 
1696*f44e1126SVitaliy Gusev bool_t
xdr_ssa_digest_input4(XDR * xdrs,ssa_digest_input4 * objp)1697*f44e1126SVitaliy Gusev xdr_ssa_digest_input4(XDR *xdrs, ssa_digest_input4 *objp)
1698*f44e1126SVitaliy Gusev {
1699*f44e1126SVitaliy Gusev 	if (!xdr_SEQUENCE4args(xdrs, &objp->sdi_seqargs))
1700*f44e1126SVitaliy Gusev 		return (FALSE);
1701*f44e1126SVitaliy Gusev 	return (TRUE);
1702*f44e1126SVitaliy Gusev }
1703*f44e1126SVitaliy Gusev 
1704*f44e1126SVitaliy Gusev bool_t
xdr_SET_SSV4args(XDR * xdrs,SET_SSV4args * objp)1705*f44e1126SVitaliy Gusev xdr_SET_SSV4args(XDR *xdrs, SET_SSV4args *objp)
1706*f44e1126SVitaliy Gusev {
1707*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssa_ssv.ssa_ssv_val,
1708*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssa_ssv.ssa_ssv_len, ~0))
1709*f44e1126SVitaliy Gusev 		return (FALSE);
1710*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssa_digest.ssa_digest_val,
1711*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssa_digest.ssa_digest_len, ~0))
1712*f44e1126SVitaliy Gusev 		return (FALSE);
1713*f44e1126SVitaliy Gusev 	return (TRUE);
1714*f44e1126SVitaliy Gusev }
1715*f44e1126SVitaliy Gusev 
1716*f44e1126SVitaliy Gusev bool_t
xdr_ssr_digest_input4(XDR * xdrs,ssr_digest_input4 * objp)1717*f44e1126SVitaliy Gusev xdr_ssr_digest_input4(XDR *xdrs, ssr_digest_input4 *objp)
1718*f44e1126SVitaliy Gusev {
1719*f44e1126SVitaliy Gusev 	if (!xdr_SEQUENCE4res(xdrs, &objp->sdi_seqres))
1720*f44e1126SVitaliy Gusev 		return (FALSE);
1721*f44e1126SVitaliy Gusev 	return (TRUE);
1722*f44e1126SVitaliy Gusev }
1723*f44e1126SVitaliy Gusev 
1724*f44e1126SVitaliy Gusev bool_t
xdr_SET_SSV4resok(XDR * xdrs,SET_SSV4resok * objp)1725*f44e1126SVitaliy Gusev xdr_SET_SSV4resok(XDR *xdrs, SET_SSV4resok *objp)
1726*f44e1126SVitaliy Gusev {
1727*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->ssr_digest.ssr_digest_val,
1728*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ssr_digest.ssr_digest_len, ~0))
1729*f44e1126SVitaliy Gusev 		return (FALSE);
1730*f44e1126SVitaliy Gusev 	return (TRUE);
1731*f44e1126SVitaliy Gusev }
1732*f44e1126SVitaliy Gusev 
1733*f44e1126SVitaliy Gusev bool_t
xdr_SET_SSV4res(XDR * xdrs,SET_SSV4res * objp)1734*f44e1126SVitaliy Gusev xdr_SET_SSV4res(XDR *xdrs, SET_SSV4res *objp)
1735*f44e1126SVitaliy Gusev {
1736*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->ssr_status))
1737*f44e1126SVitaliy Gusev 		return (FALSE);
1738*f44e1126SVitaliy Gusev 	switch (objp->ssr_status) {
1739*f44e1126SVitaliy Gusev 	case NFS4_OK:
1740*f44e1126SVitaliy Gusev 		if (!xdr_SET_SSV4resok(xdrs, &objp->SET_SSV4res_u.ssr_resok4))
1741*f44e1126SVitaliy Gusev 			return (FALSE);
1742*f44e1126SVitaliy Gusev 		break;
1743*f44e1126SVitaliy Gusev 	}
1744*f44e1126SVitaliy Gusev 	return (TRUE);
1745*f44e1126SVitaliy Gusev }
1746*f44e1126SVitaliy Gusev 
1747*f44e1126SVitaliy Gusev bool_t
xdr_TEST_STATEID4args(XDR * xdrs,TEST_STATEID4args * objp)1748*f44e1126SVitaliy Gusev xdr_TEST_STATEID4args(XDR *xdrs, TEST_STATEID4args *objp)
1749*f44e1126SVitaliy Gusev {
1750*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->ts_stateids.ts_stateids_val,
1751*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->ts_stateids.ts_stateids_len, ~0,
1752*f44e1126SVitaliy Gusev 	    sizeof (stateid4), (xdrproc_t)xdr_stateid4))
1753*f44e1126SVitaliy Gusev 		return (FALSE);
1754*f44e1126SVitaliy Gusev 	return (TRUE);
1755*f44e1126SVitaliy Gusev }
1756*f44e1126SVitaliy Gusev 
1757*f44e1126SVitaliy Gusev bool_t
xdr_TEST_STATEID4resok(XDR * xdrs,TEST_STATEID4resok * objp)1758*f44e1126SVitaliy Gusev xdr_TEST_STATEID4resok(XDR *xdrs, TEST_STATEID4resok *objp)
1759*f44e1126SVitaliy Gusev {
1760*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
1761*f44e1126SVitaliy Gusev 	    (char **)&objp->tsr_status_codes.tsr_status_codes_val,
1762*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->tsr_status_codes.tsr_status_codes_len, ~0,
1763*f44e1126SVitaliy Gusev 	    sizeof (nfsstat4), (xdrproc_t)xdr_nfsstat4))
1764*f44e1126SVitaliy Gusev 		return (FALSE);
1765*f44e1126SVitaliy Gusev 	return (TRUE);
1766*f44e1126SVitaliy Gusev }
1767*f44e1126SVitaliy Gusev 
1768*f44e1126SVitaliy Gusev bool_t
xdr_TEST_STATEID4res(XDR * xdrs,TEST_STATEID4res * objp)1769*f44e1126SVitaliy Gusev xdr_TEST_STATEID4res(XDR *xdrs, TEST_STATEID4res *objp)
1770*f44e1126SVitaliy Gusev {
1771*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->tsr_status))
1772*f44e1126SVitaliy Gusev 		return (FALSE);
1773*f44e1126SVitaliy Gusev 	switch (objp->tsr_status) {
1774*f44e1126SVitaliy Gusev 	case NFS4_OK:
1775*f44e1126SVitaliy Gusev 		if (!xdr_TEST_STATEID4resok(xdrs,
1776*f44e1126SVitaliy Gusev 		    &objp->TEST_STATEID4res_u.tsr_resok4))
1777*f44e1126SVitaliy Gusev 			return (FALSE);
1778*f44e1126SVitaliy Gusev 		break;
1779*f44e1126SVitaliy Gusev 	}
1780*f44e1126SVitaliy Gusev 	return (TRUE);
1781*f44e1126SVitaliy Gusev }
1782*f44e1126SVitaliy Gusev 
1783*f44e1126SVitaliy Gusev bool_t
xdr_deleg_claim4(XDR * xdrs,deleg_claim4 * objp)1784*f44e1126SVitaliy Gusev xdr_deleg_claim4(XDR *xdrs, deleg_claim4 *objp)
1785*f44e1126SVitaliy Gusev {
1786*f44e1126SVitaliy Gusev 	if (!xdr_open_claim_type4(xdrs, &objp->dc_claim))
1787*f44e1126SVitaliy Gusev 		return (FALSE);
1788*f44e1126SVitaliy Gusev 	switch (objp->dc_claim) {
1789*f44e1126SVitaliy Gusev 	case CLAIM_FH:
1790*f44e1126SVitaliy Gusev 		break;
1791*f44e1126SVitaliy Gusev 	case CLAIM_DELEG_PREV_FH:
1792*f44e1126SVitaliy Gusev 		break;
1793*f44e1126SVitaliy Gusev 	case CLAIM_PREVIOUS:
1794*f44e1126SVitaliy Gusev 		if (!xdr_open_delegation_type4(xdrs,
1795*f44e1126SVitaliy Gusev 		    &objp->deleg_claim4_u.dc_delegate_type))
1796*f44e1126SVitaliy Gusev 			return (FALSE);
1797*f44e1126SVitaliy Gusev 		break;
1798*f44e1126SVitaliy Gusev 	default:
1799*f44e1126SVitaliy Gusev 		return (FALSE);
1800*f44e1126SVitaliy Gusev 	}
1801*f44e1126SVitaliy Gusev 	return (TRUE);
1802*f44e1126SVitaliy Gusev }
1803*f44e1126SVitaliy Gusev 
1804*f44e1126SVitaliy Gusev bool_t
xdr_WANT_DELEGATION4args(XDR * xdrs,WANT_DELEGATION4args * objp)1805*f44e1126SVitaliy Gusev xdr_WANT_DELEGATION4args(XDR *xdrs, WANT_DELEGATION4args *objp)
1806*f44e1126SVitaliy Gusev {
1807*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->wda_want))
1808*f44e1126SVitaliy Gusev 		return (FALSE);
1809*f44e1126SVitaliy Gusev 	if (!xdr_deleg_claim4(xdrs, &objp->wda_claim))
1810*f44e1126SVitaliy Gusev 		return (FALSE);
1811*f44e1126SVitaliy Gusev 	return (TRUE);
1812*f44e1126SVitaliy Gusev }
1813*f44e1126SVitaliy Gusev 
1814*f44e1126SVitaliy Gusev bool_t
xdr_WANT_DELEGATION4res(XDR * xdrs,WANT_DELEGATION4res * objp)1815*f44e1126SVitaliy Gusev xdr_WANT_DELEGATION4res(XDR *xdrs, WANT_DELEGATION4res *objp)
1816*f44e1126SVitaliy Gusev {
1817*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->wdr_status))
1818*f44e1126SVitaliy Gusev 		return (FALSE);
1819*f44e1126SVitaliy Gusev 	switch (objp->wdr_status) {
1820*f44e1126SVitaliy Gusev 	case NFS4_OK:
1821*f44e1126SVitaliy Gusev 		if (!xdr_open_delegation4(xdrs,
1822*f44e1126SVitaliy Gusev 		    &objp->WANT_DELEGATION4res_u.wdr_resok4))
1823*f44e1126SVitaliy Gusev 			return (FALSE);
1824*f44e1126SVitaliy Gusev 		break;
1825*f44e1126SVitaliy Gusev 	}
1826*f44e1126SVitaliy Gusev 	return (TRUE);
1827*f44e1126SVitaliy Gusev }
1828*f44e1126SVitaliy Gusev 
1829*f44e1126SVitaliy Gusev bool_t
xdr_DESTROY_CLIENTID4args(XDR * xdrs,DESTROY_CLIENTID4args * objp)1830*f44e1126SVitaliy Gusev xdr_DESTROY_CLIENTID4args(XDR *xdrs, DESTROY_CLIENTID4args *objp)
1831*f44e1126SVitaliy Gusev {
1832*f44e1126SVitaliy Gusev 	if (!xdr_clientid4(xdrs, &objp->dca_clientid))
1833*f44e1126SVitaliy Gusev 		return (FALSE);
1834*f44e1126SVitaliy Gusev 	return (TRUE);
1835*f44e1126SVitaliy Gusev }
1836*f44e1126SVitaliy Gusev 
1837*f44e1126SVitaliy Gusev bool_t
xdr_DESTROY_CLIENTID4res(XDR * xdrs,DESTROY_CLIENTID4res * objp)1838*f44e1126SVitaliy Gusev xdr_DESTROY_CLIENTID4res(XDR *xdrs, DESTROY_CLIENTID4res *objp)
1839*f44e1126SVitaliy Gusev {
1840*f44e1126SVitaliy Gusev 
1841*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->dcr_status))
1842*f44e1126SVitaliy Gusev 		return (FALSE);
1843*f44e1126SVitaliy Gusev 	return (TRUE);
1844*f44e1126SVitaliy Gusev }
1845*f44e1126SVitaliy Gusev 
1846*f44e1126SVitaliy Gusev bool_t
xdr_RECLAIM_COMPLETE4args(XDR * xdrs,RECLAIM_COMPLETE4args * objp)1847*f44e1126SVitaliy Gusev xdr_RECLAIM_COMPLETE4args(XDR *xdrs, RECLAIM_COMPLETE4args *objp)
1848*f44e1126SVitaliy Gusev {
1849*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->rca_one_fs))
1850*f44e1126SVitaliy Gusev 		return (FALSE);
1851*f44e1126SVitaliy Gusev 	return (TRUE);
1852*f44e1126SVitaliy Gusev }
1853*f44e1126SVitaliy Gusev 
1854*f44e1126SVitaliy Gusev bool_t
xdr_RECLAIM_COMPLETE4res(XDR * xdrs,RECLAIM_COMPLETE4res * objp)1855*f44e1126SVitaliy Gusev xdr_RECLAIM_COMPLETE4res(XDR *xdrs, RECLAIM_COMPLETE4res *objp)
1856*f44e1126SVitaliy Gusev {
1857*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->rcr_status))
1858*f44e1126SVitaliy Gusev 		return (FALSE);
1859*f44e1126SVitaliy Gusev 	return (TRUE);
1860*f44e1126SVitaliy Gusev }
1861*f44e1126SVitaliy Gusev 
1862*f44e1126SVitaliy Gusev /* new operations for NFSv4.1 */
1863*f44e1126SVitaliy Gusev 
1864*f44e1126SVitaliy Gusev bool_t
xdr_nfs4x_argop4(XDR * xdrs,nfs_argop4 * objp)1865*f44e1126SVitaliy Gusev xdr_nfs4x_argop4(XDR *xdrs, nfs_argop4 *objp)
1866*f44e1126SVitaliy Gusev {
1867*f44e1126SVitaliy Gusev 	/* nfs_opnum4 has already been xdr'd */
1868*f44e1126SVitaliy Gusev 	switch (objp->argop) {
1869*f44e1126SVitaliy Gusev 	case OP_BACKCHANNEL_CTL:
1870*f44e1126SVitaliy Gusev 		if (!xdr_BACKCHANNEL_CTL4args(xdrs,
1871*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opbackchannel_ctl))
1872*f44e1126SVitaliy Gusev 			return (FALSE);
1873*f44e1126SVitaliy Gusev 		break;
1874*f44e1126SVitaliy Gusev 	case OP_BIND_CONN_TO_SESSION:
1875*f44e1126SVitaliy Gusev 		if (!xdr_BIND_CONN_TO_SESSION4args(xdrs,
1876*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opbind_conn_to_session))
1877*f44e1126SVitaliy Gusev 			return (FALSE);
1878*f44e1126SVitaliy Gusev 		break;
1879*f44e1126SVitaliy Gusev 	case OP_EXCHANGE_ID:
1880*f44e1126SVitaliy Gusev 		if (!xdr_EXCHANGE_ID4args(xdrs,
1881*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opexchange_id))
1882*f44e1126SVitaliy Gusev 			return (FALSE);
1883*f44e1126SVitaliy Gusev 		break;
1884*f44e1126SVitaliy Gusev 	case OP_CREATE_SESSION:
1885*f44e1126SVitaliy Gusev 		if (!xdr_CREATE_SESSION4args(xdrs,
1886*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opcreate_session))
1887*f44e1126SVitaliy Gusev 			return (FALSE);
1888*f44e1126SVitaliy Gusev 		break;
1889*f44e1126SVitaliy Gusev 	case OP_DESTROY_SESSION:
1890*f44e1126SVitaliy Gusev 		if (!xdr_DESTROY_SESSION4args(xdrs,
1891*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opdestroy_session))
1892*f44e1126SVitaliy Gusev 			return (FALSE);
1893*f44e1126SVitaliy Gusev 		break;
1894*f44e1126SVitaliy Gusev 	case OP_FREE_STATEID:
1895*f44e1126SVitaliy Gusev 		if (!xdr_FREE_STATEID4args(xdrs,
1896*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opfree_stateid))
1897*f44e1126SVitaliy Gusev 			return (FALSE);
1898*f44e1126SVitaliy Gusev 		break;
1899*f44e1126SVitaliy Gusev 	case OP_GET_DIR_DELEGATION:
1900*f44e1126SVitaliy Gusev 		if (!xdr_GET_DIR_DELEGATION4args(xdrs,
1901*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opget_dir_delegation))
1902*f44e1126SVitaliy Gusev 			return (FALSE);
1903*f44e1126SVitaliy Gusev 		break;
1904*f44e1126SVitaliy Gusev 	case OP_GETDEVICEINFO:
1905*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICEINFO4args(xdrs,
1906*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opgetdeviceinfo))
1907*f44e1126SVitaliy Gusev 			return (FALSE);
1908*f44e1126SVitaliy Gusev 		break;
1909*f44e1126SVitaliy Gusev 	case OP_GETDEVICELIST:
1910*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICELIST4args(xdrs,
1911*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opgetdevicelist))
1912*f44e1126SVitaliy Gusev 			return (FALSE);
1913*f44e1126SVitaliy Gusev 		break;
1914*f44e1126SVitaliy Gusev 	case OP_LAYOUTCOMMIT:
1915*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTCOMMIT4args(xdrs,
1916*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.oplayoutcommit))
1917*f44e1126SVitaliy Gusev 			return (FALSE);
1918*f44e1126SVitaliy Gusev 		break;
1919*f44e1126SVitaliy Gusev 	case OP_LAYOUTGET:
1920*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTGET4args(xdrs,
1921*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.oplayoutget))
1922*f44e1126SVitaliy Gusev 			return (FALSE);
1923*f44e1126SVitaliy Gusev 		break;
1924*f44e1126SVitaliy Gusev 	case OP_LAYOUTRETURN:
1925*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTRETURN4args(xdrs,
1926*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.oplayoutreturn))
1927*f44e1126SVitaliy Gusev 			return (FALSE);
1928*f44e1126SVitaliy Gusev 		break;
1929*f44e1126SVitaliy Gusev 	case OP_SECINFO_NO_NAME:
1930*f44e1126SVitaliy Gusev 		if (!xdr_SECINFO_NO_NAME4args(xdrs,
1931*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opsecinfo_no_name))
1932*f44e1126SVitaliy Gusev 			return (FALSE);
1933*f44e1126SVitaliy Gusev 		break;
1934*f44e1126SVitaliy Gusev 	case OP_SEQUENCE:
1935*f44e1126SVitaliy Gusev 		if (!xdr_SEQUENCE4args(xdrs,
1936*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opsequence))
1937*f44e1126SVitaliy Gusev 			return (FALSE);
1938*f44e1126SVitaliy Gusev 		break;
1939*f44e1126SVitaliy Gusev 	case OP_SET_SSV:
1940*f44e1126SVitaliy Gusev 		if (!xdr_SET_SSV4args(xdrs,
1941*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opset_ssv))
1942*f44e1126SVitaliy Gusev 			return (FALSE);
1943*f44e1126SVitaliy Gusev 		break;
1944*f44e1126SVitaliy Gusev 	case OP_TEST_STATEID:
1945*f44e1126SVitaliy Gusev 		if (!xdr_TEST_STATEID4args(xdrs,
1946*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.optest_stateid))
1947*f44e1126SVitaliy Gusev 			return (FALSE);
1948*f44e1126SVitaliy Gusev 		break;
1949*f44e1126SVitaliy Gusev 	case OP_WANT_DELEGATION:
1950*f44e1126SVitaliy Gusev 		if (!xdr_WANT_DELEGATION4args(xdrs,
1951*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opwant_delegation))
1952*f44e1126SVitaliy Gusev 			return (FALSE);
1953*f44e1126SVitaliy Gusev 		break;
1954*f44e1126SVitaliy Gusev 	case OP_DESTROY_CLIENTID:
1955*f44e1126SVitaliy Gusev 		if (!xdr_DESTROY_CLIENTID4args(xdrs,
1956*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opdestroy_clientid))
1957*f44e1126SVitaliy Gusev 			return (FALSE);
1958*f44e1126SVitaliy Gusev 		break;
1959*f44e1126SVitaliy Gusev 	case OP_RECLAIM_COMPLETE:
1960*f44e1126SVitaliy Gusev 		if (!xdr_RECLAIM_COMPLETE4args(xdrs,
1961*f44e1126SVitaliy Gusev 		    &objp->nfs_argop4_u.opreclaim_complete))
1962*f44e1126SVitaliy Gusev 			return (FALSE);
1963*f44e1126SVitaliy Gusev 		break;
1964*f44e1126SVitaliy Gusev 	default:
1965*f44e1126SVitaliy Gusev 		return (FALSE);
1966*f44e1126SVitaliy Gusev 	}
1967*f44e1126SVitaliy Gusev 	return (TRUE);
1968*f44e1126SVitaliy Gusev }
1969*f44e1126SVitaliy Gusev 
1970*f44e1126SVitaliy Gusev bool_t
xdr_nfs4x_resop4(XDR * xdrs,nfs_resop4 * objp)1971*f44e1126SVitaliy Gusev xdr_nfs4x_resop4(XDR *xdrs, nfs_resop4 *objp)
1972*f44e1126SVitaliy Gusev {
1973*f44e1126SVitaliy Gusev 	/* nfs_opnum4 has already been xdr's */
1974*f44e1126SVitaliy Gusev 	switch (objp->resop) {
1975*f44e1126SVitaliy Gusev 	case OP_BACKCHANNEL_CTL:
1976*f44e1126SVitaliy Gusev 		if (!xdr_BACKCHANNEL_CTL4res(xdrs,
1977*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opbackchannel_ctl))
1978*f44e1126SVitaliy Gusev 			return (FALSE);
1979*f44e1126SVitaliy Gusev 		break;
1980*f44e1126SVitaliy Gusev 	case OP_BIND_CONN_TO_SESSION:
1981*f44e1126SVitaliy Gusev 		if (!xdr_BIND_CONN_TO_SESSION4res(xdrs,
1982*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opbind_conn_to_session))
1983*f44e1126SVitaliy Gusev 			return (FALSE);
1984*f44e1126SVitaliy Gusev 		break;
1985*f44e1126SVitaliy Gusev 	case OP_EXCHANGE_ID:
1986*f44e1126SVitaliy Gusev 		if (!xdr_EXCHANGE_ID4res(xdrs,
1987*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opexchange_id))
1988*f44e1126SVitaliy Gusev 			return (FALSE);
1989*f44e1126SVitaliy Gusev 		break;
1990*f44e1126SVitaliy Gusev 	case OP_CREATE_SESSION:
1991*f44e1126SVitaliy Gusev 		if (!xdr_CREATE_SESSION4res(xdrs,
1992*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opcreate_session))
1993*f44e1126SVitaliy Gusev 			return (FALSE);
1994*f44e1126SVitaliy Gusev 		break;
1995*f44e1126SVitaliy Gusev 	case OP_DESTROY_SESSION:
1996*f44e1126SVitaliy Gusev 		if (!xdr_DESTROY_SESSION4res(xdrs,
1997*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opdestroy_session))
1998*f44e1126SVitaliy Gusev 			return (FALSE);
1999*f44e1126SVitaliy Gusev 		break;
2000*f44e1126SVitaliy Gusev 	case OP_FREE_STATEID:
2001*f44e1126SVitaliy Gusev 		if (!xdr_FREE_STATEID4res(xdrs,
2002*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opfree_stateid))
2003*f44e1126SVitaliy Gusev 			return (FALSE);
2004*f44e1126SVitaliy Gusev 		break;
2005*f44e1126SVitaliy Gusev 	case OP_GET_DIR_DELEGATION:
2006*f44e1126SVitaliy Gusev 		if (!xdr_GET_DIR_DELEGATION4res(xdrs,
2007*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opget_dir_delegation))
2008*f44e1126SVitaliy Gusev 			return (FALSE);
2009*f44e1126SVitaliy Gusev 		break;
2010*f44e1126SVitaliy Gusev 	case OP_GETDEVICEINFO:
2011*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICEINFO4res(xdrs,
2012*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opgetdeviceinfo))
2013*f44e1126SVitaliy Gusev 			return (FALSE);
2014*f44e1126SVitaliy Gusev 		break;
2015*f44e1126SVitaliy Gusev 	case OP_GETDEVICELIST:
2016*f44e1126SVitaliy Gusev 		if (!xdr_GETDEVICELIST4res(xdrs,
2017*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opgetdevicelist))
2018*f44e1126SVitaliy Gusev 			return (FALSE);
2019*f44e1126SVitaliy Gusev 		break;
2020*f44e1126SVitaliy Gusev 	case OP_LAYOUTCOMMIT:
2021*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTCOMMIT4res(xdrs,
2022*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.oplayoutcommit))
2023*f44e1126SVitaliy Gusev 			return (FALSE);
2024*f44e1126SVitaliy Gusev 		break;
2025*f44e1126SVitaliy Gusev 	case OP_LAYOUTGET:
2026*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTGET4res(xdrs,
2027*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.oplayoutget))
2028*f44e1126SVitaliy Gusev 			return (FALSE);
2029*f44e1126SVitaliy Gusev 		break;
2030*f44e1126SVitaliy Gusev 	case OP_LAYOUTRETURN:
2031*f44e1126SVitaliy Gusev 		if (!xdr_LAYOUTRETURN4res(xdrs,
2032*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.oplayoutreturn))
2033*f44e1126SVitaliy Gusev 			return (FALSE);
2034*f44e1126SVitaliy Gusev 		break;
2035*f44e1126SVitaliy Gusev 	case OP_SECINFO_NO_NAME:
2036*f44e1126SVitaliy Gusev 		if (!xdr_SECINFO_NO_NAME4res(xdrs,
2037*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opsecinfo_no_name))
2038*f44e1126SVitaliy Gusev 			return (FALSE);
2039*f44e1126SVitaliy Gusev 		break;
2040*f44e1126SVitaliy Gusev 	case OP_SEQUENCE:
2041*f44e1126SVitaliy Gusev 		if (!xdr_SEQUENCE4res(xdrs,
2042*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opsequence))
2043*f44e1126SVitaliy Gusev 			return (FALSE);
2044*f44e1126SVitaliy Gusev 		break;
2045*f44e1126SVitaliy Gusev 	case OP_SET_SSV:
2046*f44e1126SVitaliy Gusev 		if (!xdr_SET_SSV4res(xdrs,
2047*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opset_ssv))
2048*f44e1126SVitaliy Gusev 			return (FALSE);
2049*f44e1126SVitaliy Gusev 		break;
2050*f44e1126SVitaliy Gusev 	case OP_TEST_STATEID:
2051*f44e1126SVitaliy Gusev 		if (!xdr_TEST_STATEID4res(xdrs,
2052*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.optest_stateid))
2053*f44e1126SVitaliy Gusev 			return (FALSE);
2054*f44e1126SVitaliy Gusev 		break;
2055*f44e1126SVitaliy Gusev 	case OP_WANT_DELEGATION:
2056*f44e1126SVitaliy Gusev 		if (!xdr_WANT_DELEGATION4res(xdrs,
2057*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opwant_delegation))
2058*f44e1126SVitaliy Gusev 			return (FALSE);
2059*f44e1126SVitaliy Gusev 		break;
2060*f44e1126SVitaliy Gusev 	case OP_DESTROY_CLIENTID:
2061*f44e1126SVitaliy Gusev 		if (!xdr_DESTROY_CLIENTID4res(xdrs,
2062*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opdestroy_clientid))
2063*f44e1126SVitaliy Gusev 			return (FALSE);
2064*f44e1126SVitaliy Gusev 		break;
2065*f44e1126SVitaliy Gusev 	case OP_RECLAIM_COMPLETE:
2066*f44e1126SVitaliy Gusev 		if (!xdr_RECLAIM_COMPLETE4res(xdrs,
2067*f44e1126SVitaliy Gusev 		    &objp->nfs_resop4_u.opreclaim_complete))
2068*f44e1126SVitaliy Gusev 			return (FALSE);
2069*f44e1126SVitaliy Gusev 		break;
2070*f44e1126SVitaliy Gusev 	default:
2071*f44e1126SVitaliy Gusev 		return (FALSE);
2072*f44e1126SVitaliy Gusev 	}
2073*f44e1126SVitaliy Gusev 	return (TRUE);
2074*f44e1126SVitaliy Gusev }
2075*f44e1126SVitaliy Gusev 
2076*f44e1126SVitaliy Gusev bool_t
xdr_layoutrecall_type4(XDR * xdrs,layoutrecall_type4 * objp)2077*f44e1126SVitaliy Gusev xdr_layoutrecall_type4(XDR *xdrs, layoutrecall_type4 *objp)
2078*f44e1126SVitaliy Gusev {
2079*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2080*f44e1126SVitaliy Gusev 		return (FALSE);
2081*f44e1126SVitaliy Gusev 	return (TRUE);
2082*f44e1126SVitaliy Gusev }
2083*f44e1126SVitaliy Gusev 
2084*f44e1126SVitaliy Gusev bool_t
xdr_layoutrecall_file4(XDR * xdrs,layoutrecall_file4 * objp)2085*f44e1126SVitaliy Gusev xdr_layoutrecall_file4(XDR *xdrs, layoutrecall_file4 *objp)
2086*f44e1126SVitaliy Gusev {
2087*f44e1126SVitaliy Gusev 	switch (xdrs->x_op) {
2088*f44e1126SVitaliy Gusev 	case XDR_ENCODE:
2089*f44e1126SVitaliy Gusev 		/* TODO: encode nfs4x_fh */
2090*f44e1126SVitaliy Gusev 		return (FALSE);
2091*f44e1126SVitaliy Gusev 
2092*f44e1126SVitaliy Gusev 	case XDR_DECODE:
2093*f44e1126SVitaliy Gusev 		if (!xdr_bytes(xdrs, (char **)&objp->lor_fh.nfs_fh4_val,
2094*f44e1126SVitaliy Gusev 		    (uint_t *)&objp->lor_fh.nfs_fh4_len, NFS4_FHSIZE))
2095*f44e1126SVitaliy Gusev 			return (FALSE);
2096*f44e1126SVitaliy Gusev 		break;
2097*f44e1126SVitaliy Gusev 
2098*f44e1126SVitaliy Gusev 	case XDR_FREE:
2099*f44e1126SVitaliy Gusev 		if (objp->lor_fh.nfs_fh4_val != NULL) {
2100*f44e1126SVitaliy Gusev 			if (!xdr_bytes(xdrs,
2101*f44e1126SVitaliy Gusev 			    (char **)&objp->lor_fh.nfs_fh4_val,
2102*f44e1126SVitaliy Gusev 			    (uint_t *)&objp->lor_fh.nfs_fh4_len,
2103*f44e1126SVitaliy Gusev 			    NFS4_FHSIZE))
2104*f44e1126SVitaliy Gusev 				return (FALSE);
2105*f44e1126SVitaliy Gusev 		}
2106*f44e1126SVitaliy Gusev 		break;
2107*f44e1126SVitaliy Gusev 	}
2108*f44e1126SVitaliy Gusev 
2109*f44e1126SVitaliy Gusev 	if (!xdr_offset4(xdrs, &objp->lor_offset))
2110*f44e1126SVitaliy Gusev 		return (FALSE);
2111*f44e1126SVitaliy Gusev 	if (!xdr_length4(xdrs, &objp->lor_length))
2112*f44e1126SVitaliy Gusev 		return (FALSE);
2113*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->lor_stateid))
2114*f44e1126SVitaliy Gusev 		return (FALSE);
2115*f44e1126SVitaliy Gusev 	return (TRUE);
2116*f44e1126SVitaliy Gusev }
2117*f44e1126SVitaliy Gusev 
2118*f44e1126SVitaliy Gusev bool_t
xdr_layoutrecall4(XDR * xdrs,layoutrecall4 * objp)2119*f44e1126SVitaliy Gusev xdr_layoutrecall4(XDR *xdrs, layoutrecall4 *objp)
2120*f44e1126SVitaliy Gusev {
2121*f44e1126SVitaliy Gusev 	if (!xdr_layoutrecall_type4(xdrs, &objp->lor_recalltype))
2122*f44e1126SVitaliy Gusev 		return (FALSE);
2123*f44e1126SVitaliy Gusev 	switch (objp->lor_recalltype) {
2124*f44e1126SVitaliy Gusev 	case LAYOUTRECALL4_FILE:
2125*f44e1126SVitaliy Gusev 		if (!xdr_layoutrecall_file4(xdrs,
2126*f44e1126SVitaliy Gusev 		    &objp->layoutrecall4_u.lor_layout))
2127*f44e1126SVitaliy Gusev 			return (FALSE);
2128*f44e1126SVitaliy Gusev 		break;
2129*f44e1126SVitaliy Gusev 	case LAYOUTRECALL4_FSID:
2130*f44e1126SVitaliy Gusev 		if (!xdr_fsid4(xdrs, &objp->layoutrecall4_u.lor_fsid))
2131*f44e1126SVitaliy Gusev 			return (FALSE);
2132*f44e1126SVitaliy Gusev 		break;
2133*f44e1126SVitaliy Gusev 	case LAYOUTRECALL4_ALL:
2134*f44e1126SVitaliy Gusev 		break;
2135*f44e1126SVitaliy Gusev 	default:
2136*f44e1126SVitaliy Gusev 		return (FALSE);
2137*f44e1126SVitaliy Gusev 	}
2138*f44e1126SVitaliy Gusev 	return (TRUE);
2139*f44e1126SVitaliy Gusev }
2140*f44e1126SVitaliy Gusev 
2141*f44e1126SVitaliy Gusev bool_t
xdr_CB_LAYOUTRECALL4args(XDR * xdrs,CB_LAYOUTRECALL4args * objp)2142*f44e1126SVitaliy Gusev xdr_CB_LAYOUTRECALL4args(XDR *xdrs, CB_LAYOUTRECALL4args *objp)
2143*f44e1126SVitaliy Gusev {
2144*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->clora_type))
2145*f44e1126SVitaliy Gusev 		return (FALSE);
2146*f44e1126SVitaliy Gusev 	if (!xdr_layoutiomode4(xdrs, &objp->clora_iomode))
2147*f44e1126SVitaliy Gusev 		return (FALSE);
2148*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->clora_changed))
2149*f44e1126SVitaliy Gusev 		return (FALSE);
2150*f44e1126SVitaliy Gusev 	if (!xdr_layoutrecall4(xdrs, &objp->clora_recall))
2151*f44e1126SVitaliy Gusev 		return (FALSE);
2152*f44e1126SVitaliy Gusev 	return (TRUE);
2153*f44e1126SVitaliy Gusev }
2154*f44e1126SVitaliy Gusev 
2155*f44e1126SVitaliy Gusev bool_t
xdr_CB_LAYOUTRECALL4res(XDR * xdrs,CB_LAYOUTRECALL4res * objp)2156*f44e1126SVitaliy Gusev xdr_CB_LAYOUTRECALL4res(XDR *xdrs, CB_LAYOUTRECALL4res *objp)
2157*f44e1126SVitaliy Gusev {
2158*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->clorr_status))
2159*f44e1126SVitaliy Gusev 		return (FALSE);
2160*f44e1126SVitaliy Gusev 	return (TRUE);
2161*f44e1126SVitaliy Gusev }
2162*f44e1126SVitaliy Gusev 
2163*f44e1126SVitaliy Gusev bool_t
xdr_notify_type4(XDR * xdrs,notify_type4 * objp)2164*f44e1126SVitaliy Gusev xdr_notify_type4(XDR *xdrs, notify_type4 *objp)
2165*f44e1126SVitaliy Gusev {
2166*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2167*f44e1126SVitaliy Gusev 		return (FALSE);
2168*f44e1126SVitaliy Gusev 	return (TRUE);
2169*f44e1126SVitaliy Gusev }
2170*f44e1126SVitaliy Gusev 
2171*f44e1126SVitaliy Gusev bool_t
xdr_notify_entry4(XDR * xdrs,notify_entry4 * objp)2172*f44e1126SVitaliy Gusev xdr_notify_entry4(XDR *xdrs, notify_entry4 *objp)
2173*f44e1126SVitaliy Gusev {
2174*f44e1126SVitaliy Gusev 	if (!xdr_component4(xdrs, &objp->ne_file))
2175*f44e1126SVitaliy Gusev 		return (FALSE);
2176*f44e1126SVitaliy Gusev 	if (!xdr_fattr4(xdrs, &objp->ne_attrs))
2177*f44e1126SVitaliy Gusev 		return (FALSE);
2178*f44e1126SVitaliy Gusev 	return (TRUE);
2179*f44e1126SVitaliy Gusev }
2180*f44e1126SVitaliy Gusev 
2181*f44e1126SVitaliy Gusev bool_t
xdr_prev_entry4(XDR * xdrs,prev_entry4 * objp)2182*f44e1126SVitaliy Gusev xdr_prev_entry4(XDR *xdrs, prev_entry4 *objp)
2183*f44e1126SVitaliy Gusev {
2184*f44e1126SVitaliy Gusev 	if (!xdr_notify_entry4(xdrs, &objp->pe_prev_entry))
2185*f44e1126SVitaliy Gusev 		return (FALSE);
2186*f44e1126SVitaliy Gusev 	if (!xdr_nfs_cookie4(xdrs, &objp->pe_prev_entry_cookie))
2187*f44e1126SVitaliy Gusev 		return (FALSE);
2188*f44e1126SVitaliy Gusev 	return (TRUE);
2189*f44e1126SVitaliy Gusev }
2190*f44e1126SVitaliy Gusev 
2191*f44e1126SVitaliy Gusev bool_t
xdr_notify_remove4(XDR * xdrs,notify_remove4 * objp)2192*f44e1126SVitaliy Gusev xdr_notify_remove4(XDR *xdrs, notify_remove4 *objp)
2193*f44e1126SVitaliy Gusev {
2194*f44e1126SVitaliy Gusev 
2195*f44e1126SVitaliy Gusev 	if (!xdr_notify_entry4(xdrs, &objp->nrm_old_entry))
2196*f44e1126SVitaliy Gusev 		return (FALSE);
2197*f44e1126SVitaliy Gusev 	if (!xdr_nfs_cookie4(xdrs, &objp->nrm_old_entry_cookie))
2198*f44e1126SVitaliy Gusev 		return (FALSE);
2199*f44e1126SVitaliy Gusev 	return (TRUE);
2200*f44e1126SVitaliy Gusev }
2201*f44e1126SVitaliy Gusev 
2202*f44e1126SVitaliy Gusev bool_t
xdr_notify_add4(XDR * xdrs,notify_add4 * objp)2203*f44e1126SVitaliy Gusev xdr_notify_add4(XDR *xdrs, notify_add4 *objp)
2204*f44e1126SVitaliy Gusev {
2205*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->nad_old_entry.nad_old_entry_val,
2206*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nad_old_entry.nad_old_entry_len, 1,
2207*f44e1126SVitaliy Gusev 	    sizeof (notify_remove4), (xdrproc_t)xdr_notify_remove4))
2208*f44e1126SVitaliy Gusev 		return (FALSE);
2209*f44e1126SVitaliy Gusev 	if (!xdr_notify_entry4(xdrs, &objp->nad_new_entry))
2210*f44e1126SVitaliy Gusev 		return (FALSE);
2211*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs,
2212*f44e1126SVitaliy Gusev 	    (char **)&objp->nad_new_entry_cookie.nad_new_entry_cookie_val,
2213*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nad_new_entry_cookie.nad_new_entry_cookie_len, 1,
2214*f44e1126SVitaliy Gusev 	    sizeof (nfs_cookie4), (xdrproc_t)xdr_nfs_cookie4))
2215*f44e1126SVitaliy Gusev 		return (FALSE);
2216*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->nad_prev_entry.nad_prev_entry_val,
2217*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->nad_prev_entry.nad_prev_entry_len, 1,
2218*f44e1126SVitaliy Gusev 	    sizeof (prev_entry4), (xdrproc_t)xdr_prev_entry4))
2219*f44e1126SVitaliy Gusev 		return (FALSE);
2220*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->nad_last_entry))
2221*f44e1126SVitaliy Gusev 		return (FALSE);
2222*f44e1126SVitaliy Gusev 	return (TRUE);
2223*f44e1126SVitaliy Gusev }
2224*f44e1126SVitaliy Gusev 
2225*f44e1126SVitaliy Gusev bool_t
xdr_notify_attr4(XDR * xdrs,notify_attr4 * objp)2226*f44e1126SVitaliy Gusev xdr_notify_attr4(XDR *xdrs, notify_attr4 *objp)
2227*f44e1126SVitaliy Gusev {
2228*f44e1126SVitaliy Gusev 	if (!xdr_notify_entry4(xdrs, &objp->na_changed_entry))
2229*f44e1126SVitaliy Gusev 		return (FALSE);
2230*f44e1126SVitaliy Gusev 	return (TRUE);
2231*f44e1126SVitaliy Gusev }
2232*f44e1126SVitaliy Gusev 
2233*f44e1126SVitaliy Gusev bool_t
xdr_notify_rename4(XDR * xdrs,notify_rename4 * objp)2234*f44e1126SVitaliy Gusev xdr_notify_rename4(XDR *xdrs, notify_rename4 *objp)
2235*f44e1126SVitaliy Gusev {
2236*f44e1126SVitaliy Gusev 	if (!xdr_notify_remove4(xdrs, &objp->nrn_old_entry))
2237*f44e1126SVitaliy Gusev 		return (FALSE);
2238*f44e1126SVitaliy Gusev 	if (!xdr_notify_add4(xdrs, &objp->nrn_new_entry))
2239*f44e1126SVitaliy Gusev 		return (FALSE);
2240*f44e1126SVitaliy Gusev 	return (TRUE);
2241*f44e1126SVitaliy Gusev }
2242*f44e1126SVitaliy Gusev 
2243*f44e1126SVitaliy Gusev bool_t
xdr_notify_verifier4(XDR * xdrs,notify_verifier4 * objp)2244*f44e1126SVitaliy Gusev xdr_notify_verifier4(XDR *xdrs, notify_verifier4 *objp)
2245*f44e1126SVitaliy Gusev {
2246*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->nv_old_cookieverf))
2247*f44e1126SVitaliy Gusev 		return (FALSE);
2248*f44e1126SVitaliy Gusev 	if (!xdr_verifier4(xdrs, (verifier4 *)&objp->nv_new_cookieverf))
2249*f44e1126SVitaliy Gusev 		return (FALSE);
2250*f44e1126SVitaliy Gusev 	return (TRUE);
2251*f44e1126SVitaliy Gusev }
2252*f44e1126SVitaliy Gusev 
2253*f44e1126SVitaliy Gusev bool_t
xdr_notifylist4(XDR * xdrs,notifylist4 * objp)2254*f44e1126SVitaliy Gusev xdr_notifylist4(XDR *xdrs, notifylist4 *objp)
2255*f44e1126SVitaliy Gusev {
2256*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->notifylist4_val,
2257*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->notifylist4_len, ~0))
2258*f44e1126SVitaliy Gusev 		return (FALSE);
2259*f44e1126SVitaliy Gusev 	return (TRUE);
2260*f44e1126SVitaliy Gusev }
2261*f44e1126SVitaliy Gusev 
2262*f44e1126SVitaliy Gusev bool_t
xdr_notify4(XDR * xdrs,notify4 * objp)2263*f44e1126SVitaliy Gusev xdr_notify4(XDR *xdrs, notify4 *objp)
2264*f44e1126SVitaliy Gusev {
2265*f44e1126SVitaliy Gusev 	if (xdrs->x_op == XDR_ENCODE) {
2266*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4_notify(xdrs, &objp->notify_mask))
2267*f44e1126SVitaliy Gusev 			return (FALSE);
2268*f44e1126SVitaliy Gusev 	} else
2269*f44e1126SVitaliy Gusev 		if (!xdr_bitmap4(xdrs, &objp->notify_mask))
2270*f44e1126SVitaliy Gusev 			return (FALSE);
2271*f44e1126SVitaliy Gusev 	if (!xdr_notifylist4(xdrs, &objp->notify_vals))
2272*f44e1126SVitaliy Gusev 		return (FALSE);
2273*f44e1126SVitaliy Gusev 	return (TRUE);
2274*f44e1126SVitaliy Gusev }
2275*f44e1126SVitaliy Gusev 
2276*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY4args(XDR * xdrs,CB_NOTIFY4args * objp)2277*f44e1126SVitaliy Gusev xdr_CB_NOTIFY4args(XDR *xdrs, CB_NOTIFY4args *objp)
2278*f44e1126SVitaliy Gusev {
2279*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->cna_stateid))
2280*f44e1126SVitaliy Gusev 		return (FALSE);
2281*f44e1126SVitaliy Gusev 	if (!xdr_nfs_fh4(xdrs, &objp->cna_fh))
2282*f44e1126SVitaliy Gusev 		return (FALSE);
2283*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->cna_changes.cna_changes_val,
2284*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->cna_changes.cna_changes_len, ~0,
2285*f44e1126SVitaliy Gusev 	    sizeof (notify4), (xdrproc_t)xdr_notify4))
2286*f44e1126SVitaliy Gusev 		return (FALSE);
2287*f44e1126SVitaliy Gusev 	return (TRUE);
2288*f44e1126SVitaliy Gusev }
2289*f44e1126SVitaliy Gusev 
2290*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY4res(XDR * xdrs,CB_NOTIFY4res * objp)2291*f44e1126SVitaliy Gusev xdr_CB_NOTIFY4res(XDR *xdrs, CB_NOTIFY4res *objp)
2292*f44e1126SVitaliy Gusev {
2293*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->cnr_status))
2294*f44e1126SVitaliy Gusev 		return (FALSE);
2295*f44e1126SVitaliy Gusev 	return (TRUE);
2296*f44e1126SVitaliy Gusev }
2297*f44e1126SVitaliy Gusev 
2298*f44e1126SVitaliy Gusev bool_t
xdr_CB_PUSH_DELEG4args(XDR * xdrs,CB_PUSH_DELEG4args * objp)2299*f44e1126SVitaliy Gusev xdr_CB_PUSH_DELEG4args(XDR *xdrs, CB_PUSH_DELEG4args *objp)
2300*f44e1126SVitaliy Gusev {
2301*f44e1126SVitaliy Gusev 	if (!xdr_nfs_fh4(xdrs, &objp->cpda_fh))
2302*f44e1126SVitaliy Gusev 		return (FALSE);
2303*f44e1126SVitaliy Gusev 	if (!xdr_open_delegation4(xdrs, &objp->cpda_delegation))
2304*f44e1126SVitaliy Gusev 		return (FALSE);
2305*f44e1126SVitaliy Gusev 	return (TRUE);
2306*f44e1126SVitaliy Gusev }
2307*f44e1126SVitaliy Gusev 
2308*f44e1126SVitaliy Gusev bool_t
xdr_CB_PUSH_DELEG4res(XDR * xdrs,CB_PUSH_DELEG4res * objp)2309*f44e1126SVitaliy Gusev xdr_CB_PUSH_DELEG4res(XDR *xdrs, CB_PUSH_DELEG4res *objp)
2310*f44e1126SVitaliy Gusev {
2311*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->cpdr_status))
2312*f44e1126SVitaliy Gusev 		return (FALSE);
2313*f44e1126SVitaliy Gusev 	return (TRUE);
2314*f44e1126SVitaliy Gusev }
2315*f44e1126SVitaliy Gusev 
2316*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALL_ANY4args(XDR * xdrs,CB_RECALL_ANY4args * objp)2317*f44e1126SVitaliy Gusev xdr_CB_RECALL_ANY4args(XDR *xdrs, CB_RECALL_ANY4args *objp)
2318*f44e1126SVitaliy Gusev {
2319*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->craa_objects_to_keep))
2320*f44e1126SVitaliy Gusev 		return (FALSE);
2321*f44e1126SVitaliy Gusev 	if (!xdr_bitmap4(xdrs, &objp->craa_type_mask))
2322*f44e1126SVitaliy Gusev 		return (FALSE);
2323*f44e1126SVitaliy Gusev 	return (TRUE);
2324*f44e1126SVitaliy Gusev }
2325*f44e1126SVitaliy Gusev 
2326*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALL_ANY4res(XDR * xdrs,CB_RECALL_ANY4res * objp)2327*f44e1126SVitaliy Gusev xdr_CB_RECALL_ANY4res(XDR *xdrs, CB_RECALL_ANY4res *objp)
2328*f44e1126SVitaliy Gusev {
2329*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->crar_status))
2330*f44e1126SVitaliy Gusev 		return (FALSE);
2331*f44e1126SVitaliy Gusev 	return (TRUE);
2332*f44e1126SVitaliy Gusev }
2333*f44e1126SVitaliy Gusev 
2334*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALLABLE_OBJ_AVAIL4args(XDR * xdrs,CB_RECALLABLE_OBJ_AVAIL4args * objp)2335*f44e1126SVitaliy Gusev xdr_CB_RECALLABLE_OBJ_AVAIL4args(XDR *xdrs, CB_RECALLABLE_OBJ_AVAIL4args *objp)
2336*f44e1126SVitaliy Gusev {
2337*f44e1126SVitaliy Gusev 	if (!xdr_CB_RECALL_ANY4args(xdrs, objp))
2338*f44e1126SVitaliy Gusev 		return (FALSE);
2339*f44e1126SVitaliy Gusev 	return (TRUE);
2340*f44e1126SVitaliy Gusev }
2341*f44e1126SVitaliy Gusev 
2342*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALLABLE_OBJ_AVAIL4res(XDR * xdrs,CB_RECALLABLE_OBJ_AVAIL4res * objp)2343*f44e1126SVitaliy Gusev xdr_CB_RECALLABLE_OBJ_AVAIL4res(XDR *xdrs, CB_RECALLABLE_OBJ_AVAIL4res *objp)
2344*f44e1126SVitaliy Gusev {
2345*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->croa_status))
2346*f44e1126SVitaliy Gusev 		return (FALSE);
2347*f44e1126SVitaliy Gusev 	return (TRUE);
2348*f44e1126SVitaliy Gusev }
2349*f44e1126SVitaliy Gusev 
2350*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALL_SLOT4args(XDR * xdrs,CB_RECALL_SLOT4args * objp)2351*f44e1126SVitaliy Gusev xdr_CB_RECALL_SLOT4args(XDR *xdrs, CB_RECALL_SLOT4args *objp)
2352*f44e1126SVitaliy Gusev {
2353*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->rsa_target_highest_slotid))
2354*f44e1126SVitaliy Gusev 		return (FALSE);
2355*f44e1126SVitaliy Gusev 	return (TRUE);
2356*f44e1126SVitaliy Gusev }
2357*f44e1126SVitaliy Gusev 
2358*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALL_SLOT4res(XDR * xdrs,CB_RECALL_SLOT4res * objp)2359*f44e1126SVitaliy Gusev xdr_CB_RECALL_SLOT4res(XDR *xdrs, CB_RECALL_SLOT4res *objp)
2360*f44e1126SVitaliy Gusev {
2361*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->rsr_status))
2362*f44e1126SVitaliy Gusev 		return (FALSE);
2363*f44e1126SVitaliy Gusev 	return (TRUE);
2364*f44e1126SVitaliy Gusev }
2365*f44e1126SVitaliy Gusev 
2366*f44e1126SVitaliy Gusev bool_t
xdr_referring_call4(XDR * xdrs,referring_call4 * objp)2367*f44e1126SVitaliy Gusev xdr_referring_call4(XDR *xdrs, referring_call4 *objp)
2368*f44e1126SVitaliy Gusev {
2369*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->rc_sequenceid))
2370*f44e1126SVitaliy Gusev 		return (FALSE);
2371*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->rc_slotid))
2372*f44e1126SVitaliy Gusev 		return (FALSE);
2373*f44e1126SVitaliy Gusev 	return (TRUE);
2374*f44e1126SVitaliy Gusev }
2375*f44e1126SVitaliy Gusev 
2376*f44e1126SVitaliy Gusev bool_t
xdr_referring_call_list4(XDR * xdrs,referring_call_list4 * objp)2377*f44e1126SVitaliy Gusev xdr_referring_call_list4(XDR *xdrs, referring_call_list4 *objp)
2378*f44e1126SVitaliy Gusev {
2379*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->rcl_sessionid))
2380*f44e1126SVitaliy Gusev 		return (FALSE);
2381*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->rcl_referring_calls.
2382*f44e1126SVitaliy Gusev 	    rcl_referring_calls_val,
2383*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->rcl_referring_calls.rcl_referring_calls_len, ~0,
2384*f44e1126SVitaliy Gusev 	    sizeof (referring_call4), (xdrproc_t)xdr_referring_call4))
2385*f44e1126SVitaliy Gusev 		return (FALSE);
2386*f44e1126SVitaliy Gusev 	return (TRUE);
2387*f44e1126SVitaliy Gusev }
2388*f44e1126SVitaliy Gusev 
2389*f44e1126SVitaliy Gusev bool_t
xdr_CB_SEQUENCE4args(XDR * xdrs,CB_SEQUENCE4args * objp)2390*f44e1126SVitaliy Gusev xdr_CB_SEQUENCE4args(XDR *xdrs, CB_SEQUENCE4args *objp)
2391*f44e1126SVitaliy Gusev {
2392*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->csa_sessionid))
2393*f44e1126SVitaliy Gusev 		return (FALSE);
2394*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->csa_sequenceid))
2395*f44e1126SVitaliy Gusev 		return (FALSE);
2396*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->csa_slotid))
2397*f44e1126SVitaliy Gusev 		return (FALSE);
2398*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->csa_highest_slotid))
2399*f44e1126SVitaliy Gusev 		return (FALSE);
2400*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->csa_cachethis))
2401*f44e1126SVitaliy Gusev 		return (FALSE);
2402*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->csa_referring_call_lists.
2403*f44e1126SVitaliy Gusev 	    csa_referring_call_lists_val,
2404*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->csa_referring_call_lists.
2405*f44e1126SVitaliy Gusev 	    csa_referring_call_lists_len, ~0, sizeof (referring_call_list4),
2406*f44e1126SVitaliy Gusev 	    (xdrproc_t)xdr_referring_call_list4))
2407*f44e1126SVitaliy Gusev 		return (FALSE);
2408*f44e1126SVitaliy Gusev 	return (TRUE);
2409*f44e1126SVitaliy Gusev }
2410*f44e1126SVitaliy Gusev 
2411*f44e1126SVitaliy Gusev bool_t
xdr_CB_SEQUENCE4resok(XDR * xdrs,CB_SEQUENCE4resok * objp)2412*f44e1126SVitaliy Gusev xdr_CB_SEQUENCE4resok(XDR *xdrs, CB_SEQUENCE4resok *objp)
2413*f44e1126SVitaliy Gusev {
2414*f44e1126SVitaliy Gusev 	if (!xdr_sessionid4(xdrs, objp->csr_sessionid))
2415*f44e1126SVitaliy Gusev 		return (FALSE);
2416*f44e1126SVitaliy Gusev 	if (!xdr_sequenceid4(xdrs, &objp->csr_sequenceid))
2417*f44e1126SVitaliy Gusev 		return (FALSE);
2418*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->csr_slotid))
2419*f44e1126SVitaliy Gusev 		return (FALSE);
2420*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->csr_highest_slotid))
2421*f44e1126SVitaliy Gusev 		return (FALSE);
2422*f44e1126SVitaliy Gusev 	if (!xdr_slotid4(xdrs, &objp->csr_target_highest_slotid))
2423*f44e1126SVitaliy Gusev 		return (FALSE);
2424*f44e1126SVitaliy Gusev 	return (TRUE);
2425*f44e1126SVitaliy Gusev }
2426*f44e1126SVitaliy Gusev 
2427*f44e1126SVitaliy Gusev bool_t
xdr_CB_SEQUENCE4res(XDR * xdrs,CB_SEQUENCE4res * objp)2428*f44e1126SVitaliy Gusev xdr_CB_SEQUENCE4res(XDR *xdrs, CB_SEQUENCE4res *objp)
2429*f44e1126SVitaliy Gusev {
2430*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->csr_status))
2431*f44e1126SVitaliy Gusev 		return (FALSE);
2432*f44e1126SVitaliy Gusev 	switch (objp->csr_status) {
2433*f44e1126SVitaliy Gusev 	case NFS4_OK:
2434*f44e1126SVitaliy Gusev 		if (!xdr_CB_SEQUENCE4resok(xdrs,
2435*f44e1126SVitaliy Gusev 		    &objp->CB_SEQUENCE4res_u.csr_resok4))
2436*f44e1126SVitaliy Gusev 			return (FALSE);
2437*f44e1126SVitaliy Gusev 		break;
2438*f44e1126SVitaliy Gusev 	}
2439*f44e1126SVitaliy Gusev 	return (TRUE);
2440*f44e1126SVitaliy Gusev }
2441*f44e1126SVitaliy Gusev 
2442*f44e1126SVitaliy Gusev bool_t
xdr_CB_WANTS_CANCELLED4args(XDR * xdrs,CB_WANTS_CANCELLED4args * objp)2443*f44e1126SVitaliy Gusev xdr_CB_WANTS_CANCELLED4args(XDR *xdrs, CB_WANTS_CANCELLED4args *objp)
2444*f44e1126SVitaliy Gusev {
2445*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->cwca_contended_wants_cancelled))
2446*f44e1126SVitaliy Gusev 		return (FALSE);
2447*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->cwca_resourced_wants_cancelled))
2448*f44e1126SVitaliy Gusev 		return (FALSE);
2449*f44e1126SVitaliy Gusev 	return (TRUE);
2450*f44e1126SVitaliy Gusev }
2451*f44e1126SVitaliy Gusev 
2452*f44e1126SVitaliy Gusev bool_t
xdr_CB_WANTS_CANCELLED4res(XDR * xdrs,CB_WANTS_CANCELLED4res * objp)2453*f44e1126SVitaliy Gusev xdr_CB_WANTS_CANCELLED4res(XDR *xdrs, CB_WANTS_CANCELLED4res *objp)
2454*f44e1126SVitaliy Gusev {
2455*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->cwcr_status))
2456*f44e1126SVitaliy Gusev 		return (FALSE);
2457*f44e1126SVitaliy Gusev 	return (TRUE);
2458*f44e1126SVitaliy Gusev }
2459*f44e1126SVitaliy Gusev 
2460*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY_LOCK4args(XDR * xdrs,CB_NOTIFY_LOCK4args * objp)2461*f44e1126SVitaliy Gusev xdr_CB_NOTIFY_LOCK4args(XDR *xdrs, CB_NOTIFY_LOCK4args *objp)
2462*f44e1126SVitaliy Gusev {
2463*f44e1126SVitaliy Gusev 	if (!xdr_nfs_fh4(xdrs, &objp->cnla_fh))
2464*f44e1126SVitaliy Gusev 		return (FALSE);
2465*f44e1126SVitaliy Gusev 	if (!xdr_lock_owner4(xdrs, &objp->cnla_lock_owner))
2466*f44e1126SVitaliy Gusev 		return (FALSE);
2467*f44e1126SVitaliy Gusev 	return (TRUE);
2468*f44e1126SVitaliy Gusev }
2469*f44e1126SVitaliy Gusev 
2470*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY_LOCK4res(XDR * xdrs,CB_NOTIFY_LOCK4res * objp)2471*f44e1126SVitaliy Gusev xdr_CB_NOTIFY_LOCK4res(XDR *xdrs, CB_NOTIFY_LOCK4res *objp)
2472*f44e1126SVitaliy Gusev {
2473*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->cnlr_status))
2474*f44e1126SVitaliy Gusev 		return (FALSE);
2475*f44e1126SVitaliy Gusev 	return (TRUE);
2476*f44e1126SVitaliy Gusev }
2477*f44e1126SVitaliy Gusev 
2478*f44e1126SVitaliy Gusev bool_t
xdr_notify_deviceid_type4(XDR * xdrs,notify_deviceid_type4 * objp)2479*f44e1126SVitaliy Gusev xdr_notify_deviceid_type4(XDR *xdrs, notify_deviceid_type4 *objp)
2480*f44e1126SVitaliy Gusev {
2481*f44e1126SVitaliy Gusev 
2482*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2483*f44e1126SVitaliy Gusev 		return (FALSE);
2484*f44e1126SVitaliy Gusev 	return (TRUE);
2485*f44e1126SVitaliy Gusev }
2486*f44e1126SVitaliy Gusev 
2487*f44e1126SVitaliy Gusev bool_t
xdr_notify_deviceid_delete4(XDR * xdrs,notify_deviceid_delete4 * objp)2488*f44e1126SVitaliy Gusev xdr_notify_deviceid_delete4(XDR *xdrs, notify_deviceid_delete4 *objp)
2489*f44e1126SVitaliy Gusev {
2490*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->ndd_layouttype))
2491*f44e1126SVitaliy Gusev 		return (FALSE);
2492*f44e1126SVitaliy Gusev 	if (!xdr_deviceid4(xdrs, objp->ndd_deviceid))
2493*f44e1126SVitaliy Gusev 		return (FALSE);
2494*f44e1126SVitaliy Gusev 	return (TRUE);
2495*f44e1126SVitaliy Gusev }
2496*f44e1126SVitaliy Gusev 
2497*f44e1126SVitaliy Gusev bool_t
xdr_notify_deviceid_change4(XDR * xdrs,notify_deviceid_change4 * objp)2498*f44e1126SVitaliy Gusev xdr_notify_deviceid_change4(XDR *xdrs, notify_deviceid_change4 *objp)
2499*f44e1126SVitaliy Gusev {
2500*f44e1126SVitaliy Gusev 
2501*f44e1126SVitaliy Gusev 	if (!xdr_layouttype4(xdrs, &objp->ndc_layouttype))
2502*f44e1126SVitaliy Gusev 		return (FALSE);
2503*f44e1126SVitaliy Gusev 	if (!xdr_deviceid4(xdrs, objp->ndc_deviceid))
2504*f44e1126SVitaliy Gusev 		return (FALSE);
2505*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->ndc_immediate))
2506*f44e1126SVitaliy Gusev 		return (FALSE);
2507*f44e1126SVitaliy Gusev 	return (TRUE);
2508*f44e1126SVitaliy Gusev }
2509*f44e1126SVitaliy Gusev 
2510*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY_DEVICEID4args(XDR * xdrs,CB_NOTIFY_DEVICEID4args * objp)2511*f44e1126SVitaliy Gusev xdr_CB_NOTIFY_DEVICEID4args(XDR *xdrs, CB_NOTIFY_DEVICEID4args *objp)
2512*f44e1126SVitaliy Gusev {
2513*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->cnda_changes.cnda_changes_val,
2514*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->cnda_changes.cnda_changes_len, ~0,
2515*f44e1126SVitaliy Gusev 	    sizeof (notify4), (xdrproc_t)xdr_notify4))
2516*f44e1126SVitaliy Gusev 		return (FALSE);
2517*f44e1126SVitaliy Gusev 	return (TRUE);
2518*f44e1126SVitaliy Gusev }
2519*f44e1126SVitaliy Gusev 
2520*f44e1126SVitaliy Gusev bool_t
xdr_CB_NOTIFY_DEVICEID4res(XDR * xdrs,CB_NOTIFY_DEVICEID4res * objp)2521*f44e1126SVitaliy Gusev xdr_CB_NOTIFY_DEVICEID4res(XDR *xdrs, CB_NOTIFY_DEVICEID4res *objp)
2522*f44e1126SVitaliy Gusev {
2523*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->cndr_status))
2524*f44e1126SVitaliy Gusev 		return (FALSE);
2525*f44e1126SVitaliy Gusev 	return (TRUE);
2526*f44e1126SVitaliy Gusev }
2527*f44e1126SVitaliy Gusev 
2528*f44e1126SVitaliy Gusev /* Callback operations new to NFSv4.1 */
2529*f44e1126SVitaliy Gusev 
2530*f44e1126SVitaliy Gusev bool_t
xdr_nfs_cb_argop4(XDR * xdrs,nfs_cb_argop4 * objp)2531*f44e1126SVitaliy Gusev xdr_nfs_cb_argop4(XDR *xdrs, nfs_cb_argop4 *objp)
2532*f44e1126SVitaliy Gusev {
2533*f44e1126SVitaliy Gusev 	/* argop has already been xdr'd */
2534*f44e1126SVitaliy Gusev 	switch (objp->argop) {
2535*f44e1126SVitaliy Gusev 	case OP_CB_LAYOUTRECALL:
2536*f44e1126SVitaliy Gusev 		if (!xdr_CB_LAYOUTRECALL4args(xdrs,
2537*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcblayoutrecall))
2538*f44e1126SVitaliy Gusev 			return (FALSE);
2539*f44e1126SVitaliy Gusev 		break;
2540*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY:
2541*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY4args(xdrs,
2542*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbnotify))
2543*f44e1126SVitaliy Gusev 			return (FALSE);
2544*f44e1126SVitaliy Gusev 		break;
2545*f44e1126SVitaliy Gusev 	case OP_CB_PUSH_DELEG:
2546*f44e1126SVitaliy Gusev 		if (!xdr_CB_PUSH_DELEG4args(xdrs,
2547*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbpush_deleg))
2548*f44e1126SVitaliy Gusev 			return (FALSE);
2549*f44e1126SVitaliy Gusev 		break;
2550*f44e1126SVitaliy Gusev 	case OP_CB_RECALL_ANY:
2551*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALL_ANY4args(xdrs,
2552*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbrecall_any))
2553*f44e1126SVitaliy Gusev 			return (FALSE);
2554*f44e1126SVitaliy Gusev 		break;
2555*f44e1126SVitaliy Gusev 	case OP_CB_RECALLABLE_OBJ_AVAIL:
2556*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALLABLE_OBJ_AVAIL4args(xdrs,
2557*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbrecallable_obj_avail))
2558*f44e1126SVitaliy Gusev 			return (FALSE);
2559*f44e1126SVitaliy Gusev 		break;
2560*f44e1126SVitaliy Gusev 	case OP_CB_RECALL_SLOT:
2561*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALL_SLOT4args(xdrs,
2562*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbrecall_slot))
2563*f44e1126SVitaliy Gusev 			return (FALSE);
2564*f44e1126SVitaliy Gusev 		break;
2565*f44e1126SVitaliy Gusev 	case OP_CB_SEQUENCE:
2566*f44e1126SVitaliy Gusev 		if (!xdr_CB_SEQUENCE4args(xdrs,
2567*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbsequence))
2568*f44e1126SVitaliy Gusev 			return (FALSE);
2569*f44e1126SVitaliy Gusev 		break;
2570*f44e1126SVitaliy Gusev 	case OP_CB_WANTS_CANCELLED:
2571*f44e1126SVitaliy Gusev 		if (!xdr_CB_WANTS_CANCELLED4args(xdrs,
2572*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbwants_cancelled))
2573*f44e1126SVitaliy Gusev 			return (FALSE);
2574*f44e1126SVitaliy Gusev 		break;
2575*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY_LOCK:
2576*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY_LOCK4args(xdrs,
2577*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbnotify_lock))
2578*f44e1126SVitaliy Gusev 			return (FALSE);
2579*f44e1126SVitaliy Gusev 		break;
2580*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY_DEVICEID:
2581*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY_DEVICEID4args(xdrs,
2582*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_argop4_u.opcbnotify_deviceid))
2583*f44e1126SVitaliy Gusev 			return (FALSE);
2584*f44e1126SVitaliy Gusev 		break;
2585*f44e1126SVitaliy Gusev 	default:
2586*f44e1126SVitaliy Gusev 		return (FALSE);
2587*f44e1126SVitaliy Gusev 	}
2588*f44e1126SVitaliy Gusev 	return (TRUE);
2589*f44e1126SVitaliy Gusev }
2590*f44e1126SVitaliy Gusev 
2591*f44e1126SVitaliy Gusev bool_t
xdr_CB_GETATTR4res(XDR * xdrs,CB_GETATTR4res * objp)2592*f44e1126SVitaliy Gusev xdr_CB_GETATTR4res(XDR *xdrs, CB_GETATTR4res *objp)
2593*f44e1126SVitaliy Gusev {
2594*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->status))
2595*f44e1126SVitaliy Gusev 		return (FALSE);
2596*f44e1126SVitaliy Gusev 
2597*f44e1126SVitaliy Gusev 	switch (objp->status) {
2598*f44e1126SVitaliy Gusev 	case NFS4_OK:
2599*f44e1126SVitaliy Gusev 		if (!xdr_fattr4(xdrs, &objp->obj_attributes))
2600*f44e1126SVitaliy Gusev 			return (FALSE);
2601*f44e1126SVitaliy Gusev 		break;
2602*f44e1126SVitaliy Gusev 	}
2603*f44e1126SVitaliy Gusev 	return (TRUE);
2604*f44e1126SVitaliy Gusev }
2605*f44e1126SVitaliy Gusev 
2606*f44e1126SVitaliy Gusev bool_t
xdr_CB_RECALL4res(XDR * xdrs,CB_RECALL4res * objp)2607*f44e1126SVitaliy Gusev xdr_CB_RECALL4res(XDR *xdrs, CB_RECALL4res *objp)
2608*f44e1126SVitaliy Gusev {
2609*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->status))
2610*f44e1126SVitaliy Gusev 		return (FALSE);
2611*f44e1126SVitaliy Gusev 	return (TRUE);
2612*f44e1126SVitaliy Gusev }
2613*f44e1126SVitaliy Gusev 
2614*f44e1126SVitaliy Gusev bool_t
xdr_CB_ILLEGAL4res(XDR * xdrs,CB_ILLEGAL4res * objp)2615*f44e1126SVitaliy Gusev xdr_CB_ILLEGAL4res(XDR *xdrs, CB_ILLEGAL4res *objp)
2616*f44e1126SVitaliy Gusev {
2617*f44e1126SVitaliy Gusev 	if (!xdr_nfsstat4(xdrs, &objp->status))
2618*f44e1126SVitaliy Gusev 		return (FALSE);
2619*f44e1126SVitaliy Gusev 	return (TRUE);
2620*f44e1126SVitaliy Gusev }
2621*f44e1126SVitaliy Gusev 
2622*f44e1126SVitaliy Gusev bool_t
xdr_nfs_cb_resop4(XDR * xdrs,nfs_cb_resop4 * objp)2623*f44e1126SVitaliy Gusev xdr_nfs_cb_resop4(XDR *xdrs, nfs_cb_resop4 *objp)
2624*f44e1126SVitaliy Gusev {
2625*f44e1126SVitaliy Gusev 	if (!xdr_u_int(xdrs, &objp->resop))
2626*f44e1126SVitaliy Gusev 		return (FALSE);
2627*f44e1126SVitaliy Gusev 
2628*f44e1126SVitaliy Gusev 	switch (objp->resop) {
2629*f44e1126SVitaliy Gusev 	case OP_CB_GETATTR:
2630*f44e1126SVitaliy Gusev 		if (!xdr_CB_GETATTR4res(xdrs,
2631*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbgetattr))
2632*f44e1126SVitaliy Gusev 			return (FALSE);
2633*f44e1126SVitaliy Gusev 		break;
2634*f44e1126SVitaliy Gusev 	case OP_CB_RECALL:
2635*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALL4res(xdrs,
2636*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbrecall))
2637*f44e1126SVitaliy Gusev 			return (FALSE);
2638*f44e1126SVitaliy Gusev 		break;
2639*f44e1126SVitaliy Gusev 	case OP_CB_LAYOUTRECALL:
2640*f44e1126SVitaliy Gusev 		if (!xdr_CB_LAYOUTRECALL4res(xdrs,
2641*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcblayoutrecall))
2642*f44e1126SVitaliy Gusev 			return (FALSE);
2643*f44e1126SVitaliy Gusev 		break;
2644*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY:
2645*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY4res(xdrs,
2646*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbnotify))
2647*f44e1126SVitaliy Gusev 			return (FALSE);
2648*f44e1126SVitaliy Gusev 		break;
2649*f44e1126SVitaliy Gusev 	case OP_CB_PUSH_DELEG:
2650*f44e1126SVitaliy Gusev 		if (!xdr_CB_PUSH_DELEG4res(xdrs,
2651*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbpush_deleg))
2652*f44e1126SVitaliy Gusev 			return (FALSE);
2653*f44e1126SVitaliy Gusev 		break;
2654*f44e1126SVitaliy Gusev 	case OP_CB_RECALL_ANY:
2655*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALL_ANY4res(xdrs,
2656*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbrecall_any))
2657*f44e1126SVitaliy Gusev 			return (FALSE);
2658*f44e1126SVitaliy Gusev 		break;
2659*f44e1126SVitaliy Gusev 	case OP_CB_RECALLABLE_OBJ_AVAIL:
2660*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALLABLE_OBJ_AVAIL4res(xdrs,
2661*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbrecallable_obj_avail))
2662*f44e1126SVitaliy Gusev 			return (FALSE);
2663*f44e1126SVitaliy Gusev 		break;
2664*f44e1126SVitaliy Gusev 	case OP_CB_RECALL_SLOT:
2665*f44e1126SVitaliy Gusev 		if (!xdr_CB_RECALL_SLOT4res(xdrs,
2666*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbrecall_slot))
2667*f44e1126SVitaliy Gusev 			return (FALSE);
2668*f44e1126SVitaliy Gusev 		break;
2669*f44e1126SVitaliy Gusev 	case OP_CB_SEQUENCE:
2670*f44e1126SVitaliy Gusev 		if (!xdr_CB_SEQUENCE4res(xdrs,
2671*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbsequence))
2672*f44e1126SVitaliy Gusev 			return (FALSE);
2673*f44e1126SVitaliy Gusev 		break;
2674*f44e1126SVitaliy Gusev 	case OP_CB_WANTS_CANCELLED:
2675*f44e1126SVitaliy Gusev 		if (!xdr_CB_WANTS_CANCELLED4res(xdrs,
2676*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbwants_cancelled))
2677*f44e1126SVitaliy Gusev 			return (FALSE);
2678*f44e1126SVitaliy Gusev 		break;
2679*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY_LOCK:
2680*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY_LOCK4res(xdrs,
2681*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbnotify_lock))
2682*f44e1126SVitaliy Gusev 			return (FALSE);
2683*f44e1126SVitaliy Gusev 		break;
2684*f44e1126SVitaliy Gusev 	case OP_CB_NOTIFY_DEVICEID:
2685*f44e1126SVitaliy Gusev 		if (!xdr_CB_NOTIFY_DEVICEID4res(xdrs,
2686*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbnotify_deviceid))
2687*f44e1126SVitaliy Gusev 			return (FALSE);
2688*f44e1126SVitaliy Gusev 		break;
2689*f44e1126SVitaliy Gusev 	case OP_CB_ILLEGAL:
2690*f44e1126SVitaliy Gusev 		if (!xdr_CB_ILLEGAL4res(xdrs,
2691*f44e1126SVitaliy Gusev 		    &objp->nfs_cb_resop4_u.opcbillegal))
2692*f44e1126SVitaliy Gusev 			return (FALSE);
2693*f44e1126SVitaliy Gusev 		break;
2694*f44e1126SVitaliy Gusev 	default:
2695*f44e1126SVitaliy Gusev 		return (FALSE);
2696*f44e1126SVitaliy Gusev 	}
2697*f44e1126SVitaliy Gusev 	return (TRUE);
2698*f44e1126SVitaliy Gusev }
2699*f44e1126SVitaliy Gusev 
2700*f44e1126SVitaliy Gusev /*
2701*f44e1126SVitaliy Gusev  * Additional common NFSv4 XDR
2702*f44e1126SVitaliy Gusev  */
2703*f44e1126SVitaliy Gusev 
2704*f44e1126SVitaliy Gusev bool_t
xdr_clientid4(XDR * xdrs,clientid4 * objp)2705*f44e1126SVitaliy Gusev xdr_clientid4(XDR *xdrs, clientid4 *objp)
2706*f44e1126SVitaliy Gusev {
2707*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, objp))
2708*f44e1126SVitaliy Gusev 		return (FALSE);
2709*f44e1126SVitaliy Gusev 	return (TRUE);
2710*f44e1126SVitaliy Gusev }
2711*f44e1126SVitaliy Gusev 
2712*f44e1126SVitaliy Gusev bool_t
xdr_component4(XDR * xdrs,component4 * objp)2713*f44e1126SVitaliy Gusev xdr_component4(XDR *xdrs, component4 *objp)
2714*f44e1126SVitaliy Gusev {
2715*f44e1126SVitaliy Gusev 	if (!xdr_utf8string(xdrs, objp))
2716*f44e1126SVitaliy Gusev 		return (FALSE);
2717*f44e1126SVitaliy Gusev 	return (TRUE);
2718*f44e1126SVitaliy Gusev }
2719*f44e1126SVitaliy Gusev 
2720*f44e1126SVitaliy Gusev bool_t
xdr_count4(XDR * xdrs,count4 * objp)2721*f44e1126SVitaliy Gusev xdr_count4(XDR *xdrs, count4 *objp)
2722*f44e1126SVitaliy Gusev {
2723*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
2724*f44e1126SVitaliy Gusev 		return (FALSE);
2725*f44e1126SVitaliy Gusev 	return (TRUE);
2726*f44e1126SVitaliy Gusev }
2727*f44e1126SVitaliy Gusev 
2728*f44e1126SVitaliy Gusev bool_t
xdr_fsid4(XDR * xdrs,fsid4 * objp)2729*f44e1126SVitaliy Gusev xdr_fsid4(XDR *xdrs, fsid4 *objp)
2730*f44e1126SVitaliy Gusev {
2731*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->major))
2732*f44e1126SVitaliy Gusev 		return (FALSE);
2733*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, &objp->minor))
2734*f44e1126SVitaliy Gusev 		return (FALSE);
2735*f44e1126SVitaliy Gusev 	return (TRUE);
2736*f44e1126SVitaliy Gusev }
2737*f44e1126SVitaliy Gusev 
2738*f44e1126SVitaliy Gusev bool_t
xdr_length4(XDR * xdrs,length4 * objp)2739*f44e1126SVitaliy Gusev xdr_length4(XDR *xdrs, length4 *objp)
2740*f44e1126SVitaliy Gusev {
2741*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, objp))
2742*f44e1126SVitaliy Gusev 		return (FALSE);
2743*f44e1126SVitaliy Gusev 	return (TRUE);
2744*f44e1126SVitaliy Gusev }
2745*f44e1126SVitaliy Gusev 
2746*f44e1126SVitaliy Gusev bool_t
xdr_limit_by4(XDR * xdrs,limit_by4 * objp)2747*f44e1126SVitaliy Gusev xdr_limit_by4(XDR *xdrs, limit_by4 *objp)
2748*f44e1126SVitaliy Gusev {
2749*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2750*f44e1126SVitaliy Gusev 		return (FALSE);
2751*f44e1126SVitaliy Gusev 	return (TRUE);
2752*f44e1126SVitaliy Gusev }
2753*f44e1126SVitaliy Gusev 
2754*f44e1126SVitaliy Gusev bool_t
xdr_lock_owner4(XDR * xdrs,lock_owner4 * objp)2755*f44e1126SVitaliy Gusev xdr_lock_owner4(XDR *xdrs, lock_owner4 *objp)
2756*f44e1126SVitaliy Gusev {
2757*f44e1126SVitaliy Gusev 	if (!xdr_clientid4(xdrs, &objp->clientid))
2758*f44e1126SVitaliy Gusev 		return (FALSE);
2759*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->owner_val,
2760*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->owner_len, NFS4_OPAQUE_LIMIT))
2761*f44e1126SVitaliy Gusev 		return (FALSE);
2762*f44e1126SVitaliy Gusev 	return (TRUE);
2763*f44e1126SVitaliy Gusev }
2764*f44e1126SVitaliy Gusev 
2765*f44e1126SVitaliy Gusev bool_t
xdr_mode4(XDR * xdrs,mode4 * objp)2766*f44e1126SVitaliy Gusev xdr_mode4(XDR *xdrs, mode4 *objp)
2767*f44e1126SVitaliy Gusev {
2768*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, objp))
2769*f44e1126SVitaliy Gusev 		return (FALSE);
2770*f44e1126SVitaliy Gusev 	return (TRUE);
2771*f44e1126SVitaliy Gusev }
2772*f44e1126SVitaliy Gusev 
2773*f44e1126SVitaliy Gusev bool_t
xdr_netaddr4(XDR * xdrs,netaddr4 * objp)2774*f44e1126SVitaliy Gusev xdr_netaddr4(XDR *xdrs, netaddr4 *objp)
2775*f44e1126SVitaliy Gusev {
2776*f44e1126SVitaliy Gusev 	if (!xdr_string(xdrs, &objp->na_r_netid, ~0))
2777*f44e1126SVitaliy Gusev 		return (FALSE);
2778*f44e1126SVitaliy Gusev 	if (!xdr_string(xdrs, &objp->na_r_addr, ~0))
2779*f44e1126SVitaliy Gusev 		return (FALSE);
2780*f44e1126SVitaliy Gusev 	return (TRUE);
2781*f44e1126SVitaliy Gusev }
2782*f44e1126SVitaliy Gusev 
2783*f44e1126SVitaliy Gusev bool_t
xdr_nfs_cookie4(XDR * xdrs,nfs_cookie4 * objp)2784*f44e1126SVitaliy Gusev xdr_nfs_cookie4(XDR *xdrs, nfs_cookie4 *objp)
2785*f44e1126SVitaliy Gusev {
2786*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, objp))
2787*f44e1126SVitaliy Gusev 		return (FALSE);
2788*f44e1126SVitaliy Gusev 	return (TRUE);
2789*f44e1126SVitaliy Gusev }
2790*f44e1126SVitaliy Gusev 
2791*f44e1126SVitaliy Gusev 
2792*f44e1126SVitaliy Gusev bool_t
xdr_nfs_modified_limit4(XDR * xdrs,nfs_modified_limit4 * objp)2793*f44e1126SVitaliy Gusev xdr_nfs_modified_limit4(XDR *xdrs, nfs_modified_limit4 *objp)
2794*f44e1126SVitaliy Gusev {
2795*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->num_blocks))
2796*f44e1126SVitaliy Gusev 		return (FALSE);
2797*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->bytes_per_block))
2798*f44e1126SVitaliy Gusev 		return (FALSE);
2799*f44e1126SVitaliy Gusev 	return (TRUE);
2800*f44e1126SVitaliy Gusev }
2801*f44e1126SVitaliy Gusev 
2802*f44e1126SVitaliy Gusev 
2803*f44e1126SVitaliy Gusev bool_t
xdr_nfs_space_limit4(XDR * xdrs,nfs_space_limit4 * objp)2804*f44e1126SVitaliy Gusev xdr_nfs_space_limit4(XDR *xdrs, nfs_space_limit4 *objp)
2805*f44e1126SVitaliy Gusev {
2806*f44e1126SVitaliy Gusev 	if (!xdr_limit_by4(xdrs, &objp->limitby))
2807*f44e1126SVitaliy Gusev 		return (FALSE);
2808*f44e1126SVitaliy Gusev 	switch (objp->limitby) {
2809*f44e1126SVitaliy Gusev 	case NFS_LIMIT_SIZE:
2810*f44e1126SVitaliy Gusev 		if (!xdr_uint64_t(xdrs, &objp->nfs_space_limit4_u.filesize))
2811*f44e1126SVitaliy Gusev 			return (FALSE);
2812*f44e1126SVitaliy Gusev 		break;
2813*f44e1126SVitaliy Gusev 	case NFS_LIMIT_BLOCKS:
2814*f44e1126SVitaliy Gusev 		if (!xdr_nfs_modified_limit4(xdrs,
2815*f44e1126SVitaliy Gusev 		    &objp->nfs_space_limit4_u.mod_blocks))
2816*f44e1126SVitaliy Gusev 			return (FALSE);
2817*f44e1126SVitaliy Gusev 		break;
2818*f44e1126SVitaliy Gusev 	default:
2819*f44e1126SVitaliy Gusev 		return (FALSE);
2820*f44e1126SVitaliy Gusev 	}
2821*f44e1126SVitaliy Gusev 	return (TRUE);
2822*f44e1126SVitaliy Gusev }
2823*f44e1126SVitaliy Gusev 
2824*f44e1126SVitaliy Gusev bool_t
xdr_nfsstat4(XDR * xdrs,nfsstat4 * objp)2825*f44e1126SVitaliy Gusev xdr_nfsstat4(XDR *xdrs, nfsstat4 *objp)
2826*f44e1126SVitaliy Gusev {
2827*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2828*f44e1126SVitaliy Gusev 		return (FALSE);
2829*f44e1126SVitaliy Gusev 	return (TRUE);
2830*f44e1126SVitaliy Gusev }
2831*f44e1126SVitaliy Gusev 
2832*f44e1126SVitaliy Gusev bool_t
xdr_offset4(XDR * xdrs,offset4 * objp)2833*f44e1126SVitaliy Gusev xdr_offset4(XDR *xdrs, offset4 *objp)
2834*f44e1126SVitaliy Gusev {
2835*f44e1126SVitaliy Gusev 	if (!xdr_uint64_t(xdrs, objp))
2836*f44e1126SVitaliy Gusev 		return (FALSE);
2837*f44e1126SVitaliy Gusev 	return (TRUE);
2838*f44e1126SVitaliy Gusev }
2839*f44e1126SVitaliy Gusev 
2840*f44e1126SVitaliy Gusev bool_t
xdr_open_claim_type4(XDR * xdrs,open_claim_type4 * objp)2841*f44e1126SVitaliy Gusev xdr_open_claim_type4(XDR *xdrs, open_claim_type4 *objp)
2842*f44e1126SVitaliy Gusev {
2843*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2844*f44e1126SVitaliy Gusev 		return (FALSE);
2845*f44e1126SVitaliy Gusev 	return (TRUE);
2846*f44e1126SVitaliy Gusev }
2847*f44e1126SVitaliy Gusev 
2848*f44e1126SVitaliy Gusev bool_t
xdr_open_delegation_type4(XDR * xdrs,open_delegation_type4 * objp)2849*f44e1126SVitaliy Gusev xdr_open_delegation_type4(XDR *xdrs, open_delegation_type4 *objp)
2850*f44e1126SVitaliy Gusev {
2851*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2852*f44e1126SVitaliy Gusev 		return (FALSE);
2853*f44e1126SVitaliy Gusev 	return (TRUE);
2854*f44e1126SVitaliy Gusev }
2855*f44e1126SVitaliy Gusev 
2856*f44e1126SVitaliy Gusev bool_t
xdr_open_read_delegation4(XDR * xdrs,open_read_delegation4 * objp)2857*f44e1126SVitaliy Gusev xdr_open_read_delegation4(XDR *xdrs, open_read_delegation4 *objp)
2858*f44e1126SVitaliy Gusev {
2859*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->stateid))
2860*f44e1126SVitaliy Gusev 		return (FALSE);
2861*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->recall))
2862*f44e1126SVitaliy Gusev 		return (FALSE);
2863*f44e1126SVitaliy Gusev 	if (!xdr_nfsace4(xdrs, &objp->permissions))
2864*f44e1126SVitaliy Gusev 		return (FALSE);
2865*f44e1126SVitaliy Gusev 	return (TRUE);
2866*f44e1126SVitaliy Gusev }
2867*f44e1126SVitaliy Gusev 
2868*f44e1126SVitaliy Gusev bool_t
xdr_open_write_delegation4(XDR * xdrs,open_write_delegation4 * objp)2869*f44e1126SVitaliy Gusev xdr_open_write_delegation4(XDR *xdrs, open_write_delegation4 *objp)
2870*f44e1126SVitaliy Gusev {
2871*f44e1126SVitaliy Gusev 	if (!xdr_stateid4(xdrs, &objp->stateid))
2872*f44e1126SVitaliy Gusev 		return (FALSE);
2873*f44e1126SVitaliy Gusev 	if (!xdr_bool(xdrs, &objp->recall))
2874*f44e1126SVitaliy Gusev 		return (FALSE);
2875*f44e1126SVitaliy Gusev 	if (!xdr_nfs_space_limit4(xdrs, &objp->space_limit))
2876*f44e1126SVitaliy Gusev 		return (FALSE);
2877*f44e1126SVitaliy Gusev 	if (!xdr_nfsace4(xdrs, &objp->permissions))
2878*f44e1126SVitaliy Gusev 		return (FALSE);
2879*f44e1126SVitaliy Gusev 	return (TRUE);
2880*f44e1126SVitaliy Gusev }
2881*f44e1126SVitaliy Gusev 
2882*f44e1126SVitaliy Gusev bool_t
xdr_pathname4(XDR * xdrs,pathname4 * objp)2883*f44e1126SVitaliy Gusev xdr_pathname4(XDR *xdrs, pathname4 *objp)
2884*f44e1126SVitaliy Gusev {
2885*f44e1126SVitaliy Gusev 	if (!xdr_array(xdrs, (char **)&objp->pathname4_val,
2886*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->pathname4_len, ~0, sizeof (component4),
2887*f44e1126SVitaliy Gusev 	    (xdrproc_t)xdr_component4))
2888*f44e1126SVitaliy Gusev 		return (FALSE);
2889*f44e1126SVitaliy Gusev 	return (TRUE);
2890*f44e1126SVitaliy Gusev }
2891*f44e1126SVitaliy Gusev 
2892*f44e1126SVitaliy Gusev bool_t
xdr_sec_oid4(XDR * xdrs,sec_oid4 * objp)2893*f44e1126SVitaliy Gusev xdr_sec_oid4(XDR *xdrs, sec_oid4 *objp)
2894*f44e1126SVitaliy Gusev {
2895*f44e1126SVitaliy Gusev 	if (!xdr_bytes(xdrs, (char **)&objp->sec_oid4_val,
2896*f44e1126SVitaliy Gusev 	    (uint_t *)&objp->sec_oid4_len, ~0))
2897*f44e1126SVitaliy Gusev 		return (FALSE);
2898*f44e1126SVitaliy Gusev 	return (TRUE);
2899*f44e1126SVitaliy Gusev }
2900*f44e1126SVitaliy Gusev 
2901*f44e1126SVitaliy Gusev bool_t
xdr_rpc_gss_svc_t(XDR * xdrs,rpc_gss_svc_t * objp)2902*f44e1126SVitaliy Gusev xdr_rpc_gss_svc_t(XDR *xdrs, rpc_gss_svc_t *objp)
2903*f44e1126SVitaliy Gusev {
2904*f44e1126SVitaliy Gusev 	if (!xdr_enum(xdrs, (enum_t *)objp))
2905*f44e1126SVitaliy Gusev 		return (FALSE);
2906*f44e1126SVitaliy Gusev 	return (TRUE);
2907*f44e1126SVitaliy Gusev }
2908*f44e1126SVitaliy Gusev 
2909*f44e1126SVitaliy Gusev bool_t
xdr_stateid4(XDR * xdrs,stateid4 * objp)2910*f44e1126SVitaliy Gusev xdr_stateid4(XDR *xdrs, stateid4 *objp)
2911*f44e1126SVitaliy Gusev {
2912*f44e1126SVitaliy Gusev 	if (!xdr_uint32_t(xdrs, &objp->seqid))
2913*f44e1126SVitaliy Gusev 		return (FALSE);
2914*f44e1126SVitaliy Gusev 	if (!xdr_opaque(xdrs, objp->other, 12))
2915*f44e1126SVitaliy Gusev 		return (FALSE);
2916*f44e1126SVitaliy Gusev 	return (TRUE);
2917*f44e1126SVitaliy Gusev }
2918*f44e1126SVitaliy Gusev 
2919*f44e1126SVitaliy Gusev bool_t
xdr_utf8str_cis(XDR * xdrs,utf8str_cis * objp)2920*f44e1126SVitaliy Gusev xdr_utf8str_cis(XDR *xdrs, utf8str_cis *objp)
2921*f44e1126SVitaliy Gusev {
2922*f44e1126SVitaliy Gusev 	if (!xdr_utf8string(xdrs, objp))
2923*f44e1126SVitaliy Gusev 		return (FALSE);
2924*f44e1126SVitaliy Gusev 	return (TRUE);
2925*f44e1126SVitaliy Gusev }
2926*f44e1126SVitaliy Gusev 
2927*f44e1126SVitaliy Gusev bool_t
xdr_utf8str_cs(XDR * xdrs,utf8str_cs * objp)2928*f44e1126SVitaliy Gusev xdr_utf8str_cs(XDR *xdrs, utf8str_cs *objp)
2929*f44e1126SVitaliy Gusev {
2930*f44e1126SVitaliy Gusev 	if (!xdr_utf8string(xdrs, objp))
2931*f44e1126SVitaliy Gusev 		return (FALSE);
2932*f44e1126SVitaliy Gusev 	return (TRUE);
2933*f44e1126SVitaliy Gusev }
2934*f44e1126SVitaliy Gusev 
2935*f44e1126SVitaliy Gusev /* End of additional common NFSv4 XDR */
2936