1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_echo.h"
6 NTSTATUS
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
) {
17 NTSTATUS
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
) {
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 NTSTATUS
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
) {
47 NTSTATUS
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
) {
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 NTSTATUS
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
) {
77 NTSTATUS
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
) {
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 NTSTATUS
ndr_push_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
) {
107 NTSTATUS
ndr_pull_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
) {
118 _PUBLIC_
void ndr_print_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 NTSTATUS
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
) {
138 NTSTATUS
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
) {
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 NTSTATUS
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
) {
171 NTSTATUS
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
) {
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 NTSTATUS
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_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
199 if (ndr_flags
& NDR_BUFFERS
) {
204 NTSTATUS
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_echo_info4(ndr
, NDR_SCALARS
, &r
->info4
));
211 if (ndr_flags
& NDR_BUFFERS
) {
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_echo_info4(ndr
, "info4", &r
->info4
);
225 NTSTATUS
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_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
);
294 NTSTATUS
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_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
);
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_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 NTSTATUS
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
));
412 NTSTATUS
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
));
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 NTSTATUS
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
));
437 NTSTATUS
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
));
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 NTSTATUS
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
) {
468 NTSTATUS
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
) {
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 NTSTATUS
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
);
523 NTSTATUS
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
);
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 NTSTATUS
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
) {
596 NTSTATUS
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
) {
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", r
->x
);
628 for (cntr_surrounding_0
=0;cntr_surrounding_0
<r
->x
;cntr_surrounding_0
++) {
630 asprintf(&idx_0
, "[%d]", cntr_surrounding_0
);
632 ndr_print_uint16(ndr
, "surrounding", r
->surrounding
[cntr_surrounding_0
]);
640 NTSTATUS
ndr_push_echo_AddOne(struct ndr_push
*ndr
, int flags
, const struct echo_AddOne
*r
)
642 if (flags
& NDR_IN
) {
643 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.in_data
));
645 if (flags
& NDR_OUT
) {
646 if (r
->out
.out_data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
647 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, *r
->out
.out_data
));
652 NTSTATUS
ndr_pull_echo_AddOne(struct ndr_pull
*ndr
, int flags
, struct echo_AddOne
*r
)
654 TALLOC_CTX
*_mem_save_out_data_0
;
655 if (flags
& NDR_IN
) {
658 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.in_data
));
659 NDR_PULL_ALLOC(ndr
, r
->out
.out_data
);
660 ZERO_STRUCTP(r
->out
.out_data
);
662 if (flags
& NDR_OUT
) {
663 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
664 NDR_PULL_ALLOC(ndr
, r
->out
.out_data
);
666 _mem_save_out_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
667 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.out_data
, LIBNDR_FLAG_REF_ALLOC
);
668 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, r
->out
.out_data
));
669 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_out_data_0
, LIBNDR_FLAG_REF_ALLOC
);
674 _PUBLIC_
void ndr_print_echo_AddOne(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_AddOne
*r
)
676 ndr_print_struct(ndr
, name
, "echo_AddOne");
678 if (flags
& NDR_SET_VALUES
) {
679 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
681 if (flags
& NDR_IN
) {
682 ndr_print_struct(ndr
, "in", "echo_AddOne");
684 ndr_print_uint32(ndr
, "in_data", r
->in
.in_data
);
687 if (flags
& NDR_OUT
) {
688 ndr_print_struct(ndr
, "out", "echo_AddOne");
690 ndr_print_ptr(ndr
, "out_data", r
->out
.out_data
);
692 ndr_print_uint32(ndr
, "out_data", *r
->out
.out_data
);
699 NTSTATUS
ndr_push_echo_EchoData(struct ndr_push
*ndr
, int flags
, const struct echo_EchoData
*r
)
701 if (flags
& NDR_IN
) {
702 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
703 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
704 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.in_data
, r
->in
.len
));
706 if (flags
& NDR_OUT
) {
707 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
708 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.out_data
, r
->in
.len
));
713 NTSTATUS
ndr_pull_echo_EchoData(struct ndr_pull
*ndr
, int flags
, struct echo_EchoData
*r
)
715 if (flags
& NDR_IN
) {
718 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
719 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.in_data
));
720 NDR_PULL_ALLOC_N(ndr
, r
->in
.in_data
, ndr_get_array_size(ndr
, &r
->in
.in_data
));
721 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.in_data
, ndr_get_array_size(ndr
, &r
->in
.in_data
)));
723 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.in_data
, r
->in
.len
));
726 if (flags
& NDR_OUT
) {
727 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.out_data
));
728 NDR_PULL_ALLOC_N(ndr
, r
->out
.out_data
, ndr_get_array_size(ndr
, &r
->out
.out_data
));
729 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.out_data
, ndr_get_array_size(ndr
, &r
->out
.out_data
)));
730 if (r
->out
.out_data
) {
731 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.out_data
, r
->in
.len
));
737 _PUBLIC_
void ndr_print_echo_EchoData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_EchoData
*r
)
739 ndr_print_struct(ndr
, name
, "echo_EchoData");
741 if (flags
& NDR_SET_VALUES
) {
742 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
744 if (flags
& NDR_IN
) {
745 ndr_print_struct(ndr
, "in", "echo_EchoData");
747 ndr_print_uint32(ndr
, "len", r
->in
.len
);
748 ndr_print_array_uint8(ndr
, "in_data", r
->in
.in_data
, r
->in
.len
);
751 if (flags
& NDR_OUT
) {
752 ndr_print_struct(ndr
, "out", "echo_EchoData");
754 ndr_print_array_uint8(ndr
, "out_data", r
->out
.out_data
, r
->in
.len
);
760 NTSTATUS
ndr_push_echo_SinkData(struct ndr_push
*ndr
, int flags
, const struct echo_SinkData
*r
)
762 if (flags
& NDR_IN
) {
763 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
764 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
765 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->in
.data
, r
->in
.len
));
767 if (flags
& NDR_OUT
) {
772 NTSTATUS
ndr_pull_echo_SinkData(struct ndr_pull
*ndr
, int flags
, struct echo_SinkData
*r
)
774 if (flags
& NDR_IN
) {
775 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
776 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.data
));
777 NDR_PULL_ALLOC_N(ndr
, r
->in
.data
, ndr_get_array_size(ndr
, &r
->in
.data
));
778 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->in
.data
, ndr_get_array_size(ndr
, &r
->in
.data
)));
780 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->in
.data
, r
->in
.len
));
783 if (flags
& NDR_OUT
) {
788 _PUBLIC_
void ndr_print_echo_SinkData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_SinkData
*r
)
790 ndr_print_struct(ndr
, name
, "echo_SinkData");
792 if (flags
& NDR_SET_VALUES
) {
793 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
795 if (flags
& NDR_IN
) {
796 ndr_print_struct(ndr
, "in", "echo_SinkData");
798 ndr_print_uint32(ndr
, "len", r
->in
.len
);
799 ndr_print_array_uint8(ndr
, "data", r
->in
.data
, r
->in
.len
);
802 if (flags
& NDR_OUT
) {
803 ndr_print_struct(ndr
, "out", "echo_SinkData");
810 NTSTATUS
ndr_push_echo_SourceData(struct ndr_push
*ndr
, int flags
, const struct echo_SourceData
*r
)
812 if (flags
& NDR_IN
) {
813 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
815 if (flags
& NDR_OUT
) {
816 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.len
));
817 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->out
.data
, r
->in
.len
));
822 NTSTATUS
ndr_pull_echo_SourceData(struct ndr_pull
*ndr
, int flags
, struct echo_SourceData
*r
)
824 if (flags
& NDR_IN
) {
827 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.len
));
829 if (flags
& NDR_OUT
) {
830 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->out
.data
));
831 NDR_PULL_ALLOC_N(ndr
, r
->out
.data
, ndr_get_array_size(ndr
, &r
->out
.data
));
832 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->out
.data
, ndr_get_array_size(ndr
, &r
->out
.data
)));
834 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->out
.data
, r
->in
.len
));
840 _PUBLIC_
void ndr_print_echo_SourceData(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_SourceData
*r
)
842 ndr_print_struct(ndr
, name
, "echo_SourceData");
844 if (flags
& NDR_SET_VALUES
) {
845 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
847 if (flags
& NDR_IN
) {
848 ndr_print_struct(ndr
, "in", "echo_SourceData");
850 ndr_print_uint32(ndr
, "len", r
->in
.len
);
853 if (flags
& NDR_OUT
) {
854 ndr_print_struct(ndr
, "out", "echo_SourceData");
856 ndr_print_array_uint8(ndr
, "data", r
->out
.data
, r
->in
.len
);
862 NTSTATUS
ndr_push_echo_TestCall(struct ndr_push
*ndr
, int flags
, const struct echo_TestCall
*r
)
864 if (flags
& NDR_IN
) {
865 if (r
->in
.s1
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
866 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.s1
, CH_UTF16
)));
867 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
868 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->in
.s1
, CH_UTF16
)));
869 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->in
.s1
, ndr_charset_length(r
->in
.s1
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
871 if (flags
& NDR_OUT
) {
872 if (r
->out
.s2
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
873 if (*r
->out
.s2
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
874 NDR_CHECK(ndr_push_ref_ptr(ndr
));
875 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
)));
876 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
877 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
)));
878 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, *r
->out
.s2
, ndr_charset_length(*r
->out
.s2
, CH_UTF16
), sizeof(uint16_t), CH_UTF16
));
883 NTSTATUS
ndr_pull_echo_TestCall(struct ndr_pull
*ndr
, int flags
, struct echo_TestCall
*r
)
886 TALLOC_CTX
*_mem_save_s2_0
;
887 if (flags
& NDR_IN
) {
890 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->in
.s1
));
891 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->in
.s1
));
892 if (ndr_get_array_length(ndr
, &r
->in
.s1
) > ndr_get_array_size(ndr
, &r
->in
.s1
)) {
893 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
));
895 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->in
.s1
), sizeof(uint16_t)));
896 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->in
.s1
, ndr_get_array_length(ndr
, &r
->in
.s1
), sizeof(uint16_t), CH_UTF16
));
897 NDR_PULL_ALLOC(ndr
, r
->out
.s2
);
898 ZERO_STRUCTP(r
->out
.s2
);
900 if (flags
& NDR_OUT
) {
901 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
902 NDR_PULL_ALLOC(ndr
, r
->out
.s2
);
904 _mem_save_s2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
905 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.s2
, LIBNDR_FLAG_REF_ALLOC
);
906 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_s2
));
907 NDR_CHECK(ndr_pull_array_size(ndr
, r
->out
.s2
));
908 NDR_CHECK(ndr_pull_array_length(ndr
, r
->out
.s2
));
909 if (ndr_get_array_length(ndr
, r
->out
.s2
) > ndr_get_array_size(ndr
, r
->out
.s2
)) {
910 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
));
912 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, r
->out
.s2
), sizeof(uint16_t)));
913 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, r
->out
.s2
, ndr_get_array_length(ndr
, r
->out
.s2
), sizeof(uint16_t), CH_UTF16
));
914 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_s2_0
, LIBNDR_FLAG_REF_ALLOC
);
919 _PUBLIC_
void ndr_print_echo_TestCall(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestCall
*r
)
921 ndr_print_struct(ndr
, name
, "echo_TestCall");
923 if (flags
& NDR_SET_VALUES
) {
924 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
926 if (flags
& NDR_IN
) {
927 ndr_print_struct(ndr
, "in", "echo_TestCall");
929 ndr_print_ptr(ndr
, "s1", r
->in
.s1
);
931 ndr_print_string(ndr
, "s1", r
->in
.s1
);
935 if (flags
& NDR_OUT
) {
936 ndr_print_struct(ndr
, "out", "echo_TestCall");
938 ndr_print_ptr(ndr
, "s2", r
->out
.s2
);
940 ndr_print_ptr(ndr
, "s2", *r
->out
.s2
);
942 ndr_print_string(ndr
, "s2", *r
->out
.s2
);
950 NTSTATUS
ndr_push_echo_TestCall2(struct ndr_push
*ndr
, int flags
, const struct echo_TestCall2
*r
)
952 if (flags
& NDR_IN
) {
953 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->in
.level
));
955 if (flags
& NDR_OUT
) {
956 if (r
->out
.info
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
957 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
));
958 NDR_CHECK(ndr_push_echo_Info(ndr
, NDR_SCALARS
, r
->out
.info
));
959 NDR_CHECK(ndr_push_NTSTATUS(ndr
, NDR_SCALARS
, r
->out
.result
));
964 NTSTATUS
ndr_pull_echo_TestCall2(struct ndr_pull
*ndr
, int flags
, struct echo_TestCall2
*r
)
966 TALLOC_CTX
*_mem_save_info_0
;
967 if (flags
& NDR_IN
) {
970 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->in
.level
));
971 NDR_PULL_ALLOC(ndr
, r
->out
.info
);
972 ZERO_STRUCTP(r
->out
.info
);
974 if (flags
& NDR_OUT
) {
975 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
976 NDR_PULL_ALLOC(ndr
, r
->out
.info
);
978 _mem_save_info_0
= NDR_PULL_GET_MEM_CTX(ndr
);
979 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.info
, LIBNDR_FLAG_REF_ALLOC
);
980 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
));
981 NDR_CHECK(ndr_pull_echo_Info(ndr
, NDR_SCALARS
, r
->out
.info
));
982 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_info_0
, LIBNDR_FLAG_REF_ALLOC
);
983 NDR_CHECK(ndr_pull_NTSTATUS(ndr
, NDR_SCALARS
, &r
->out
.result
));
988 _PUBLIC_
void ndr_print_echo_TestCall2(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestCall2
*r
)
990 ndr_print_struct(ndr
, name
, "echo_TestCall2");
992 if (flags
& NDR_SET_VALUES
) {
993 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
995 if (flags
& NDR_IN
) {
996 ndr_print_struct(ndr
, "in", "echo_TestCall2");
998 ndr_print_uint16(ndr
, "level", r
->in
.level
);
1001 if (flags
& NDR_OUT
) {
1002 ndr_print_struct(ndr
, "out", "echo_TestCall2");
1004 ndr_print_ptr(ndr
, "info", r
->out
.info
);
1006 ndr_print_set_switch_value(ndr
, r
->out
.info
, r
->in
.level
);
1007 ndr_print_echo_Info(ndr
, "info", r
->out
.info
);
1009 ndr_print_NTSTATUS(ndr
, "result", r
->out
.result
);
1015 NTSTATUS
ndr_push_echo_TestSleep(struct ndr_push
*ndr
, int flags
, const struct echo_TestSleep
*r
)
1017 if (flags
& NDR_IN
) {
1018 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->in
.seconds
));
1020 if (flags
& NDR_OUT
) {
1021 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->out
.result
));
1023 return NT_STATUS_OK
;
1026 NTSTATUS
ndr_pull_echo_TestSleep(struct ndr_pull
*ndr
, int flags
, struct echo_TestSleep
*r
)
1028 if (flags
& NDR_IN
) {
1029 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->in
.seconds
));
1031 if (flags
& NDR_OUT
) {
1032 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->out
.result
));
1034 return NT_STATUS_OK
;
1037 _PUBLIC_
void ndr_print_echo_TestSleep(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestSleep
*r
)
1039 ndr_print_struct(ndr
, name
, "echo_TestSleep");
1041 if (flags
& NDR_SET_VALUES
) {
1042 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1044 if (flags
& NDR_IN
) {
1045 ndr_print_struct(ndr
, "in", "echo_TestSleep");
1047 ndr_print_uint32(ndr
, "seconds", r
->in
.seconds
);
1050 if (flags
& NDR_OUT
) {
1051 ndr_print_struct(ndr
, "out", "echo_TestSleep");
1053 ndr_print_uint32(ndr
, "result", r
->out
.result
);
1059 NTSTATUS
ndr_push_echo_TestEnum(struct ndr_push
*ndr
, int flags
, const struct echo_TestEnum
*r
)
1061 if (flags
& NDR_IN
) {
1062 if (r
->in
.foo1
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1063 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, *r
->in
.foo1
));
1064 if (r
->in
.foo2
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1065 NDR_CHECK(ndr_push_echo_Enum2(ndr
, NDR_SCALARS
, r
->in
.foo2
));
1066 if (r
->in
.foo3
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1067 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
));
1068 NDR_CHECK(ndr_push_echo_Enum3(ndr
, NDR_SCALARS
, r
->in
.foo3
));
1070 if (flags
& NDR_OUT
) {
1071 if (r
->out
.foo1
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1072 NDR_CHECK(ndr_push_echo_Enum1(ndr
, NDR_SCALARS
, *r
->out
.foo1
));
1073 if (r
->out
.foo2
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1074 NDR_CHECK(ndr_push_echo_Enum2(ndr
, NDR_SCALARS
, r
->out
.foo2
));
1075 if (r
->out
.foo3
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1076 NDR_CHECK(ndr_push_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
));
1077 NDR_CHECK(ndr_push_echo_Enum3(ndr
, NDR_SCALARS
, r
->out
.foo3
));
1079 return NT_STATUS_OK
;
1082 NTSTATUS
ndr_pull_echo_TestEnum(struct ndr_pull
*ndr
, int flags
, struct echo_TestEnum
*r
)
1084 TALLOC_CTX
*_mem_save_foo1_0
;
1085 TALLOC_CTX
*_mem_save_foo2_0
;
1086 TALLOC_CTX
*_mem_save_foo3_0
;
1087 if (flags
& NDR_IN
) {
1088 ZERO_STRUCT(r
->out
);
1090 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1091 NDR_PULL_ALLOC(ndr
, r
->in
.foo1
);
1093 _mem_save_foo1_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1094 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo1
, LIBNDR_FLAG_REF_ALLOC
);
1095 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, r
->in
.foo1
));
1096 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo1_0
, LIBNDR_FLAG_REF_ALLOC
);
1097 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1098 NDR_PULL_ALLOC(ndr
, r
->in
.foo2
);
1100 _mem_save_foo2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1101 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo2
, LIBNDR_FLAG_REF_ALLOC
);
1102 NDR_CHECK(ndr_pull_echo_Enum2(ndr
, NDR_SCALARS
, r
->in
.foo2
));
1103 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo2_0
, LIBNDR_FLAG_REF_ALLOC
);
1104 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1105 NDR_PULL_ALLOC(ndr
, r
->in
.foo3
);
1107 _mem_save_foo3_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1108 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.foo3
, LIBNDR_FLAG_REF_ALLOC
);
1109 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
));
1110 NDR_CHECK(ndr_pull_echo_Enum3(ndr
, NDR_SCALARS
, r
->in
.foo3
));
1111 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo3_0
, LIBNDR_FLAG_REF_ALLOC
);
1112 NDR_PULL_ALLOC(ndr
, r
->out
.foo1
);
1113 *r
->out
.foo1
= *r
->in
.foo1
;
1114 NDR_PULL_ALLOC(ndr
, r
->out
.foo2
);
1115 *r
->out
.foo2
= *r
->in
.foo2
;
1116 NDR_PULL_ALLOC(ndr
, r
->out
.foo3
);
1117 *r
->out
.foo3
= *r
->in
.foo3
;
1119 if (flags
& NDR_OUT
) {
1120 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1121 NDR_PULL_ALLOC(ndr
, r
->out
.foo1
);
1123 _mem_save_foo1_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1124 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo1
, LIBNDR_FLAG_REF_ALLOC
);
1125 NDR_CHECK(ndr_pull_echo_Enum1(ndr
, NDR_SCALARS
, r
->out
.foo1
));
1126 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo1_0
, LIBNDR_FLAG_REF_ALLOC
);
1127 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1128 NDR_PULL_ALLOC(ndr
, r
->out
.foo2
);
1130 _mem_save_foo2_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1131 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo2
, LIBNDR_FLAG_REF_ALLOC
);
1132 NDR_CHECK(ndr_pull_echo_Enum2(ndr
, NDR_SCALARS
, r
->out
.foo2
));
1133 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo2_0
, LIBNDR_FLAG_REF_ALLOC
);
1134 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1135 NDR_PULL_ALLOC(ndr
, r
->out
.foo3
);
1137 _mem_save_foo3_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1138 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.foo3
, LIBNDR_FLAG_REF_ALLOC
);
1139 NDR_CHECK(ndr_pull_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
));
1140 NDR_CHECK(ndr_pull_echo_Enum3(ndr
, NDR_SCALARS
, r
->out
.foo3
));
1141 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_foo3_0
, LIBNDR_FLAG_REF_ALLOC
);
1143 return NT_STATUS_OK
;
1146 _PUBLIC_
void ndr_print_echo_TestEnum(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestEnum
*r
)
1148 ndr_print_struct(ndr
, name
, "echo_TestEnum");
1150 if (flags
& NDR_SET_VALUES
) {
1151 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1153 if (flags
& NDR_IN
) {
1154 ndr_print_struct(ndr
, "in", "echo_TestEnum");
1156 ndr_print_ptr(ndr
, "foo1", r
->in
.foo1
);
1158 ndr_print_echo_Enum1(ndr
, "foo1", *r
->in
.foo1
);
1160 ndr_print_ptr(ndr
, "foo2", r
->in
.foo2
);
1162 ndr_print_echo_Enum2(ndr
, "foo2", r
->in
.foo2
);
1164 ndr_print_ptr(ndr
, "foo3", r
->in
.foo3
);
1166 ndr_print_set_switch_value(ndr
, r
->in
.foo3
, *r
->in
.foo1
);
1167 ndr_print_echo_Enum3(ndr
, "foo3", r
->in
.foo3
);
1171 if (flags
& NDR_OUT
) {
1172 ndr_print_struct(ndr
, "out", "echo_TestEnum");
1174 ndr_print_ptr(ndr
, "foo1", r
->out
.foo1
);
1176 ndr_print_echo_Enum1(ndr
, "foo1", *r
->out
.foo1
);
1178 ndr_print_ptr(ndr
, "foo2", r
->out
.foo2
);
1180 ndr_print_echo_Enum2(ndr
, "foo2", r
->out
.foo2
);
1182 ndr_print_ptr(ndr
, "foo3", r
->out
.foo3
);
1184 ndr_print_set_switch_value(ndr
, r
->out
.foo3
, *r
->out
.foo1
);
1185 ndr_print_echo_Enum3(ndr
, "foo3", r
->out
.foo3
);
1192 NTSTATUS
ndr_push_echo_TestSurrounding(struct ndr_push
*ndr
, int flags
, const struct echo_TestSurrounding
*r
)
1194 if (flags
& NDR_IN
) {
1195 if (r
->in
.data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1196 NDR_CHECK(ndr_push_echo_Surrounding(ndr
, NDR_SCALARS
, r
->in
.data
));
1198 if (flags
& NDR_OUT
) {
1199 if (r
->out
.data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1200 NDR_CHECK(ndr_push_echo_Surrounding(ndr
, NDR_SCALARS
, r
->out
.data
));
1202 return NT_STATUS_OK
;
1205 NTSTATUS
ndr_pull_echo_TestSurrounding(struct ndr_pull
*ndr
, int flags
, struct echo_TestSurrounding
*r
)
1207 TALLOC_CTX
*_mem_save_data_0
;
1208 if (flags
& NDR_IN
) {
1209 ZERO_STRUCT(r
->out
);
1211 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1212 NDR_PULL_ALLOC(ndr
, r
->in
.data
);
1214 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1215 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1216 NDR_CHECK(ndr_pull_echo_Surrounding(ndr
, NDR_SCALARS
, r
->in
.data
));
1217 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1218 NDR_PULL_ALLOC(ndr
, r
->out
.data
);
1219 *r
->out
.data
= *r
->in
.data
;
1221 if (flags
& NDR_OUT
) {
1222 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1223 NDR_PULL_ALLOC(ndr
, r
->out
.data
);
1225 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1226 NDR_PULL_SET_MEM_CTX(ndr
, r
->out
.data
, LIBNDR_FLAG_REF_ALLOC
);
1227 NDR_CHECK(ndr_pull_echo_Surrounding(ndr
, NDR_SCALARS
, r
->out
.data
));
1228 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1230 return NT_STATUS_OK
;
1233 _PUBLIC_
void ndr_print_echo_TestSurrounding(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestSurrounding
*r
)
1235 ndr_print_struct(ndr
, name
, "echo_TestSurrounding");
1237 if (flags
& NDR_SET_VALUES
) {
1238 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1240 if (flags
& NDR_IN
) {
1241 ndr_print_struct(ndr
, "in", "echo_TestSurrounding");
1243 ndr_print_ptr(ndr
, "data", r
->in
.data
);
1245 ndr_print_echo_Surrounding(ndr
, "data", r
->in
.data
);
1249 if (flags
& NDR_OUT
) {
1250 ndr_print_struct(ndr
, "out", "echo_TestSurrounding");
1252 ndr_print_ptr(ndr
, "data", r
->out
.data
);
1254 ndr_print_echo_Surrounding(ndr
, "data", r
->out
.data
);
1261 NTSTATUS
ndr_push_echo_TestDoublePointer(struct ndr_push
*ndr
, int flags
, const struct echo_TestDoublePointer
*r
)
1263 if (flags
& NDR_IN
) {
1264 if (r
->in
.data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1265 if (*r
->in
.data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1266 NDR_CHECK(ndr_push_ref_ptr(ndr
));
1267 if (**r
->in
.data
== NULL
) return NT_STATUS_INVALID_PARAMETER_MIX
;
1268 NDR_CHECK(ndr_push_ref_ptr(ndr
));
1269 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, ***r
->in
.data
));
1271 if (flags
& NDR_OUT
) {
1272 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->out
.result
));
1274 return NT_STATUS_OK
;
1277 NTSTATUS
ndr_pull_echo_TestDoublePointer(struct ndr_pull
*ndr
, int flags
, struct echo_TestDoublePointer
*r
)
1280 TALLOC_CTX
*_mem_save_data_0
;
1281 TALLOC_CTX
*_mem_save_data_1
;
1282 TALLOC_CTX
*_mem_save_data_2
;
1283 if (flags
& NDR_IN
) {
1284 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1285 NDR_PULL_ALLOC(ndr
, r
->in
.data
);
1287 _mem_save_data_0
= NDR_PULL_GET_MEM_CTX(ndr
);
1288 NDR_PULL_SET_MEM_CTX(ndr
, r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1289 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_data
));
1290 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1291 NDR_PULL_ALLOC(ndr
, *r
->in
.data
);
1293 _mem_save_data_1
= NDR_PULL_GET_MEM_CTX(ndr
);
1294 NDR_PULL_SET_MEM_CTX(ndr
, *r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1295 NDR_CHECK(ndr_pull_ref_ptr(ndr
, &_ptr_data
));
1296 if (ndr
->flags
& LIBNDR_FLAG_REF_ALLOC
) {
1297 NDR_PULL_ALLOC(ndr
, **r
->in
.data
);
1299 _mem_save_data_2
= NDR_PULL_GET_MEM_CTX(ndr
);
1300 NDR_PULL_SET_MEM_CTX(ndr
, **r
->in
.data
, LIBNDR_FLAG_REF_ALLOC
);
1301 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, **r
->in
.data
));
1302 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_2
, LIBNDR_FLAG_REF_ALLOC
);
1303 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_1
, LIBNDR_FLAG_REF_ALLOC
);
1304 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_data_0
, LIBNDR_FLAG_REF_ALLOC
);
1306 if (flags
& NDR_OUT
) {
1307 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->out
.result
));
1309 return NT_STATUS_OK
;
1312 _PUBLIC_
void ndr_print_echo_TestDoublePointer(struct ndr_print
*ndr
, const char *name
, int flags
, const struct echo_TestDoublePointer
*r
)
1314 ndr_print_struct(ndr
, name
, "echo_TestDoublePointer");
1316 if (flags
& NDR_SET_VALUES
) {
1317 ndr
->flags
|= LIBNDR_PRINT_SET_VALUES
;
1319 if (flags
& NDR_IN
) {
1320 ndr_print_struct(ndr
, "in", "echo_TestDoublePointer");
1322 ndr_print_ptr(ndr
, "data", r
->in
.data
);
1324 ndr_print_ptr(ndr
, "data", *r
->in
.data
);
1326 ndr_print_ptr(ndr
, "data", **r
->in
.data
);
1328 ndr_print_uint16(ndr
, "data", ***r
->in
.data
);
1334 if (flags
& NDR_OUT
) {
1335 ndr_print_struct(ndr
, "out", "echo_TestDoublePointer");
1337 ndr_print_uint16(ndr
, "result", r
->out
.result
);
1343 const struct dcerpc_interface_call rpcecho_calls
[] = {
1346 sizeof(struct echo_AddOne
),
1347 (ndr_push_flags_fn_t
) ndr_push_echo_AddOne
,
1348 (ndr_pull_flags_fn_t
) ndr_pull_echo_AddOne
,
1349 (ndr_print_function_t
) ndr_print_echo_AddOne
,
1354 sizeof(struct echo_EchoData
),
1355 (ndr_push_flags_fn_t
) ndr_push_echo_EchoData
,
1356 (ndr_pull_flags_fn_t
) ndr_pull_echo_EchoData
,
1357 (ndr_print_function_t
) ndr_print_echo_EchoData
,
1362 sizeof(struct echo_SinkData
),
1363 (ndr_push_flags_fn_t
) ndr_push_echo_SinkData
,
1364 (ndr_pull_flags_fn_t
) ndr_pull_echo_SinkData
,
1365 (ndr_print_function_t
) ndr_print_echo_SinkData
,
1370 sizeof(struct echo_SourceData
),
1371 (ndr_push_flags_fn_t
) ndr_push_echo_SourceData
,
1372 (ndr_pull_flags_fn_t
) ndr_pull_echo_SourceData
,
1373 (ndr_print_function_t
) ndr_print_echo_SourceData
,
1378 sizeof(struct echo_TestCall
),
1379 (ndr_push_flags_fn_t
) ndr_push_echo_TestCall
,
1380 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestCall
,
1381 (ndr_print_function_t
) ndr_print_echo_TestCall
,
1386 sizeof(struct echo_TestCall2
),
1387 (ndr_push_flags_fn_t
) ndr_push_echo_TestCall2
,
1388 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestCall2
,
1389 (ndr_print_function_t
) ndr_print_echo_TestCall2
,
1394 sizeof(struct echo_TestSleep
),
1395 (ndr_push_flags_fn_t
) ndr_push_echo_TestSleep
,
1396 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestSleep
,
1397 (ndr_print_function_t
) ndr_print_echo_TestSleep
,
1402 sizeof(struct echo_TestEnum
),
1403 (ndr_push_flags_fn_t
) ndr_push_echo_TestEnum
,
1404 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestEnum
,
1405 (ndr_print_function_t
) ndr_print_echo_TestEnum
,
1409 "echo_TestSurrounding",
1410 sizeof(struct echo_TestSurrounding
),
1411 (ndr_push_flags_fn_t
) ndr_push_echo_TestSurrounding
,
1412 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestSurrounding
,
1413 (ndr_print_function_t
) ndr_print_echo_TestSurrounding
,
1417 "echo_TestDoublePointer",
1418 sizeof(struct echo_TestDoublePointer
),
1419 (ndr_push_flags_fn_t
) ndr_push_echo_TestDoublePointer
,
1420 (ndr_pull_flags_fn_t
) ndr_pull_echo_TestDoublePointer
,
1421 (ndr_print_function_t
) ndr_print_echo_TestDoublePointer
,
1424 { NULL
, 0, NULL
, NULL
, NULL
, False
}
1427 const char * const rpcecho_endpoint_strings
[] = {
1428 "ncacn_np:[\\pipe\\rpcecho]",
1433 const struct dcerpc_endpoint_list rpcecho_endpoints
= {
1435 .names
= rpcecho_endpoint_strings
1438 const char * const rpcecho_authservice_strings
[] = {
1442 const struct dcerpc_authservice_list rpcecho_authservices
= {
1444 .names
= rpcecho_authservice_strings
1448 const struct dcerpc_interface_table dcerpc_table_rpcecho
= {
1451 {0x60a15ec5,0x4de8,0x11d7,{0xa6,0x37},{0x00,0x50,0x56,0xa2,0x01,0x82}},
1452 DCERPC_RPCECHO_VERSION
1454 .helpstring
= DCERPC_RPCECHO_HELPSTRING
,
1456 .calls
= rpcecho_calls
,
1457 .endpoints
= &rpcecho_endpoints
,
1458 .authservices
= &rpcecho_authservices