2 * Unix SMB/CIFS implementation.
3 * server auto-generated by pidl. DO NOT MODIFY!
7 #include "../librpc/gen_ndr/srv_epmapper.h"
9 static bool api_epm_Insert(pipes_struct *p)
11 const struct ndr_interface_call *call;
12 struct ndr_pull *pull;
13 struct ndr_push *push;
14 enum ndr_err_code ndr_err;
18 call = &ndr_table_epmapper.calls[NDR_EPM_INSERT];
20 r = talloc(talloc_tos(), struct epm_Insert);
25 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
30 pull = ndr_pull_init_blob(&blob, r, NULL);
36 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
37 ndr_err = call->ndr_pull(pull, NDR_IN, r);
38 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
43 if (DEBUGLEVEL >= 10) {
44 NDR_PRINT_IN_DEBUG(epm_Insert, r);
47 r->out.result = _epm_Insert(p, r);
49 if (p->rng_fault_state) {
51 /* Return true here, srv_pipe_hnd.c will take care */
55 if (DEBUGLEVEL >= 10) {
56 NDR_PRINT_OUT_DEBUG(epm_Insert, r);
59 push = ndr_push_init_ctx(r, NULL);
65 ndr_err = call->ndr_push(push, NDR_OUT, r);
66 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
71 blob = ndr_push_blob(push);
72 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
82 static bool api_epm_Delete(pipes_struct *p)
84 const struct ndr_interface_call *call;
85 struct ndr_pull *pull;
86 struct ndr_push *push;
87 enum ndr_err_code ndr_err;
91 call = &ndr_table_epmapper.calls[NDR_EPM_DELETE];
93 r = talloc(talloc_tos(), struct epm_Delete);
98 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
103 pull = ndr_pull_init_blob(&blob, r, NULL);
109 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
110 ndr_err = call->ndr_pull(pull, NDR_IN, r);
111 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
116 if (DEBUGLEVEL >= 10) {
117 NDR_PRINT_IN_DEBUG(epm_Delete, r);
120 r->out.result = _epm_Delete(p, r);
122 if (p->rng_fault_state) {
124 /* Return true here, srv_pipe_hnd.c will take care */
128 if (DEBUGLEVEL >= 10) {
129 NDR_PRINT_OUT_DEBUG(epm_Delete, r);
132 push = ndr_push_init_ctx(r, NULL);
138 ndr_err = call->ndr_push(push, NDR_OUT, r);
139 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
144 blob = ndr_push_blob(push);
145 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
155 static bool api_epm_Lookup(pipes_struct *p)
157 const struct ndr_interface_call *call;
158 struct ndr_pull *pull;
159 struct ndr_push *push;
160 enum ndr_err_code ndr_err;
162 struct epm_Lookup *r;
164 call = &ndr_table_epmapper.calls[NDR_EPM_LOOKUP];
166 r = talloc(talloc_tos(), struct epm_Lookup);
171 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
176 pull = ndr_pull_init_blob(&blob, r, NULL);
182 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
183 ndr_err = call->ndr_pull(pull, NDR_IN, r);
184 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
189 if (DEBUGLEVEL >= 10) {
190 NDR_PRINT_IN_DEBUG(epm_Lookup, r);
194 r->out.entry_handle = r->in.entry_handle;
195 r->out.num_ents = talloc_zero(r, uint32_t);
196 if (r->out.num_ents == NULL) {
201 r->out.entries = talloc_zero_array(r, struct epm_entry_t, r->in.max_ents);
202 if (r->out.entries == NULL) {
207 r->out.result = _epm_Lookup(p, r);
209 if (p->rng_fault_state) {
211 /* Return true here, srv_pipe_hnd.c will take care */
215 if (DEBUGLEVEL >= 10) {
216 NDR_PRINT_OUT_DEBUG(epm_Lookup, r);
219 push = ndr_push_init_ctx(r, NULL);
225 ndr_err = call->ndr_push(push, NDR_OUT, r);
226 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
231 blob = ndr_push_blob(push);
232 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
242 static bool api_epm_Map(pipes_struct *p)
244 const struct ndr_interface_call *call;
245 struct ndr_pull *pull;
246 struct ndr_push *push;
247 enum ndr_err_code ndr_err;
251 call = &ndr_table_epmapper.calls[NDR_EPM_MAP];
253 r = talloc(talloc_tos(), struct epm_Map);
258 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
263 pull = ndr_pull_init_blob(&blob, r, NULL);
269 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
270 ndr_err = call->ndr_pull(pull, NDR_IN, r);
271 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
276 if (DEBUGLEVEL >= 10) {
277 NDR_PRINT_IN_DEBUG(epm_Map, r);
281 r->out.entry_handle = r->in.entry_handle;
282 r->out.num_towers = talloc_zero(r, uint32_t);
283 if (r->out.num_towers == NULL) {
288 r->out.towers = talloc_zero_array(r, struct epm_twr_p_t, r->in.max_towers);
289 if (r->out.towers == NULL) {
294 r->out.result = _epm_Map(p, r);
296 if (p->rng_fault_state) {
298 /* Return true here, srv_pipe_hnd.c will take care */
302 if (DEBUGLEVEL >= 10) {
303 NDR_PRINT_OUT_DEBUG(epm_Map, r);
306 push = ndr_push_init_ctx(r, NULL);
312 ndr_err = call->ndr_push(push, NDR_OUT, r);
313 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
318 blob = ndr_push_blob(push);
319 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
329 static bool api_epm_LookupHandleFree(pipes_struct *p)
331 const struct ndr_interface_call *call;
332 struct ndr_pull *pull;
333 struct ndr_push *push;
334 enum ndr_err_code ndr_err;
336 struct epm_LookupHandleFree *r;
338 call = &ndr_table_epmapper.calls[NDR_EPM_LOOKUPHANDLEFREE];
340 r = talloc(talloc_tos(), struct epm_LookupHandleFree);
345 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
350 pull = ndr_pull_init_blob(&blob, r, NULL);
356 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
357 ndr_err = call->ndr_pull(pull, NDR_IN, r);
358 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
363 if (DEBUGLEVEL >= 10) {
364 NDR_PRINT_IN_DEBUG(epm_LookupHandleFree, r);
368 r->out.entry_handle = r->in.entry_handle;
369 r->out.result = _epm_LookupHandleFree(p, r);
371 if (p->rng_fault_state) {
373 /* Return true here, srv_pipe_hnd.c will take care */
377 if (DEBUGLEVEL >= 10) {
378 NDR_PRINT_OUT_DEBUG(epm_LookupHandleFree, r);
381 push = ndr_push_init_ctx(r, NULL);
387 ndr_err = call->ndr_push(push, NDR_OUT, r);
388 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
393 blob = ndr_push_blob(push);
394 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
404 static bool api_epm_InqObject(pipes_struct *p)
406 const struct ndr_interface_call *call;
407 struct ndr_pull *pull;
408 struct ndr_push *push;
409 enum ndr_err_code ndr_err;
411 struct epm_InqObject *r;
413 call = &ndr_table_epmapper.calls[NDR_EPM_INQOBJECT];
415 r = talloc(talloc_tos(), struct epm_InqObject);
420 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
425 pull = ndr_pull_init_blob(&blob, r, NULL);
431 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
432 ndr_err = call->ndr_pull(pull, NDR_IN, r);
433 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
438 if (DEBUGLEVEL >= 10) {
439 NDR_PRINT_IN_DEBUG(epm_InqObject, r);
442 r->out.result = _epm_InqObject(p, r);
444 if (p->rng_fault_state) {
446 /* Return true here, srv_pipe_hnd.c will take care */
450 if (DEBUGLEVEL >= 10) {
451 NDR_PRINT_OUT_DEBUG(epm_InqObject, r);
454 push = ndr_push_init_ctx(r, NULL);
460 ndr_err = call->ndr_push(push, NDR_OUT, r);
461 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
466 blob = ndr_push_blob(push);
467 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
477 static bool api_epm_MgmtDelete(pipes_struct *p)
479 const struct ndr_interface_call *call;
480 struct ndr_pull *pull;
481 struct ndr_push *push;
482 enum ndr_err_code ndr_err;
484 struct epm_MgmtDelete *r;
486 call = &ndr_table_epmapper.calls[NDR_EPM_MGMTDELETE];
488 r = talloc(talloc_tos(), struct epm_MgmtDelete);
493 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
498 pull = ndr_pull_init_blob(&blob, r, NULL);
504 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
505 ndr_err = call->ndr_pull(pull, NDR_IN, r);
506 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
511 if (DEBUGLEVEL >= 10) {
512 NDR_PRINT_IN_DEBUG(epm_MgmtDelete, r);
515 r->out.result = _epm_MgmtDelete(p, r);
517 if (p->rng_fault_state) {
519 /* Return true here, srv_pipe_hnd.c will take care */
523 if (DEBUGLEVEL >= 10) {
524 NDR_PRINT_OUT_DEBUG(epm_MgmtDelete, r);
527 push = ndr_push_init_ctx(r, NULL);
533 ndr_err = call->ndr_push(push, NDR_OUT, r);
534 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
539 blob = ndr_push_blob(push);
540 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
550 static bool api_epm_MapAuth(pipes_struct *p)
552 const struct ndr_interface_call *call;
553 struct ndr_pull *pull;
554 struct ndr_push *push;
555 enum ndr_err_code ndr_err;
557 struct epm_MapAuth *r;
559 call = &ndr_table_epmapper.calls[NDR_EPM_MAPAUTH];
561 r = talloc(talloc_tos(), struct epm_MapAuth);
566 if (!prs_data_blob(&p->in_data.data, &blob, r)) {
571 pull = ndr_pull_init_blob(&blob, r, NULL);
577 pull->flags |= LIBNDR_FLAG_REF_ALLOC;
578 ndr_err = call->ndr_pull(pull, NDR_IN, r);
579 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
584 if (DEBUGLEVEL >= 10) {
585 NDR_PRINT_IN_DEBUG(epm_MapAuth, r);
588 r->out.result = _epm_MapAuth(p, r);
590 if (p->rng_fault_state) {
592 /* Return true here, srv_pipe_hnd.c will take care */
596 if (DEBUGLEVEL >= 10) {
597 NDR_PRINT_OUT_DEBUG(epm_MapAuth, r);
600 push = ndr_push_init_ctx(r, NULL);
606 ndr_err = call->ndr_push(push, NDR_OUT, r);
607 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
612 blob = ndr_push_blob(push);
613 if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) {
625 static struct api_struct api_epmapper_cmds[] =
627 {"EPM_INSERT", NDR_EPM_INSERT, api_epm_Insert},
628 {"EPM_DELETE", NDR_EPM_DELETE, api_epm_Delete},
629 {"EPM_LOOKUP", NDR_EPM_LOOKUP, api_epm_Lookup},
630 {"EPM_MAP", NDR_EPM_MAP, api_epm_Map},
631 {"EPM_LOOKUPHANDLEFREE", NDR_EPM_LOOKUPHANDLEFREE, api_epm_LookupHandleFree},
632 {"EPM_INQOBJECT", NDR_EPM_INQOBJECT, api_epm_InqObject},
633 {"EPM_MGMTDELETE", NDR_EPM_MGMTDELETE, api_epm_MgmtDelete},
634 {"EPM_MAPAUTH", NDR_EPM_MAPAUTH, api_epm_MapAuth},
637 void epmapper_get_pipe_fns(struct api_struct **fns, int *n_fns)
639 *fns = api_epmapper_cmds;
640 *n_fns = sizeof(api_epmapper_cmds) / sizeof(struct api_struct);
643 NTSTATUS rpc_epmapper_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r)
645 if (cli->pipes_struct == NULL) {
646 return NT_STATUS_INVALID_PARAMETER;
651 case NDR_EPM_INSERT: {
652 struct epm_Insert *r = (struct epm_Insert *)_r;
653 r->out.result = _epm_Insert(cli->pipes_struct, r);
657 case NDR_EPM_DELETE: {
658 struct epm_Delete *r = (struct epm_Delete *)_r;
659 r->out.result = _epm_Delete(cli->pipes_struct, r);
663 case NDR_EPM_LOOKUP: {
664 struct epm_Lookup *r = (struct epm_Lookup *)_r;
666 r->out.entry_handle = r->in.entry_handle;
667 r->out.num_ents = talloc_zero(mem_ctx, uint32_t);
668 if (r->out.num_ents == NULL) {
669 return NT_STATUS_NO_MEMORY;
672 r->out.entries = talloc_zero_array(mem_ctx, struct epm_entry_t, r->in.max_ents);
673 if (r->out.entries == NULL) {
674 return NT_STATUS_NO_MEMORY;
677 r->out.result = _epm_Lookup(cli->pipes_struct, r);
682 struct epm_Map *r = (struct epm_Map *)_r;
684 r->out.entry_handle = r->in.entry_handle;
685 r->out.num_towers = talloc_zero(mem_ctx, uint32_t);
686 if (r->out.num_towers == NULL) {
687 return NT_STATUS_NO_MEMORY;
690 r->out.towers = talloc_zero_array(mem_ctx, struct epm_twr_p_t, r->in.max_towers);
691 if (r->out.towers == NULL) {
692 return NT_STATUS_NO_MEMORY;
695 r->out.result = _epm_Map(cli->pipes_struct, r);
699 case NDR_EPM_LOOKUPHANDLEFREE: {
700 struct epm_LookupHandleFree *r = (struct epm_LookupHandleFree *)_r;
702 r->out.entry_handle = r->in.entry_handle;
703 r->out.result = _epm_LookupHandleFree(cli->pipes_struct, r);
707 case NDR_EPM_INQOBJECT: {
708 struct epm_InqObject *r = (struct epm_InqObject *)_r;
709 r->out.result = _epm_InqObject(cli->pipes_struct, r);
713 case NDR_EPM_MGMTDELETE: {
714 struct epm_MgmtDelete *r = (struct epm_MgmtDelete *)_r;
715 r->out.result = _epm_MgmtDelete(cli->pipes_struct, r);
719 case NDR_EPM_MAPAUTH: {
720 struct epm_MapAuth *r = (struct epm_MapAuth *)_r;
721 r->out.result = _epm_MapAuth(cli->pipes_struct, r);
726 return NT_STATUS_NOT_IMPLEMENTED;
730 NTSTATUS rpc_epmapper_init(void)
732 return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "epmapper", "epmapper", &ndr_table_epmapper, api_epmapper_cmds, sizeof(api_epmapper_cmds) / sizeof(struct api_struct));