2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
7 #include "librpc/gen_ndr/srv_echo.h"
9 static BOOL api_echo_AddOne(pipes_struct *p)
11 struct ndr_pull *pull;
12 struct ndr_push *push;
16 TALLOC_CTX *mem_ctx = talloc_init("api_echo_AddOne");
18 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
23 pull = ndr_pull_init_blob(&blob, mem_ctx);
27 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
28 status = ndr_pull_echo_AddOne(pull, NDR_IN, &r);
29 if (NT_STATUS_IS_ERR(status)) {
35 NDR_PRINT_IN_DEBUG(echo_AddOne, &r);
38 r.out.out_data = talloc_size(mem_ctx, sizeof(*r.out.out_data));
39 if (r.out.out_data == NULL) {
44 _echo_AddOne(p, r.in.in_data, r.out.out_data);
47 NDR_PRINT_OUT_DEBUG(echo_AddOne, &r);
49 push = ndr_push_init_ctx(mem_ctx);
55 status = ndr_push_echo_AddOne(push, NDR_OUT, &r);
56 if (NT_STATUS_IS_ERR(status)) {
61 blob = ndr_push_blob(push);
62 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
72 static BOOL api_echo_EchoData(pipes_struct *p)
74 struct ndr_pull *pull;
75 struct ndr_push *push;
78 struct echo_EchoData r;
79 TALLOC_CTX *mem_ctx = talloc_init("api_echo_EchoData");
81 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
86 pull = ndr_pull_init_blob(&blob, mem_ctx);
90 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
91 status = ndr_pull_echo_EchoData(pull, NDR_IN, &r);
92 if (NT_STATUS_IS_ERR(status)) {
98 NDR_PRINT_IN_DEBUG(echo_EchoData, &r);
101 r.out.out_data = talloc_array_size(mem_ctx, sizeof(*r.out.out_data), r.in.len);
102 if (r.out.out_data == NULL) {
103 talloc_free(mem_ctx);
107 _echo_EchoData(p, r.in.len, r.in.in_data, r.out.out_data);
109 if (DEBUGLEVEL >= 10)
110 NDR_PRINT_OUT_DEBUG(echo_EchoData, &r);
112 push = ndr_push_init_ctx(mem_ctx);
114 talloc_free(mem_ctx);
118 status = ndr_push_echo_EchoData(push, NDR_OUT, &r);
119 if (NT_STATUS_IS_ERR(status)) {
120 talloc_free(mem_ctx);
124 blob = ndr_push_blob(push);
125 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
126 talloc_free(mem_ctx);
130 talloc_free(mem_ctx);
135 static BOOL api_echo_SinkData(pipes_struct *p)
137 struct ndr_pull *pull;
138 struct ndr_push *push;
141 struct echo_SinkData r;
142 TALLOC_CTX *mem_ctx = talloc_init("api_echo_SinkData");
144 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
145 talloc_free(mem_ctx);
149 pull = ndr_pull_init_blob(&blob, mem_ctx);
153 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
154 status = ndr_pull_echo_SinkData(pull, NDR_IN, &r);
155 if (NT_STATUS_IS_ERR(status)) {
156 talloc_free(mem_ctx);
160 if (DEBUGLEVEL >= 10)
161 NDR_PRINT_IN_DEBUG(echo_SinkData, &r);
163 _echo_SinkData(p, r.in.len, r.in.data);
165 if (DEBUGLEVEL >= 10)
166 NDR_PRINT_OUT_DEBUG(echo_SinkData, &r);
168 push = ndr_push_init_ctx(mem_ctx);
170 talloc_free(mem_ctx);
174 status = ndr_push_echo_SinkData(push, NDR_OUT, &r);
175 if (NT_STATUS_IS_ERR(status)) {
176 talloc_free(mem_ctx);
180 blob = ndr_push_blob(push);
181 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
182 talloc_free(mem_ctx);
186 talloc_free(mem_ctx);
191 static BOOL api_echo_SourceData(pipes_struct *p)
193 struct ndr_pull *pull;
194 struct ndr_push *push;
197 struct echo_SourceData r;
198 TALLOC_CTX *mem_ctx = talloc_init("api_echo_SourceData");
200 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
201 talloc_free(mem_ctx);
205 pull = ndr_pull_init_blob(&blob, mem_ctx);
209 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
210 status = ndr_pull_echo_SourceData(pull, NDR_IN, &r);
211 if (NT_STATUS_IS_ERR(status)) {
212 talloc_free(mem_ctx);
216 if (DEBUGLEVEL >= 10)
217 NDR_PRINT_IN_DEBUG(echo_SourceData, &r);
220 r.out.data = talloc_array_size(mem_ctx, sizeof(*r.out.data), r.in.len);
221 if (r.out.data == NULL) {
222 talloc_free(mem_ctx);
226 _echo_SourceData(p, r.in.len, r.out.data);
228 if (DEBUGLEVEL >= 10)
229 NDR_PRINT_OUT_DEBUG(echo_SourceData, &r);
231 push = ndr_push_init_ctx(mem_ctx);
233 talloc_free(mem_ctx);
237 status = ndr_push_echo_SourceData(push, NDR_OUT, &r);
238 if (NT_STATUS_IS_ERR(status)) {
239 talloc_free(mem_ctx);
243 blob = ndr_push_blob(push);
244 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
245 talloc_free(mem_ctx);
249 talloc_free(mem_ctx);
254 static BOOL api_echo_TestCall(pipes_struct *p)
256 struct ndr_pull *pull;
257 struct ndr_push *push;
260 struct echo_TestCall r;
261 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestCall");
263 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
264 talloc_free(mem_ctx);
268 pull = ndr_pull_init_blob(&blob, mem_ctx);
272 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
273 status = ndr_pull_echo_TestCall(pull, NDR_IN, &r);
274 if (NT_STATUS_IS_ERR(status)) {
275 talloc_free(mem_ctx);
279 if (DEBUGLEVEL >= 10)
280 NDR_PRINT_IN_DEBUG(echo_TestCall, &r);
283 r.out.s2 = talloc_size(mem_ctx, sizeof(*r.out.s2));
284 if (r.out.s2 == NULL) {
285 talloc_free(mem_ctx);
289 _echo_TestCall(p, r.in.s1, r.out.s2);
291 if (DEBUGLEVEL >= 10)
292 NDR_PRINT_OUT_DEBUG(echo_TestCall, &r);
294 push = ndr_push_init_ctx(mem_ctx);
296 talloc_free(mem_ctx);
300 status = ndr_push_echo_TestCall(push, NDR_OUT, &r);
301 if (NT_STATUS_IS_ERR(status)) {
302 talloc_free(mem_ctx);
306 blob = ndr_push_blob(push);
307 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
308 talloc_free(mem_ctx);
312 talloc_free(mem_ctx);
317 static BOOL api_echo_TestCall2(pipes_struct *p)
319 struct ndr_pull *pull;
320 struct ndr_push *push;
323 struct echo_TestCall2 r;
324 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestCall2");
326 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
327 talloc_free(mem_ctx);
331 pull = ndr_pull_init_blob(&blob, mem_ctx);
335 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
336 status = ndr_pull_echo_TestCall2(pull, NDR_IN, &r);
337 if (NT_STATUS_IS_ERR(status)) {
338 talloc_free(mem_ctx);
342 if (DEBUGLEVEL >= 10)
343 NDR_PRINT_IN_DEBUG(echo_TestCall2, &r);
346 r.out.info = talloc_size(mem_ctx, sizeof(*r.out.info));
347 if (r.out.info == NULL) {
348 talloc_free(mem_ctx);
352 r.out.result = _echo_TestCall2(p, r.in.level, r.out.info);
354 if (DEBUGLEVEL >= 10)
355 NDR_PRINT_OUT_DEBUG(echo_TestCall2, &r);
357 push = ndr_push_init_ctx(mem_ctx);
359 talloc_free(mem_ctx);
363 status = ndr_push_echo_TestCall2(push, NDR_OUT, &r);
364 if (NT_STATUS_IS_ERR(status)) {
365 talloc_free(mem_ctx);
369 blob = ndr_push_blob(push);
370 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
371 talloc_free(mem_ctx);
375 talloc_free(mem_ctx);
380 static BOOL api_echo_TestSleep(pipes_struct *p)
382 struct ndr_pull *pull;
383 struct ndr_push *push;
386 struct echo_TestSleep r;
387 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestSleep");
389 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
390 talloc_free(mem_ctx);
394 pull = ndr_pull_init_blob(&blob, mem_ctx);
398 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
399 status = ndr_pull_echo_TestSleep(pull, NDR_IN, &r);
400 if (NT_STATUS_IS_ERR(status)) {
401 talloc_free(mem_ctx);
405 if (DEBUGLEVEL >= 10)
406 NDR_PRINT_IN_DEBUG(echo_TestSleep, &r);
408 r.out.result = _echo_TestSleep(p, r.in.seconds);
410 if (DEBUGLEVEL >= 10)
411 NDR_PRINT_OUT_DEBUG(echo_TestSleep, &r);
413 push = ndr_push_init_ctx(mem_ctx);
415 talloc_free(mem_ctx);
419 status = ndr_push_echo_TestSleep(push, NDR_OUT, &r);
420 if (NT_STATUS_IS_ERR(status)) {
421 talloc_free(mem_ctx);
425 blob = ndr_push_blob(push);
426 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
427 talloc_free(mem_ctx);
431 talloc_free(mem_ctx);
436 static BOOL api_echo_TestEnum(pipes_struct *p)
438 struct ndr_pull *pull;
439 struct ndr_push *push;
442 struct echo_TestEnum r;
443 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestEnum");
445 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
446 talloc_free(mem_ctx);
450 pull = ndr_pull_init_blob(&blob, mem_ctx);
454 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
455 status = ndr_pull_echo_TestEnum(pull, NDR_IN, &r);
456 if (NT_STATUS_IS_ERR(status)) {
457 talloc_free(mem_ctx);
461 if (DEBUGLEVEL >= 10)
462 NDR_PRINT_IN_DEBUG(echo_TestEnum, &r);
465 r.out.foo1 = r.in.foo1;
466 r.out.foo2 = r.in.foo2;
467 r.out.foo3 = r.in.foo3;
468 _echo_TestEnum(p, r.in.foo1, r.in.foo2, r.in.foo3);
470 if (DEBUGLEVEL >= 10)
471 NDR_PRINT_OUT_DEBUG(echo_TestEnum, &r);
473 push = ndr_push_init_ctx(mem_ctx);
475 talloc_free(mem_ctx);
479 status = ndr_push_echo_TestEnum(push, NDR_OUT, &r);
480 if (NT_STATUS_IS_ERR(status)) {
481 talloc_free(mem_ctx);
485 blob = ndr_push_blob(push);
486 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
487 talloc_free(mem_ctx);
491 talloc_free(mem_ctx);
496 static BOOL api_echo_TestSurrounding(pipes_struct *p)
498 struct ndr_pull *pull;
499 struct ndr_push *push;
502 struct echo_TestSurrounding r;
503 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestSurrounding");
505 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
506 talloc_free(mem_ctx);
510 pull = ndr_pull_init_blob(&blob, mem_ctx);
514 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
515 status = ndr_pull_echo_TestSurrounding(pull, NDR_IN, &r);
516 if (NT_STATUS_IS_ERR(status)) {
517 talloc_free(mem_ctx);
521 if (DEBUGLEVEL >= 10)
522 NDR_PRINT_IN_DEBUG(echo_TestSurrounding, &r);
525 r.out.data = r.in.data;
526 _echo_TestSurrounding(p, r.in.data);
528 if (DEBUGLEVEL >= 10)
529 NDR_PRINT_OUT_DEBUG(echo_TestSurrounding, &r);
531 push = ndr_push_init_ctx(mem_ctx);
533 talloc_free(mem_ctx);
537 status = ndr_push_echo_TestSurrounding(push, NDR_OUT, &r);
538 if (NT_STATUS_IS_ERR(status)) {
539 talloc_free(mem_ctx);
543 blob = ndr_push_blob(push);
544 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
545 talloc_free(mem_ctx);
549 talloc_free(mem_ctx);
554 static BOOL api_echo_TestDoublePointer(pipes_struct *p)
556 struct ndr_pull *pull;
557 struct ndr_push *push;
560 struct echo_TestDoublePointer r;
561 TALLOC_CTX *mem_ctx = talloc_init("api_echo_TestDoublePointer");
563 if (!prs_data_blob(&p->in_data.data, &blob, mem_ctx)) {
564 talloc_free(mem_ctx);
568 pull = ndr_pull_init_blob(&blob, mem_ctx);
572 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
573 status = ndr_pull_echo_TestDoublePointer(pull, NDR_IN, &r);
574 if (NT_STATUS_IS_ERR(status)) {
575 talloc_free(mem_ctx);
579 if (DEBUGLEVEL >= 10)
580 NDR_PRINT_IN_DEBUG(echo_TestDoublePointer, &r);
582 r.out.result = _echo_TestDoublePointer(p, r.in.data);
584 if (DEBUGLEVEL >= 10)
585 NDR_PRINT_OUT_DEBUG(echo_TestDoublePointer, &r);
587 push = ndr_push_init_ctx(mem_ctx);
589 talloc_free(mem_ctx);
593 status = ndr_push_echo_TestDoublePointer(push, NDR_OUT, &r);
594 if (NT_STATUS_IS_ERR(status)) {
595 talloc_free(mem_ctx);
599 blob = ndr_push_blob(push);
600 if (!prs_init_data_blob(&p->out_data.rdata, &blob, p->mem_ctx)) {
601 talloc_free(mem_ctx);
605 talloc_free(mem_ctx);
612 static struct api_struct api_rpcecho_cmds[] =
614 {"ECHO_ADDONE", DCERPC_ECHO_ADDONE, api_echo_AddOne},
615 {"ECHO_ECHODATA", DCERPC_ECHO_ECHODATA, api_echo_EchoData},
616 {"ECHO_SINKDATA", DCERPC_ECHO_SINKDATA, api_echo_SinkData},
617 {"ECHO_SOURCEDATA", DCERPC_ECHO_SOURCEDATA, api_echo_SourceData},
618 {"ECHO_TESTCALL", DCERPC_ECHO_TESTCALL, api_echo_TestCall},
619 {"ECHO_TESTCALL2", DCERPC_ECHO_TESTCALL2, api_echo_TestCall2},
620 {"ECHO_TESTSLEEP", DCERPC_ECHO_TESTSLEEP, api_echo_TestSleep},
621 {"ECHO_TESTENUM", DCERPC_ECHO_TESTENUM, api_echo_TestEnum},
622 {"ECHO_TESTSURROUNDING", DCERPC_ECHO_TESTSURROUNDING, api_echo_TestSurrounding},
623 {"ECHO_TESTDOUBLEPOINTER", DCERPC_ECHO_TESTDOUBLEPOINTER, api_echo_TestDoublePointer},
626 void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns)
628 *fns = api_rpcecho_cmds;
629 *n_fns = sizeof(api_rpcecho_cmds) / sizeof(struct api_struct);
632 NTSTATUS rpc_rpcecho_init(void)
634 return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct));