1/* parser auto-generated by pidl */
2
3#include "includes.h"
4#include "../librpc/gen_ndr/ndr_xattr.h"
5
6#include "librpc/gen_ndr/ndr_security.h"
7static enum ndr_err_code ndr_push_xattr_DosInfoFFFFCompat(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfoFFFFCompat *r)
8{
9	if (ndr_flags & NDR_SCALARS) {
10		NDR_CHECK(ndr_push_align(ndr, 4));
11		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
12		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
13	}
14	if (ndr_flags & NDR_BUFFERS) {
15	}
16	return NDR_ERR_SUCCESS;
17}
18
19static enum ndr_err_code ndr_pull_xattr_DosInfoFFFFCompat(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfoFFFFCompat *r)
20{
21	if (ndr_flags & NDR_SCALARS) {
22		NDR_CHECK(ndr_pull_align(ndr, 4));
23		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
24		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
25	}
26	if (ndr_flags & NDR_BUFFERS) {
27	}
28	return NDR_ERR_SUCCESS;
29}
30
31_PUBLIC_ void ndr_print_xattr_DosInfoFFFFCompat(struct ndr_print *ndr, const char *name, const struct xattr_DosInfoFFFFCompat *r)
32{
33	ndr_print_struct(ndr, name, "xattr_DosInfoFFFFCompat");
34	ndr->depth++;
35	ndr_print_uint32(ndr, "attrib", r->attrib);
36	ndr->depth--;
37}
38
39static enum ndr_err_code ndr_push_xattr_DosInfo1(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo1 *r)
40{
41	if (ndr_flags & NDR_SCALARS) {
42		NDR_CHECK(ndr_push_align(ndr, 4));
43		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
44		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size));
45		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
46		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
47		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time));
48		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time));
49		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
50	}
51	if (ndr_flags & NDR_BUFFERS) {
52	}
53	return NDR_ERR_SUCCESS;
54}
55
56static enum ndr_err_code ndr_pull_xattr_DosInfo1(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo1 *r)
57{
58	if (ndr_flags & NDR_SCALARS) {
59		NDR_CHECK(ndr_pull_align(ndr, 4));
60		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
61		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size));
62		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
63		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
64		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time));
65		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time));
66		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
67	}
68	if (ndr_flags & NDR_BUFFERS) {
69	}
70	return NDR_ERR_SUCCESS;
71}
72
73_PUBLIC_ void ndr_print_xattr_DosInfo1(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo1 *r)
74{
75	ndr_print_struct(ndr, name, "xattr_DosInfo1");
76	ndr->depth++;
77	ndr_print_uint32(ndr, "attrib", r->attrib);
78	ndr_print_uint32(ndr, "ea_size", r->ea_size);
79	ndr_print_udlong(ndr, "size", r->size);
80	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
81	ndr_print_NTTIME(ndr, "create_time", r->create_time);
82	ndr_print_NTTIME(ndr, "change_time", r->change_time);
83	ndr->depth--;
84}
85
86static enum ndr_err_code ndr_push_xattr_DosInfo2Old(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo2Old *r)
87{
88	if (ndr_flags & NDR_SCALARS) {
89		NDR_CHECK(ndr_push_align(ndr, 4));
90		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
91		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
92		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size));
93		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
94		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
95		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time));
96		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time));
97		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->write_time));
98		{
99			uint32_t _flags_save_string = ndr->flags;
100			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
101			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
102			ndr->flags = _flags_save_string;
103		}
104		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
105	}
106	if (ndr_flags & NDR_BUFFERS) {
107	}
108	return NDR_ERR_SUCCESS;
109}
110
111static enum ndr_err_code ndr_pull_xattr_DosInfo2Old(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo2Old *r)
112{
113	if (ndr_flags & NDR_SCALARS) {
114		NDR_CHECK(ndr_pull_align(ndr, 4));
115		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
116		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
117		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size));
118		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
119		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
120		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time));
121		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time));
122		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->write_time));
123		{
124			uint32_t _flags_save_string = ndr->flags;
125			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
126			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
127			ndr->flags = _flags_save_string;
128		}
129		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
130	}
131	if (ndr_flags & NDR_BUFFERS) {
132	}
133	return NDR_ERR_SUCCESS;
134}
135
136_PUBLIC_ void ndr_print_xattr_DosInfo2Old(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo2Old *r)
137{
138	ndr_print_struct(ndr, name, "xattr_DosInfo2Old");
139	ndr->depth++;
140	ndr_print_uint32(ndr, "flags", r->flags);
141	ndr_print_uint32(ndr, "attrib", r->attrib);
142	ndr_print_uint32(ndr, "ea_size", r->ea_size);
143	ndr_print_udlong(ndr, "size", r->size);
144	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
145	ndr_print_NTTIME(ndr, "create_time", r->create_time);
146	ndr_print_NTTIME(ndr, "change_time", r->change_time);
147	ndr_print_NTTIME(ndr, "write_time", r->write_time);
148	ndr_print_string(ndr, "name", r->name);
149	ndr->depth--;
150}
151
152static enum ndr_err_code ndr_push_xattr_DosInfoValidFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
153{
154	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
155	return NDR_ERR_SUCCESS;
156}
157
158static enum ndr_err_code ndr_pull_xattr_DosInfoValidFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
159{
160	uint32_t v;
161	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
162	*r = v;
163	return NDR_ERR_SUCCESS;
164}
165
166_PUBLIC_ void ndr_print_xattr_DosInfoValidFlags(struct ndr_print *ndr, const char *name, uint32_t r)
167{
168	ndr_print_uint32(ndr, name, r);
169	ndr->depth++;
170	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_ATTRIB", XATTR_DOSINFO_ATTRIB, r);
171	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_EA_SIZE", XATTR_DOSINFO_EA_SIZE, r);
172	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_SIZE", XATTR_DOSINFO_SIZE, r);
173	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_ALLOC_SIZE", XATTR_DOSINFO_ALLOC_SIZE, r);
174	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_CREATE_TIME", XATTR_DOSINFO_CREATE_TIME, r);
175	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "XATTR_DOSINFO_CHANGE_TIME", XATTR_DOSINFO_CHANGE_TIME, r);
176	ndr->depth--;
177}
178
179static enum ndr_err_code ndr_push_xattr_DosInfo3(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo3 *r)
180{
181	if (ndr_flags & NDR_SCALARS) {
182		NDR_CHECK(ndr_push_align(ndr, 4));
183		NDR_CHECK(ndr_push_xattr_DosInfoValidFlags(ndr, NDR_SCALARS, r->valid_flags));
184		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
185		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size));
186		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
187		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
188		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time));
189		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time));
190		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
191	}
192	if (ndr_flags & NDR_BUFFERS) {
193	}
194	return NDR_ERR_SUCCESS;
195}
196
197static enum ndr_err_code ndr_pull_xattr_DosInfo3(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo3 *r)
198{
199	if (ndr_flags & NDR_SCALARS) {
200		NDR_CHECK(ndr_pull_align(ndr, 4));
201		NDR_CHECK(ndr_pull_xattr_DosInfoValidFlags(ndr, NDR_SCALARS, &r->valid_flags));
202		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
203		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size));
204		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
205		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
206		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time));
207		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time));
208		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
209	}
210	if (ndr_flags & NDR_BUFFERS) {
211	}
212	return NDR_ERR_SUCCESS;
213}
214
215_PUBLIC_ void ndr_print_xattr_DosInfo3(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo3 *r)
216{
217	ndr_print_struct(ndr, name, "xattr_DosInfo3");
218	ndr->depth++;
219	ndr_print_xattr_DosInfoValidFlags(ndr, "valid_flags", r->valid_flags);
220	ndr_print_uint32(ndr, "attrib", r->attrib);
221	ndr_print_uint32(ndr, "ea_size", r->ea_size);
222	ndr_print_udlong(ndr, "size", r->size);
223	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
224	ndr_print_NTTIME(ndr, "create_time", r->create_time);
225	ndr_print_NTTIME(ndr, "change_time", r->change_time);
226	ndr->depth--;
227}
228
229_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosInfo(struct ndr_push *ndr, int ndr_flags, const union xattr_DosInfo *r)
230{
231	if (ndr_flags & NDR_SCALARS) {
232		int level = ndr_push_get_switch_value(ndr, r);
233		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
234		NDR_CHECK(ndr_push_union_align(ndr, 4));
235		switch (level) {
236			case 0xFFFF: {
237				NDR_CHECK(ndr_push_xattr_DosInfoFFFFCompat(ndr, NDR_SCALARS, &r->compatinfoFFFF));
238			break; }
239
240			case 1: {
241				NDR_CHECK(ndr_push_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1));
242			break; }
243
244			case 2: {
245				NDR_CHECK(ndr_push_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2));
246			break; }
247
248			case 3: {
249				NDR_CHECK(ndr_push_xattr_DosInfo3(ndr, NDR_SCALARS, &r->info3));
250			break; }
251
252			default:
253				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
254		}
255	}
256	if (ndr_flags & NDR_BUFFERS) {
257		int level = ndr_push_get_switch_value(ndr, r);
258		switch (level) {
259			case 0xFFFF:
260			break;
261
262			case 1:
263			break;
264
265			case 2:
266			break;
267
268			case 3:
269			break;
270
271			default:
272				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
273		}
274	}
275	return NDR_ERR_SUCCESS;
276}
277
278_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosInfo(struct ndr_pull *ndr, int ndr_flags, union xattr_DosInfo *r)
279{
280	int level;
281	uint16_t _level;
282	level = ndr_pull_get_switch_value(ndr, r);
283	if (ndr_flags & NDR_SCALARS) {
284		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
285		if (_level != level) {
286			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
287		}
288		NDR_CHECK(ndr_pull_union_align(ndr, 4));
289		switch (level) {
290			case 0xFFFF: {
291				NDR_CHECK(ndr_pull_xattr_DosInfoFFFFCompat(ndr, NDR_SCALARS, &r->compatinfoFFFF));
292			break; }
293
294			case 1: {
295				NDR_CHECK(ndr_pull_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1));
296			break; }
297
298			case 2: {
299				NDR_CHECK(ndr_pull_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2));
300			break; }
301
302			case 3: {
303				NDR_CHECK(ndr_pull_xattr_DosInfo3(ndr, NDR_SCALARS, &r->info3));
304			break; }
305
306			default:
307				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
308		}
309	}
310	if (ndr_flags & NDR_BUFFERS) {
311		switch (level) {
312			case 0xFFFF:
313			break;
314
315			case 1:
316			break;
317
318			case 2:
319			break;
320
321			case 3:
322			break;
323
324			default:
325				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
326		}
327	}
328	return NDR_ERR_SUCCESS;
329}
330
331_PUBLIC_ void ndr_print_xattr_DosInfo(struct ndr_print *ndr, const char *name, const union xattr_DosInfo *r)
332{
333	int level;
334	level = ndr_print_get_switch_value(ndr, r);
335	ndr_print_union(ndr, name, level, "xattr_DosInfo");
336	switch (level) {
337		case 0xFFFF:
338			ndr_print_xattr_DosInfoFFFFCompat(ndr, "compatinfoFFFF", &r->compatinfoFFFF);
339		break;
340
341		case 1:
342			ndr_print_xattr_DosInfo1(ndr, "info1", &r->info1);
343		break;
344
345		case 2:
346			ndr_print_xattr_DosInfo2Old(ndr, "oldinfo2", &r->oldinfo2);
347		break;
348
349		case 3:
350			ndr_print_xattr_DosInfo3(ndr, "info3", &r->info3);
351		break;
352
353		default:
354			ndr_print_bad_level(ndr, name, level);
355	}
356}
357
358_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosAttrib(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosAttrib *r)
359{
360	if (ndr_flags & NDR_SCALARS) {
361		NDR_CHECK(ndr_push_align(ndr, 4));
362		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version));
363		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version));
364		NDR_CHECK(ndr_push_xattr_DosInfo(ndr, NDR_SCALARS, &r->info));
365		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
366	}
367	if (ndr_flags & NDR_BUFFERS) {
368	}
369	return NDR_ERR_SUCCESS;
370}
371
372_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosAttrib(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosAttrib *r)
373{
374	if (ndr_flags & NDR_SCALARS) {
375		NDR_CHECK(ndr_pull_align(ndr, 4));
376		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version));
377		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version));
378		NDR_CHECK(ndr_pull_xattr_DosInfo(ndr, NDR_SCALARS, &r->info));
379		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
380	}
381	if (ndr_flags & NDR_BUFFERS) {
382	}
383	return NDR_ERR_SUCCESS;
384}
385
386_PUBLIC_ void ndr_print_xattr_DosAttrib(struct ndr_print *ndr, const char *name, const struct xattr_DosAttrib *r)
387{
388	ndr_print_struct(ndr, name, "xattr_DosAttrib");
389	ndr->depth++;
390	ndr_print_uint16(ndr, "version", r->version);
391	ndr_print_set_switch_value(ndr, &r->info, r->version);
392	ndr_print_xattr_DosInfo(ndr, "info", &r->info);
393	ndr->depth--;
394}
395
396static enum ndr_err_code ndr_push_xattr_EA(struct ndr_push *ndr, int ndr_flags, const struct xattr_EA *r)
397{
398	if (ndr_flags & NDR_SCALARS) {
399		NDR_CHECK(ndr_push_align(ndr, 4));
400		{
401			uint32_t _flags_save_string = ndr->flags;
402			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
403			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
404			ndr->flags = _flags_save_string;
405		}
406		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->value));
407		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
408	}
409	if (ndr_flags & NDR_BUFFERS) {
410	}
411	return NDR_ERR_SUCCESS;
412}
413
414static enum ndr_err_code ndr_pull_xattr_EA(struct ndr_pull *ndr, int ndr_flags, struct xattr_EA *r)
415{
416	if (ndr_flags & NDR_SCALARS) {
417		NDR_CHECK(ndr_pull_align(ndr, 4));
418		{
419			uint32_t _flags_save_string = ndr->flags;
420			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
421			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
422			ndr->flags = _flags_save_string;
423		}
424		NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value));
425		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
426	}
427	if (ndr_flags & NDR_BUFFERS) {
428	}
429	return NDR_ERR_SUCCESS;
430}
431
432_PUBLIC_ void ndr_print_xattr_EA(struct ndr_print *ndr, const char *name, const struct xattr_EA *r)
433{
434	ndr_print_struct(ndr, name, "xattr_EA");
435	ndr->depth++;
436	ndr_print_string(ndr, "name", r->name);
437	ndr_print_DATA_BLOB(ndr, "value", r->value);
438	ndr->depth--;
439}
440
441_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosEAs(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosEAs *r)
442{
443	uint32_t cntr_eas_1;
444	if (ndr_flags & NDR_SCALARS) {
445		NDR_CHECK(ndr_push_align(ndr, 5));
446		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_eas));
447		NDR_CHECK(ndr_push_unique_ptr(ndr, r->eas));
448		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
449	}
450	if (ndr_flags & NDR_BUFFERS) {
451		if (r->eas) {
452			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_eas));
453			for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) {
454				NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1]));
455			}
456		}
457	}
458	return NDR_ERR_SUCCESS;
459}
460
461_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosEAs(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosEAs *r)
462{
463	uint32_t _ptr_eas;
464	uint32_t cntr_eas_1;
465	TALLOC_CTX *_mem_save_eas_0;
466	TALLOC_CTX *_mem_save_eas_1;
467	if (ndr_flags & NDR_SCALARS) {
468		NDR_CHECK(ndr_pull_align(ndr, 5));
469		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_eas));
470		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eas));
471		if (_ptr_eas) {
472			NDR_PULL_ALLOC(ndr, r->eas);
473		} else {
474			r->eas = NULL;
475		}
476		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
477	}
478	if (ndr_flags & NDR_BUFFERS) {
479		if (r->eas) {
480			_mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr);
481			NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
482			NDR_CHECK(ndr_pull_array_size(ndr, &r->eas));
483			NDR_PULL_ALLOC_N(ndr, r->eas, ndr_get_array_size(ndr, &r->eas));
484			_mem_save_eas_1 = NDR_PULL_GET_MEM_CTX(ndr);
485			NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
486			for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) {
487				NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1]));
488			}
489			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_1, 0);
490			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0);
491		}
492		if (r->eas) {
493			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eas, r->num_eas));
494		}
495	}
496	return NDR_ERR_SUCCESS;
497}
498
499_PUBLIC_ void ndr_print_xattr_DosEAs(struct ndr_print *ndr, const char *name, const struct xattr_DosEAs *r)
500{
501	uint32_t cntr_eas_1;
502	ndr_print_struct(ndr, name, "xattr_DosEAs");
503	ndr->depth++;
504	ndr_print_uint16(ndr, "num_eas", r->num_eas);
505	ndr_print_ptr(ndr, "eas", r->eas);
506	ndr->depth++;
507	if (r->eas) {
508		ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas);
509		ndr->depth++;
510		for (cntr_eas_1=0;cntr_eas_1<r->num_eas;cntr_eas_1++) {
511			char *idx_1=NULL;
512			if (asprintf(&idx_1, "[%d]", cntr_eas_1) != -1) {
513				ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_1]);
514				free(idx_1);
515			}
516		}
517		ndr->depth--;
518	}
519	ndr->depth--;
520	ndr->depth--;
521}
522
523_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r)
524{
525	uint32_t cntr_eas_0;
526	if (ndr_flags & NDR_SCALARS) {
527		NDR_CHECK(ndr_push_align(ndr, 4));
528		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_eas));
529		for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) {
530			NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0]));
531		}
532		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
533	}
534	if (ndr_flags & NDR_BUFFERS) {
535	}
536	return NDR_ERR_SUCCESS;
537}
538
539_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r)
540{
541	uint32_t cntr_eas_0;
542	TALLOC_CTX *_mem_save_eas_0;
543	if (ndr_flags & NDR_SCALARS) {
544		NDR_CHECK(ndr_pull_align(ndr, 4));
545		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_eas));
546		NDR_PULL_ALLOC_N(ndr, r->eas, r->num_eas);
547		_mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr);
548		NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
549		for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) {
550			NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0]));
551		}
552		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0);
553		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
554	}
555	if (ndr_flags & NDR_BUFFERS) {
556	}
557	return NDR_ERR_SUCCESS;
558}
559
560_PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r)
561{
562	uint32_t cntr_eas_0;
563	ndr_print_struct(ndr, name, "tdb_xattrs");
564	ndr->depth++;
565	ndr_print_uint32(ndr, "num_eas", r->num_eas);
566	ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas);
567	ndr->depth++;
568	for (cntr_eas_0=0;cntr_eas_0<r->num_eas;cntr_eas_0++) {
569		char *idx_0=NULL;
570		if (asprintf(&idx_0, "[%d]", cntr_eas_0) != -1) {
571			ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_0]);
572			free(idx_0);
573		}
574	}
575	ndr->depth--;
576	ndr->depth--;
577}
578
579static enum ndr_err_code ndr_push_xattr_DosStream(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosStream *r)
580{
581	if (ndr_flags & NDR_SCALARS) {
582		NDR_CHECK(ndr_push_align(ndr, 4));
583		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
584		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
585		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
586		{
587			uint32_t _flags_save_string = ndr->flags;
588			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
589			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
590			ndr->flags = _flags_save_string;
591		}
592		NDR_CHECK(ndr_push_trailer_align(ndr, 4));
593	}
594	if (ndr_flags & NDR_BUFFERS) {
595	}
596	return NDR_ERR_SUCCESS;
597}
598
599static enum ndr_err_code ndr_pull_xattr_DosStream(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosStream *r)
600{
601	if (ndr_flags & NDR_SCALARS) {
602		NDR_CHECK(ndr_pull_align(ndr, 4));
603		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
604		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
605		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
606		{
607			uint32_t _flags_save_string = ndr->flags;
608			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
609			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
610			ndr->flags = _flags_save_string;
611		}
612		NDR_CHECK(ndr_pull_trailer_align(ndr, 4));
613	}
614	if (ndr_flags & NDR_BUFFERS) {
615	}
616	return NDR_ERR_SUCCESS;
617}
618
619_PUBLIC_ void ndr_print_xattr_DosStream(struct ndr_print *ndr, const char *name, const struct xattr_DosStream *r)
620{
621	ndr_print_struct(ndr, name, "xattr_DosStream");
622	ndr->depth++;
623	ndr_print_uint32(ndr, "flags", r->flags);
624	ndr_print_udlong(ndr, "size", r->size);
625	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
626	ndr_print_string(ndr, "name", r->name);
627	ndr->depth--;
628}
629
630_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosStreams(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosStreams *r)
631{
632	uint32_t cntr_streams_1;
633	if (ndr_flags & NDR_SCALARS) {
634		NDR_CHECK(ndr_push_align(ndr, 5));
635		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_streams));
636		NDR_CHECK(ndr_push_unique_ptr(ndr, r->streams));
637		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
638	}
639	if (ndr_flags & NDR_BUFFERS) {
640		if (r->streams) {
641			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->num_streams));
642			for (cntr_streams_1 = 0; cntr_streams_1 < r->num_streams; cntr_streams_1++) {
643				NDR_CHECK(ndr_push_xattr_DosStream(ndr, NDR_SCALARS, &r->streams[cntr_streams_1]));
644			}
645		}
646	}
647	return NDR_ERR_SUCCESS;
648}
649
650_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosStreams(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosStreams *r)
651{
652	uint32_t _ptr_streams;
653	uint32_t cntr_streams_1;
654	TALLOC_CTX *_mem_save_streams_0;
655	TALLOC_CTX *_mem_save_streams_1;
656	if (ndr_flags & NDR_SCALARS) {
657		NDR_CHECK(ndr_pull_align(ndr, 5));
658		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_streams));
659		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_streams));
660		if (_ptr_streams) {
661			NDR_PULL_ALLOC(ndr, r->streams);
662		} else {
663			r->streams = NULL;
664		}
665		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
666	}
667	if (ndr_flags & NDR_BUFFERS) {
668		if (r->streams) {
669			_mem_save_streams_0 = NDR_PULL_GET_MEM_CTX(ndr);
670			NDR_PULL_SET_MEM_CTX(ndr, r->streams, 0);
671			NDR_CHECK(ndr_pull_array_size(ndr, &r->streams));
672			NDR_PULL_ALLOC_N(ndr, r->streams, ndr_get_array_size(ndr, &r->streams));
673			_mem_save_streams_1 = NDR_PULL_GET_MEM_CTX(ndr);
674			NDR_PULL_SET_MEM_CTX(ndr, r->streams, 0);
675			for (cntr_streams_1 = 0; cntr_streams_1 < r->num_streams; cntr_streams_1++) {
676				NDR_CHECK(ndr_pull_xattr_DosStream(ndr, NDR_SCALARS, &r->streams[cntr_streams_1]));
677			}
678			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_streams_1, 0);
679			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_streams_0, 0);
680		}
681		if (r->streams) {
682			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->streams, r->num_streams));
683		}
684	}
685	return NDR_ERR_SUCCESS;
686}
687
688_PUBLIC_ void ndr_print_xattr_DosStreams(struct ndr_print *ndr, const char *name, const struct xattr_DosStreams *r)
689{
690	uint32_t cntr_streams_1;
691	ndr_print_struct(ndr, name, "xattr_DosStreams");
692	ndr->depth++;
693	ndr_print_uint32(ndr, "num_streams", r->num_streams);
694	ndr_print_ptr(ndr, "streams", r->streams);
695	ndr->depth++;
696	if (r->streams) {
697		ndr->print(ndr, "%s: ARRAY(%d)", "streams", (int)r->num_streams);
698		ndr->depth++;
699		for (cntr_streams_1=0;cntr_streams_1<r->num_streams;cntr_streams_1++) {
700			char *idx_1=NULL;
701			if (asprintf(&idx_1, "[%d]", cntr_streams_1) != -1) {
702				ndr_print_xattr_DosStream(ndr, "streams", &r->streams[cntr_streams_1]);
703				free(idx_1);
704			}
705		}
706		ndr->depth--;
707	}
708	ndr->depth--;
709	ndr->depth--;
710}
711
712_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_hash_v2(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_hash_v2 *r)
713{
714	if (ndr_flags & NDR_SCALARS) {
715		NDR_CHECK(ndr_push_align(ndr, 5));
716		NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
717		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->hash, 16));
718		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
719	}
720	if (ndr_flags & NDR_BUFFERS) {
721		if (r->sd) {
722			NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
723		}
724	}
725	return NDR_ERR_SUCCESS;
726}
727
728_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_hash_v2(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_hash_v2 *r)
729{
730	uint32_t _ptr_sd;
731	TALLOC_CTX *_mem_save_sd_0;
732	if (ndr_flags & NDR_SCALARS) {
733		NDR_CHECK(ndr_pull_align(ndr, 5));
734		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
735		if (_ptr_sd) {
736			NDR_PULL_ALLOC(ndr, r->sd);
737		} else {
738			r->sd = NULL;
739		}
740		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->hash, 16));
741		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
742	}
743	if (ndr_flags & NDR_BUFFERS) {
744		if (r->sd) {
745			_mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
746			NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
747			NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
748			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
749		}
750	}
751	return NDR_ERR_SUCCESS;
752}
753
754_PUBLIC_ void ndr_print_security_descriptor_hash_v2(struct ndr_print *ndr, const char *name, const struct security_descriptor_hash_v2 *r)
755{
756	ndr_print_struct(ndr, name, "security_descriptor_hash_v2");
757	ndr->depth++;
758	ndr_print_ptr(ndr, "sd", r->sd);
759	ndr->depth++;
760	if (r->sd) {
761		ndr_print_security_descriptor(ndr, "sd", r->sd);
762	}
763	ndr->depth--;
764	ndr_print_array_uint8(ndr, "hash", r->hash, 16);
765	ndr->depth--;
766}
767
768_PUBLIC_ enum ndr_err_code ndr_push_security_descriptor_hash_v3(struct ndr_push *ndr, int ndr_flags, const struct security_descriptor_hash_v3 *r)
769{
770	if (ndr_flags & NDR_SCALARS) {
771		NDR_CHECK(ndr_push_align(ndr, 5));
772		NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
773		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->hash_type));
774		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->hash, 64));
775		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
776	}
777	if (ndr_flags & NDR_BUFFERS) {
778		if (r->sd) {
779			NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
780		}
781	}
782	return NDR_ERR_SUCCESS;
783}
784
785_PUBLIC_ enum ndr_err_code ndr_pull_security_descriptor_hash_v3(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor_hash_v3 *r)
786{
787	uint32_t _ptr_sd;
788	TALLOC_CTX *_mem_save_sd_0;
789	if (ndr_flags & NDR_SCALARS) {
790		NDR_CHECK(ndr_pull_align(ndr, 5));
791		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
792		if (_ptr_sd) {
793			NDR_PULL_ALLOC(ndr, r->sd);
794		} else {
795			r->sd = NULL;
796		}
797		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->hash_type));
798		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->hash, 64));
799		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
800	}
801	if (ndr_flags & NDR_BUFFERS) {
802		if (r->sd) {
803			_mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
804			NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
805			NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
806			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
807		}
808	}
809	return NDR_ERR_SUCCESS;
810}
811
812_PUBLIC_ void ndr_print_security_descriptor_hash_v3(struct ndr_print *ndr, const char *name, const struct security_descriptor_hash_v3 *r)
813{
814	ndr_print_struct(ndr, name, "security_descriptor_hash_v3");
815	ndr->depth++;
816	ndr_print_ptr(ndr, "sd", r->sd);
817	ndr->depth++;
818	if (r->sd) {
819		ndr_print_security_descriptor(ndr, "sd", r->sd);
820	}
821	ndr->depth--;
822	ndr_print_uint16(ndr, "hash_type", r->hash_type);
823	ndr_print_array_uint8(ndr, "hash", r->hash, 64);
824	ndr->depth--;
825}
826
827static enum ndr_err_code ndr_push_xattr_NTACL_Info(struct ndr_push *ndr, int ndr_flags, const union xattr_NTACL_Info *r)
828{
829	if (ndr_flags & NDR_SCALARS) {
830		int level = ndr_push_get_switch_value(ndr, r);
831		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
832		NDR_CHECK(ndr_push_union_align(ndr, 5));
833		switch (level) {
834			case 1: {
835				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
836			break; }
837
838			case 2: {
839				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_hs2));
840			break; }
841
842			case 3: {
843				NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_hs3));
844			break; }
845
846			default:
847				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
848		}
849	}
850	if (ndr_flags & NDR_BUFFERS) {
851		int level = ndr_push_get_switch_value(ndr, r);
852		switch (level) {
853			case 1:
854				if (r->sd) {
855					NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
856				}
857			break;
858
859			case 2:
860				if (r->sd_hs2) {
861					NDR_CHECK(ndr_push_security_descriptor_hash_v2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs2));
862				}
863			break;
864
865			case 3:
866				if (r->sd_hs3) {
867					NDR_CHECK(ndr_push_security_descriptor_hash_v3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs3));
868				}
869			break;
870
871			default:
872				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
873		}
874	}
875	return NDR_ERR_SUCCESS;
876}
877
878static enum ndr_err_code ndr_pull_xattr_NTACL_Info(struct ndr_pull *ndr, int ndr_flags, union xattr_NTACL_Info *r)
879{
880	int level;
881	uint16_t _level;
882	TALLOC_CTX *_mem_save_sd_0;
883	TALLOC_CTX *_mem_save_sd_hs2_0;
884	TALLOC_CTX *_mem_save_sd_hs3_0;
885	level = ndr_pull_get_switch_value(ndr, r);
886	if (ndr_flags & NDR_SCALARS) {
887		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
888		if (_level != level) {
889			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
890		}
891		NDR_CHECK(ndr_pull_union_align(ndr, 5));
892		switch (level) {
893			case 1: {
894				uint32_t _ptr_sd;
895				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
896				if (_ptr_sd) {
897					NDR_PULL_ALLOC(ndr, r->sd);
898				} else {
899					r->sd = NULL;
900				}
901			break; }
902
903			case 2: {
904				uint32_t _ptr_sd_hs2;
905				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_hs2));
906				if (_ptr_sd_hs2) {
907					NDR_PULL_ALLOC(ndr, r->sd_hs2);
908				} else {
909					r->sd_hs2 = NULL;
910				}
911			break; }
912
913			case 3: {
914				uint32_t _ptr_sd_hs3;
915				NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd_hs3));
916				if (_ptr_sd_hs3) {
917					NDR_PULL_ALLOC(ndr, r->sd_hs3);
918				} else {
919					r->sd_hs3 = NULL;
920				}
921			break; }
922
923			default:
924				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
925		}
926	}
927	if (ndr_flags & NDR_BUFFERS) {
928		switch (level) {
929			case 1:
930				if (r->sd) {
931					_mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
932					NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
933					NDR_CHECK(ndr_pull_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd));
934					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
935				}
936			break;
937
938			case 2:
939				if (r->sd_hs2) {
940					_mem_save_sd_hs2_0 = NDR_PULL_GET_MEM_CTX(ndr);
941					NDR_PULL_SET_MEM_CTX(ndr, r->sd_hs2, 0);
942					NDR_CHECK(ndr_pull_security_descriptor_hash_v2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs2));
943					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_hs2_0, 0);
944				}
945			break;
946
947			case 3:
948				if (r->sd_hs3) {
949					_mem_save_sd_hs3_0 = NDR_PULL_GET_MEM_CTX(ndr);
950					NDR_PULL_SET_MEM_CTX(ndr, r->sd_hs3, 0);
951					NDR_CHECK(ndr_pull_security_descriptor_hash_v3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs3));
952					NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_hs3_0, 0);
953				}
954			break;
955
956			default:
957				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
958		}
959	}
960	return NDR_ERR_SUCCESS;
961}
962
963_PUBLIC_ void ndr_print_xattr_NTACL_Info(struct ndr_print *ndr, const char *name, const union xattr_NTACL_Info *r)
964{
965	int level;
966	level = ndr_print_get_switch_value(ndr, r);
967	ndr_print_union(ndr, name, level, "xattr_NTACL_Info");
968	switch (level) {
969		case 1:
970			ndr_print_ptr(ndr, "sd", r->sd);
971			ndr->depth++;
972			if (r->sd) {
973				ndr_print_security_descriptor(ndr, "sd", r->sd);
974			}
975			ndr->depth--;
976		break;
977
978		case 2:
979			ndr_print_ptr(ndr, "sd_hs2", r->sd_hs2);
980			ndr->depth++;
981			if (r->sd_hs2) {
982				ndr_print_security_descriptor_hash_v2(ndr, "sd_hs2", r->sd_hs2);
983			}
984			ndr->depth--;
985		break;
986
987		case 3:
988			ndr_print_ptr(ndr, "sd_hs3", r->sd_hs3);
989			ndr->depth++;
990			if (r->sd_hs3) {
991				ndr_print_security_descriptor_hash_v3(ndr, "sd_hs3", r->sd_hs3);
992			}
993			ndr->depth--;
994		break;
995
996		default:
997			ndr_print_bad_level(ndr, name, level);
998	}
999}
1000
1001_PUBLIC_ enum ndr_err_code ndr_push_xattr_NTACL(struct ndr_push *ndr, int ndr_flags, const struct xattr_NTACL *r)
1002{
1003	if (ndr_flags & NDR_SCALARS) {
1004		NDR_CHECK(ndr_push_align(ndr, 5));
1005		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version));
1006		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version));
1007		NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info));
1008		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
1009	}
1010	if (ndr_flags & NDR_BUFFERS) {
1011		NDR_CHECK(ndr_push_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info));
1012	}
1013	return NDR_ERR_SUCCESS;
1014}
1015
1016_PUBLIC_ enum ndr_err_code ndr_pull_xattr_NTACL(struct ndr_pull *ndr, int ndr_flags, struct xattr_NTACL *r)
1017{
1018	if (ndr_flags & NDR_SCALARS) {
1019		NDR_CHECK(ndr_pull_align(ndr, 5));
1020		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version));
1021		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version));
1022		NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_SCALARS, &r->info));
1023		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
1024	}
1025	if (ndr_flags & NDR_BUFFERS) {
1026		NDR_CHECK(ndr_pull_xattr_NTACL_Info(ndr, NDR_BUFFERS, &r->info));
1027	}
1028	return NDR_ERR_SUCCESS;
1029}
1030
1031_PUBLIC_ void ndr_print_xattr_NTACL(struct ndr_print *ndr, const char *name, const struct xattr_NTACL *r)
1032{
1033	ndr_print_struct(ndr, name, "xattr_NTACL");
1034	ndr->depth++;
1035	ndr_print_uint16(ndr, "version", r->version);
1036	ndr_print_set_switch_value(ndr, &r->info, r->version);
1037	ndr_print_xattr_NTACL_Info(ndr, "info", &r->info);
1038	ndr->depth--;
1039}
1040
1041static enum ndr_err_code ndr_push_xattr_parse_DOSATTRIB(struct ndr_push *ndr, int flags, const struct xattr_parse_DOSATTRIB *r)
1042{
1043	if (flags & NDR_IN) {
1044		NDR_CHECK(ndr_push_xattr_DOSATTRIB(ndr, NDR_SCALARS, &r->in.x));
1045	}
1046	if (flags & NDR_OUT) {
1047	}
1048	return NDR_ERR_SUCCESS;
1049}
1050
1051static enum ndr_err_code ndr_pull_xattr_parse_DOSATTRIB(struct ndr_pull *ndr, int flags, struct xattr_parse_DOSATTRIB *r)
1052{
1053	if (flags & NDR_IN) {
1054		NDR_CHECK(ndr_pull_xattr_DOSATTRIB(ndr, NDR_SCALARS, &r->in.x));
1055	}
1056	if (flags & NDR_OUT) {
1057	}
1058	return NDR_ERR_SUCCESS;
1059}
1060
1061_PUBLIC_ void ndr_print_xattr_parse_DOSATTRIB(struct ndr_print *ndr, const char *name, int flags, const struct xattr_parse_DOSATTRIB *r)
1062{
1063	ndr_print_struct(ndr, name, "xattr_parse_DOSATTRIB");
1064	ndr->depth++;
1065	if (flags & NDR_SET_VALUES) {
1066		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1067	}
1068	if (flags & NDR_IN) {
1069		ndr_print_struct(ndr, "in", "xattr_parse_DOSATTRIB");
1070		ndr->depth++;
1071		ndr_print_xattr_DOSATTRIB(ndr, "x", &r->in.x);
1072		ndr->depth--;
1073	}
1074	if (flags & NDR_OUT) {
1075		ndr_print_struct(ndr, "out", "xattr_parse_DOSATTRIB");
1076		ndr->depth++;
1077		ndr->depth--;
1078	}
1079	ndr->depth--;
1080}
1081
1082static const struct ndr_interface_call xattr_calls[] = {
1083	{
1084		"xattr_parse_DOSATTRIB",
1085		sizeof(struct xattr_parse_DOSATTRIB),
1086		(ndr_push_flags_fn_t) ndr_push_xattr_parse_DOSATTRIB,
1087		(ndr_pull_flags_fn_t) ndr_pull_xattr_parse_DOSATTRIB,
1088		(ndr_print_function_t) ndr_print_xattr_parse_DOSATTRIB,
1089		false,
1090	},
1091	{ NULL, 0, NULL, NULL, NULL, false }
1092};
1093
1094static const char * const xattr_endpoint_strings[] = {
1095	"ncacn_np:[\\pipe\\xattr]",
1096};
1097
1098static const struct ndr_interface_string_array xattr_endpoints = {
1099	.count	= 1,
1100	.names	= xattr_endpoint_strings
1101};
1102
1103static const char * const xattr_authservice_strings[] = {
1104	"host",
1105};
1106
1107static const struct ndr_interface_string_array xattr_authservices = {
1108	.count	= 1,
1109	.names	= xattr_authservice_strings
1110};
1111
1112
1113const struct ndr_interface_table ndr_table_xattr = {
1114	.name		= "xattr",
1115	.syntax_id	= {
1116		{0x12345778,0x1234,0xabcd,{0x00,0x01},{0x00,0x00,0x00,0x02}},
1117		NDR_XATTR_VERSION
1118	},
1119	.helpstring	= NDR_XATTR_HELPSTRING,
1120	.num_calls	= 1,
1121	.calls		= xattr_calls,
1122	.endpoints	= &xattr_endpoints,
1123	.authservices	= &xattr_authservices
1124};
1125
1126