2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
8 #include "bin/default/librpc/gen_ndr/srv_echo.h"
10 static bool api_echo_AddOne(struct pipes_struct *p)
12 const struct ndr_interface_call *call;
13 struct ndr_pull *pull;
14 struct ndr_push *push;
15 enum ndr_err_code ndr_err;
16 struct echo_AddOne *r;
18 call = &ndr_table_rpcecho.calls[NDR_ECHO_ADDONE];
20 r = talloc(talloc_tos(), struct echo_AddOne);
25 pull = ndr_pull_init_blob(&p->in_data.data, r);
31 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
33 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
35 ndr_err = call->ndr_pull(pull, NDR_IN, r);
36 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
41 if (DEBUGLEVEL >= 10) {
42 NDR_PRINT_FUNCTION_DEBUG(echo_AddOne, NDR_IN, r);
46 r->out.out_data = talloc_zero(r, uint32_t);
47 if (r->out.out_data == NULL) {
56 /* Return true here, srv_pipe_hnd.c will take care */
60 if (DEBUGLEVEL >= 10) {
61 NDR_PRINT_FUNCTION_DEBUG(echo_AddOne, NDR_OUT | NDR_SET_VALUES, r);
64 push = ndr_push_init_ctx(r);
71 * carry over the pointer count to the reply in case we are
72 * using full pointer. See NDR specification for full pointers
74 push->ptr_count = pull->ptr_count;
76 ndr_err = call->ndr_push(push, NDR_OUT, r);
77 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
82 p->out_data.rdata = ndr_push_blob(push);
83 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
90 static bool api_echo_EchoData(struct pipes_struct *p)
92 const struct ndr_interface_call *call;
93 struct ndr_pull *pull;
94 struct ndr_push *push;
95 enum ndr_err_code ndr_err;
96 struct echo_EchoData *r;
98 call = &ndr_table_rpcecho.calls[NDR_ECHO_ECHODATA];
100 r = talloc(talloc_tos(), struct echo_EchoData);
105 pull = ndr_pull_init_blob(&p->in_data.data, r);
111 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
113 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
115 ndr_err = call->ndr_pull(pull, NDR_IN, r);
116 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
121 if (DEBUGLEVEL >= 10) {
122 NDR_PRINT_FUNCTION_DEBUG(echo_EchoData, NDR_IN, r);
126 r->out.out_data = talloc_zero_array(r, uint8_t, r->in.len);
127 if (r->out.out_data == NULL) {
132 _echo_EchoData(p, r);
134 if (p->fault_state) {
136 /* Return true here, srv_pipe_hnd.c will take care */
140 if (DEBUGLEVEL >= 10) {
141 NDR_PRINT_FUNCTION_DEBUG(echo_EchoData, NDR_OUT | NDR_SET_VALUES, r);
144 push = ndr_push_init_ctx(r);
151 * carry over the pointer count to the reply in case we are
152 * using full pointer. See NDR specification for full pointers
154 push->ptr_count = pull->ptr_count;
156 ndr_err = call->ndr_push(push, NDR_OUT, r);
157 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
162 p->out_data.rdata = ndr_push_blob(push);
163 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
170 static bool api_echo_SinkData(struct pipes_struct *p)
172 const struct ndr_interface_call *call;
173 struct ndr_pull *pull;
174 struct ndr_push *push;
175 enum ndr_err_code ndr_err;
176 struct echo_SinkData *r;
178 call = &ndr_table_rpcecho.calls[NDR_ECHO_SINKDATA];
180 r = talloc(talloc_tos(), struct echo_SinkData);
185 pull = ndr_pull_init_blob(&p->in_data.data, r);
191 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
193 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
195 ndr_err = call->ndr_pull(pull, NDR_IN, r);
196 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
201 if (DEBUGLEVEL >= 10) {
202 NDR_PRINT_FUNCTION_DEBUG(echo_SinkData, NDR_IN, r);
205 _echo_SinkData(p, r);
207 if (p->fault_state) {
209 /* Return true here, srv_pipe_hnd.c will take care */
213 if (DEBUGLEVEL >= 10) {
214 NDR_PRINT_FUNCTION_DEBUG(echo_SinkData, NDR_OUT | NDR_SET_VALUES, r);
217 push = ndr_push_init_ctx(r);
224 * carry over the pointer count to the reply in case we are
225 * using full pointer. See NDR specification for full pointers
227 push->ptr_count = pull->ptr_count;
229 ndr_err = call->ndr_push(push, NDR_OUT, r);
230 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
235 p->out_data.rdata = ndr_push_blob(push);
236 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
243 static bool api_echo_SourceData(struct pipes_struct *p)
245 const struct ndr_interface_call *call;
246 struct ndr_pull *pull;
247 struct ndr_push *push;
248 enum ndr_err_code ndr_err;
249 struct echo_SourceData *r;
251 call = &ndr_table_rpcecho.calls[NDR_ECHO_SOURCEDATA];
253 r = talloc(talloc_tos(), struct echo_SourceData);
258 pull = ndr_pull_init_blob(&p->in_data.data, r);
264 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
266 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
268 ndr_err = call->ndr_pull(pull, NDR_IN, r);
269 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
274 if (DEBUGLEVEL >= 10) {
275 NDR_PRINT_FUNCTION_DEBUG(echo_SourceData, NDR_IN, r);
279 r->out.data = talloc_zero_array(r, uint8_t, r->in.len);
280 if (r->out.data == NULL) {
285 _echo_SourceData(p, r);
287 if (p->fault_state) {
289 /* Return true here, srv_pipe_hnd.c will take care */
293 if (DEBUGLEVEL >= 10) {
294 NDR_PRINT_FUNCTION_DEBUG(echo_SourceData, NDR_OUT | NDR_SET_VALUES, r);
297 push = ndr_push_init_ctx(r);
304 * carry over the pointer count to the reply in case we are
305 * using full pointer. See NDR specification for full pointers
307 push->ptr_count = pull->ptr_count;
309 ndr_err = call->ndr_push(push, NDR_OUT, r);
310 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
315 p->out_data.rdata = ndr_push_blob(push);
316 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
323 static bool api_echo_TestCall(struct pipes_struct *p)
325 const struct ndr_interface_call *call;
326 struct ndr_pull *pull;
327 struct ndr_push *push;
328 enum ndr_err_code ndr_err;
329 struct echo_TestCall *r;
331 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTCALL];
333 r = talloc(talloc_tos(), struct echo_TestCall);
338 pull = ndr_pull_init_blob(&p->in_data.data, r);
344 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
346 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
348 ndr_err = call->ndr_pull(pull, NDR_IN, r);
349 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
354 if (DEBUGLEVEL >= 10) {
355 NDR_PRINT_FUNCTION_DEBUG(echo_TestCall, NDR_IN, r);
359 r->out.s2 = talloc_zero(r, const char *);
360 if (r->out.s2 == NULL) {
365 _echo_TestCall(p, r);
367 if (p->fault_state) {
369 /* Return true here, srv_pipe_hnd.c will take care */
373 if (DEBUGLEVEL >= 10) {
374 NDR_PRINT_FUNCTION_DEBUG(echo_TestCall, NDR_OUT | NDR_SET_VALUES, r);
377 push = ndr_push_init_ctx(r);
384 * carry over the pointer count to the reply in case we are
385 * using full pointer. See NDR specification for full pointers
387 push->ptr_count = pull->ptr_count;
389 ndr_err = call->ndr_push(push, NDR_OUT, r);
390 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
395 p->out_data.rdata = ndr_push_blob(push);
396 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
403 static bool api_echo_TestCall2(struct pipes_struct *p)
405 const struct ndr_interface_call *call;
406 struct ndr_pull *pull;
407 struct ndr_push *push;
408 enum ndr_err_code ndr_err;
409 struct echo_TestCall2 *r;
411 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTCALL2];
413 r = talloc(talloc_tos(), struct echo_TestCall2);
418 pull = ndr_pull_init_blob(&p->in_data.data, r);
424 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
426 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
428 ndr_err = call->ndr_pull(pull, NDR_IN, r);
429 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
434 if (DEBUGLEVEL >= 10) {
435 NDR_PRINT_FUNCTION_DEBUG(echo_TestCall2, NDR_IN, r);
439 r->out.info = talloc_zero(r, union echo_Info);
440 if (r->out.info == NULL) {
445 r->out.result = _echo_TestCall2(p, r);
447 if (p->fault_state) {
449 /* Return true here, srv_pipe_hnd.c will take care */
453 if (DEBUGLEVEL >= 10) {
454 NDR_PRINT_FUNCTION_DEBUG(echo_TestCall2, NDR_OUT | NDR_SET_VALUES, r);
457 push = ndr_push_init_ctx(r);
464 * carry over the pointer count to the reply in case we are
465 * using full pointer. See NDR specification for full pointers
467 push->ptr_count = pull->ptr_count;
469 ndr_err = call->ndr_push(push, NDR_OUT, r);
470 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
475 p->out_data.rdata = ndr_push_blob(push);
476 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
483 static bool api_echo_TestSleep(struct pipes_struct *p)
485 const struct ndr_interface_call *call;
486 struct ndr_pull *pull;
487 struct ndr_push *push;
488 enum ndr_err_code ndr_err;
489 struct echo_TestSleep *r;
491 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTSLEEP];
493 r = talloc(talloc_tos(), struct echo_TestSleep);
498 pull = ndr_pull_init_blob(&p->in_data.data, r);
504 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
506 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
508 ndr_err = call->ndr_pull(pull, NDR_IN, r);
509 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
514 if (DEBUGLEVEL >= 10) {
515 NDR_PRINT_FUNCTION_DEBUG(echo_TestSleep, NDR_IN, r);
518 r->out.result = _echo_TestSleep(p, r);
520 if (p->fault_state) {
522 /* Return true here, srv_pipe_hnd.c will take care */
526 if (DEBUGLEVEL >= 10) {
527 NDR_PRINT_FUNCTION_DEBUG(echo_TestSleep, NDR_OUT | NDR_SET_VALUES, r);
530 push = ndr_push_init_ctx(r);
537 * carry over the pointer count to the reply in case we are
538 * using full pointer. See NDR specification for full pointers
540 push->ptr_count = pull->ptr_count;
542 ndr_err = call->ndr_push(push, NDR_OUT, r);
543 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
548 p->out_data.rdata = ndr_push_blob(push);
549 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
556 static bool api_echo_TestEnum(struct pipes_struct *p)
558 const struct ndr_interface_call *call;
559 struct ndr_pull *pull;
560 struct ndr_push *push;
561 enum ndr_err_code ndr_err;
562 struct echo_TestEnum *r;
564 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTENUM];
566 r = talloc(talloc_tos(), struct echo_TestEnum);
571 pull = ndr_pull_init_blob(&p->in_data.data, r);
577 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
579 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
581 ndr_err = call->ndr_pull(pull, NDR_IN, r);
582 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
587 if (DEBUGLEVEL >= 10) {
588 NDR_PRINT_FUNCTION_DEBUG(echo_TestEnum, NDR_IN, r);
592 r->out.foo1 = r->in.foo1;
593 r->out.foo2 = r->in.foo2;
594 r->out.foo3 = r->in.foo3;
595 _echo_TestEnum(p, r);
597 if (p->fault_state) {
599 /* Return true here, srv_pipe_hnd.c will take care */
603 if (DEBUGLEVEL >= 10) {
604 NDR_PRINT_FUNCTION_DEBUG(echo_TestEnum, NDR_OUT | NDR_SET_VALUES, r);
607 push = ndr_push_init_ctx(r);
614 * carry over the pointer count to the reply in case we are
615 * using full pointer. See NDR specification for full pointers
617 push->ptr_count = pull->ptr_count;
619 ndr_err = call->ndr_push(push, NDR_OUT, r);
620 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
625 p->out_data.rdata = ndr_push_blob(push);
626 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
633 static bool api_echo_TestSurrounding(struct pipes_struct *p)
635 const struct ndr_interface_call *call;
636 struct ndr_pull *pull;
637 struct ndr_push *push;
638 enum ndr_err_code ndr_err;
639 struct echo_TestSurrounding *r;
641 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTSURROUNDING];
643 r = talloc(talloc_tos(), struct echo_TestSurrounding);
648 pull = ndr_pull_init_blob(&p->in_data.data, r);
654 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
656 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
658 ndr_err = call->ndr_pull(pull, NDR_IN, r);
659 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
664 if (DEBUGLEVEL >= 10) {
665 NDR_PRINT_FUNCTION_DEBUG(echo_TestSurrounding, NDR_IN, r);
669 r->out.data = r->in.data;
670 _echo_TestSurrounding(p, r);
672 if (p->fault_state) {
674 /* Return true here, srv_pipe_hnd.c will take care */
678 if (DEBUGLEVEL >= 10) {
679 NDR_PRINT_FUNCTION_DEBUG(echo_TestSurrounding, NDR_OUT | NDR_SET_VALUES, r);
682 push = ndr_push_init_ctx(r);
689 * carry over the pointer count to the reply in case we are
690 * using full pointer. See NDR specification for full pointers
692 push->ptr_count = pull->ptr_count;
694 ndr_err = call->ndr_push(push, NDR_OUT, r);
695 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
700 p->out_data.rdata = ndr_push_blob(push);
701 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
708 static bool api_echo_TestDoublePointer(struct pipes_struct *p)
710 const struct ndr_interface_call *call;
711 struct ndr_pull *pull;
712 struct ndr_push *push;
713 enum ndr_err_code ndr_err;
714 struct echo_TestDoublePointer *r;
716 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTDOUBLEPOINTER];
718 r = talloc(talloc_tos(), struct echo_TestDoublePointer);
723 pull = ndr_pull_init_blob(&p->in_data.data, r);
729 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
731 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
733 ndr_err = call->ndr_pull(pull, NDR_IN, r);
734 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
739 if (DEBUGLEVEL >= 10) {
740 NDR_PRINT_FUNCTION_DEBUG(echo_TestDoublePointer, NDR_IN, r);
743 r->out.result = _echo_TestDoublePointer(p, r);
745 if (p->fault_state) {
747 /* Return true here, srv_pipe_hnd.c will take care */
751 if (DEBUGLEVEL >= 10) {
752 NDR_PRINT_FUNCTION_DEBUG(echo_TestDoublePointer, NDR_OUT | NDR_SET_VALUES, r);
755 push = ndr_push_init_ctx(r);
762 * carry over the pointer count to the reply in case we are
763 * using full pointer. See NDR specification for full pointers
765 push->ptr_count = pull->ptr_count;
767 ndr_err = call->ndr_push(push, NDR_OUT, r);
768 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
773 p->out_data.rdata = ndr_push_blob(push);
774 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
781 static bool api_echo_TestBytePipeIn(struct pipes_struct *p)
783 const struct ndr_interface_call *call;
784 struct ndr_pull *pull;
785 struct ndr_push *push;
786 enum ndr_err_code ndr_err;
787 struct echo_TestBytePipeIn *r;
789 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTBYTEPIPEIN];
791 r = talloc(talloc_tos(), struct echo_TestBytePipeIn);
796 pull = ndr_pull_init_blob(&p->in_data.data, r);
802 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
804 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
806 ndr_err = call->ndr_pull(pull, NDR_IN, r);
807 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
812 if (DEBUGLEVEL >= 10) {
813 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeIn, NDR_IN, r);
816 r->out.result = _echo_TestBytePipeIn(p, r);
818 if (p->fault_state) {
820 /* Return true here, srv_pipe_hnd.c will take care */
824 if (DEBUGLEVEL >= 10) {
825 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeIn, NDR_OUT | NDR_SET_VALUES, r);
828 push = ndr_push_init_ctx(r);
835 * carry over the pointer count to the reply in case we are
836 * using full pointer. See NDR specification for full pointers
838 push->ptr_count = pull->ptr_count;
840 ndr_err = call->ndr_push(push, NDR_OUT, r);
841 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
846 p->out_data.rdata = ndr_push_blob(push);
847 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
854 static bool api_echo_TestBytePipeOut(struct pipes_struct *p)
856 const struct ndr_interface_call *call;
857 struct ndr_pull *pull;
858 struct ndr_push *push;
859 enum ndr_err_code ndr_err;
860 struct echo_TestBytePipeOut *r;
862 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTBYTEPIPEOUT];
864 r = talloc(talloc_tos(), struct echo_TestBytePipeOut);
869 pull = ndr_pull_init_blob(&p->in_data.data, r);
875 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
877 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
879 ndr_err = call->ndr_pull(pull, NDR_IN, r);
880 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
885 if (DEBUGLEVEL >= 10) {
886 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeOut, NDR_IN, r);
890 r->out.result = _echo_TestBytePipeOut(p, r);
892 if (p->fault_state) {
894 /* Return true here, srv_pipe_hnd.c will take care */
898 if (DEBUGLEVEL >= 10) {
899 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeOut, NDR_OUT | NDR_SET_VALUES, r);
902 push = ndr_push_init_ctx(r);
909 * carry over the pointer count to the reply in case we are
910 * using full pointer. See NDR specification for full pointers
912 push->ptr_count = pull->ptr_count;
914 ndr_err = call->ndr_push(push, NDR_OUT, r);
915 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
920 p->out_data.rdata = ndr_push_blob(push);
921 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
928 static bool api_echo_TestBytePipeInOut(struct pipes_struct *p)
930 const struct ndr_interface_call *call;
931 struct ndr_pull *pull;
932 struct ndr_push *push;
933 enum ndr_err_code ndr_err;
934 struct echo_TestBytePipeInOut *r;
936 call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTBYTEPIPEINOUT];
938 r = talloc(talloc_tos(), struct echo_TestBytePipeInOut);
943 pull = ndr_pull_init_blob(&p->in_data.data, r);
949 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
951 pull->flags |= LIBNDR_FLAG_BIGENDIAN;
953 ndr_err = call->ndr_pull(pull, NDR_IN, r);
954 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
959 if (DEBUGLEVEL >= 10) {
960 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeInOut, NDR_IN, r);
964 r->out.out_pipe = r->in.out_pipe;
965 r->out.result = _echo_TestBytePipeInOut(p, r);
967 if (p->fault_state) {
969 /* Return true here, srv_pipe_hnd.c will take care */
973 if (DEBUGLEVEL >= 10) {
974 NDR_PRINT_FUNCTION_DEBUG(echo_TestBytePipeInOut, NDR_OUT | NDR_SET_VALUES, r);
977 push = ndr_push_init_ctx(r);
984 * carry over the pointer count to the reply in case we are
985 * using full pointer. See NDR specification for full pointers
987 push->ptr_count = pull->ptr_count;
989 ndr_err = call->ndr_push(push, NDR_OUT, r);
990 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
995 p->out_data.rdata = ndr_push_blob(push);
996 talloc_steal(p->mem_ctx, p->out_data.rdata.data);
1005 static struct api_struct api_rpcecho_cmds[] =
1007 {"ECHO_ADDONE", NDR_ECHO_ADDONE, api_echo_AddOne},
1008 {"ECHO_ECHODATA", NDR_ECHO_ECHODATA, api_echo_EchoData},
1009 {"ECHO_SINKDATA", NDR_ECHO_SINKDATA, api_echo_SinkData},
1010 {"ECHO_SOURCEDATA", NDR_ECHO_SOURCEDATA, api_echo_SourceData},
1011 {"ECHO_TESTCALL", NDR_ECHO_TESTCALL, api_echo_TestCall},
1012 {"ECHO_TESTCALL2", NDR_ECHO_TESTCALL2, api_echo_TestCall2},
1013 {"ECHO_TESTSLEEP", NDR_ECHO_TESTSLEEP, api_echo_TestSleep},
1014 {"ECHO_TESTENUM", NDR_ECHO_TESTENUM, api_echo_TestEnum},
1015 {"ECHO_TESTSURROUNDING", NDR_ECHO_TESTSURROUNDING, api_echo_TestSurrounding},
1016 {"ECHO_TESTDOUBLEPOINTER", NDR_ECHO_TESTDOUBLEPOINTER, api_echo_TestDoublePointer},
1017 {"ECHO_TESTBYTEPIPEIN", NDR_ECHO_TESTBYTEPIPEIN, api_echo_TestBytePipeIn},
1018 {"ECHO_TESTBYTEPIPEOUT", NDR_ECHO_TESTBYTEPIPEOUT, api_echo_TestBytePipeOut},
1019 {"ECHO_TESTBYTEPIPEINOUT", NDR_ECHO_TESTBYTEPIPEINOUT, api_echo_TestBytePipeInOut},
1022 void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns)
1024 *fns = api_rpcecho_cmds;
1025 *n_fns = sizeof(api_rpcecho_cmds) / sizeof(struct api_struct);
1028 NTSTATUS rpc_rpcecho_init(const struct rpc_srv_callbacks *rpc_srv_cb)
1030 return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", &ndr_table_rpcecho, api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct), rpc_srv_cb);
1033 NTSTATUS rpc_rpcecho_shutdown(void)
1035 return rpc_srv_unregister(&ndr_table_rpcecho);