1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_echo.h"
6 static enum ndr_err_code
ndr_push_echo_info1(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info1
*r
)
8 if (ndr_flags
& NDR_SCALARS
) {
9 NDR_CHECK(ndr_push_align(ndr
, 1));
10 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->v
));
12 if (ndr_flags
& NDR_BUFFERS
) {
14 return NDR_ERR_SUCCESS
;
17 static enum ndr_err_code
ndr_pull_echo_info1(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info1
*r
)
19 if (ndr_flags
& NDR_SCALARS
) {
20 NDR_CHECK(ndr_pull_align(ndr
, 1));
21 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->v
));
23 if (ndr_flags
& NDR_BUFFERS
) {
25 return NDR_ERR_SUCCESS
;
28 _PUBLIC_
void ndr_print_echo_info1(struct ndr_print
*ndr
, const char *name
, const struct echo_info1
*r
)
30 ndr_print_struct(ndr
, name
, "echo_info1");
32 ndr_print_uint8(ndr
, "v", r
->v
);
36 static enum ndr_err_code
ndr_push_echo_info2(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info2
*r
)
38 if (ndr_flags
& NDR_SCALARS
) {
39 NDR_CHECK(ndr_push_align(ndr
, 2));
40 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->v
));
42 if (ndr_flags
& NDR_BUFFERS
) {
44 return NDR_ERR_SUCCESS
;
47 static enum ndr_err_code
ndr_pull_echo_info2(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info2
*r
)
49 if (ndr_flags
& NDR_SCALARS
) {
50 NDR_CHECK(ndr_pull_align(ndr
, 2));
51 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->v
));
53 if (ndr_flags
& NDR_BUFFERS
) {
55 return NDR_ERR_SUCCESS
;
58 _PUBLIC_
void ndr_print_echo_info2(struct ndr_print
*ndr
, const char *name
, const struct echo_info2
*r
)
60 ndr_print_struct(ndr
, name
, "echo_info2");
62 ndr_print_uint16(ndr
, "v", r
->v
);
66 static enum ndr_err_code
ndr_push_echo_info3(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info3
*r
)
68 if (ndr_flags
& NDR_SCALARS
) {
69 NDR_CHECK(ndr_push_align(ndr
, 4));
70 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->v
));
72 if (ndr_flags
& NDR_BUFFERS
) {
74 return NDR_ERR_SUCCESS
;
77 static enum ndr_err_code
ndr_pull_echo_info3(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info3
*r
)
79 if (ndr_flags
& NDR_SCALARS
) {
80 NDR_CHECK(ndr_pull_align(ndr
, 4));
81 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->v
));
83 if (ndr_flags
& NDR_BUFFERS
) {
85 return NDR_ERR_SUCCESS
;
88 _PUBLIC_
void ndr_print_echo_info3(struct ndr_print
*ndr
, const char *name
, const struct echo_info3
*r
)
90 ndr_print_struct(ndr
, name
, "echo_info3");
92 ndr_print_uint32(ndr
, "v", r
->v
);
96 static enum ndr_err_code
ndr_push_STRUCT_echo_info4(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info4
*r
)
98 if (ndr_flags
& NDR_SCALARS
) {
99 NDR_CHECK(ndr_push_align(ndr
, 8));
100 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->v
));
102 if (ndr_flags
& NDR_BUFFERS
) {
104 return NDR_ERR_SUCCESS
;
107 static enum ndr_err_code
ndr_pull_STRUCT_echo_info4(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info4
*r
)
109 if (ndr_flags
& NDR_SCALARS
) {
110 NDR_CHECK(ndr_pull_align(ndr
, 8));
111 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->v
));
113 if (ndr_flags
& NDR_BUFFERS
) {
115 return NDR_ERR_SUCCESS
;
118 _PUBLIC_
void ndr_print_STRUCT_echo_info4(struct ndr_print
*ndr
, const char *name
, const struct echo_info4
*r
)
120 ndr_print_struct(ndr
, name
, "echo_info4");
122 ndr_print_hyper(ndr
, "v", r
->v
);
126 static enum ndr_err_code
ndr_push_echo_info5(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info5
*r
)
128 if (ndr_flags
& NDR_SCALARS
) {
129 NDR_CHECK(ndr_push_align(ndr
, 8));
130 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->v1
));
131 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->v2
));
133 if (ndr_flags
& NDR_BUFFERS
) {
135 return NDR_ERR_SUCCESS
;
138 static enum ndr_err_code
ndr_pull_echo_info5(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info5
*r
)
140 if (ndr_flags
& NDR_SCALARS
) {
141 NDR_CHECK(ndr_pull_align(ndr
, 8));
142 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->v1
));
143 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->v2
));
145 if (ndr_flags
& NDR_BUFFERS
) {
147 return NDR_ERR_SUCCESS
;
150 _PUBLIC_
void ndr_print_echo_info5(struct ndr_print
*ndr
, const char *name
, const struct echo_info5
*r
)
152 ndr_print_struct(ndr
, name
, "echo_info5");
154 ndr_print_uint8(ndr
, "v1", r
->v1
);
155 ndr_print_hyper(ndr
, "v2", r
->v2
);
159 static enum ndr_err_code
ndr_push_echo_info6(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info6
*r
)
161 if (ndr_flags
& NDR_SCALARS
) {
162 NDR_CHECK(ndr_push_align(ndr
, 1));
163 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->v1
));
164 NDR_CHECK(ndr_push_echo_info1(ndr
, NDR_SCALARS
, &r
->info1
));
166 if (ndr_flags
& NDR_BUFFERS
) {
168 return NDR_ERR_SUCCESS
;
171 static enum ndr_err_code
ndr_pull_echo_info6(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info6
*r
)
173 if (ndr_flags
& NDR_SCALARS
) {
174 NDR_CHECK(ndr_pull_align(ndr
, 1));
175 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->v1
));
176 NDR_CHECK(ndr_pull_echo_info1(ndr
, NDR_SCALARS
, &r
->info1
));
178 if (ndr_flags
& NDR_BUFFERS
) {
180 return NDR_ERR_SUCCESS
;
183 _PUBLIC_
void ndr_print_echo_info6(struct ndr_print
*ndr
, const char *name
, const struct echo_info6
*r
)
185 ndr_print_struct(ndr
, name
, "echo_info6");
187 ndr_print_uint8(ndr
, "v1", r
->v1
);
188 ndr_print_echo_info1(ndr
, "info1", &r
->info1
);
192 static enum ndr_err_code
ndr_push_echo_info7(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_info7
*r
)
194 if (ndr_flags
& NDR_SCALARS
) {
195 NDR_CHECK(ndr_push_align(ndr
, 8));
196 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->v1
));
197 NDR_CHECK(ndr_push_STRUCT_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
199 if (ndr_flags
& NDR_BUFFERS
) {
201 return NDR_ERR_SUCCESS
;
204 static enum ndr_err_code
ndr_pull_echo_info7(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_info7
*r
)
206 if (ndr_flags
& NDR_SCALARS
) {
207 NDR_CHECK(ndr_pull_align(ndr
, 8));
208 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->v1
));
209 NDR_CHECK(ndr_pull_STRUCT_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
211 if (ndr_flags
& NDR_BUFFERS
) {
213 return NDR_ERR_SUCCESS
;
216 _PUBLIC_
void ndr_print_echo_info7(struct ndr_print
*ndr
, const char *name
, const struct echo_info7
*r
)
218 ndr_print_struct(ndr
, name
, "echo_info7");
220 ndr_print_uint8(ndr
, "v1", r
->v1
);
221 ndr_print_STRUCT_echo_info4(ndr
, "info4", &r
->info4
);
225 static enum ndr_err_code
ndr_push_echo_Info(struct ndr_push
*ndr
, int ndr_flags
, const union echo_Info
*r
)
227 if (ndr_flags
& NDR_SCALARS
) {
228 int level
= ndr_push_get_switch_value(ndr
, r
);
229 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, level
));
232 NDR_CHECK(ndr_push_echo_info1(ndr
, NDR_SCALARS
, &r
->info1
));
236 NDR_CHECK(ndr_push_echo_info2(ndr
, NDR_SCALARS
, &r
->info2
));
240 NDR_CHECK(ndr_push_echo_info3(ndr
, NDR_SCALARS
, &r
->info3
));
244 NDR_CHECK(ndr_push_STRUCT_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
248 NDR_CHECK(ndr_push_echo_info5(ndr
, NDR_SCALARS
, &r
->info5
));
252 NDR_CHECK(ndr_push_echo_info6(ndr
, NDR_SCALARS
, &r
->info6
));
256 NDR_CHECK(ndr_push_echo_info7(ndr
, NDR_SCALARS
, &r
->info7
));
260 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
263 if (ndr_flags
& NDR_BUFFERS
) {
264 int level
= ndr_push_get_switch_value(ndr
, r
);
288 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
291 return NDR_ERR_SUCCESS
;
294 static enum ndr_err_code
ndr_pull_echo_Info(struct ndr_pull
*ndr
, int ndr_flags
, union echo_Info
*r
)
298 level
= ndr_pull_get_switch_value(ndr
, r
);
299 if (ndr_flags
& NDR_SCALARS
) {
300 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &_level
));
301 if (_level
!= level
) {
302 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r", _level
);
306 NDR_CHECK(ndr_pull_echo_info1(ndr
, NDR_SCALARS
, &r
->info1
));
310 NDR_CHECK(ndr_pull_echo_info2(ndr
, NDR_SCALARS
, &r
->info2
));
314 NDR_CHECK(ndr_pull_echo_info3(ndr
, NDR_SCALARS
, &r
->info3
));
318 NDR_CHECK(ndr_pull_STRUCT_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
322 NDR_CHECK(ndr_pull_echo_info5(ndr
, NDR_SCALARS
, &r
->info5
));
326 NDR_CHECK(ndr_pull_echo_info6(ndr
, NDR_SCALARS
, &r
->info6
));
330 NDR_CHECK(ndr_pull_echo_info7(ndr
, NDR_SCALARS
, &r
->info7
));
334 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
337 if (ndr_flags
& NDR_BUFFERS
) {
361 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
364 return NDR_ERR_SUCCESS
;
367 _PUBLIC_
void ndr_print_echo_Info(struct ndr_print
*ndr
, const char *name
, const union echo_Info
*r
)
370 level
= ndr_print_get_switch_value(ndr
, r
);
371 ndr_print_union(ndr
, name
, level
, "echo_Info");
374 ndr_print_echo_info1(ndr
, "info1", &r
->info1
);
378 ndr_print_echo_info2(ndr
, "info2", &r
->info2
);
382 ndr_print_echo_info3(ndr
, "info3", &r
->info3
);
386 ndr_print_STRUCT_echo_info4(ndr
, "info4", &r
->info4
);
390 ndr_print_echo_info5(ndr
, "info5", &r
->info5
);
394 ndr_print_echo_info6(ndr
, "info6", &r
->info6
);
398 ndr_print_echo_info7(ndr
, "info7", &r
->info7
);
402 ndr_print_bad_level(ndr
, name
, level
);
406 static enum ndr_err_code
ndr_push_echo_Enum1(struct ndr_push
*ndr
, int ndr_flags
, enum echo_Enum1 r
)
408 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
409 return NDR_ERR_SUCCESS
;
412 static enum ndr_err_code
ndr_pull_echo_Enum1(struct ndr_pull
*ndr
, int ndr_flags
, enum echo_Enum1
*r
)
415 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
417 return NDR_ERR_SUCCESS
;
420 _PUBLIC_
void ndr_print_echo_Enum1(struct ndr_print
*ndr
, const char *name
, enum echo_Enum1 r
)
422 const char *val
= NULL
;
425 case ECHO_ENUM1
: val
= "ECHO_ENUM1"; break;
426 case ECHO_ENUM2
: val
= "ECHO_ENUM2"; break;
428 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
431 static enum ndr_err_code
ndr_push_echo_Enum1_32(struct ndr_push
*ndr
, int ndr_flags
, enum echo_Enum1_32 r
)
433 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
434 return NDR_ERR_SUCCESS
;
437 static enum ndr_err_code
ndr_pull_echo_Enum1_32(struct ndr_pull
*ndr
, int ndr_flags
, enum echo_Enum1_32
*r
)
440 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
442 return NDR_ERR_SUCCESS
;
445 _PUBLIC_
void ndr_print_echo_Enum1_32(struct ndr_print
*ndr
, const char *name
, enum echo_Enum1_32 r
)
447 const char *val
= NULL
;
450 case ECHO_ENUM1_32
: val
= "ECHO_ENUM1_32"; break;
451 case ECHO_ENUM2_32
: val
= "ECHO_ENUM2_32"; break;
453 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
456 static enum ndr_err_code
ndr_push_echo_Enum2(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_Enum2
*r
)
458 if (ndr_flags
& NDR_SCALARS
) {
459 NDR_CHECK(ndr_push_align(ndr
, 4));
460 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, r
->e1
));
461 NDR_CHECK(ndr_push_echo_Enum1_32(ndr
, NDR_SCALARS
, r
->e2
));
463 if (ndr_flags
& NDR_BUFFERS
) {
465 return NDR_ERR_SUCCESS
;
468 static enum ndr_err_code
ndr_pull_echo_Enum2(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_Enum2
*r
)
470 if (ndr_flags
& NDR_SCALARS
) {
471 NDR_CHECK(ndr_pull_align(ndr
, 4));
472 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, &r
->e1
));
473 NDR_CHECK(ndr_pull_echo_Enum1_32(ndr
, NDR_SCALARS
, &r
->e2
));
475 if (ndr_flags
& NDR_BUFFERS
) {
477 return NDR_ERR_SUCCESS
;
480 _PUBLIC_
void ndr_print_echo_Enum2(struct ndr_print
*ndr
, const char *name
, const struct echo_Enum2
*r
)
482 ndr_print_struct(ndr
, name
, "echo_Enum2");
484 ndr_print_echo_Enum1(ndr
, "e1", r
->e1
);
485 ndr_print_echo_Enum1_32(ndr
, "e2", r
->e2
);
489 static enum ndr_err_code
ndr_push_echo_Enum3(struct ndr_push
*ndr
, int ndr_flags
, const union echo_Enum3
*r
)
491 if (ndr_flags
& NDR_SCALARS
) {
492 int level
= ndr_push_get_switch_value(ndr
, r
);
493 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, level
));
496 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, r
->e1
));
500 NDR_CHECK(ndr_push_echo_Enum2(ndr
, NDR_SCALARS
, &r
->e2
));
504 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
507 if (ndr_flags
& NDR_BUFFERS
) {
508 int level
= ndr_push_get_switch_value(ndr
, r
);
517 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
520 return NDR_ERR_SUCCESS
;
523 static enum ndr_err_code
ndr_pull_echo_Enum3(struct ndr_pull
*ndr
, int ndr_flags
, union echo_Enum3
*r
)
527 level
= ndr_pull_get_switch_value(ndr
, r
);
528 if (ndr_flags
& NDR_SCALARS
) {
529 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &_level
));
530 if (_level
!= level
) {
531 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r", _level
);
535 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, &r
->e1
));
539 NDR_CHECK(ndr_pull_echo_Enum2(ndr
, NDR_SCALARS
, &r
->e2
));
543 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
546 if (ndr_flags
& NDR_BUFFERS
) {
555 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
558 return NDR_ERR_SUCCESS
;
561 _PUBLIC_
void ndr_print_echo_Enum3(struct ndr_print
*ndr
, const char *name
, const union echo_Enum3
*r
)
564 level
= ndr_print_get_switch_value(ndr
, r
);
565 ndr_print_union(ndr
, name
, level
, "echo_Enum3");
568 ndr_print_echo_Enum1(ndr
, "e1", r
->e1
);
572 ndr_print_echo_Enum2(ndr
, "e2", &r
->e2
);
576 ndr_print_bad_level(ndr
, name
, level
);
580 static enum ndr_err_code
ndr_push_echo_Surrounding(struct ndr_push
*ndr
, int ndr_flags
, const struct echo_Surrounding
*r
)
582 uint32_t cntr_surrounding_0
;
583 if (ndr_flags
& NDR_SCALARS
) {
584 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->x
));
585 NDR_CHECK(ndr_push_align(ndr
, 4));
586 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->x
));
587 for (cntr_surrounding_0
= 0; cntr_surrounding_0
< r
->x
; cntr_surrounding_0
++) {
588 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->surrounding
[cntr_surrounding_0
]));
591 if (ndr_flags
& NDR_BUFFERS
) {
593 return NDR_ERR_SUCCESS
;
596 static enum ndr_err_code
ndr_pull_echo_Surrounding(struct ndr_pull
*ndr
, int ndr_flags
, struct echo_Surrounding
*r
)
598 uint32_t cntr_surrounding_0
;
599 TALLOC_CTX
*_mem_save_surrounding_0
;
600 if (ndr_flags
& NDR_SCALARS
) {
601 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->surrounding
));
602 NDR_CHECK(ndr_pull_align(ndr
, 4));
603 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->x
));
604 NDR_PULL_ALLOC_N(ndr
, r
->surrounding
, ndr_get_array_size(ndr
, &r
->surrounding
));
605 _mem_save_surrounding_0
= NDR_PULL_GET_MEM_CTX(ndr
);
606 NDR_PULL_SET_MEM_CTX(ndr
, r
->surrounding
, 0);
607 for (cntr_surrounding_0
= 0; cntr_surrounding_0
< r
->x
; cntr_surrounding_0
++) {
608 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->surrounding
[cntr_surrounding_0
]));
610 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_surrounding_0
, 0);
611 if (r
->surrounding
) {
612 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->surrounding
, r
->x
));
615 if (ndr_flags
& NDR_BUFFERS
) {
617 return NDR_ERR_SUCCESS
;
620 _PUBLIC_
void ndr_print_echo_Surrounding(struct ndr_print
*ndr
, const char *name
, const struct echo_Surrounding
*r
)
622 uint32_t cntr_surrounding_0
;
623 ndr_print_struct(ndr
, name
, "echo_Surrounding");
625 ndr_print_uint32(ndr
, "x", r
->x
);
626 ndr
->print(ndr
, "%s: ARRAY(%d)", "surrounding", (int)r
->x
);
628 for (cntr_surrounding_0
=0;cntr_surrounding_0
<r
->x
;cntr_surrounding_0
++) {
630 if (asprintf(&idx_0
, "[%d]", cntr_surrounding_0
) != -1) {
631 ndr_print_uint16(ndr
, "surrounding", r
->surrounding
[cntr_surrounding_0
]);
639 static enum ndr_err_code
ndr_push_echo_AddOne(struct ndr_push
*ndr
, int flags
, const struct echo_AddOne
*r
)
641 if (flags
& NDR_IN
) {
642 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.in_data
));
644 if (flags
& NDR_OUT
) {
645 if (r
->out
.out_data
== NULL
) {
646 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
648 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.out_data
));
650 return NDR_ERR_SUCCESS
;
653 static enum ndr_err_code
ndr_pull_echo_AddOne(struct ndr_pull
*ndr
, int flags
, struct echo_AddOne
*r
)
655 TALLOC_CTX
*_mem_save_out_data_0
;
656 if (flags
& NDR_IN
) {
659 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.in_data
));
660 NDR_PULL_ALLOC(ndr
, r
->out
.out_data
);
661 ZERO_STRUCTP(r
->out
.out_data
);
663 if (flags
& NDR_OUT
) {
664 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
665 NDR_PULL_ALLOC(ndr
, r
->out
.out_data
);
667 _mem_save_out_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
668 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.out_data
, LIBNDR_FLAG_REF_ALLOC
);
669 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.out_data
));
670 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_out_data_0
, LIBNDR_FLAG_REF_ALLOC
);
672 return NDR_ERR_SUCCESS
;
675 _PUBLIC_
void ndr_print_echo_AddOne(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_AddOne
*r
)
677 ndr_print_struct(ndr
, name
, "echo_AddOne");
679 if (flags
& NDR_SET_VALUES
) {
680 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
682 if (flags
& NDR_IN
) {
683 ndr_print_struct(ndr
, "in", "echo_AddOne");
685 ndr_print_uint32(ndr
, "in_data", r
->in
.in_data
);
688 if (flags
& NDR_OUT
) {
689 ndr_print_struct(ndr
, "out", "echo_AddOne");
691 ndr_print_ptr(ndr
, "out_data", r
->out
.out_data
);
693 ndr_print_uint32(ndr
, "out_data", *r
->out
.out_data
);
700 static enum ndr_err_code
ndr_push_echo_EchoData(struct ndr_push
*ndr
, int flags
, const struct echo_EchoData
*r
)
702 if (flags
& NDR_IN
) {
703 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
704 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
705 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.in_data
, r
->in
.len
));
707 if (flags
& NDR_OUT
) {
708 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
709 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.out_data
, r
->in
.len
));
711 return NDR_ERR_SUCCESS
;
714 static enum ndr_err_code
ndr_pull_echo_EchoData(struct ndr_pull
*ndr
, int flags
, struct echo_EchoData
*r
)
716 if (flags
& NDR_IN
) {
719 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
720 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.in_data
));
721 NDR_PULL_ALLOC_N(ndr
, r
->in
.in_data
, ndr_get_array_size(ndr
, &r
->in
.in_data
));
722 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.in_data
, ndr_get_array_size(ndr
, &r
->in
.in_data
)));
724 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.in_data
, r
->in
.len
));
727 if (flags
& NDR_OUT
) {
728 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.out_data
));
729 NDR_PULL_ALLOC_N(ndr
, r
->out
.out_data
, ndr_get_array_size(ndr
, &r
->out
.out_data
));
730 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.out_data
, ndr_get_array_size(ndr
, &r
->out
.out_data
)));
731 if (r
->out
.out_data
) {
732 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.out_data
, r
->in
.len
));
735 return NDR_ERR_SUCCESS
;
738 _PUBLIC_
void ndr_print_echo_EchoData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_EchoData
*r
)
740 ndr_print_struct(ndr
, name
, "echo_EchoData");
742 if (flags
& NDR_SET_VALUES
) {
743 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
745 if (flags
& NDR_IN
) {
746 ndr_print_struct(ndr
, "in", "echo_EchoData");
748 ndr_print_uint32(ndr
, "len", r
->in
.len
);
749 ndr_print_array_uint8(ndr
, "in_data", r
->in
.in_data
, r
->in
.len
);
752 if (flags
& NDR_OUT
) {
753 ndr_print_struct(ndr
, "out", "echo_EchoData");
755 ndr_print_array_uint8(ndr
, "out_data", r
->out
.out_data
, r
->in
.len
);
761 static enum ndr_err_code
ndr_push_echo_SinkData(struct ndr_push
*ndr
, int flags
, const struct echo_SinkData
*r
)
763 if (flags
& NDR_IN
) {
764 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
765 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
766 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.data
, r
->in
.len
));
768 if (flags
& NDR_OUT
) {
770 return NDR_ERR_SUCCESS
;
773 static enum ndr_err_code
ndr_pull_echo_SinkData(struct ndr_pull
*ndr
, int flags
, struct echo_SinkData
*r
)
775 if (flags
& NDR_IN
) {
776 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
777 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.data
));
778 NDR_PULL_ALLOC_N(ndr
, r
->in
.data
, ndr_get_array_size(ndr
, &r
->in
.data
));
779 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.data
, ndr_get_array_size(ndr
, &r
->in
.data
)));
781 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.data
, r
->in
.len
));
784 if (flags
& NDR_OUT
) {
786 return NDR_ERR_SUCCESS
;
789 _PUBLIC_
void ndr_print_echo_SinkData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_SinkData
*r
)
791 ndr_print_struct(ndr
, name
, "echo_SinkData");
793 if (flags
& NDR_SET_VALUES
) {
794 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
796 if (flags
& NDR_IN
) {
797 ndr_print_struct(ndr
, "in", "echo_SinkData");
799 ndr_print_uint32(ndr
, "len", r
->in
.len
);
800 ndr_print_array_uint8(ndr
, "data", r
->in
.data
, r
->in
.len
);
803 if (flags
& NDR_OUT
) {
804 ndr_print_struct(ndr
, "out", "echo_SinkData");
811 static enum ndr_err_code
ndr_push_echo_SourceData(struct ndr_push
*ndr
, int flags
, const struct echo_SourceData
*r
)
813 if (flags
& NDR_IN
) {
814 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
816 if (flags
& NDR_OUT
) {
817 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
818 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.data
, r
->in
.len
));
820 return NDR_ERR_SUCCESS
;
823 static enum ndr_err_code
ndr_pull_echo_SourceData(struct ndr_pull
*ndr
, int flags
, struct echo_SourceData
*r
)
825 if (flags
& NDR_IN
) {
828 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
830 if (flags
& NDR_OUT
) {
831 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.data
));
832 NDR_PULL_ALLOC_N(ndr
, r
->out
.data
, ndr_get_array_size(ndr
, &r
->out
.data
));
833 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.data
, ndr_get_array_size(ndr
, &r
->out
.data
)));
835 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.data
, r
->in
.len
));
838 return NDR_ERR_SUCCESS
;
841 _PUBLIC_
void ndr_print_echo_SourceData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_SourceData
*r
)
843 ndr_print_struct(ndr
, name
, "echo_SourceData");
845 if (flags
& NDR_SET_VALUES
) {
846 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
848 if (flags
& NDR_IN
) {
849 ndr_print_struct(ndr
, "in", "echo_SourceData");
851 ndr_print_uint32(ndr
, "len", r
->in
.len
);
854 if (flags
& NDR_OUT
) {
855 ndr_print_struct(ndr
, "out", "echo_SourceData");
857 ndr_print_array_uint8(ndr
, "data", r
->out
.data
, r
->in
.len
);
863 static enum ndr_err_code
ndr_push_echo_TestCall(struct ndr_push
*ndr
, int flags
, const struct echo_TestCall
*r
)
865 if (flags
& NDR_IN
) {
866 if (r
->in
.s1
== NULL
) {
867 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
869 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.s1
, CH_UTF16
)));
870 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
871 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.s1
, CH_UTF16
)));
872 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.s1
, ndr_charset_length(r
->in
.s1
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
874 if (flags
& NDR_OUT
) {
875 if (r
->out
.s2
== NULL
) {
876 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
878 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->out
.s2
));
880 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
)));
881 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
882 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
)));
883 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, *r
->out
.s2
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
886 return NDR_ERR_SUCCESS
;
889 static enum ndr_err_code
ndr_pull_echo_TestCall(struct ndr_pull
*ndr
, int flags
, struct echo_TestCall
*r
)
892 TALLOC_CTX
*_mem_save_s2_0
;
893 TALLOC_CTX
*_mem_save_s2_1
;
894 if (flags
& NDR_IN
) {
897 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.s1
));
898 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.s1
));
899 if (ndr_get_array_length(ndr
, &r
->in
.s1
) > ndr_get_array_size(ndr
, &r
->in
.s1
)) {
900 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->in
.s1
), ndr_get_array_length(ndr
, &r
->in
.s1
));
902 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.s1
), sizeof(uint16_t)));
903 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.s1
, ndr_get_array_length(ndr
, &r
->in
.s1
), sizeof(uint16_t), CH_UTF16
));
904 NDR_PULL_ALLOC(ndr
, r
->out
.s2
);
905 ZERO_STRUCTP(r
->out
.s2
);
907 if (flags
& NDR_OUT
) {
908 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
909 NDR_PULL_ALLOC(ndr
, r
->out
.s2
);
911 _mem_save_s2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
912 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.s2
, LIBNDR_FLAG_REF_ALLOC
);
913 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_s2
));
915 NDR_PULL_ALLOC(ndr
, *r
->out
.s2
);
920 _mem_save_s2_1
= NDR_PULL_GET_MEM_CTX(ndr
);
921 NDR_PULL_SET_MEM_CTX(ndr
, *r
->out
.s2
, 0);
922 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.s2
));
923 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.s2
));
924 if (ndr_get_array_length(ndr
, r
->out
.s2
) > ndr_get_array_size(ndr
, r
->out
.s2
)) {
925 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, r
->out
.s2
), ndr_get_array_length(ndr
, r
->out
.s2
));
927 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.s2
), sizeof(uint16_t)));
928 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.s2
, ndr_get_array_length(ndr
, r
->out
.s2
), sizeof(uint16_t), CH_UTF16
));
929 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_s2_1
, 0);
931 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_s2_0
, LIBNDR_FLAG_REF_ALLOC
);
933 return NDR_ERR_SUCCESS
;
936 _PUBLIC_
void ndr_print_echo_TestCall(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestCall
*r
)
938 ndr_print_struct(ndr
, name
, "echo_TestCall");
940 if (flags
& NDR_SET_VALUES
) {
941 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
943 if (flags
& NDR_IN
) {
944 ndr_print_struct(ndr
, "in", "echo_TestCall");
946 ndr_print_ptr(ndr
, "s1", r
->in
.s1
);
948 ndr_print_string(ndr
, "s1", r
->in
.s1
);
952 if (flags
& NDR_OUT
) {
953 ndr_print_struct(ndr
, "out", "echo_TestCall");
955 ndr_print_ptr(ndr
, "s2", r
->out
.s2
);
957 ndr_print_ptr(ndr
, "s2", *r
->out
.s2
);
960 ndr_print_string(ndr
, "s2", *r
->out
.s2
);
969 static enum ndr_err_code
ndr_push_echo_TestCall2(struct ndr_push
*ndr
, int flags
, const struct echo_TestCall2
*r
)
971 if (flags
& NDR_IN
) {
972 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->in
.level
));
974 if (flags
& NDR_OUT
) {
975 if (r
->out
.info
== NULL
) {
976 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
978 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
));
979 NDR_CHECK(ndr_push_echo_Info(ndr
, NDR_SCALARS
, r
->out
.info
));
980 NDR_CHECK(ndr_push_NTSTATUS(ndr
, NDR_SCALARS
, r
->out
.result
));
982 return NDR_ERR_SUCCESS
;
985 static enum ndr_err_code
ndr_pull_echo_TestCall2(struct ndr_pull
*ndr
, int flags
, struct echo_TestCall2
*r
)
987 TALLOC_CTX
*_mem_save_info_0
;
988 if (flags
& NDR_IN
) {
991 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->in
.level
));
992 NDR_PULL_ALLOC(ndr
, r
->out
.info
);
993 ZERO_STRUCTP(r
->out
.info
);
995 if (flags
& NDR_OUT
) {
996 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
997 NDR_PULL_ALLOC(ndr
, r
->out
.info
);
999 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1000 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.info
, LIBNDR_FLAG_REF_ALLOC
);
1001 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
));
1002 NDR_CHECK(ndr_pull_echo_Info(ndr
, NDR_SCALARS
, r
->out
.info
));
1003 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, LIBNDR_FLAG_REF_ALLOC
);
1004 NDR_CHECK(ndr_pull_NTSTATUS(ndr
, NDR_SCALARS
, &r
->out
.result
));
1006 return NDR_ERR_SUCCESS
;
1009 _PUBLIC_
void ndr_print_echo_TestCall2(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestCall2
*r
)
1011 ndr_print_struct(ndr
, name
, "echo_TestCall2");
1013 if (flags
& NDR_SET_VALUES
) {
1014 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1016 if (flags
& NDR_IN
) {
1017 ndr_print_struct(ndr
, "in", "echo_TestCall2");
1019 ndr_print_uint16(ndr
, "level", r
->in
.level
);
1022 if (flags
& NDR_OUT
) {
1023 ndr_print_struct(ndr
, "out", "echo_TestCall2");
1025 ndr_print_ptr(ndr
, "info", r
->out
.info
);
1027 ndr_print_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
);
1028 ndr_print_echo_Info(ndr
, "info", r
->out
.info
);
1030 ndr_print_NTSTATUS(ndr
, "result", r
->out
.result
);
1036 static enum ndr_err_code
ndr_push_echo_TestSleep(struct ndr_push
*ndr
, int flags
, const struct echo_TestSleep
*r
)
1038 if (flags
& NDR_IN
) {
1039 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.seconds
));
1041 if (flags
& NDR_OUT
) {
1042 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->out
.result
));
1044 return NDR_ERR_SUCCESS
;
1047 static enum ndr_err_code
ndr_pull_echo_TestSleep(struct ndr_pull
*ndr
, int flags
, struct echo_TestSleep
*r
)
1049 if (flags
& NDR_IN
) {
1050 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.seconds
));
1052 if (flags
& NDR_OUT
) {
1053 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->out
.result
));
1055 return NDR_ERR_SUCCESS
;
1058 _PUBLIC_
void ndr_print_echo_TestSleep(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestSleep
*r
)
1060 ndr_print_struct(ndr
, name
, "echo_TestSleep");
1062 if (flags
& NDR_SET_VALUES
) {
1063 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1065 if (flags
& NDR_IN
) {
1066 ndr_print_struct(ndr
, "in", "echo_TestSleep");
1068 ndr_print_uint32(ndr
, "seconds", r
->in
.seconds
);
1071 if (flags
& NDR_OUT
) {
1072 ndr_print_struct(ndr
, "out", "echo_TestSleep");
1074 ndr_print_uint32(ndr
, "result", r
->out
.result
);
1080 static enum ndr_err_code
ndr_push_echo_TestEnum(struct ndr_push
*ndr
, int flags
, const struct echo_TestEnum
*r
)
1082 if (flags
& NDR_IN
) {
1083 if (r
->in
.foo1
== NULL
) {
1084 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1086 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, *r
->in
.foo1
));
1087 if (r
->in
.foo2
== NULL
) {
1088 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1090 NDR_CHECK(ndr_push_echo_Enum2(ndr
, NDR_SCALARS
, r
->in
.foo2
));
1091 if (r
->in
.foo3
== NULL
) {
1092 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1094 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
));
1095 NDR_CHECK(ndr_push_echo_Enum3(ndr
, NDR_SCALARS
, r
->in
.foo3
));
1097 if (flags
& NDR_OUT
) {
1098 if (r
->out
.foo1
== NULL
) {
1099 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1101 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, *r
->out
.foo1
));
1102 if (r
->out
.foo2
== NULL
) {
1103 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1105 NDR_CHECK(ndr_push_echo_Enum2(ndr
, NDR_SCALARS
, r
->out
.foo2
));
1106 if (r
->out
.foo3
== NULL
) {
1107 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1109 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
));
1110 NDR_CHECK(ndr_push_echo_Enum3(ndr
, NDR_SCALARS
, r
->out
.foo3
));
1112 return NDR_ERR_SUCCESS
;
1115 static enum ndr_err_code
ndr_pull_echo_TestEnum(struct ndr_pull
*ndr
, int flags
, struct echo_TestEnum
*r
)
1117 TALLOC_CTX
*_mem_save_foo1_0
;
1118 TALLOC_CTX
*_mem_save_foo2_0
;
1119 TALLOC_CTX
*_mem_save_foo3_0
;
1120 if (flags
& NDR_IN
) {
1121 ZERO_STRUCT(r
->out
);
1123 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1124 NDR_PULL_ALLOC(ndr
, r
->in
.foo1
);
1126 _mem_save_foo1_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1127 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo1
, LIBNDR_FLAG_REF_ALLOC
);
1128 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, r
->in
.foo1
));
1129 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo1_0
, LIBNDR_FLAG_REF_ALLOC
);
1130 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1131 NDR_PULL_ALLOC(ndr
, r
->in
.foo2
);
1133 _mem_save_foo2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1134 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo2
, LIBNDR_FLAG_REF_ALLOC
);
1135 NDR_CHECK(ndr_pull_echo_Enum2(ndr
, NDR_SCALARS
, r
->in
.foo2
));
1136 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo2_0
, LIBNDR_FLAG_REF_ALLOC
);
1137 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1138 NDR_PULL_ALLOC(ndr
, r
->in
.foo3
);
1140 _mem_save_foo3_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1141 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo3
, LIBNDR_FLAG_REF_ALLOC
);
1142 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
));
1143 NDR_CHECK(ndr_pull_echo_Enum3(ndr
, NDR_SCALARS
, r
->in
.foo3
));
1144 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo3_0
, LIBNDR_FLAG_REF_ALLOC
);
1145 NDR_PULL_ALLOC(ndr
, r
->out
.foo1
);
1146 *r
->out
.foo1
= *r
->in
.foo1
;
1147 NDR_PULL_ALLOC(ndr
, r
->out
.foo2
);
1148 *r
->out
.foo2
= *r
->in
.foo2
;
1149 NDR_PULL_ALLOC(ndr
, r
->out
.foo3
);
1150 *r
->out
.foo3
= *r
->in
.foo3
;
1152 if (flags
& NDR_OUT
) {
1153 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1154 NDR_PULL_ALLOC(ndr
, r
->out
.foo1
);
1156 _mem_save_foo1_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1157 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo1
, LIBNDR_FLAG_REF_ALLOC
);
1158 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, r
->out
.foo1
));
1159 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo1_0
, LIBNDR_FLAG_REF_ALLOC
);
1160 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1161 NDR_PULL_ALLOC(ndr
, r
->out
.foo2
);
1163 _mem_save_foo2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1164 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo2
, LIBNDR_FLAG_REF_ALLOC
);
1165 NDR_CHECK(ndr_pull_echo_Enum2(ndr
, NDR_SCALARS
, r
->out
.foo2
));
1166 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo2_0
, LIBNDR_FLAG_REF_ALLOC
);
1167 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1168 NDR_PULL_ALLOC(ndr
, r
->out
.foo3
);
1170 _mem_save_foo3_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1171 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo3
, LIBNDR_FLAG_REF_ALLOC
);
1172 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
));
1173 NDR_CHECK(ndr_pull_echo_Enum3(ndr
, NDR_SCALARS
, r
->out
.foo3
));
1174 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo3_0
, LIBNDR_FLAG_REF_ALLOC
);
1176 return NDR_ERR_SUCCESS
;
1179 _PUBLIC_
void ndr_print_echo_TestEnum(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestEnum
*r
)
1181 ndr_print_struct(ndr
, name
, "echo_TestEnum");
1183 if (flags
& NDR_SET_VALUES
) {
1184 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1186 if (flags
& NDR_IN
) {
1187 ndr_print_struct(ndr
, "in", "echo_TestEnum");
1189 ndr_print_ptr(ndr
, "foo1", r
->in
.foo1
);
1191 ndr_print_echo_Enum1(ndr
, "foo1", *r
->in
.foo1
);
1193 ndr_print_ptr(ndr
, "foo2", r
->in
.foo2
);
1195 ndr_print_echo_Enum2(ndr
, "foo2", r
->in
.foo2
);
1197 ndr_print_ptr(ndr
, "foo3", r
->in
.foo3
);
1199 ndr_print_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
);
1200 ndr_print_echo_Enum3(ndr
, "foo3", r
->in
.foo3
);
1204 if (flags
& NDR_OUT
) {
1205 ndr_print_struct(ndr
, "out", "echo_TestEnum");
1207 ndr_print_ptr(ndr
, "foo1", r
->out
.foo1
);
1209 ndr_print_echo_Enum1(ndr
, "foo1", *r
->out
.foo1
);
1211 ndr_print_ptr(ndr
, "foo2", r
->out
.foo2
);
1213 ndr_print_echo_Enum2(ndr
, "foo2", r
->out
.foo2
);
1215 ndr_print_ptr(ndr
, "foo3", r
->out
.foo3
);
1217 ndr_print_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
);
1218 ndr_print_echo_Enum3(ndr
, "foo3", r
->out
.foo3
);
1225 static enum ndr_err_code
ndr_push_echo_TestSurrounding(struct ndr_push
*ndr
, int flags
, const struct echo_TestSurrounding
*r
)
1227 if (flags
& NDR_IN
) {
1228 if (r
->in
.data
== NULL
) {
1229 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1231 NDR_CHECK(ndr_push_echo_Surrounding(ndr
, NDR_SCALARS
, r
->in
.data
));
1233 if (flags
& NDR_OUT
) {
1234 if (r
->out
.data
== NULL
) {
1235 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1237 NDR_CHECK(ndr_push_echo_Surrounding(ndr
, NDR_SCALARS
, r
->out
.data
));
1239 return NDR_ERR_SUCCESS
;
1242 static enum ndr_err_code
ndr_pull_echo_TestSurrounding(struct ndr_pull
*ndr
, int flags
, struct echo_TestSurrounding
*r
)
1244 TALLOC_CTX
*_mem_save_data_0
;
1245 if (flags
& NDR_IN
) {
1246 ZERO_STRUCT(r
->out
);
1248 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1249 NDR_PULL_ALLOC(ndr
, r
->in
.data
);
1251 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1252 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1253 NDR_CHECK(ndr_pull_echo_Surrounding(ndr
, NDR_SCALARS
, r
->in
.data
));
1254 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1255 NDR_PULL_ALLOC(ndr
, r
->out
.data
);
1256 *r
->out
.data
= *r
->in
.data
;
1258 if (flags
& NDR_OUT
) {
1259 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1260 NDR_PULL_ALLOC(ndr
, r
->out
.data
);
1262 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1263 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.data
, LIBNDR_FLAG_REF_ALLOC
);
1264 NDR_CHECK(ndr_pull_echo_Surrounding(ndr
, NDR_SCALARS
, r
->out
.data
));
1265 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1267 return NDR_ERR_SUCCESS
;
1270 _PUBLIC_
void ndr_print_echo_TestSurrounding(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestSurrounding
*r
)
1272 ndr_print_struct(ndr
, name
, "echo_TestSurrounding");
1274 if (flags
& NDR_SET_VALUES
) {
1275 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1277 if (flags
& NDR_IN
) {
1278 ndr_print_struct(ndr
, "in", "echo_TestSurrounding");
1280 ndr_print_ptr(ndr
, "data", r
->in
.data
);
1282 ndr_print_echo_Surrounding(ndr
, "data", r
->in
.data
);
1286 if (flags
& NDR_OUT
) {
1287 ndr_print_struct(ndr
, "out", "echo_TestSurrounding");
1289 ndr_print_ptr(ndr
, "data", r
->out
.data
);
1291 ndr_print_echo_Surrounding(ndr
, "data", r
->out
.data
);
1298 static enum ndr_err_code
ndr_push_echo_TestDoublePointer(struct ndr_push
*ndr
, int flags
, const struct echo_TestDoublePointer
*r
)
1300 if (flags
& NDR_IN
) {
1301 if (r
->in
.data
== NULL
) {
1302 return ndr_push_error(ndr
, NDR_ERR_INVALID_POINTER
, "NULL [ref] pointer");
1304 NDR_CHECK(ndr_push_unique_ptr(ndr
, *r
->in
.data
));
1306 NDR_CHECK(ndr_push_unique_ptr(ndr
, **r
->in
.data
));
1308 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ***r
->in
.data
));
1312 if (flags
& NDR_OUT
) {
1313 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->out
.result
));
1315 return NDR_ERR_SUCCESS
;
1318 static enum ndr_err_code
ndr_pull_echo_TestDoublePointer(struct ndr_pull
*ndr
, int flags
, struct echo_TestDoublePointer
*r
)
1321 TALLOC_CTX
*_mem_save_data_0
;
1322 TALLOC_CTX
*_mem_save_data_1
;
1323 TALLOC_CTX
*_mem_save_data_2
;
1324 if (flags
& NDR_IN
) {
1325 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1326 NDR_PULL_ALLOC(ndr
, r
->in
.data
);
1328 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1329 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1330 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_data
));
1332 NDR_PULL_ALLOC(ndr
, *r
->in
.data
);
1337 _mem_save_data_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1338 NDR_PULL_SET_MEM_CTX(ndr
, *r
->in
.data
, 0);
1339 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_data
));
1341 NDR_PULL_ALLOC(ndr
, **r
->in
.data
);
1343 **r
->in
.data
= NULL
;
1346 _mem_save_data_2
= NDR_PULL_GET_MEM_CTX(ndr
);
1347 NDR_PULL_SET_MEM_CTX(ndr
, **r
->in
.data
, 0);
1348 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, **r
->in
.data
));
1349 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_2
, 0);
1351 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_1
, 0);
1353 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1355 if (flags
& NDR_OUT
) {
1356 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->out
.result
));
1358 return NDR_ERR_SUCCESS
;
1361 _PUBLIC_
void ndr_print_echo_TestDoublePointer(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestDoublePointer
*r
)
1363 ndr_print_struct(ndr
, name
, "echo_TestDoublePointer");
1365 if (flags
& NDR_SET_VALUES
) {
1366 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1368 if (flags
& NDR_IN
) {
1369 ndr_print_struct(ndr
, "in", "echo_TestDoublePointer");
1371 ndr_print_ptr(ndr
, "data", r
->in
.data
);
1373 ndr_print_ptr(ndr
, "data", *r
->in
.data
);
1376 ndr_print_ptr(ndr
, "data", **r
->in
.data
);
1379 ndr_print_uint16(ndr
, "data", ***r
->in
.data
);
1387 if (flags
& NDR_OUT
) {
1388 ndr_print_struct(ndr
, "out", "echo_TestDoublePointer");
1390 ndr_print_uint16(ndr
, "result", r
->out
.result
);
1396 static const struct ndr_interface_call rpcecho_calls
[] = {
1399 sizeof(struct echo_AddOne
),
1400 (ndr_push_flags_fn_t
) ndr_push_echo_AddOne
,
1401 (ndr_pull_flags_fn_t
) ndr_pull_echo_AddOne
,
1402 (ndr_print_function_t
) ndr_print_echo_AddOne
,
1407 sizeof(struct echo_EchoData
),
1408 (ndr_push_flags_fn_t
) ndr_push_echo_EchoData
,
1409 (ndr_pull_flags_fn_t
) ndr_pull_echo_EchoData
,
1410 (ndr_print_function_t
) ndr_print_echo_EchoData
,
1415 sizeof(struct echo_SinkData
),
1416 (ndr_push_flags_fn_t
) ndr_push_echo_SinkData
,
1417 (ndr_pull_flags_fn_t
) ndr_pull_echo_SinkData
,
1418 (ndr_print_function_t
) ndr_print_echo_SinkData
,
1423 sizeof(struct echo_SourceData
),
1424 (ndr_push_flags_fn_t
) ndr_push_echo_SourceData
,
1425 (ndr_pull_flags_fn_t
) ndr_pull_echo_SourceData
,
1426 (ndr_print_function_t
) ndr_print_echo_SourceData
,
1431 sizeof(struct echo_TestCall
),
1432 (ndr_push_flags_fn_t
) ndr_push_echo_TestCall
,
1433 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestCall
,
1434 (ndr_print_function_t
) ndr_print_echo_TestCall
,
1439 sizeof(struct echo_TestCall2
),
1440 (ndr_push_flags_fn_t
) ndr_push_echo_TestCall2
,
1441 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestCall2
,
1442 (ndr_print_function_t
) ndr_print_echo_TestCall2
,
1447 sizeof(struct echo_TestSleep
),
1448 (ndr_push_flags_fn_t
) ndr_push_echo_TestSleep
,
1449 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestSleep
,
1450 (ndr_print_function_t
) ndr_print_echo_TestSleep
,
1455 sizeof(struct echo_TestEnum
),
1456 (ndr_push_flags_fn_t
) ndr_push_echo_TestEnum
,
1457 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestEnum
,
1458 (ndr_print_function_t
) ndr_print_echo_TestEnum
,
1462 "echo_TestSurrounding",
1463 sizeof(struct echo_TestSurrounding
),
1464 (ndr_push_flags_fn_t
) ndr_push_echo_TestSurrounding
,
1465 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestSurrounding
,
1466 (ndr_print_function_t
) ndr_print_echo_TestSurrounding
,
1470 "echo_TestDoublePointer",
1471 sizeof(struct echo_TestDoublePointer
),
1472 (ndr_push_flags_fn_t
) ndr_push_echo_TestDoublePointer
,
1473 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestDoublePointer
,
1474 (ndr_print_function_t
) ndr_print_echo_TestDoublePointer
,
1477 { NULL
, 0, NULL
, NULL
, NULL
, false }
1480 static const char * const rpcecho_endpoint_strings
[] = {
1481 "ncacn_np:[\\pipe\\rpcecho]",
1486 static const struct ndr_interface_string_array rpcecho_endpoints
= {
1488 .names
= rpcecho_endpoint_strings
1491 static const char * const rpcecho_authservice_strings
[] = {
1495 static const struct ndr_interface_string_array rpcecho_authservices
= {
1497 .names
= rpcecho_authservice_strings
1501 const struct ndr_interface_table ndr_table_rpcecho
= {
1504 {0x60a15ec5,0x4de8,0x11d7,{0xa6,0x37},{0x00,0x50,0x56,0xa2,0x01,0x82}},
1507 .helpstring
= NDR_RPCECHO_HELPSTRING
,
1509 .calls
= rpcecho_calls
,
1510 .endpoints
= &rpcecho_endpoints
,
1511 .authservices
= &rpcecho_authservices