xref: /linux/fs/nfsd/nfs4xdr_gen.c (revision 2831fa8b8bcf1083f9526aa0c41fafb0796cf874)
1 // SPDX-License-Identifier: GPL-2.0
2 // Generated by xdrgen. Manual edits will be lost.
3 // XDR specification file: ../../Documentation/sunrpc/xdr/nfs4_1.x
4 // XDR specification modification time: Thu Jan  8 23:12:07 2026
5 
6 #include <linux/sunrpc/svc.h>
7 
8 #include "nfs4xdr_gen.h"
9 
10 static bool __maybe_unused
xdrgen_decode_int64_t(struct xdr_stream * xdr,int64_t * ptr)11 xdrgen_decode_int64_t(struct xdr_stream *xdr, int64_t *ptr)
12 {
13 	return xdrgen_decode_hyper(xdr, ptr);
14 }
15 
16 static bool __maybe_unused
xdrgen_decode_uint32_t(struct xdr_stream * xdr,uint32_t * ptr)17 xdrgen_decode_uint32_t(struct xdr_stream *xdr, uint32_t *ptr)
18 {
19 	return xdrgen_decode_unsigned_int(xdr, ptr);
20 }
21 
22 static bool __maybe_unused
xdrgen_decode_bitmap4(struct xdr_stream * xdr,bitmap4 * ptr)23 xdrgen_decode_bitmap4(struct xdr_stream *xdr, bitmap4 *ptr)
24 {
25 	if (xdr_stream_decode_u32(xdr, &ptr->count) < 0)
26 		return false;
27 	for (u32 i = 0; i < ptr->count; i++)
28 		if (!xdrgen_decode_uint32_t(xdr, &ptr->element[i]))
29 			return false;
30 	return true;
31 }
32 
33 static bool __maybe_unused
xdrgen_decode_utf8string(struct xdr_stream * xdr,utf8string * ptr)34 xdrgen_decode_utf8string(struct xdr_stream *xdr, utf8string *ptr)
35 {
36 	return xdrgen_decode_opaque(xdr, ptr, 0);
37 }
38 
39 static bool __maybe_unused
xdrgen_decode_utf8str_cis(struct xdr_stream * xdr,utf8str_cis * ptr)40 xdrgen_decode_utf8str_cis(struct xdr_stream *xdr, utf8str_cis *ptr)
41 {
42 	return xdrgen_decode_utf8string(xdr, ptr);
43 }
44 
45 static bool __maybe_unused
xdrgen_decode_utf8str_cs(struct xdr_stream * xdr,utf8str_cs * ptr)46 xdrgen_decode_utf8str_cs(struct xdr_stream *xdr, utf8str_cs *ptr)
47 {
48 	return xdrgen_decode_utf8string(xdr, ptr);
49 }
50 
51 static bool __maybe_unused
xdrgen_decode_utf8str_mixed(struct xdr_stream * xdr,utf8str_mixed * ptr)52 xdrgen_decode_utf8str_mixed(struct xdr_stream *xdr, utf8str_mixed *ptr)
53 {
54 	return xdrgen_decode_utf8string(xdr, ptr);
55 }
56 
57 static bool __maybe_unused
xdrgen_decode_nfstime4(struct xdr_stream * xdr,struct nfstime4 * ptr)58 xdrgen_decode_nfstime4(struct xdr_stream *xdr, struct nfstime4 *ptr)
59 {
60 	if (!xdrgen_decode_int64_t(xdr, &ptr->seconds))
61 		return false;
62 	if (!xdrgen_decode_uint32_t(xdr, &ptr->nseconds))
63 		return false;
64 	return true;
65 }
66 
67 static bool __maybe_unused
xdrgen_decode_fattr4_offline(struct xdr_stream * xdr,fattr4_offline * ptr)68 xdrgen_decode_fattr4_offline(struct xdr_stream *xdr, fattr4_offline *ptr)
69 {
70 	return xdrgen_decode_bool(xdr, ptr);
71 }
72 
73 static bool __maybe_unused
xdrgen_decode_open_arguments4(struct xdr_stream * xdr,struct open_arguments4 * ptr)74 xdrgen_decode_open_arguments4(struct xdr_stream *xdr, struct open_arguments4 *ptr)
75 {
76 	if (!xdrgen_decode_bitmap4(xdr, &ptr->oa_share_access))
77 		return false;
78 	if (!xdrgen_decode_bitmap4(xdr, &ptr->oa_share_deny))
79 		return false;
80 	if (!xdrgen_decode_bitmap4(xdr, &ptr->oa_share_access_want))
81 		return false;
82 	if (!xdrgen_decode_bitmap4(xdr, &ptr->oa_open_claim))
83 		return false;
84 	if (!xdrgen_decode_bitmap4(xdr, &ptr->oa_create_mode))
85 		return false;
86 	return true;
87 }
88 
89 static bool __maybe_unused
xdrgen_decode_open_args_share_access4(struct xdr_stream * xdr,open_args_share_access4 * ptr)90 xdrgen_decode_open_args_share_access4(struct xdr_stream *xdr, open_args_share_access4 *ptr)
91 {
92 	u32 val;
93 
94 	if (xdr_stream_decode_u32(xdr, &val) < 0)
95 		return false;
96 	/* Compiler may optimize to a range check for dense enums */
97 	switch (val) {
98 	case OPEN_ARGS_SHARE_ACCESS_READ:
99 	case OPEN_ARGS_SHARE_ACCESS_WRITE:
100 	case OPEN_ARGS_SHARE_ACCESS_BOTH:
101 		break;
102 	default:
103 		return false;
104 	}
105 	*ptr = val;
106 	return true;
107 }
108 
109 static bool __maybe_unused
xdrgen_decode_open_args_share_deny4(struct xdr_stream * xdr,open_args_share_deny4 * ptr)110 xdrgen_decode_open_args_share_deny4(struct xdr_stream *xdr, open_args_share_deny4 *ptr)
111 {
112 	u32 val;
113 
114 	if (xdr_stream_decode_u32(xdr, &val) < 0)
115 		return false;
116 	/* Compiler may optimize to a range check for dense enums */
117 	switch (val) {
118 	case OPEN_ARGS_SHARE_DENY_NONE:
119 	case OPEN_ARGS_SHARE_DENY_READ:
120 	case OPEN_ARGS_SHARE_DENY_WRITE:
121 	case OPEN_ARGS_SHARE_DENY_BOTH:
122 		break;
123 	default:
124 		return false;
125 	}
126 	*ptr = val;
127 	return true;
128 }
129 
130 static bool __maybe_unused
xdrgen_decode_open_args_share_access_want4(struct xdr_stream * xdr,open_args_share_access_want4 * ptr)131 xdrgen_decode_open_args_share_access_want4(struct xdr_stream *xdr, open_args_share_access_want4 *ptr)
132 {
133 	u32 val;
134 
135 	if (xdr_stream_decode_u32(xdr, &val) < 0)
136 		return false;
137 	/* Compiler may optimize to a range check for dense enums */
138 	switch (val) {
139 	case OPEN_ARGS_SHARE_ACCESS_WANT_ANY_DELEG:
140 	case OPEN_ARGS_SHARE_ACCESS_WANT_NO_DELEG:
141 	case OPEN_ARGS_SHARE_ACCESS_WANT_CANCEL:
142 	case OPEN_ARGS_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL:
143 	case OPEN_ARGS_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED:
144 	case OPEN_ARGS_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS:
145 	case OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION:
146 		break;
147 	default:
148 		return false;
149 	}
150 	*ptr = val;
151 	return true;
152 }
153 
154 static bool __maybe_unused
xdrgen_decode_open_args_open_claim4(struct xdr_stream * xdr,open_args_open_claim4 * ptr)155 xdrgen_decode_open_args_open_claim4(struct xdr_stream *xdr, open_args_open_claim4 *ptr)
156 {
157 	u32 val;
158 
159 	if (xdr_stream_decode_u32(xdr, &val) < 0)
160 		return false;
161 	/* Compiler may optimize to a range check for dense enums */
162 	switch (val) {
163 	case OPEN_ARGS_OPEN_CLAIM_NULL:
164 	case OPEN_ARGS_OPEN_CLAIM_PREVIOUS:
165 	case OPEN_ARGS_OPEN_CLAIM_DELEGATE_CUR:
166 	case OPEN_ARGS_OPEN_CLAIM_DELEGATE_PREV:
167 	case OPEN_ARGS_OPEN_CLAIM_FH:
168 	case OPEN_ARGS_OPEN_CLAIM_DELEG_CUR_FH:
169 	case OPEN_ARGS_OPEN_CLAIM_DELEG_PREV_FH:
170 		break;
171 	default:
172 		return false;
173 	}
174 	*ptr = val;
175 	return true;
176 }
177 
178 static bool __maybe_unused
xdrgen_decode_open_args_createmode4(struct xdr_stream * xdr,open_args_createmode4 * ptr)179 xdrgen_decode_open_args_createmode4(struct xdr_stream *xdr, open_args_createmode4 *ptr)
180 {
181 	u32 val;
182 
183 	if (xdr_stream_decode_u32(xdr, &val) < 0)
184 		return false;
185 	/* Compiler may optimize to a range check for dense enums */
186 	switch (val) {
187 	case OPEN_ARGS_CREATEMODE_UNCHECKED4:
188 	case OPEN_ARGS_CREATE_MODE_GUARDED:
189 	case OPEN_ARGS_CREATEMODE_EXCLUSIVE4:
190 	case OPEN_ARGS_CREATE_MODE_EXCLUSIVE4_1:
191 		break;
192 	default:
193 		return false;
194 	}
195 	*ptr = val;
196 	return true;
197 }
198 
199 bool
xdrgen_decode_fattr4_open_arguments(struct xdr_stream * xdr,fattr4_open_arguments * ptr)200 xdrgen_decode_fattr4_open_arguments(struct xdr_stream *xdr, fattr4_open_arguments *ptr)
201 {
202 	return xdrgen_decode_open_arguments4(xdr, ptr);
203 }
204 
205 /*
206  * Determine what OPEN supports.
207  */
208 
209 bool
xdrgen_decode_fattr4_time_deleg_access(struct xdr_stream * xdr,fattr4_time_deleg_access * ptr)210 xdrgen_decode_fattr4_time_deleg_access(struct xdr_stream *xdr, fattr4_time_deleg_access *ptr)
211 {
212 	return xdrgen_decode_nfstime4(xdr, ptr);
213 }
214 
215 bool
xdrgen_decode_fattr4_time_deleg_modify(struct xdr_stream * xdr,fattr4_time_deleg_modify * ptr)216 xdrgen_decode_fattr4_time_deleg_modify(struct xdr_stream *xdr, fattr4_time_deleg_modify *ptr)
217 {
218 	return xdrgen_decode_nfstime4(xdr, ptr);
219 }
220 
221 /*
222  * New RECOMMENDED Attribute for
223  * delegation caching of times
224  */
225 
226 static bool __maybe_unused
xdrgen_decode_open_delegation_type4(struct xdr_stream * xdr,open_delegation_type4 * ptr)227 xdrgen_decode_open_delegation_type4(struct xdr_stream *xdr, open_delegation_type4 *ptr)
228 {
229 	u32 val;
230 
231 	if (xdr_stream_decode_u32(xdr, &val) < 0)
232 		return false;
233 	/* Compiler may optimize to a range check for dense enums */
234 	switch (val) {
235 	case OPEN_DELEGATE_NONE:
236 	case OPEN_DELEGATE_READ:
237 	case OPEN_DELEGATE_WRITE:
238 	case OPEN_DELEGATE_NONE_EXT:
239 	case OPEN_DELEGATE_READ_ATTRS_DELEG:
240 	case OPEN_DELEGATE_WRITE_ATTRS_DELEG:
241 		break;
242 	default:
243 		return false;
244 	}
245 	*ptr = val;
246 	return true;
247 }
248 
249 bool
xdrgen_decode_aclmodel4(struct xdr_stream * xdr,aclmodel4 * ptr)250 xdrgen_decode_aclmodel4(struct xdr_stream *xdr, aclmodel4 *ptr)
251 {
252 	u32 val;
253 
254 	if (xdr_stream_decode_u32(xdr, &val) < 0)
255 		return false;
256 	/* Compiler may optimize to a range check for dense enums */
257 	switch (val) {
258 	case ACL_MODEL_NFS4:
259 	case ACL_MODEL_POSIX_DRAFT:
260 	case ACL_MODEL_NONE:
261 		break;
262 	default:
263 		return false;
264 	}
265 	*ptr = val;
266 	return true;
267 }
268 
269 bool
xdrgen_decode_aclscope4(struct xdr_stream * xdr,aclscope4 * ptr)270 xdrgen_decode_aclscope4(struct xdr_stream *xdr, aclscope4 *ptr)
271 {
272 	u32 val;
273 
274 	if (xdr_stream_decode_u32(xdr, &val) < 0)
275 		return false;
276 	/* Compiler may optimize to a range check for dense enums */
277 	switch (val) {
278 	case ACL_SCOPE_FILE_OBJECT:
279 	case ACL_SCOPE_FILE_SYSTEM:
280 	case ACL_SCOPE_SERVER:
281 		break;
282 	default:
283 		return false;
284 	}
285 	*ptr = val;
286 	return true;
287 }
288 
289 bool
xdrgen_decode_posixacetag4(struct xdr_stream * xdr,posixacetag4 * ptr)290 xdrgen_decode_posixacetag4(struct xdr_stream *xdr, posixacetag4 *ptr)
291 {
292 	u32 val;
293 
294 	if (xdr_stream_decode_u32(xdr, &val) < 0)
295 		return false;
296 	/* Compiler may optimize to a range check for dense enums */
297 	switch (val) {
298 	case POSIXACE4_TAG_USER_OBJ:
299 	case POSIXACE4_TAG_USER:
300 	case POSIXACE4_TAG_GROUP_OBJ:
301 	case POSIXACE4_TAG_GROUP:
302 	case POSIXACE4_TAG_MASK:
303 	case POSIXACE4_TAG_OTHER:
304 		break;
305 	default:
306 		return false;
307 	}
308 	*ptr = val;
309 	return true;
310 }
311 
312 bool
xdrgen_decode_posixaceperm4(struct xdr_stream * xdr,posixaceperm4 * ptr)313 xdrgen_decode_posixaceperm4(struct xdr_stream *xdr, posixaceperm4 *ptr)
314 {
315 	return xdrgen_decode_uint32_t(xdr, ptr);
316 }
317 
318 static bool __maybe_unused
xdrgen_decode_posixace4(struct xdr_stream * xdr,struct posixace4 * ptr)319 xdrgen_decode_posixace4(struct xdr_stream *xdr, struct posixace4 *ptr)
320 {
321 	if (!xdrgen_decode_posixacetag4(xdr, &ptr->tag))
322 		return false;
323 	if (!xdrgen_decode_posixaceperm4(xdr, &ptr->perm))
324 		return false;
325 	if (!xdrgen_decode_utf8str_mixed(xdr, &ptr->who))
326 		return false;
327 	return true;
328 }
329 
330 static bool __maybe_unused
xdrgen_decode_fattr4_acl_trueform(struct xdr_stream * xdr,fattr4_acl_trueform * ptr)331 xdrgen_decode_fattr4_acl_trueform(struct xdr_stream *xdr, fattr4_acl_trueform *ptr)
332 {
333 	return xdrgen_decode_aclmodel4(xdr, ptr);
334 }
335 
336 static bool __maybe_unused
xdrgen_decode_fattr4_acl_trueform_scope(struct xdr_stream * xdr,fattr4_acl_trueform_scope * ptr)337 xdrgen_decode_fattr4_acl_trueform_scope(struct xdr_stream *xdr, fattr4_acl_trueform_scope *ptr)
338 {
339 	return xdrgen_decode_aclscope4(xdr, ptr);
340 }
341 
342 static bool __maybe_unused
xdrgen_decode_fattr4_posix_default_acl(struct xdr_stream * xdr,fattr4_posix_default_acl * ptr)343 xdrgen_decode_fattr4_posix_default_acl(struct xdr_stream *xdr, fattr4_posix_default_acl *ptr)
344 {
345 	if (xdr_stream_decode_u32(xdr, &ptr->count) < 0)
346 		return false;
347 	for (u32 i = 0; i < ptr->count; i++)
348 		if (!xdrgen_decode_posixace4(xdr, &ptr->element[i]))
349 			return false;
350 	return true;
351 }
352 
353 static bool __maybe_unused
xdrgen_decode_fattr4_posix_access_acl(struct xdr_stream * xdr,fattr4_posix_access_acl * ptr)354 xdrgen_decode_fattr4_posix_access_acl(struct xdr_stream *xdr, fattr4_posix_access_acl *ptr)
355 {
356 	if (xdr_stream_decode_u32(xdr, &ptr->count) < 0)
357 		return false;
358 	for (u32 i = 0; i < ptr->count; i++)
359 		if (!xdrgen_decode_posixace4(xdr, &ptr->element[i]))
360 			return false;
361 	return true;
362 }
363 
364 /*
365  * New for POSIX ACL extension
366  */
367 
368 static bool __maybe_unused
xdrgen_encode_int64_t(struct xdr_stream * xdr,const int64_t value)369 xdrgen_encode_int64_t(struct xdr_stream *xdr, const int64_t value)
370 {
371 	return xdrgen_encode_hyper(xdr, value);
372 }
373 
374 static bool __maybe_unused
xdrgen_encode_uint32_t(struct xdr_stream * xdr,const uint32_t value)375 xdrgen_encode_uint32_t(struct xdr_stream *xdr, const uint32_t value)
376 {
377 	return xdrgen_encode_unsigned_int(xdr, value);
378 }
379 
380 static bool __maybe_unused
xdrgen_encode_bitmap4(struct xdr_stream * xdr,const bitmap4 value)381 xdrgen_encode_bitmap4(struct xdr_stream *xdr, const bitmap4 value)
382 {
383 	if (xdr_stream_encode_u32(xdr, value.count) != XDR_UNIT)
384 		return false;
385 	for (u32 i = 0; i < value.count; i++)
386 		if (!xdrgen_encode_uint32_t(xdr, value.element[i]))
387 			return false;
388 	return true;
389 }
390 
391 static bool __maybe_unused
xdrgen_encode_utf8string(struct xdr_stream * xdr,const utf8string value)392 xdrgen_encode_utf8string(struct xdr_stream *xdr, const utf8string value)
393 {
394 	return xdr_stream_encode_opaque(xdr, value.data, value.len) >= 0;
395 }
396 
397 static bool __maybe_unused
xdrgen_encode_utf8str_cis(struct xdr_stream * xdr,const utf8str_cis value)398 xdrgen_encode_utf8str_cis(struct xdr_stream *xdr, const utf8str_cis value)
399 {
400 	return xdrgen_encode_utf8string(xdr, value);
401 }
402 
403 static bool __maybe_unused
xdrgen_encode_utf8str_cs(struct xdr_stream * xdr,const utf8str_cs value)404 xdrgen_encode_utf8str_cs(struct xdr_stream *xdr, const utf8str_cs value)
405 {
406 	return xdrgen_encode_utf8string(xdr, value);
407 }
408 
409 static bool __maybe_unused
xdrgen_encode_utf8str_mixed(struct xdr_stream * xdr,const utf8str_mixed value)410 xdrgen_encode_utf8str_mixed(struct xdr_stream *xdr, const utf8str_mixed value)
411 {
412 	return xdrgen_encode_utf8string(xdr, value);
413 }
414 
415 static bool __maybe_unused
xdrgen_encode_nfstime4(struct xdr_stream * xdr,const struct nfstime4 * value)416 xdrgen_encode_nfstime4(struct xdr_stream *xdr, const struct nfstime4 *value)
417 {
418 	if (!xdrgen_encode_int64_t(xdr, value->seconds))
419 		return false;
420 	if (!xdrgen_encode_uint32_t(xdr, value->nseconds))
421 		return false;
422 	return true;
423 }
424 
425 static bool __maybe_unused
xdrgen_encode_fattr4_offline(struct xdr_stream * xdr,const fattr4_offline value)426 xdrgen_encode_fattr4_offline(struct xdr_stream *xdr, const fattr4_offline value)
427 {
428 	return xdrgen_encode_bool(xdr, value);
429 }
430 
431 static bool __maybe_unused
xdrgen_encode_open_arguments4(struct xdr_stream * xdr,const struct open_arguments4 * value)432 xdrgen_encode_open_arguments4(struct xdr_stream *xdr, const struct open_arguments4 *value)
433 {
434 	if (!xdrgen_encode_bitmap4(xdr, value->oa_share_access))
435 		return false;
436 	if (!xdrgen_encode_bitmap4(xdr, value->oa_share_deny))
437 		return false;
438 	if (!xdrgen_encode_bitmap4(xdr, value->oa_share_access_want))
439 		return false;
440 	if (!xdrgen_encode_bitmap4(xdr, value->oa_open_claim))
441 		return false;
442 	if (!xdrgen_encode_bitmap4(xdr, value->oa_create_mode))
443 		return false;
444 	return true;
445 }
446 
447 static bool __maybe_unused
xdrgen_encode_open_args_share_access4(struct xdr_stream * xdr,open_args_share_access4 value)448 xdrgen_encode_open_args_share_access4(struct xdr_stream *xdr, open_args_share_access4 value)
449 {
450 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
451 }
452 
453 static bool __maybe_unused
xdrgen_encode_open_args_share_deny4(struct xdr_stream * xdr,open_args_share_deny4 value)454 xdrgen_encode_open_args_share_deny4(struct xdr_stream *xdr, open_args_share_deny4 value)
455 {
456 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
457 }
458 
459 static bool __maybe_unused
xdrgen_encode_open_args_share_access_want4(struct xdr_stream * xdr,open_args_share_access_want4 value)460 xdrgen_encode_open_args_share_access_want4(struct xdr_stream *xdr, open_args_share_access_want4 value)
461 {
462 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
463 }
464 
465 static bool __maybe_unused
xdrgen_encode_open_args_open_claim4(struct xdr_stream * xdr,open_args_open_claim4 value)466 xdrgen_encode_open_args_open_claim4(struct xdr_stream *xdr, open_args_open_claim4 value)
467 {
468 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
469 }
470 
471 static bool __maybe_unused
xdrgen_encode_open_args_createmode4(struct xdr_stream * xdr,open_args_createmode4 value)472 xdrgen_encode_open_args_createmode4(struct xdr_stream *xdr, open_args_createmode4 value)
473 {
474 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
475 }
476 
477 bool
xdrgen_encode_fattr4_open_arguments(struct xdr_stream * xdr,const fattr4_open_arguments * value)478 xdrgen_encode_fattr4_open_arguments(struct xdr_stream *xdr, const fattr4_open_arguments *value)
479 {
480 	return xdrgen_encode_open_arguments4(xdr, value);
481 }
482 
483 bool
xdrgen_encode_fattr4_time_deleg_access(struct xdr_stream * xdr,const fattr4_time_deleg_access * value)484 xdrgen_encode_fattr4_time_deleg_access(struct xdr_stream *xdr, const fattr4_time_deleg_access *value)
485 {
486 	return xdrgen_encode_nfstime4(xdr, value);
487 }
488 
489 bool
xdrgen_encode_fattr4_time_deleg_modify(struct xdr_stream * xdr,const fattr4_time_deleg_modify * value)490 xdrgen_encode_fattr4_time_deleg_modify(struct xdr_stream *xdr, const fattr4_time_deleg_modify *value)
491 {
492 	return xdrgen_encode_nfstime4(xdr, value);
493 }
494 
495 static bool __maybe_unused
xdrgen_encode_open_delegation_type4(struct xdr_stream * xdr,open_delegation_type4 value)496 xdrgen_encode_open_delegation_type4(struct xdr_stream *xdr, open_delegation_type4 value)
497 {
498 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
499 }
500 
501 bool
xdrgen_encode_aclmodel4(struct xdr_stream * xdr,aclmodel4 value)502 xdrgen_encode_aclmodel4(struct xdr_stream *xdr, aclmodel4 value)
503 {
504 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
505 }
506 
507 bool
xdrgen_encode_aclscope4(struct xdr_stream * xdr,aclscope4 value)508 xdrgen_encode_aclscope4(struct xdr_stream *xdr, aclscope4 value)
509 {
510 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
511 }
512 
513 bool
xdrgen_encode_posixacetag4(struct xdr_stream * xdr,posixacetag4 value)514 xdrgen_encode_posixacetag4(struct xdr_stream *xdr, posixacetag4 value)
515 {
516 	return xdr_stream_encode_u32(xdr, value) == XDR_UNIT;
517 }
518 
519 bool
xdrgen_encode_posixaceperm4(struct xdr_stream * xdr,const posixaceperm4 value)520 xdrgen_encode_posixaceperm4(struct xdr_stream *xdr, const posixaceperm4 value)
521 {
522 	return xdrgen_encode_uint32_t(xdr, value);
523 }
524 
525 static bool __maybe_unused
xdrgen_encode_posixace4(struct xdr_stream * xdr,const struct posixace4 * value)526 xdrgen_encode_posixace4(struct xdr_stream *xdr, const struct posixace4 *value)
527 {
528 	if (!xdrgen_encode_posixacetag4(xdr, value->tag))
529 		return false;
530 	if (!xdrgen_encode_posixaceperm4(xdr, value->perm))
531 		return false;
532 	if (!xdrgen_encode_utf8str_mixed(xdr, value->who))
533 		return false;
534 	return true;
535 }
536 
537 static bool __maybe_unused
xdrgen_encode_fattr4_acl_trueform(struct xdr_stream * xdr,const fattr4_acl_trueform value)538 xdrgen_encode_fattr4_acl_trueform(struct xdr_stream *xdr, const fattr4_acl_trueform value)
539 {
540 	return xdrgen_encode_aclmodel4(xdr, value);
541 }
542 
543 static bool __maybe_unused
xdrgen_encode_fattr4_acl_trueform_scope(struct xdr_stream * xdr,const fattr4_acl_trueform_scope value)544 xdrgen_encode_fattr4_acl_trueform_scope(struct xdr_stream *xdr, const fattr4_acl_trueform_scope value)
545 {
546 	return xdrgen_encode_aclscope4(xdr, value);
547 }
548 
549 static bool __maybe_unused
xdrgen_encode_fattr4_posix_default_acl(struct xdr_stream * xdr,const fattr4_posix_default_acl value)550 xdrgen_encode_fattr4_posix_default_acl(struct xdr_stream *xdr, const fattr4_posix_default_acl value)
551 {
552 	if (xdr_stream_encode_u32(xdr, value.count) != XDR_UNIT)
553 		return false;
554 	for (u32 i = 0; i < value.count; i++)
555 		if (!xdrgen_encode_posixace4(xdr, &value.element[i]))
556 			return false;
557 	return true;
558 }
559 
560 static bool __maybe_unused
xdrgen_encode_fattr4_posix_access_acl(struct xdr_stream * xdr,const fattr4_posix_access_acl value)561 xdrgen_encode_fattr4_posix_access_acl(struct xdr_stream *xdr, const fattr4_posix_access_acl value)
562 {
563 	if (xdr_stream_encode_u32(xdr, value.count) != XDR_UNIT)
564 		return false;
565 	for (u32 i = 0; i < value.count; i++)
566 		if (!xdrgen_encode_posixace4(xdr, &value.element[i]))
567 			return false;
568 	return true;
569 }
570