1 /* client functions auto-generated by pidl */
5 #include "lib/util/tevent_ntstatus.h"
6 #include "librpc/gen_ndr/ndr_epmapper.h"
7 #include "librpc/gen_ndr/ndr_epmapper_c.h"
9 /* epmapper - client functions generated by pidl */
11 struct dcerpc_epm_Insert_r_state {
12 TALLOC_CTX *out_mem_ctx;
15 static void dcerpc_epm_Insert_r_done(struct tevent_req *subreq);
17 struct tevent_req *dcerpc_epm_Insert_r_send(TALLOC_CTX *mem_ctx,
18 struct tevent_context *ev,
19 struct dcerpc_binding_handle *h,
22 struct tevent_req *req;
23 struct dcerpc_epm_Insert_r_state *state;
24 struct tevent_req *subreq;
26 req = tevent_req_create(mem_ctx, &state,
27 struct dcerpc_epm_Insert_r_state);
32 state->out_mem_ctx = NULL;
33 subreq = dcerpc_binding_handle_call_send(state, ev, h,
34 NULL, &ndr_table_epmapper,
35 NDR_EPM_INSERT, state, r);
36 if (tevent_req_nomem(subreq, req)) {
37 return tevent_req_post(req, ev);
39 tevent_req_set_callback(subreq, dcerpc_epm_Insert_r_done, req);
44 static void dcerpc_epm_Insert_r_done(struct tevent_req *subreq)
46 struct tevent_req *req =
47 tevent_req_callback_data(subreq,
51 status = dcerpc_binding_handle_call_recv(subreq);
52 if (!NT_STATUS_IS_OK(status)) {
53 tevent_req_nterror(req, status);
60 NTSTATUS dcerpc_epm_Insert_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
62 struct dcerpc_epm_Insert_r_state *state =
64 struct dcerpc_epm_Insert_r_state);
67 if (tevent_req_is_nterror(req, &status)) {
68 tevent_req_received(req);
72 talloc_steal(mem_ctx, state->out_mem_ctx);
74 tevent_req_received(req);
78 NTSTATUS dcerpc_epm_Insert_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_Insert *r)
82 status = dcerpc_binding_handle_call(h,
83 NULL, &ndr_table_epmapper,
84 NDR_EPM_INSERT, mem_ctx, r);
89 NTSTATUS dcerpc_epm_Insert_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_Insert *r)
93 status = dcerpc_epm_Insert_r(p->binding_handle, mem_ctx, r);
95 if (NT_STATUS_IS_RPC(status)) {
96 status = NT_STATUS_NET_WRITE_FAULT;
102 struct dcerpc_epm_Insert_state {
103 struct epm_Insert orig;
104 struct epm_Insert tmp;
105 TALLOC_CTX *out_mem_ctx;
108 static void dcerpc_epm_Insert_done(struct tevent_req *subreq);
110 struct tevent_req *dcerpc_epm_Insert_send(TALLOC_CTX *mem_ctx,
111 struct tevent_context *ev,
112 struct dcerpc_binding_handle *h,
113 uint32_t _num_ents /* [in] */,
114 struct epm_entry_t *_entries /* [in] [size_is(num_ents)] */,
115 uint32_t _replace /* [in] */)
117 struct tevent_req *req;
118 struct dcerpc_epm_Insert_state *state;
119 struct tevent_req *subreq;
121 req = tevent_req_create(mem_ctx, &state,
122 struct dcerpc_epm_Insert_state);
126 state->out_mem_ctx = NULL;
129 state->orig.in.num_ents = _num_ents;
130 state->orig.in.entries = _entries;
131 state->orig.in.replace = _replace;
136 ZERO_STRUCT(state->orig.out.result);
138 /* make a temporary copy, that we pass to the dispatch function */
139 state->tmp = state->orig;
141 subreq = dcerpc_epm_Insert_r_send(state, ev, h, &state->tmp);
142 if (tevent_req_nomem(subreq, req)) {
143 return tevent_req_post(req, ev);
145 tevent_req_set_callback(subreq, dcerpc_epm_Insert_done, req);
149 static void dcerpc_epm_Insert_done(struct tevent_req *subreq)
151 struct tevent_req *req = tevent_req_callback_data(
152 subreq, struct tevent_req);
153 struct dcerpc_epm_Insert_state *state = tevent_req_data(
154 req, struct dcerpc_epm_Insert_state);
158 if (state->out_mem_ctx) {
159 mem_ctx = state->out_mem_ctx;
164 status = dcerpc_epm_Insert_r_recv(subreq, mem_ctx);
166 if (!NT_STATUS_IS_OK(status)) {
167 tevent_req_nterror(req, status);
171 /* Copy out parameters */
174 state->orig.out.result = state->tmp.out.result;
176 /* Reset temporary structure */
177 ZERO_STRUCT(state->tmp);
179 tevent_req_done(req);
182 NTSTATUS dcerpc_epm_Insert_recv(struct tevent_req *req,
186 struct dcerpc_epm_Insert_state *state = tevent_req_data(
187 req, struct dcerpc_epm_Insert_state);
190 if (tevent_req_is_nterror(req, &status)) {
191 tevent_req_received(req);
195 /* Steal possible out parameters to the callers context */
196 talloc_steal(mem_ctx, state->out_mem_ctx);
199 *result = state->orig.out.result;
201 tevent_req_received(req);
205 NTSTATUS dcerpc_epm_Insert(struct dcerpc_binding_handle *h,
207 uint32_t _num_ents /* [in] */,
208 struct epm_entry_t *_entries /* [in] [size_is(num_ents)] */,
209 uint32_t _replace /* [in] */,
216 r.in.num_ents = _num_ents;
217 r.in.entries = _entries;
218 r.in.replace = _replace;
220 status = dcerpc_epm_Insert_r(h, mem_ctx, &r);
221 if (!NT_STATUS_IS_OK(status)) {
225 /* Return variables */
228 *result = r.out.result;
233 struct dcerpc_epm_Delete_r_state {
234 TALLOC_CTX *out_mem_ctx;
237 static void dcerpc_epm_Delete_r_done(struct tevent_req *subreq);
239 struct tevent_req *dcerpc_epm_Delete_r_send(TALLOC_CTX *mem_ctx,
240 struct tevent_context *ev,
241 struct dcerpc_binding_handle *h,
242 struct epm_Delete *r)
244 struct tevent_req *req;
245 struct dcerpc_epm_Delete_r_state *state;
246 struct tevent_req *subreq;
248 req = tevent_req_create(mem_ctx, &state,
249 struct dcerpc_epm_Delete_r_state);
254 state->out_mem_ctx = NULL;
255 subreq = dcerpc_binding_handle_call_send(state, ev, h,
256 NULL, &ndr_table_epmapper,
257 NDR_EPM_DELETE, state, r);
258 if (tevent_req_nomem(subreq, req)) {
259 return tevent_req_post(req, ev);
261 tevent_req_set_callback(subreq, dcerpc_epm_Delete_r_done, req);
266 static void dcerpc_epm_Delete_r_done(struct tevent_req *subreq)
268 struct tevent_req *req =
269 tevent_req_callback_data(subreq,
273 status = dcerpc_binding_handle_call_recv(subreq);
274 if (!NT_STATUS_IS_OK(status)) {
275 tevent_req_nterror(req, status);
279 tevent_req_done(req);
282 NTSTATUS dcerpc_epm_Delete_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
284 struct dcerpc_epm_Delete_r_state *state =
286 struct dcerpc_epm_Delete_r_state);
289 if (tevent_req_is_nterror(req, &status)) {
290 tevent_req_received(req);
294 talloc_steal(mem_ctx, state->out_mem_ctx);
296 tevent_req_received(req);
300 NTSTATUS dcerpc_epm_Delete_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_Delete *r)
304 status = dcerpc_binding_handle_call(h,
305 NULL, &ndr_table_epmapper,
306 NDR_EPM_DELETE, mem_ctx, r);
311 NTSTATUS dcerpc_epm_Delete_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_Delete *r)
315 status = dcerpc_epm_Delete_r(p->binding_handle, mem_ctx, r);
317 if (NT_STATUS_IS_RPC(status)) {
318 status = NT_STATUS_NET_WRITE_FAULT;
324 struct dcerpc_epm_Delete_state {
325 struct epm_Delete orig;
326 struct epm_Delete tmp;
327 TALLOC_CTX *out_mem_ctx;
330 static void dcerpc_epm_Delete_done(struct tevent_req *subreq);
332 struct tevent_req *dcerpc_epm_Delete_send(TALLOC_CTX *mem_ctx,
333 struct tevent_context *ev,
334 struct dcerpc_binding_handle *h,
335 uint32_t _num_ents /* [in] */,
336 struct epm_entry_t *_entries /* [in] [size_is(num_ents)] */)
338 struct tevent_req *req;
339 struct dcerpc_epm_Delete_state *state;
340 struct tevent_req *subreq;
342 req = tevent_req_create(mem_ctx, &state,
343 struct dcerpc_epm_Delete_state);
347 state->out_mem_ctx = NULL;
350 state->orig.in.num_ents = _num_ents;
351 state->orig.in.entries = _entries;
356 ZERO_STRUCT(state->orig.out.result);
358 /* make a temporary copy, that we pass to the dispatch function */
359 state->tmp = state->orig;
361 subreq = dcerpc_epm_Delete_r_send(state, ev, h, &state->tmp);
362 if (tevent_req_nomem(subreq, req)) {
363 return tevent_req_post(req, ev);
365 tevent_req_set_callback(subreq, dcerpc_epm_Delete_done, req);
369 static void dcerpc_epm_Delete_done(struct tevent_req *subreq)
371 struct tevent_req *req = tevent_req_callback_data(
372 subreq, struct tevent_req);
373 struct dcerpc_epm_Delete_state *state = tevent_req_data(
374 req, struct dcerpc_epm_Delete_state);
378 if (state->out_mem_ctx) {
379 mem_ctx = state->out_mem_ctx;
384 status = dcerpc_epm_Delete_r_recv(subreq, mem_ctx);
386 if (!NT_STATUS_IS_OK(status)) {
387 tevent_req_nterror(req, status);
391 /* Copy out parameters */
394 state->orig.out.result = state->tmp.out.result;
396 /* Reset temporary structure */
397 ZERO_STRUCT(state->tmp);
399 tevent_req_done(req);
402 NTSTATUS dcerpc_epm_Delete_recv(struct tevent_req *req,
406 struct dcerpc_epm_Delete_state *state = tevent_req_data(
407 req, struct dcerpc_epm_Delete_state);
410 if (tevent_req_is_nterror(req, &status)) {
411 tevent_req_received(req);
415 /* Steal possible out parameters to the callers context */
416 talloc_steal(mem_ctx, state->out_mem_ctx);
419 *result = state->orig.out.result;
421 tevent_req_received(req);
425 NTSTATUS dcerpc_epm_Delete(struct dcerpc_binding_handle *h,
427 uint32_t _num_ents /* [in] */,
428 struct epm_entry_t *_entries /* [in] [size_is(num_ents)] */,
435 r.in.num_ents = _num_ents;
436 r.in.entries = _entries;
438 status = dcerpc_epm_Delete_r(h, mem_ctx, &r);
439 if (!NT_STATUS_IS_OK(status)) {
443 /* Return variables */
446 *result = r.out.result;
451 struct dcerpc_epm_Lookup_r_state {
452 TALLOC_CTX *out_mem_ctx;
455 static void dcerpc_epm_Lookup_r_done(struct tevent_req *subreq);
457 struct tevent_req *dcerpc_epm_Lookup_r_send(TALLOC_CTX *mem_ctx,
458 struct tevent_context *ev,
459 struct dcerpc_binding_handle *h,
460 struct epm_Lookup *r)
462 struct tevent_req *req;
463 struct dcerpc_epm_Lookup_r_state *state;
464 struct tevent_req *subreq;
466 req = tevent_req_create(mem_ctx, &state,
467 struct dcerpc_epm_Lookup_r_state);
472 state->out_mem_ctx = talloc_new(state);
473 if (tevent_req_nomem(state->out_mem_ctx, req)) {
474 return tevent_req_post(req, ev);
477 subreq = dcerpc_binding_handle_call_send(state, ev, h,
478 NULL, &ndr_table_epmapper,
479 NDR_EPM_LOOKUP, state->out_mem_ctx, r);
480 if (tevent_req_nomem(subreq, req)) {
481 return tevent_req_post(req, ev);
483 tevent_req_set_callback(subreq, dcerpc_epm_Lookup_r_done, req);
488 static void dcerpc_epm_Lookup_r_done(struct tevent_req *subreq)
490 struct tevent_req *req =
491 tevent_req_callback_data(subreq,
495 status = dcerpc_binding_handle_call_recv(subreq);
496 if (!NT_STATUS_IS_OK(status)) {
497 tevent_req_nterror(req, status);
501 tevent_req_done(req);
504 NTSTATUS dcerpc_epm_Lookup_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
506 struct dcerpc_epm_Lookup_r_state *state =
508 struct dcerpc_epm_Lookup_r_state);
511 if (tevent_req_is_nterror(req, &status)) {
512 tevent_req_received(req);
516 talloc_steal(mem_ctx, state->out_mem_ctx);
518 tevent_req_received(req);
522 NTSTATUS dcerpc_epm_Lookup_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_Lookup *r)
526 status = dcerpc_binding_handle_call(h,
527 NULL, &ndr_table_epmapper,
528 NDR_EPM_LOOKUP, mem_ctx, r);
533 NTSTATUS dcerpc_epm_Lookup_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_Lookup *r)
537 status = dcerpc_epm_Lookup_r(p->binding_handle, mem_ctx, r);
539 if (NT_STATUS_IS_RPC(status)) {
540 status = NT_STATUS_NET_WRITE_FAULT;
546 struct dcerpc_epm_Lookup_state {
547 struct epm_Lookup orig;
548 struct epm_Lookup tmp;
549 TALLOC_CTX *out_mem_ctx;
552 static void dcerpc_epm_Lookup_done(struct tevent_req *subreq);
554 struct tevent_req *dcerpc_epm_Lookup_send(TALLOC_CTX *mem_ctx,
555 struct tevent_context *ev,
556 struct dcerpc_binding_handle *h,
557 uint32_t _inquiry_type /* [in] */,
558 struct GUID *_object /* [in] [ptr] */,
559 struct rpc_if_id_t *_interface_id /* [in] [ptr] */,
560 uint32_t _vers_option /* [in] */,
561 struct policy_handle *_entry_handle /* [in,out] [ref] */,
562 uint32_t _max_ents /* [in] */,
563 uint32_t *_num_ents /* [out] [ref] */,
564 struct epm_entry_t *_entries /* [out] [length_is(*num_ents),size_is(max_ents)] */)
566 struct tevent_req *req;
567 struct dcerpc_epm_Lookup_state *state;
568 struct tevent_req *subreq;
570 req = tevent_req_create(mem_ctx, &state,
571 struct dcerpc_epm_Lookup_state);
575 state->out_mem_ctx = NULL;
578 state->orig.in.inquiry_type = _inquiry_type;
579 state->orig.in.object = _object;
580 state->orig.in.interface_id = _interface_id;
581 state->orig.in.vers_option = _vers_option;
582 state->orig.in.entry_handle = _entry_handle;
583 state->orig.in.max_ents = _max_ents;
586 state->orig.out.entry_handle = _entry_handle;
587 state->orig.out.num_ents = _num_ents;
588 state->orig.out.entries = _entries;
591 ZERO_STRUCT(state->orig.out.result);
593 state->out_mem_ctx = talloc_named_const(state, 0,
594 "dcerpc_epm_Lookup_out_memory");
595 if (tevent_req_nomem(state->out_mem_ctx, req)) {
596 return tevent_req_post(req, ev);
599 /* make a temporary copy, that we pass to the dispatch function */
600 state->tmp = state->orig;
602 subreq = dcerpc_epm_Lookup_r_send(state, ev, h, &state->tmp);
603 if (tevent_req_nomem(subreq, req)) {
604 return tevent_req_post(req, ev);
606 tevent_req_set_callback(subreq, dcerpc_epm_Lookup_done, req);
610 static void dcerpc_epm_Lookup_done(struct tevent_req *subreq)
612 struct tevent_req *req = tevent_req_callback_data(
613 subreq, struct tevent_req);
614 struct dcerpc_epm_Lookup_state *state = tevent_req_data(
615 req, struct dcerpc_epm_Lookup_state);
619 if (state->out_mem_ctx) {
620 mem_ctx = state->out_mem_ctx;
625 status = dcerpc_epm_Lookup_r_recv(subreq, mem_ctx);
627 if (!NT_STATUS_IS_OK(status)) {
628 tevent_req_nterror(req, status);
632 /* Copy out parameters */
633 *state->orig.out.entry_handle = *state->tmp.out.entry_handle;
634 *state->orig.out.num_ents = *state->tmp.out.num_ents;
636 size_t _copy_len_entries;
637 if ((*state->tmp.out.num_ents) > (state->tmp.in.max_ents)) {
638 tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
641 _copy_len_entries = *state->tmp.out.num_ents;
642 memcpy(state->orig.out.entries, state->tmp.out.entries, _copy_len_entries * sizeof(*state->orig.out.entries));
646 state->orig.out.result = state->tmp.out.result;
648 /* Reset temporary structure */
649 ZERO_STRUCT(state->tmp);
651 tevent_req_done(req);
654 NTSTATUS dcerpc_epm_Lookup_recv(struct tevent_req *req,
658 struct dcerpc_epm_Lookup_state *state = tevent_req_data(
659 req, struct dcerpc_epm_Lookup_state);
662 if (tevent_req_is_nterror(req, &status)) {
663 tevent_req_received(req);
667 /* Steal possible out parameters to the callers context */
668 talloc_steal(mem_ctx, state->out_mem_ctx);
671 *result = state->orig.out.result;
673 tevent_req_received(req);
677 NTSTATUS dcerpc_epm_Lookup(struct dcerpc_binding_handle *h,
679 uint32_t _inquiry_type /* [in] */,
680 struct GUID *_object /* [in] [ptr] */,
681 struct rpc_if_id_t *_interface_id /* [in] [ptr] */,
682 uint32_t _vers_option /* [in] */,
683 struct policy_handle *_entry_handle /* [in,out] [ref] */,
684 uint32_t _max_ents /* [in] */,
685 uint32_t *_num_ents /* [out] [ref] */,
686 struct epm_entry_t *_entries /* [out] [length_is(*num_ents),size_is(max_ents)] */,
693 r.in.inquiry_type = _inquiry_type;
694 r.in.object = _object;
695 r.in.interface_id = _interface_id;
696 r.in.vers_option = _vers_option;
697 r.in.entry_handle = _entry_handle;
698 r.in.max_ents = _max_ents;
700 status = dcerpc_epm_Lookup_r(h, mem_ctx, &r);
701 if (!NT_STATUS_IS_OK(status)) {
705 /* Return variables */
706 *_entry_handle = *r.out.entry_handle;
707 *_num_ents = *r.out.num_ents;
709 size_t _copy_len_entries;
710 if ((*r.out.num_ents) > (r.in.max_ents)) {
711 return NT_STATUS_INVALID_NETWORK_RESPONSE;
713 _copy_len_entries = *r.out.num_ents;
714 memcpy(_entries, r.out.entries, _copy_len_entries * sizeof(*_entries));
718 *result = r.out.result;
723 struct dcerpc_epm_Map_r_state {
724 TALLOC_CTX *out_mem_ctx;
727 static void dcerpc_epm_Map_r_done(struct tevent_req *subreq);
729 struct tevent_req *dcerpc_epm_Map_r_send(TALLOC_CTX *mem_ctx,
730 struct tevent_context *ev,
731 struct dcerpc_binding_handle *h,
734 struct tevent_req *req;
735 struct dcerpc_epm_Map_r_state *state;
736 struct tevent_req *subreq;
738 req = tevent_req_create(mem_ctx, &state,
739 struct dcerpc_epm_Map_r_state);
744 state->out_mem_ctx = talloc_new(state);
745 if (tevent_req_nomem(state->out_mem_ctx, req)) {
746 return tevent_req_post(req, ev);
749 subreq = dcerpc_binding_handle_call_send(state, ev, h,
750 NULL, &ndr_table_epmapper,
751 NDR_EPM_MAP, state->out_mem_ctx, r);
752 if (tevent_req_nomem(subreq, req)) {
753 return tevent_req_post(req, ev);
755 tevent_req_set_callback(subreq, dcerpc_epm_Map_r_done, req);
760 static void dcerpc_epm_Map_r_done(struct tevent_req *subreq)
762 struct tevent_req *req =
763 tevent_req_callback_data(subreq,
767 status = dcerpc_binding_handle_call_recv(subreq);
768 if (!NT_STATUS_IS_OK(status)) {
769 tevent_req_nterror(req, status);
773 tevent_req_done(req);
776 NTSTATUS dcerpc_epm_Map_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
778 struct dcerpc_epm_Map_r_state *state =
780 struct dcerpc_epm_Map_r_state);
783 if (tevent_req_is_nterror(req, &status)) {
784 tevent_req_received(req);
788 talloc_steal(mem_ctx, state->out_mem_ctx);
790 tevent_req_received(req);
794 NTSTATUS dcerpc_epm_Map_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_Map *r)
798 status = dcerpc_binding_handle_call(h,
799 NULL, &ndr_table_epmapper,
800 NDR_EPM_MAP, mem_ctx, r);
805 NTSTATUS dcerpc_epm_Map_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_Map *r)
809 status = dcerpc_epm_Map_r(p->binding_handle, mem_ctx, r);
811 if (NT_STATUS_IS_RPC(status)) {
812 status = NT_STATUS_NET_WRITE_FAULT;
818 struct dcerpc_epm_Map_state {
821 TALLOC_CTX *out_mem_ctx;
824 static void dcerpc_epm_Map_done(struct tevent_req *subreq);
826 struct tevent_req *dcerpc_epm_Map_send(TALLOC_CTX *mem_ctx,
827 struct tevent_context *ev,
828 struct dcerpc_binding_handle *h,
829 struct GUID *_object /* [in] [ptr] */,
830 struct epm_twr_t *_map_tower /* [in] [ptr] */,
831 struct policy_handle *_entry_handle /* [in,out] [ref] */,
832 uint32_t _max_towers /* [in] */,
833 uint32_t *_num_towers /* [out] [ref] */,
834 struct epm_twr_p_t *_towers /* [out] [length_is(*num_towers),size_is(max_towers)] */)
836 struct tevent_req *req;
837 struct dcerpc_epm_Map_state *state;
838 struct tevent_req *subreq;
840 req = tevent_req_create(mem_ctx, &state,
841 struct dcerpc_epm_Map_state);
845 state->out_mem_ctx = NULL;
848 state->orig.in.object = _object;
849 state->orig.in.map_tower = _map_tower;
850 state->orig.in.entry_handle = _entry_handle;
851 state->orig.in.max_towers = _max_towers;
854 state->orig.out.entry_handle = _entry_handle;
855 state->orig.out.num_towers = _num_towers;
856 state->orig.out.towers = _towers;
859 ZERO_STRUCT(state->orig.out.result);
861 state->out_mem_ctx = talloc_named_const(state, 0,
862 "dcerpc_epm_Map_out_memory");
863 if (tevent_req_nomem(state->out_mem_ctx, req)) {
864 return tevent_req_post(req, ev);
867 /* make a temporary copy, that we pass to the dispatch function */
868 state->tmp = state->orig;
870 subreq = dcerpc_epm_Map_r_send(state, ev, h, &state->tmp);
871 if (tevent_req_nomem(subreq, req)) {
872 return tevent_req_post(req, ev);
874 tevent_req_set_callback(subreq, dcerpc_epm_Map_done, req);
878 static void dcerpc_epm_Map_done(struct tevent_req *subreq)
880 struct tevent_req *req = tevent_req_callback_data(
881 subreq, struct tevent_req);
882 struct dcerpc_epm_Map_state *state = tevent_req_data(
883 req, struct dcerpc_epm_Map_state);
887 if (state->out_mem_ctx) {
888 mem_ctx = state->out_mem_ctx;
893 status = dcerpc_epm_Map_r_recv(subreq, mem_ctx);
895 if (!NT_STATUS_IS_OK(status)) {
896 tevent_req_nterror(req, status);
900 /* Copy out parameters */
901 *state->orig.out.entry_handle = *state->tmp.out.entry_handle;
902 *state->orig.out.num_towers = *state->tmp.out.num_towers;
904 size_t _copy_len_towers;
905 if ((*state->tmp.out.num_towers) > (state->tmp.in.max_towers)) {
906 tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE);
909 _copy_len_towers = *state->tmp.out.num_towers;
910 memcpy(state->orig.out.towers, state->tmp.out.towers, _copy_len_towers * sizeof(*state->orig.out.towers));
914 state->orig.out.result = state->tmp.out.result;
916 /* Reset temporary structure */
917 ZERO_STRUCT(state->tmp);
919 tevent_req_done(req);
922 NTSTATUS dcerpc_epm_Map_recv(struct tevent_req *req,
926 struct dcerpc_epm_Map_state *state = tevent_req_data(
927 req, struct dcerpc_epm_Map_state);
930 if (tevent_req_is_nterror(req, &status)) {
931 tevent_req_received(req);
935 /* Steal possible out parameters to the callers context */
936 talloc_steal(mem_ctx, state->out_mem_ctx);
939 *result = state->orig.out.result;
941 tevent_req_received(req);
945 NTSTATUS dcerpc_epm_Map(struct dcerpc_binding_handle *h,
947 struct GUID *_object /* [in] [ptr] */,
948 struct epm_twr_t *_map_tower /* [in] [ptr] */,
949 struct policy_handle *_entry_handle /* [in,out] [ref] */,
950 uint32_t _max_towers /* [in] */,
951 uint32_t *_num_towers /* [out] [ref] */,
952 struct epm_twr_p_t *_towers /* [out] [length_is(*num_towers),size_is(max_towers)] */,
959 r.in.object = _object;
960 r.in.map_tower = _map_tower;
961 r.in.entry_handle = _entry_handle;
962 r.in.max_towers = _max_towers;
964 status = dcerpc_epm_Map_r(h, mem_ctx, &r);
965 if (!NT_STATUS_IS_OK(status)) {
969 /* Return variables */
970 *_entry_handle = *r.out.entry_handle;
971 *_num_towers = *r.out.num_towers;
973 size_t _copy_len_towers;
974 if ((*r.out.num_towers) > (r.in.max_towers)) {
975 return NT_STATUS_INVALID_NETWORK_RESPONSE;
977 _copy_len_towers = *r.out.num_towers;
978 memcpy(_towers, r.out.towers, _copy_len_towers * sizeof(*_towers));
982 *result = r.out.result;
987 struct dcerpc_epm_LookupHandleFree_r_state {
988 TALLOC_CTX *out_mem_ctx;
991 static void dcerpc_epm_LookupHandleFree_r_done(struct tevent_req *subreq);
993 struct tevent_req *dcerpc_epm_LookupHandleFree_r_send(TALLOC_CTX *mem_ctx,
994 struct tevent_context *ev,
995 struct dcerpc_binding_handle *h,
996 struct epm_LookupHandleFree *r)
998 struct tevent_req *req;
999 struct dcerpc_epm_LookupHandleFree_r_state *state;
1000 struct tevent_req *subreq;
1002 req = tevent_req_create(mem_ctx, &state,
1003 struct dcerpc_epm_LookupHandleFree_r_state);
1008 state->out_mem_ctx = talloc_new(state);
1009 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1010 return tevent_req_post(req, ev);
1013 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1014 NULL, &ndr_table_epmapper,
1015 NDR_EPM_LOOKUPHANDLEFREE, state->out_mem_ctx, r);
1016 if (tevent_req_nomem(subreq, req)) {
1017 return tevent_req_post(req, ev);
1019 tevent_req_set_callback(subreq, dcerpc_epm_LookupHandleFree_r_done, req);
1024 static void dcerpc_epm_LookupHandleFree_r_done(struct tevent_req *subreq)
1026 struct tevent_req *req =
1027 tevent_req_callback_data(subreq,
1031 status = dcerpc_binding_handle_call_recv(subreq);
1032 if (!NT_STATUS_IS_OK(status)) {
1033 tevent_req_nterror(req, status);
1037 tevent_req_done(req);
1040 NTSTATUS dcerpc_epm_LookupHandleFree_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1042 struct dcerpc_epm_LookupHandleFree_r_state *state =
1043 tevent_req_data(req,
1044 struct dcerpc_epm_LookupHandleFree_r_state);
1047 if (tevent_req_is_nterror(req, &status)) {
1048 tevent_req_received(req);
1052 talloc_steal(mem_ctx, state->out_mem_ctx);
1054 tevent_req_received(req);
1055 return NT_STATUS_OK;
1058 NTSTATUS dcerpc_epm_LookupHandleFree_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_LookupHandleFree *r)
1062 status = dcerpc_binding_handle_call(h,
1063 NULL, &ndr_table_epmapper,
1064 NDR_EPM_LOOKUPHANDLEFREE, mem_ctx, r);
1069 NTSTATUS dcerpc_epm_LookupHandleFree_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_LookupHandleFree *r)
1073 status = dcerpc_epm_LookupHandleFree_r(p->binding_handle, mem_ctx, r);
1075 if (NT_STATUS_IS_RPC(status)) {
1076 status = NT_STATUS_NET_WRITE_FAULT;
1082 struct dcerpc_epm_LookupHandleFree_state {
1083 struct epm_LookupHandleFree orig;
1084 struct epm_LookupHandleFree tmp;
1085 TALLOC_CTX *out_mem_ctx;
1088 static void dcerpc_epm_LookupHandleFree_done(struct tevent_req *subreq);
1090 struct tevent_req *dcerpc_epm_LookupHandleFree_send(TALLOC_CTX *mem_ctx,
1091 struct tevent_context *ev,
1092 struct dcerpc_binding_handle *h,
1093 struct policy_handle *_entry_handle /* [in,out] [ref] */)
1095 struct tevent_req *req;
1096 struct dcerpc_epm_LookupHandleFree_state *state;
1097 struct tevent_req *subreq;
1099 req = tevent_req_create(mem_ctx, &state,
1100 struct dcerpc_epm_LookupHandleFree_state);
1104 state->out_mem_ctx = NULL;
1107 state->orig.in.entry_handle = _entry_handle;
1109 /* Out parameters */
1110 state->orig.out.entry_handle = _entry_handle;
1113 ZERO_STRUCT(state->orig.out.result);
1115 state->out_mem_ctx = talloc_named_const(state, 0,
1116 "dcerpc_epm_LookupHandleFree_out_memory");
1117 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1118 return tevent_req_post(req, ev);
1121 /* make a temporary copy, that we pass to the dispatch function */
1122 state->tmp = state->orig;
1124 subreq = dcerpc_epm_LookupHandleFree_r_send(state, ev, h, &state->tmp);
1125 if (tevent_req_nomem(subreq, req)) {
1126 return tevent_req_post(req, ev);
1128 tevent_req_set_callback(subreq, dcerpc_epm_LookupHandleFree_done, req);
1132 static void dcerpc_epm_LookupHandleFree_done(struct tevent_req *subreq)
1134 struct tevent_req *req = tevent_req_callback_data(
1135 subreq, struct tevent_req);
1136 struct dcerpc_epm_LookupHandleFree_state *state = tevent_req_data(
1137 req, struct dcerpc_epm_LookupHandleFree_state);
1139 TALLOC_CTX *mem_ctx;
1141 if (state->out_mem_ctx) {
1142 mem_ctx = state->out_mem_ctx;
1147 status = dcerpc_epm_LookupHandleFree_r_recv(subreq, mem_ctx);
1148 TALLOC_FREE(subreq);
1149 if (!NT_STATUS_IS_OK(status)) {
1150 tevent_req_nterror(req, status);
1154 /* Copy out parameters */
1155 *state->orig.out.entry_handle = *state->tmp.out.entry_handle;
1158 state->orig.out.result = state->tmp.out.result;
1160 /* Reset temporary structure */
1161 ZERO_STRUCT(state->tmp);
1163 tevent_req_done(req);
1166 NTSTATUS dcerpc_epm_LookupHandleFree_recv(struct tevent_req *req,
1167 TALLOC_CTX *mem_ctx,
1170 struct dcerpc_epm_LookupHandleFree_state *state = tevent_req_data(
1171 req, struct dcerpc_epm_LookupHandleFree_state);
1174 if (tevent_req_is_nterror(req, &status)) {
1175 tevent_req_received(req);
1179 /* Steal possible out parameters to the callers context */
1180 talloc_steal(mem_ctx, state->out_mem_ctx);
1183 *result = state->orig.out.result;
1185 tevent_req_received(req);
1186 return NT_STATUS_OK;
1189 NTSTATUS dcerpc_epm_LookupHandleFree(struct dcerpc_binding_handle *h,
1190 TALLOC_CTX *mem_ctx,
1191 struct policy_handle *_entry_handle /* [in,out] [ref] */,
1194 struct epm_LookupHandleFree r;
1198 r.in.entry_handle = _entry_handle;
1200 status = dcerpc_epm_LookupHandleFree_r(h, mem_ctx, &r);
1201 if (!NT_STATUS_IS_OK(status)) {
1205 /* Return variables */
1206 *_entry_handle = *r.out.entry_handle;
1209 *result = r.out.result;
1211 return NT_STATUS_OK;
1214 struct dcerpc_epm_InqObject_r_state {
1215 TALLOC_CTX *out_mem_ctx;
1218 static void dcerpc_epm_InqObject_r_done(struct tevent_req *subreq);
1220 struct tevent_req *dcerpc_epm_InqObject_r_send(TALLOC_CTX *mem_ctx,
1221 struct tevent_context *ev,
1222 struct dcerpc_binding_handle *h,
1223 struct epm_InqObject *r)
1225 struct tevent_req *req;
1226 struct dcerpc_epm_InqObject_r_state *state;
1227 struct tevent_req *subreq;
1229 req = tevent_req_create(mem_ctx, &state,
1230 struct dcerpc_epm_InqObject_r_state);
1235 state->out_mem_ctx = NULL;
1236 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1237 NULL, &ndr_table_epmapper,
1238 NDR_EPM_INQOBJECT, state, r);
1239 if (tevent_req_nomem(subreq, req)) {
1240 return tevent_req_post(req, ev);
1242 tevent_req_set_callback(subreq, dcerpc_epm_InqObject_r_done, req);
1247 static void dcerpc_epm_InqObject_r_done(struct tevent_req *subreq)
1249 struct tevent_req *req =
1250 tevent_req_callback_data(subreq,
1254 status = dcerpc_binding_handle_call_recv(subreq);
1255 if (!NT_STATUS_IS_OK(status)) {
1256 tevent_req_nterror(req, status);
1260 tevent_req_done(req);
1263 NTSTATUS dcerpc_epm_InqObject_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1265 struct dcerpc_epm_InqObject_r_state *state =
1266 tevent_req_data(req,
1267 struct dcerpc_epm_InqObject_r_state);
1270 if (tevent_req_is_nterror(req, &status)) {
1271 tevent_req_received(req);
1275 talloc_steal(mem_ctx, state->out_mem_ctx);
1277 tevent_req_received(req);
1278 return NT_STATUS_OK;
1281 NTSTATUS dcerpc_epm_InqObject_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_InqObject *r)
1285 status = dcerpc_binding_handle_call(h,
1286 NULL, &ndr_table_epmapper,
1287 NDR_EPM_INQOBJECT, mem_ctx, r);
1292 NTSTATUS dcerpc_epm_InqObject_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_InqObject *r)
1296 status = dcerpc_epm_InqObject_r(p->binding_handle, mem_ctx, r);
1298 if (NT_STATUS_IS_RPC(status)) {
1299 status = NT_STATUS_NET_WRITE_FAULT;
1305 struct dcerpc_epm_InqObject_state {
1306 struct epm_InqObject orig;
1307 struct epm_InqObject tmp;
1308 TALLOC_CTX *out_mem_ctx;
1311 static void dcerpc_epm_InqObject_done(struct tevent_req *subreq);
1313 struct tevent_req *dcerpc_epm_InqObject_send(TALLOC_CTX *mem_ctx,
1314 struct tevent_context *ev,
1315 struct dcerpc_binding_handle *h,
1316 struct GUID *_epm_object /* [in] [ref] */)
1318 struct tevent_req *req;
1319 struct dcerpc_epm_InqObject_state *state;
1320 struct tevent_req *subreq;
1322 req = tevent_req_create(mem_ctx, &state,
1323 struct dcerpc_epm_InqObject_state);
1327 state->out_mem_ctx = NULL;
1330 state->orig.in.epm_object = _epm_object;
1332 /* Out parameters */
1335 ZERO_STRUCT(state->orig.out.result);
1337 /* make a temporary copy, that we pass to the dispatch function */
1338 state->tmp = state->orig;
1340 subreq = dcerpc_epm_InqObject_r_send(state, ev, h, &state->tmp);
1341 if (tevent_req_nomem(subreq, req)) {
1342 return tevent_req_post(req, ev);
1344 tevent_req_set_callback(subreq, dcerpc_epm_InqObject_done, req);
1348 static void dcerpc_epm_InqObject_done(struct tevent_req *subreq)
1350 struct tevent_req *req = tevent_req_callback_data(
1351 subreq, struct tevent_req);
1352 struct dcerpc_epm_InqObject_state *state = tevent_req_data(
1353 req, struct dcerpc_epm_InqObject_state);
1355 TALLOC_CTX *mem_ctx;
1357 if (state->out_mem_ctx) {
1358 mem_ctx = state->out_mem_ctx;
1363 status = dcerpc_epm_InqObject_r_recv(subreq, mem_ctx);
1364 TALLOC_FREE(subreq);
1365 if (!NT_STATUS_IS_OK(status)) {
1366 tevent_req_nterror(req, status);
1370 /* Copy out parameters */
1373 state->orig.out.result = state->tmp.out.result;
1375 /* Reset temporary structure */
1376 ZERO_STRUCT(state->tmp);
1378 tevent_req_done(req);
1381 NTSTATUS dcerpc_epm_InqObject_recv(struct tevent_req *req,
1382 TALLOC_CTX *mem_ctx,
1385 struct dcerpc_epm_InqObject_state *state = tevent_req_data(
1386 req, struct dcerpc_epm_InqObject_state);
1389 if (tevent_req_is_nterror(req, &status)) {
1390 tevent_req_received(req);
1394 /* Steal possible out parameters to the callers context */
1395 talloc_steal(mem_ctx, state->out_mem_ctx);
1398 *result = state->orig.out.result;
1400 tevent_req_received(req);
1401 return NT_STATUS_OK;
1404 NTSTATUS dcerpc_epm_InqObject(struct dcerpc_binding_handle *h,
1405 TALLOC_CTX *mem_ctx,
1406 struct GUID *_epm_object /* [in] [ref] */,
1409 struct epm_InqObject r;
1413 r.in.epm_object = _epm_object;
1415 status = dcerpc_epm_InqObject_r(h, mem_ctx, &r);
1416 if (!NT_STATUS_IS_OK(status)) {
1420 /* Return variables */
1423 *result = r.out.result;
1425 return NT_STATUS_OK;
1428 struct dcerpc_epm_MgmtDelete_r_state {
1429 TALLOC_CTX *out_mem_ctx;
1432 static void dcerpc_epm_MgmtDelete_r_done(struct tevent_req *subreq);
1434 struct tevent_req *dcerpc_epm_MgmtDelete_r_send(TALLOC_CTX *mem_ctx,
1435 struct tevent_context *ev,
1436 struct dcerpc_binding_handle *h,
1437 struct epm_MgmtDelete *r)
1439 struct tevent_req *req;
1440 struct dcerpc_epm_MgmtDelete_r_state *state;
1441 struct tevent_req *subreq;
1443 req = tevent_req_create(mem_ctx, &state,
1444 struct dcerpc_epm_MgmtDelete_r_state);
1449 state->out_mem_ctx = NULL;
1450 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1451 NULL, &ndr_table_epmapper,
1452 NDR_EPM_MGMTDELETE, state, r);
1453 if (tevent_req_nomem(subreq, req)) {
1454 return tevent_req_post(req, ev);
1456 tevent_req_set_callback(subreq, dcerpc_epm_MgmtDelete_r_done, req);
1461 static void dcerpc_epm_MgmtDelete_r_done(struct tevent_req *subreq)
1463 struct tevent_req *req =
1464 tevent_req_callback_data(subreq,
1468 status = dcerpc_binding_handle_call_recv(subreq);
1469 if (!NT_STATUS_IS_OK(status)) {
1470 tevent_req_nterror(req, status);
1474 tevent_req_done(req);
1477 NTSTATUS dcerpc_epm_MgmtDelete_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1479 struct dcerpc_epm_MgmtDelete_r_state *state =
1480 tevent_req_data(req,
1481 struct dcerpc_epm_MgmtDelete_r_state);
1484 if (tevent_req_is_nterror(req, &status)) {
1485 tevent_req_received(req);
1489 talloc_steal(mem_ctx, state->out_mem_ctx);
1491 tevent_req_received(req);
1492 return NT_STATUS_OK;
1495 NTSTATUS dcerpc_epm_MgmtDelete_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct epm_MgmtDelete *r)
1499 status = dcerpc_binding_handle_call(h,
1500 NULL, &ndr_table_epmapper,
1501 NDR_EPM_MGMTDELETE, mem_ctx, r);
1506 NTSTATUS dcerpc_epm_MgmtDelete_compat(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct epm_MgmtDelete *r)
1510 status = dcerpc_epm_MgmtDelete_r(p->binding_handle, mem_ctx, r);
1512 if (NT_STATUS_IS_RPC(status)) {
1513 status = NT_STATUS_NET_WRITE_FAULT;
1519 struct dcerpc_epm_MgmtDelete_state {
1520 struct epm_MgmtDelete orig;
1521 struct epm_MgmtDelete tmp;
1522 TALLOC_CTX *out_mem_ctx;
1525 static void dcerpc_epm_MgmtDelete_done(struct tevent_req *subreq);
1527 struct tevent_req *dcerpc_epm_MgmtDelete_send(TALLOC_CTX *mem_ctx,
1528 struct tevent_context *ev,
1529 struct dcerpc_binding_handle *h,
1530 uint32_t _object_speced /* [in] */,
1531 struct GUID *_object /* [in] [ptr] */,
1532 struct epm_twr_t *_tower /* [in] [ptr] */)
1534 struct tevent_req *req;
1535 struct dcerpc_epm_MgmtDelete_state *state;
1536 struct tevent_req *subreq;
1538 req = tevent_req_create(mem_ctx, &state,
1539 struct dcerpc_epm_MgmtDelete_state);
1543 state->out_mem_ctx = NULL;
1546 state->orig.in.object_speced = _object_speced;
1547 state->orig.in.object = _object;
1548 state->orig.in.tower = _tower;
1550 /* Out parameters */
1553 ZERO_STRUCT(state->orig.out.result);
1555 /* make a temporary copy, that we pass to the dispatch function */
1556 state->tmp = state->orig;
1558 subreq = dcerpc_epm_MgmtDelete_r_send(state, ev, h, &state->tmp);
1559 if (tevent_req_nomem(subreq, req)) {
1560 return tevent_req_post(req, ev);
1562 tevent_req_set_callback(subreq, dcerpc_epm_MgmtDelete_done, req);
1566 static void dcerpc_epm_MgmtDelete_done(struct tevent_req *subreq)
1568 struct tevent_req *req = tevent_req_callback_data(
1569 subreq, struct tevent_req);
1570 struct dcerpc_epm_MgmtDelete_state *state = tevent_req_data(
1571 req, struct dcerpc_epm_MgmtDelete_state);
1573 TALLOC_CTX *mem_ctx;
1575 if (state->out_mem_ctx) {
1576 mem_ctx = state->out_mem_ctx;
1581 status = dcerpc_epm_MgmtDelete_r_recv(subreq, mem_ctx);
1582 TALLOC_FREE(subreq);
1583 if (!NT_STATUS_IS_OK(status)) {
1584 tevent_req_nterror(req, status);
1588 /* Copy out parameters */
1591 state->orig.out.result = state->tmp.out.result;
1593 /* Reset temporary structure */
1594 ZERO_STRUCT(state->tmp);
1596 tevent_req_done(req);
1599 NTSTATUS dcerpc_epm_MgmtDelete_recv(struct tevent_req *req,
1600 TALLOC_CTX *mem_ctx,
1603 struct dcerpc_epm_MgmtDelete_state *state = tevent_req_data(
1604 req, struct dcerpc_epm_MgmtDelete_state);
1607 if (tevent_req_is_nterror(req, &status)) {
1608 tevent_req_received(req);
1612 /* Steal possible out parameters to the callers context */
1613 talloc_steal(mem_ctx, state->out_mem_ctx);
1616 *result = state->orig.out.result;
1618 tevent_req_received(req);
1619 return NT_STATUS_OK;
1622 NTSTATUS dcerpc_epm_MgmtDelete(struct dcerpc_binding_handle *h,
1623 TALLOC_CTX *mem_ctx,
1624 uint32_t _object_speced /* [in] */,
1625 struct GUID *_object /* [in] [ptr] */,
1626 struct epm_twr_t *_tower /* [in] [ptr] */,
1629 struct epm_MgmtDelete r;
1633 r.in.object_speced = _object_speced;
1634 r.in.object = _object;
1635 r.in.tower = _tower;
1637 status = dcerpc_epm_MgmtDelete_r(h, mem_ctx, &r);
1638 if (!NT_STATUS_IS_OK(status)) {
1642 /* Return variables */
1645 *result = r.out.result;
1647 return NT_STATUS_OK;