diff options
Diffstat (limited to 'librpc/gen_ndr/srv_echo.c')
-rw-r--r-- | librpc/gen_ndr/srv_echo.c | 914 |
1 files changed, 0 insertions, 914 deletions
diff --git a/librpc/gen_ndr/srv_echo.c b/librpc/gen_ndr/srv_echo.c deleted file mode 100644 index b4c21dd270..0000000000 --- a/librpc/gen_ndr/srv_echo.c +++ /dev/null @@ -1,914 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * server auto-generated by pidl. DO NOT MODIFY! - */ - -#include "includes.h" -#include "../librpc/gen_ndr/srv_echo.h" - -static bool api_echo_AddOne(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_AddOne *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_ADDONE]; - - r = talloc(talloc_tos(), struct echo_AddOne); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_AddOne, r); - } - - ZERO_STRUCT(r->out); - r->out.out_data = talloc_zero(r, uint32_t); - if (r->out.out_data == NULL) { - talloc_free(r); - return false; - } - - _echo_AddOne(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_AddOne, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_EchoData(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_EchoData *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_ECHODATA]; - - r = talloc(talloc_tos(), struct echo_EchoData); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_EchoData, r); - } - - ZERO_STRUCT(r->out); - r->out.out_data = talloc_zero_array(r, uint8_t, r->in.len); - if (r->out.out_data == NULL) { - talloc_free(r); - return false; - } - - _echo_EchoData(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_EchoData, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_SinkData(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_SinkData *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_SINKDATA]; - - r = talloc(talloc_tos(), struct echo_SinkData); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_SinkData, r); - } - - _echo_SinkData(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_SinkData, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_SourceData(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_SourceData *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_SOURCEDATA]; - - r = talloc(talloc_tos(), struct echo_SourceData); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_SourceData, r); - } - - ZERO_STRUCT(r->out); - r->out.data = talloc_zero_array(r, uint8_t, r->in.len); - if (r->out.data == NULL) { - talloc_free(r); - return false; - } - - _echo_SourceData(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_SourceData, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestCall(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestCall *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTCALL]; - - r = talloc(talloc_tos(), struct echo_TestCall); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestCall, r); - } - - ZERO_STRUCT(r->out); - r->out.s2 = talloc_zero(r, const char *); - if (r->out.s2 == NULL) { - talloc_free(r); - return false; - } - - _echo_TestCall(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestCall, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestCall2(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestCall2 *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTCALL2]; - - r = talloc(talloc_tos(), struct echo_TestCall2); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestCall2, r); - } - - ZERO_STRUCT(r->out); - r->out.info = talloc_zero(r, union echo_Info); - if (r->out.info == NULL) { - talloc_free(r); - return false; - } - - r->out.result = _echo_TestCall2(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestCall2, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestSleep(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestSleep *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTSLEEP]; - - r = talloc(talloc_tos(), struct echo_TestSleep); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestSleep, r); - } - - r->out.result = _echo_TestSleep(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestSleep, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestEnum(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestEnum *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTENUM]; - - r = talloc(talloc_tos(), struct echo_TestEnum); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestEnum, r); - } - - ZERO_STRUCT(r->out); - r->out.foo1 = r->in.foo1; - r->out.foo2 = r->in.foo2; - r->out.foo3 = r->in.foo3; - _echo_TestEnum(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestEnum, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestSurrounding(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestSurrounding *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTSURROUNDING]; - - r = talloc(talloc_tos(), struct echo_TestSurrounding); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestSurrounding, r); - } - - ZERO_STRUCT(r->out); - r->out.data = r->in.data; - _echo_TestSurrounding(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestSurrounding, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - -static bool api_echo_TestDoublePointer(pipes_struct *p) -{ - const struct ndr_interface_call *call; - struct ndr_pull *pull; - struct ndr_push *push; - enum ndr_err_code ndr_err; - DATA_BLOB blob; - struct echo_TestDoublePointer *r; - - call = &ndr_table_rpcecho.calls[NDR_ECHO_TESTDOUBLEPOINTER]; - - r = talloc(talloc_tos(), struct echo_TestDoublePointer); - if (r == NULL) { - return false; - } - - if (!prs_data_blob(&p->in_data.data, &blob, r)) { - talloc_free(r); - return false; - } - - pull = ndr_pull_init_blob(&blob, r, NULL); - if (pull == NULL) { - talloc_free(r); - return false; - } - - pull->flags |= LIBNDR_FLAG_REF_ALLOC; - ndr_err = call->ndr_pull(pull, NDR_IN, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(echo_TestDoublePointer, r); - } - - r->out.result = _echo_TestDoublePointer(p, r); - - if (p->rng_fault_state) { - talloc_free(r); - /* Return true here, srv_pipe_hnd.c will take care */ - return true; - } - - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(echo_TestDoublePointer, r); - } - - push = ndr_push_init_ctx(r, NULL); - if (push == NULL) { - talloc_free(r); - return false; - } - - ndr_err = call->ndr_push(push, NDR_OUT, r); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - talloc_free(r); - return false; - } - - blob = ndr_push_blob(push); - if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { - talloc_free(r); - return false; - } - - talloc_free(r); - - return true; -} - - -/* Tables */ -static struct api_struct api_rpcecho_cmds[] = -{ - {"ECHO_ADDONE", NDR_ECHO_ADDONE, api_echo_AddOne}, - {"ECHO_ECHODATA", NDR_ECHO_ECHODATA, api_echo_EchoData}, - {"ECHO_SINKDATA", NDR_ECHO_SINKDATA, api_echo_SinkData}, - {"ECHO_SOURCEDATA", NDR_ECHO_SOURCEDATA, api_echo_SourceData}, - {"ECHO_TESTCALL", NDR_ECHO_TESTCALL, api_echo_TestCall}, - {"ECHO_TESTCALL2", NDR_ECHO_TESTCALL2, api_echo_TestCall2}, - {"ECHO_TESTSLEEP", NDR_ECHO_TESTSLEEP, api_echo_TestSleep}, - {"ECHO_TESTENUM", NDR_ECHO_TESTENUM, api_echo_TestEnum}, - {"ECHO_TESTSURROUNDING", NDR_ECHO_TESTSURROUNDING, api_echo_TestSurrounding}, - {"ECHO_TESTDOUBLEPOINTER", NDR_ECHO_TESTDOUBLEPOINTER, api_echo_TestDoublePointer}, -}; - -void rpcecho_get_pipe_fns(struct api_struct **fns, int *n_fns) -{ - *fns = api_rpcecho_cmds; - *n_fns = sizeof(api_rpcecho_cmds) / sizeof(struct api_struct); -} - -NTSTATUS rpc_rpcecho_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r) -{ - if (cli->pipes_struct == NULL) { - return NT_STATUS_INVALID_PARAMETER; - } - - switch (opnum) - { - case NDR_ECHO_ADDONE: { - struct echo_AddOne *r = (struct echo_AddOne *)_r; - ZERO_STRUCT(r->out); - r->out.out_data = talloc_zero(mem_ctx, uint32_t); - if (r->out.out_data == NULL) { - return NT_STATUS_NO_MEMORY; - } - - _echo_AddOne(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_ECHODATA: { - struct echo_EchoData *r = (struct echo_EchoData *)_r; - ZERO_STRUCT(r->out); - r->out.out_data = talloc_zero_array(mem_ctx, uint8_t, r->in.len); - if (r->out.out_data == NULL) { - return NT_STATUS_NO_MEMORY; - } - - _echo_EchoData(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_SINKDATA: { - struct echo_SinkData *r = (struct echo_SinkData *)_r; - _echo_SinkData(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_SOURCEDATA: { - struct echo_SourceData *r = (struct echo_SourceData *)_r; - ZERO_STRUCT(r->out); - r->out.data = talloc_zero_array(mem_ctx, uint8_t, r->in.len); - if (r->out.data == NULL) { - return NT_STATUS_NO_MEMORY; - } - - _echo_SourceData(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTCALL: { - struct echo_TestCall *r = (struct echo_TestCall *)_r; - ZERO_STRUCT(r->out); - r->out.s2 = talloc_zero(mem_ctx, const char *); - if (r->out.s2 == NULL) { - return NT_STATUS_NO_MEMORY; - } - - _echo_TestCall(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTCALL2: { - struct echo_TestCall2 *r = (struct echo_TestCall2 *)_r; - ZERO_STRUCT(r->out); - r->out.info = talloc_zero(mem_ctx, union echo_Info); - if (r->out.info == NULL) { - return NT_STATUS_NO_MEMORY; - } - - r->out.result = _echo_TestCall2(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTSLEEP: { - struct echo_TestSleep *r = (struct echo_TestSleep *)_r; - r->out.result = _echo_TestSleep(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTENUM: { - struct echo_TestEnum *r = (struct echo_TestEnum *)_r; - ZERO_STRUCT(r->out); - r->out.foo1 = r->in.foo1; - r->out.foo2 = r->in.foo2; - r->out.foo3 = r->in.foo3; - _echo_TestEnum(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTSURROUNDING: { - struct echo_TestSurrounding *r = (struct echo_TestSurrounding *)_r; - ZERO_STRUCT(r->out); - r->out.data = r->in.data; - _echo_TestSurrounding(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - case NDR_ECHO_TESTDOUBLEPOINTER: { - struct echo_TestDoublePointer *r = (struct echo_TestDoublePointer *)_r; - r->out.result = _echo_TestDoublePointer(cli->pipes_struct, r); - return NT_STATUS_OK; - } - - default: - return NT_STATUS_NOT_IMPLEMENTED; - } -} - -NTSTATUS rpc_rpcecho_init(void) -{ - return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "rpcecho", "rpcecho", &ndr_table_rpcecho, api_rpcecho_cmds, sizeof(api_rpcecho_cmds) / sizeof(struct api_struct)); -} |