1 /* client functions auto-generated by pidl */
5 #include "lib/util/tevent_ntstatus.h"
6 #include "bin/default/librpc/gen_ndr/ndr_dnsserver.h"
7 #include "bin/default/librpc/gen_ndr/ndr_dnsserver_c.h"
9 /* dnsserver - client functions generated by pidl */
11 struct dcerpc_DnssrvOperation_r_state {
12 TALLOC_CTX *out_mem_ctx;
15 static void dcerpc_DnssrvOperation_r_done(struct tevent_req *subreq);
17 struct tevent_req *dcerpc_DnssrvOperation_r_send(TALLOC_CTX *mem_ctx,
18 struct tevent_context *ev,
19 struct dcerpc_binding_handle *h,
20 struct DnssrvOperation *r)
22 struct tevent_req *req;
23 struct dcerpc_DnssrvOperation_r_state *state;
24 struct tevent_req *subreq;
26 req = tevent_req_create(mem_ctx, &state,
27 struct dcerpc_DnssrvOperation_r_state);
32 state->out_mem_ctx = NULL;
34 subreq = dcerpc_binding_handle_call_send(state, ev, h,
35 NULL, &ndr_table_dnsserver,
36 NDR_DNSSRVOPERATION, state, r);
37 if (tevent_req_nomem(subreq, req)) {
38 return tevent_req_post(req, ev);
40 tevent_req_set_callback(subreq, dcerpc_DnssrvOperation_r_done, req);
45 static void dcerpc_DnssrvOperation_r_done(struct tevent_req *subreq)
47 struct tevent_req *req =
48 tevent_req_callback_data(subreq,
52 status = dcerpc_binding_handle_call_recv(subreq);
54 if (tevent_req_nterror(req, status)) {
61 NTSTATUS dcerpc_DnssrvOperation_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
63 struct dcerpc_DnssrvOperation_r_state *state =
65 struct dcerpc_DnssrvOperation_r_state);
68 if (tevent_req_is_nterror(req, &status)) {
69 tevent_req_received(req);
73 talloc_steal(mem_ctx, state->out_mem_ctx);
75 tevent_req_received(req);
79 NTSTATUS dcerpc_DnssrvOperation_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvOperation *r)
83 status = dcerpc_binding_handle_call(h,
84 NULL, &ndr_table_dnsserver,
85 NDR_DNSSRVOPERATION, mem_ctx, r);
90 struct dcerpc_DnssrvOperation_state {
91 struct DnssrvOperation orig;
92 struct DnssrvOperation tmp;
93 TALLOC_CTX *out_mem_ctx;
96 static void dcerpc_DnssrvOperation_done(struct tevent_req *subreq);
98 struct tevent_req *dcerpc_DnssrvOperation_send(TALLOC_CTX *mem_ctx,
99 struct tevent_context *ev,
100 struct dcerpc_binding_handle *h,
101 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
102 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
103 uint32_t _dwContext /* [in] */,
104 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
105 enum DNS_RPC_TYPEID _dwTypeId /* [in] */,
106 union DNSSRV_RPC_UNION _pData /* [in] [switch_is(dwTypeId)] */)
108 struct tevent_req *req;
109 struct dcerpc_DnssrvOperation_state *state;
110 struct tevent_req *subreq;
112 req = tevent_req_create(mem_ctx, &state,
113 struct dcerpc_DnssrvOperation_state);
117 state->out_mem_ctx = NULL;
120 state->orig.in.pwszServerName = _pwszServerName;
121 state->orig.in.pszZone = _pszZone;
122 state->orig.in.dwContext = _dwContext;
123 state->orig.in.pszOperation = _pszOperation;
124 state->orig.in.dwTypeId = _dwTypeId;
125 state->orig.in.pData = _pData;
130 ZERO_STRUCT(state->orig.out.result);
132 /* make a temporary copy, that we pass to the dispatch function */
133 state->tmp = state->orig;
135 subreq = dcerpc_DnssrvOperation_r_send(state, ev, h, &state->tmp);
136 if (tevent_req_nomem(subreq, req)) {
137 return tevent_req_post(req, ev);
139 tevent_req_set_callback(subreq, dcerpc_DnssrvOperation_done, req);
143 static void dcerpc_DnssrvOperation_done(struct tevent_req *subreq)
145 struct tevent_req *req = tevent_req_callback_data(
146 subreq, struct tevent_req);
147 struct dcerpc_DnssrvOperation_state *state = tevent_req_data(
148 req, struct dcerpc_DnssrvOperation_state);
152 if (state->out_mem_ctx) {
153 mem_ctx = state->out_mem_ctx;
158 status = dcerpc_DnssrvOperation_r_recv(subreq, mem_ctx);
160 if (tevent_req_nterror(req, status)) {
164 /* Copy out parameters */
167 state->orig.out.result = state->tmp.out.result;
169 /* Reset temporary structure */
170 ZERO_STRUCT(state->tmp);
172 tevent_req_done(req);
175 NTSTATUS dcerpc_DnssrvOperation_recv(struct tevent_req *req,
179 struct dcerpc_DnssrvOperation_state *state = tevent_req_data(
180 req, struct dcerpc_DnssrvOperation_state);
183 if (tevent_req_is_nterror(req, &status)) {
184 tevent_req_received(req);
188 /* Steal possible out parameters to the callers context */
189 talloc_steal(mem_ctx, state->out_mem_ctx);
192 *result = state->orig.out.result;
194 tevent_req_received(req);
198 NTSTATUS dcerpc_DnssrvOperation(struct dcerpc_binding_handle *h,
200 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
201 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
202 uint32_t _dwContext /* [in] */,
203 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
204 enum DNS_RPC_TYPEID _dwTypeId /* [in] */,
205 union DNSSRV_RPC_UNION _pData /* [in] [switch_is(dwTypeId)] */,
208 struct DnssrvOperation r;
212 r.in.pwszServerName = _pwszServerName;
213 r.in.pszZone = _pszZone;
214 r.in.dwContext = _dwContext;
215 r.in.pszOperation = _pszOperation;
216 r.in.dwTypeId = _dwTypeId;
219 status = dcerpc_DnssrvOperation_r(h, mem_ctx, &r);
220 if (!NT_STATUS_IS_OK(status)) {
224 /* Return variables */
227 *result = r.out.result;
232 struct dcerpc_DnssrvQuery_r_state {
233 TALLOC_CTX *out_mem_ctx;
236 static void dcerpc_DnssrvQuery_r_done(struct tevent_req *subreq);
238 struct tevent_req *dcerpc_DnssrvQuery_r_send(TALLOC_CTX *mem_ctx,
239 struct tevent_context *ev,
240 struct dcerpc_binding_handle *h,
241 struct DnssrvQuery *r)
243 struct tevent_req *req;
244 struct dcerpc_DnssrvQuery_r_state *state;
245 struct tevent_req *subreq;
247 req = tevent_req_create(mem_ctx, &state,
248 struct dcerpc_DnssrvQuery_r_state);
253 state->out_mem_ctx = talloc_new(state);
254 if (tevent_req_nomem(state->out_mem_ctx, req)) {
255 return tevent_req_post(req, ev);
258 subreq = dcerpc_binding_handle_call_send(state, ev, h,
259 NULL, &ndr_table_dnsserver,
260 NDR_DNSSRVQUERY, state->out_mem_ctx, r);
261 if (tevent_req_nomem(subreq, req)) {
262 return tevent_req_post(req, ev);
264 tevent_req_set_callback(subreq, dcerpc_DnssrvQuery_r_done, req);
269 static void dcerpc_DnssrvQuery_r_done(struct tevent_req *subreq)
271 struct tevent_req *req =
272 tevent_req_callback_data(subreq,
276 status = dcerpc_binding_handle_call_recv(subreq);
278 if (tevent_req_nterror(req, status)) {
282 tevent_req_done(req);
285 NTSTATUS dcerpc_DnssrvQuery_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
287 struct dcerpc_DnssrvQuery_r_state *state =
289 struct dcerpc_DnssrvQuery_r_state);
292 if (tevent_req_is_nterror(req, &status)) {
293 tevent_req_received(req);
297 talloc_steal(mem_ctx, state->out_mem_ctx);
299 tevent_req_received(req);
303 NTSTATUS dcerpc_DnssrvQuery_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvQuery *r)
307 status = dcerpc_binding_handle_call(h,
308 NULL, &ndr_table_dnsserver,
309 NDR_DNSSRVQUERY, mem_ctx, r);
314 struct dcerpc_DnssrvQuery_state {
315 struct DnssrvQuery orig;
316 struct DnssrvQuery tmp;
317 TALLOC_CTX *out_mem_ctx;
320 static void dcerpc_DnssrvQuery_done(struct tevent_req *subreq);
322 struct tevent_req *dcerpc_DnssrvQuery_send(TALLOC_CTX *mem_ctx,
323 struct tevent_context *ev,
324 struct dcerpc_binding_handle *h,
325 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
326 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
327 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
328 enum DNS_RPC_TYPEID *_pdwTypeId /* [out] [ref] */,
329 union DNSSRV_RPC_UNION *_ppData /* [out] [ref,switch_is(*pdwTypeId)] */)
331 struct tevent_req *req;
332 struct dcerpc_DnssrvQuery_state *state;
333 struct tevent_req *subreq;
335 req = tevent_req_create(mem_ctx, &state,
336 struct dcerpc_DnssrvQuery_state);
340 state->out_mem_ctx = NULL;
343 state->orig.in.pwszServerName = _pwszServerName;
344 state->orig.in.pszZone = _pszZone;
345 state->orig.in.pszOperation = _pszOperation;
348 state->orig.out.pdwTypeId = _pdwTypeId;
349 state->orig.out.ppData = _ppData;
352 ZERO_STRUCT(state->orig.out.result);
354 state->out_mem_ctx = talloc_named_const(state, 0,
355 "dcerpc_DnssrvQuery_out_memory");
356 if (tevent_req_nomem(state->out_mem_ctx, req)) {
357 return tevent_req_post(req, ev);
360 /* make a temporary copy, that we pass to the dispatch function */
361 state->tmp = state->orig;
363 subreq = dcerpc_DnssrvQuery_r_send(state, ev, h, &state->tmp);
364 if (tevent_req_nomem(subreq, req)) {
365 return tevent_req_post(req, ev);
367 tevent_req_set_callback(subreq, dcerpc_DnssrvQuery_done, req);
371 static void dcerpc_DnssrvQuery_done(struct tevent_req *subreq)
373 struct tevent_req *req = tevent_req_callback_data(
374 subreq, struct tevent_req);
375 struct dcerpc_DnssrvQuery_state *state = tevent_req_data(
376 req, struct dcerpc_DnssrvQuery_state);
380 if (state->out_mem_ctx) {
381 mem_ctx = state->out_mem_ctx;
386 status = dcerpc_DnssrvQuery_r_recv(subreq, mem_ctx);
388 if (tevent_req_nterror(req, status)) {
392 /* Copy out parameters */
393 *state->orig.out.pdwTypeId = *state->tmp.out.pdwTypeId;
394 *state->orig.out.ppData = *state->tmp.out.ppData;
397 state->orig.out.result = state->tmp.out.result;
399 /* Reset temporary structure */
400 ZERO_STRUCT(state->tmp);
402 tevent_req_done(req);
405 NTSTATUS dcerpc_DnssrvQuery_recv(struct tevent_req *req,
409 struct dcerpc_DnssrvQuery_state *state = tevent_req_data(
410 req, struct dcerpc_DnssrvQuery_state);
413 if (tevent_req_is_nterror(req, &status)) {
414 tevent_req_received(req);
418 /* Steal possible out parameters to the callers context */
419 talloc_steal(mem_ctx, state->out_mem_ctx);
422 *result = state->orig.out.result;
424 tevent_req_received(req);
428 NTSTATUS dcerpc_DnssrvQuery(struct dcerpc_binding_handle *h,
430 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
431 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
432 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
433 enum DNS_RPC_TYPEID *_pdwTypeId /* [out] [ref] */,
434 union DNSSRV_RPC_UNION *_ppData /* [out] [ref,switch_is(*pdwTypeId)] */,
437 struct DnssrvQuery r;
441 r.in.pwszServerName = _pwszServerName;
442 r.in.pszZone = _pszZone;
443 r.in.pszOperation = _pszOperation;
445 status = dcerpc_DnssrvQuery_r(h, mem_ctx, &r);
446 if (!NT_STATUS_IS_OK(status)) {
450 /* Return variables */
451 *_pdwTypeId = *r.out.pdwTypeId;
452 *_ppData = *r.out.ppData;
455 *result = r.out.result;
460 struct dcerpc_DnssrvComplexOperation_r_state {
461 TALLOC_CTX *out_mem_ctx;
464 static void dcerpc_DnssrvComplexOperation_r_done(struct tevent_req *subreq);
466 struct tevent_req *dcerpc_DnssrvComplexOperation_r_send(TALLOC_CTX *mem_ctx,
467 struct tevent_context *ev,
468 struct dcerpc_binding_handle *h,
469 struct DnssrvComplexOperation *r)
471 struct tevent_req *req;
472 struct dcerpc_DnssrvComplexOperation_r_state *state;
473 struct tevent_req *subreq;
475 req = tevent_req_create(mem_ctx, &state,
476 struct dcerpc_DnssrvComplexOperation_r_state);
481 state->out_mem_ctx = talloc_new(state);
482 if (tevent_req_nomem(state->out_mem_ctx, req)) {
483 return tevent_req_post(req, ev);
486 subreq = dcerpc_binding_handle_call_send(state, ev, h,
487 NULL, &ndr_table_dnsserver,
488 NDR_DNSSRVCOMPLEXOPERATION, state->out_mem_ctx, r);
489 if (tevent_req_nomem(subreq, req)) {
490 return tevent_req_post(req, ev);
492 tevent_req_set_callback(subreq, dcerpc_DnssrvComplexOperation_r_done, req);
497 static void dcerpc_DnssrvComplexOperation_r_done(struct tevent_req *subreq)
499 struct tevent_req *req =
500 tevent_req_callback_data(subreq,
504 status = dcerpc_binding_handle_call_recv(subreq);
506 if (tevent_req_nterror(req, status)) {
510 tevent_req_done(req);
513 NTSTATUS dcerpc_DnssrvComplexOperation_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
515 struct dcerpc_DnssrvComplexOperation_r_state *state =
517 struct dcerpc_DnssrvComplexOperation_r_state);
520 if (tevent_req_is_nterror(req, &status)) {
521 tevent_req_received(req);
525 talloc_steal(mem_ctx, state->out_mem_ctx);
527 tevent_req_received(req);
531 NTSTATUS dcerpc_DnssrvComplexOperation_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvComplexOperation *r)
535 status = dcerpc_binding_handle_call(h,
536 NULL, &ndr_table_dnsserver,
537 NDR_DNSSRVCOMPLEXOPERATION, mem_ctx, r);
542 struct dcerpc_DnssrvComplexOperation_state {
543 struct DnssrvComplexOperation orig;
544 struct DnssrvComplexOperation tmp;
545 TALLOC_CTX *out_mem_ctx;
548 static void dcerpc_DnssrvComplexOperation_done(struct tevent_req *subreq);
550 struct tevent_req *dcerpc_DnssrvComplexOperation_send(TALLOC_CTX *mem_ctx,
551 struct tevent_context *ev,
552 struct dcerpc_binding_handle *h,
553 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
554 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
555 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
556 enum DNS_RPC_TYPEID _dwTypeIn /* [in] */,
557 union DNSSRV_RPC_UNION _pDataIn /* [in] [switch_is(dwTypeIn)] */,
558 enum DNS_RPC_TYPEID *_pdwTypeOut /* [out] [ref] */,
559 union DNSSRV_RPC_UNION *_ppDataOut /* [out] [ref,switch_is(*pdwTypeOut)] */)
561 struct tevent_req *req;
562 struct dcerpc_DnssrvComplexOperation_state *state;
563 struct tevent_req *subreq;
565 req = tevent_req_create(mem_ctx, &state,
566 struct dcerpc_DnssrvComplexOperation_state);
570 state->out_mem_ctx = NULL;
573 state->orig.in.pwszServerName = _pwszServerName;
574 state->orig.in.pszZone = _pszZone;
575 state->orig.in.pszOperation = _pszOperation;
576 state->orig.in.dwTypeIn = _dwTypeIn;
577 state->orig.in.pDataIn = _pDataIn;
580 state->orig.out.pdwTypeOut = _pdwTypeOut;
581 state->orig.out.ppDataOut = _ppDataOut;
584 ZERO_STRUCT(state->orig.out.result);
586 state->out_mem_ctx = talloc_named_const(state, 0,
587 "dcerpc_DnssrvComplexOperation_out_memory");
588 if (tevent_req_nomem(state->out_mem_ctx, req)) {
589 return tevent_req_post(req, ev);
592 /* make a temporary copy, that we pass to the dispatch function */
593 state->tmp = state->orig;
595 subreq = dcerpc_DnssrvComplexOperation_r_send(state, ev, h, &state->tmp);
596 if (tevent_req_nomem(subreq, req)) {
597 return tevent_req_post(req, ev);
599 tevent_req_set_callback(subreq, dcerpc_DnssrvComplexOperation_done, req);
603 static void dcerpc_DnssrvComplexOperation_done(struct tevent_req *subreq)
605 struct tevent_req *req = tevent_req_callback_data(
606 subreq, struct tevent_req);
607 struct dcerpc_DnssrvComplexOperation_state *state = tevent_req_data(
608 req, struct dcerpc_DnssrvComplexOperation_state);
612 if (state->out_mem_ctx) {
613 mem_ctx = state->out_mem_ctx;
618 status = dcerpc_DnssrvComplexOperation_r_recv(subreq, mem_ctx);
620 if (tevent_req_nterror(req, status)) {
624 /* Copy out parameters */
625 *state->orig.out.pdwTypeOut = *state->tmp.out.pdwTypeOut;
626 *state->orig.out.ppDataOut = *state->tmp.out.ppDataOut;
629 state->orig.out.result = state->tmp.out.result;
631 /* Reset temporary structure */
632 ZERO_STRUCT(state->tmp);
634 tevent_req_done(req);
637 NTSTATUS dcerpc_DnssrvComplexOperation_recv(struct tevent_req *req,
641 struct dcerpc_DnssrvComplexOperation_state *state = tevent_req_data(
642 req, struct dcerpc_DnssrvComplexOperation_state);
645 if (tevent_req_is_nterror(req, &status)) {
646 tevent_req_received(req);
650 /* Steal possible out parameters to the callers context */
651 talloc_steal(mem_ctx, state->out_mem_ctx);
654 *result = state->orig.out.result;
656 tevent_req_received(req);
660 NTSTATUS dcerpc_DnssrvComplexOperation(struct dcerpc_binding_handle *h,
662 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
663 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
664 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
665 enum DNS_RPC_TYPEID _dwTypeIn /* [in] */,
666 union DNSSRV_RPC_UNION _pDataIn /* [in] [switch_is(dwTypeIn)] */,
667 enum DNS_RPC_TYPEID *_pdwTypeOut /* [out] [ref] */,
668 union DNSSRV_RPC_UNION *_ppDataOut /* [out] [ref,switch_is(*pdwTypeOut)] */,
671 struct DnssrvComplexOperation r;
675 r.in.pwszServerName = _pwszServerName;
676 r.in.pszZone = _pszZone;
677 r.in.pszOperation = _pszOperation;
678 r.in.dwTypeIn = _dwTypeIn;
679 r.in.pDataIn = _pDataIn;
681 status = dcerpc_DnssrvComplexOperation_r(h, mem_ctx, &r);
682 if (!NT_STATUS_IS_OK(status)) {
686 /* Return variables */
687 *_pdwTypeOut = *r.out.pdwTypeOut;
688 *_ppDataOut = *r.out.ppDataOut;
691 *result = r.out.result;
696 struct dcerpc_DnssrvEnumRecords_r_state {
697 TALLOC_CTX *out_mem_ctx;
700 static void dcerpc_DnssrvEnumRecords_r_done(struct tevent_req *subreq);
702 struct tevent_req *dcerpc_DnssrvEnumRecords_r_send(TALLOC_CTX *mem_ctx,
703 struct tevent_context *ev,
704 struct dcerpc_binding_handle *h,
705 struct DnssrvEnumRecords *r)
707 struct tevent_req *req;
708 struct dcerpc_DnssrvEnumRecords_r_state *state;
709 struct tevent_req *subreq;
711 req = tevent_req_create(mem_ctx, &state,
712 struct dcerpc_DnssrvEnumRecords_r_state);
717 state->out_mem_ctx = talloc_new(state);
718 if (tevent_req_nomem(state->out_mem_ctx, req)) {
719 return tevent_req_post(req, ev);
722 subreq = dcerpc_binding_handle_call_send(state, ev, h,
723 NULL, &ndr_table_dnsserver,
724 NDR_DNSSRVENUMRECORDS, state->out_mem_ctx, r);
725 if (tevent_req_nomem(subreq, req)) {
726 return tevent_req_post(req, ev);
728 tevent_req_set_callback(subreq, dcerpc_DnssrvEnumRecords_r_done, req);
733 static void dcerpc_DnssrvEnumRecords_r_done(struct tevent_req *subreq)
735 struct tevent_req *req =
736 tevent_req_callback_data(subreq,
740 status = dcerpc_binding_handle_call_recv(subreq);
742 if (tevent_req_nterror(req, status)) {
746 tevent_req_done(req);
749 NTSTATUS dcerpc_DnssrvEnumRecords_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
751 struct dcerpc_DnssrvEnumRecords_r_state *state =
753 struct dcerpc_DnssrvEnumRecords_r_state);
756 if (tevent_req_is_nterror(req, &status)) {
757 tevent_req_received(req);
761 talloc_steal(mem_ctx, state->out_mem_ctx);
763 tevent_req_received(req);
767 NTSTATUS dcerpc_DnssrvEnumRecords_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvEnumRecords *r)
771 status = dcerpc_binding_handle_call(h,
772 NULL, &ndr_table_dnsserver,
773 NDR_DNSSRVENUMRECORDS, mem_ctx, r);
778 struct dcerpc_DnssrvEnumRecords_state {
779 struct DnssrvEnumRecords orig;
780 struct DnssrvEnumRecords tmp;
781 TALLOC_CTX *out_mem_ctx;
784 static void dcerpc_DnssrvEnumRecords_done(struct tevent_req *subreq);
786 struct tevent_req *dcerpc_DnssrvEnumRecords_send(TALLOC_CTX *mem_ctx,
787 struct tevent_context *ev,
788 struct dcerpc_binding_handle *h,
789 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
790 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
791 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
792 const char *_pszStartChild /* [in] [unique,charset(UTF8)] */,
793 enum dns_record_type _wRecordType /* [in] */,
794 uint32_t _fSelectFlag /* [in] */,
795 const char *_pszFilterStart /* [in] [unique,charset(UTF8)] */,
796 const char *_pszFilterStop /* [in] [unique,charset(UTF8)] */,
797 uint32_t *_pdwBufferLength /* [out] [ref] */,
798 struct DNS_RPC_RECORDS_ARRAY **_pBuffer /* [out] [subcontext_size(*pdwBufferLength),subcontext(4),ref] */)
800 struct tevent_req *req;
801 struct dcerpc_DnssrvEnumRecords_state *state;
802 struct tevent_req *subreq;
804 req = tevent_req_create(mem_ctx, &state,
805 struct dcerpc_DnssrvEnumRecords_state);
809 state->out_mem_ctx = NULL;
812 state->orig.in.pwszServerName = _pwszServerName;
813 state->orig.in.pszZone = _pszZone;
814 state->orig.in.pszNodeName = _pszNodeName;
815 state->orig.in.pszStartChild = _pszStartChild;
816 state->orig.in.wRecordType = _wRecordType;
817 state->orig.in.fSelectFlag = _fSelectFlag;
818 state->orig.in.pszFilterStart = _pszFilterStart;
819 state->orig.in.pszFilterStop = _pszFilterStop;
822 state->orig.out.pdwBufferLength = _pdwBufferLength;
823 state->orig.out.pBuffer = _pBuffer;
826 ZERO_STRUCT(state->orig.out.result);
828 state->out_mem_ctx = talloc_named_const(state, 0,
829 "dcerpc_DnssrvEnumRecords_out_memory");
830 if (tevent_req_nomem(state->out_mem_ctx, req)) {
831 return tevent_req_post(req, ev);
834 /* make a temporary copy, that we pass to the dispatch function */
835 state->tmp = state->orig;
837 subreq = dcerpc_DnssrvEnumRecords_r_send(state, ev, h, &state->tmp);
838 if (tevent_req_nomem(subreq, req)) {
839 return tevent_req_post(req, ev);
841 tevent_req_set_callback(subreq, dcerpc_DnssrvEnumRecords_done, req);
845 static void dcerpc_DnssrvEnumRecords_done(struct tevent_req *subreq)
847 struct tevent_req *req = tevent_req_callback_data(
848 subreq, struct tevent_req);
849 struct dcerpc_DnssrvEnumRecords_state *state = tevent_req_data(
850 req, struct dcerpc_DnssrvEnumRecords_state);
854 if (state->out_mem_ctx) {
855 mem_ctx = state->out_mem_ctx;
860 status = dcerpc_DnssrvEnumRecords_r_recv(subreq, mem_ctx);
862 if (tevent_req_nterror(req, status)) {
866 /* Copy out parameters */
867 *state->orig.out.pdwBufferLength = *state->tmp.out.pdwBufferLength;
868 *state->orig.out.pBuffer = *state->tmp.out.pBuffer;
871 state->orig.out.result = state->tmp.out.result;
873 /* Reset temporary structure */
874 ZERO_STRUCT(state->tmp);
876 tevent_req_done(req);
879 NTSTATUS dcerpc_DnssrvEnumRecords_recv(struct tevent_req *req,
883 struct dcerpc_DnssrvEnumRecords_state *state = tevent_req_data(
884 req, struct dcerpc_DnssrvEnumRecords_state);
887 if (tevent_req_is_nterror(req, &status)) {
888 tevent_req_received(req);
892 /* Steal possible out parameters to the callers context */
893 talloc_steal(mem_ctx, state->out_mem_ctx);
896 *result = state->orig.out.result;
898 tevent_req_received(req);
902 NTSTATUS dcerpc_DnssrvEnumRecords(struct dcerpc_binding_handle *h,
904 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
905 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
906 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
907 const char *_pszStartChild /* [in] [unique,charset(UTF8)] */,
908 enum dns_record_type _wRecordType /* [in] */,
909 uint32_t _fSelectFlag /* [in] */,
910 const char *_pszFilterStart /* [in] [unique,charset(UTF8)] */,
911 const char *_pszFilterStop /* [in] [unique,charset(UTF8)] */,
912 uint32_t *_pdwBufferLength /* [out] [ref] */,
913 struct DNS_RPC_RECORDS_ARRAY **_pBuffer /* [out] [subcontext_size(*pdwBufferLength),subcontext(4),ref] */,
916 struct DnssrvEnumRecords r;
920 r.in.pwszServerName = _pwszServerName;
921 r.in.pszZone = _pszZone;
922 r.in.pszNodeName = _pszNodeName;
923 r.in.pszStartChild = _pszStartChild;
924 r.in.wRecordType = _wRecordType;
925 r.in.fSelectFlag = _fSelectFlag;
926 r.in.pszFilterStart = _pszFilterStart;
927 r.in.pszFilterStop = _pszFilterStop;
929 status = dcerpc_DnssrvEnumRecords_r(h, mem_ctx, &r);
930 if (!NT_STATUS_IS_OK(status)) {
934 /* Return variables */
935 *_pdwBufferLength = *r.out.pdwBufferLength;
936 *_pBuffer = *r.out.pBuffer;
939 *result = r.out.result;
944 struct dcerpc_DnssrvUpdateRecord_r_state {
945 TALLOC_CTX *out_mem_ctx;
948 static void dcerpc_DnssrvUpdateRecord_r_done(struct tevent_req *subreq);
950 struct tevent_req *dcerpc_DnssrvUpdateRecord_r_send(TALLOC_CTX *mem_ctx,
951 struct tevent_context *ev,
952 struct dcerpc_binding_handle *h,
953 struct DnssrvUpdateRecord *r)
955 struct tevent_req *req;
956 struct dcerpc_DnssrvUpdateRecord_r_state *state;
957 struct tevent_req *subreq;
959 req = tevent_req_create(mem_ctx, &state,
960 struct dcerpc_DnssrvUpdateRecord_r_state);
965 state->out_mem_ctx = NULL;
967 subreq = dcerpc_binding_handle_call_send(state, ev, h,
968 NULL, &ndr_table_dnsserver,
969 NDR_DNSSRVUPDATERECORD, state, r);
970 if (tevent_req_nomem(subreq, req)) {
971 return tevent_req_post(req, ev);
973 tevent_req_set_callback(subreq, dcerpc_DnssrvUpdateRecord_r_done, req);
978 static void dcerpc_DnssrvUpdateRecord_r_done(struct tevent_req *subreq)
980 struct tevent_req *req =
981 tevent_req_callback_data(subreq,
985 status = dcerpc_binding_handle_call_recv(subreq);
987 if (tevent_req_nterror(req, status)) {
991 tevent_req_done(req);
994 NTSTATUS dcerpc_DnssrvUpdateRecord_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
996 struct dcerpc_DnssrvUpdateRecord_r_state *state =
998 struct dcerpc_DnssrvUpdateRecord_r_state);
1001 if (tevent_req_is_nterror(req, &status)) {
1002 tevent_req_received(req);
1006 talloc_steal(mem_ctx, state->out_mem_ctx);
1008 tevent_req_received(req);
1009 return NT_STATUS_OK;
1012 NTSTATUS dcerpc_DnssrvUpdateRecord_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvUpdateRecord *r)
1016 status = dcerpc_binding_handle_call(h,
1017 NULL, &ndr_table_dnsserver,
1018 NDR_DNSSRVUPDATERECORD, mem_ctx, r);
1023 struct dcerpc_DnssrvUpdateRecord_state {
1024 struct DnssrvUpdateRecord orig;
1025 struct DnssrvUpdateRecord tmp;
1026 TALLOC_CTX *out_mem_ctx;
1029 static void dcerpc_DnssrvUpdateRecord_done(struct tevent_req *subreq);
1031 struct tevent_req *dcerpc_DnssrvUpdateRecord_send(TALLOC_CTX *mem_ctx,
1032 struct tevent_context *ev,
1033 struct dcerpc_binding_handle *h,
1034 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1035 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1036 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
1037 struct DNS_RPC_RECORD_BUF *_pAddRecord /* [in] [unique] */,
1038 struct DNS_RPC_RECORD_BUF *_pDeleteRecord /* [in] [unique] */)
1040 struct tevent_req *req;
1041 struct dcerpc_DnssrvUpdateRecord_state *state;
1042 struct tevent_req *subreq;
1044 req = tevent_req_create(mem_ctx, &state,
1045 struct dcerpc_DnssrvUpdateRecord_state);
1049 state->out_mem_ctx = NULL;
1052 state->orig.in.pwszServerName = _pwszServerName;
1053 state->orig.in.pszZone = _pszZone;
1054 state->orig.in.pszNodeName = _pszNodeName;
1055 state->orig.in.pAddRecord = _pAddRecord;
1056 state->orig.in.pDeleteRecord = _pDeleteRecord;
1058 /* Out parameters */
1061 ZERO_STRUCT(state->orig.out.result);
1063 /* make a temporary copy, that we pass to the dispatch function */
1064 state->tmp = state->orig;
1066 subreq = dcerpc_DnssrvUpdateRecord_r_send(state, ev, h, &state->tmp);
1067 if (tevent_req_nomem(subreq, req)) {
1068 return tevent_req_post(req, ev);
1070 tevent_req_set_callback(subreq, dcerpc_DnssrvUpdateRecord_done, req);
1074 static void dcerpc_DnssrvUpdateRecord_done(struct tevent_req *subreq)
1076 struct tevent_req *req = tevent_req_callback_data(
1077 subreq, struct tevent_req);
1078 struct dcerpc_DnssrvUpdateRecord_state *state = tevent_req_data(
1079 req, struct dcerpc_DnssrvUpdateRecord_state);
1081 TALLOC_CTX *mem_ctx;
1083 if (state->out_mem_ctx) {
1084 mem_ctx = state->out_mem_ctx;
1089 status = dcerpc_DnssrvUpdateRecord_r_recv(subreq, mem_ctx);
1090 TALLOC_FREE(subreq);
1091 if (tevent_req_nterror(req, status)) {
1095 /* Copy out parameters */
1098 state->orig.out.result = state->tmp.out.result;
1100 /* Reset temporary structure */
1101 ZERO_STRUCT(state->tmp);
1103 tevent_req_done(req);
1106 NTSTATUS dcerpc_DnssrvUpdateRecord_recv(struct tevent_req *req,
1107 TALLOC_CTX *mem_ctx,
1110 struct dcerpc_DnssrvUpdateRecord_state *state = tevent_req_data(
1111 req, struct dcerpc_DnssrvUpdateRecord_state);
1114 if (tevent_req_is_nterror(req, &status)) {
1115 tevent_req_received(req);
1119 /* Steal possible out parameters to the callers context */
1120 talloc_steal(mem_ctx, state->out_mem_ctx);
1123 *result = state->orig.out.result;
1125 tevent_req_received(req);
1126 return NT_STATUS_OK;
1129 NTSTATUS dcerpc_DnssrvUpdateRecord(struct dcerpc_binding_handle *h,
1130 TALLOC_CTX *mem_ctx,
1131 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1132 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1133 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
1134 struct DNS_RPC_RECORD_BUF *_pAddRecord /* [in] [unique] */,
1135 struct DNS_RPC_RECORD_BUF *_pDeleteRecord /* [in] [unique] */,
1138 struct DnssrvUpdateRecord r;
1142 r.in.pwszServerName = _pwszServerName;
1143 r.in.pszZone = _pszZone;
1144 r.in.pszNodeName = _pszNodeName;
1145 r.in.pAddRecord = _pAddRecord;
1146 r.in.pDeleteRecord = _pDeleteRecord;
1148 status = dcerpc_DnssrvUpdateRecord_r(h, mem_ctx, &r);
1149 if (!NT_STATUS_IS_OK(status)) {
1153 /* Return variables */
1156 *result = r.out.result;
1158 return NT_STATUS_OK;
1161 struct dcerpc_DnssrvOperation2_r_state {
1162 TALLOC_CTX *out_mem_ctx;
1165 static void dcerpc_DnssrvOperation2_r_done(struct tevent_req *subreq);
1167 struct tevent_req *dcerpc_DnssrvOperation2_r_send(TALLOC_CTX *mem_ctx,
1168 struct tevent_context *ev,
1169 struct dcerpc_binding_handle *h,
1170 struct DnssrvOperation2 *r)
1172 struct tevent_req *req;
1173 struct dcerpc_DnssrvOperation2_r_state *state;
1174 struct tevent_req *subreq;
1176 req = tevent_req_create(mem_ctx, &state,
1177 struct dcerpc_DnssrvOperation2_r_state);
1182 state->out_mem_ctx = NULL;
1184 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1185 NULL, &ndr_table_dnsserver,
1186 NDR_DNSSRVOPERATION2, state, r);
1187 if (tevent_req_nomem(subreq, req)) {
1188 return tevent_req_post(req, ev);
1190 tevent_req_set_callback(subreq, dcerpc_DnssrvOperation2_r_done, req);
1195 static void dcerpc_DnssrvOperation2_r_done(struct tevent_req *subreq)
1197 struct tevent_req *req =
1198 tevent_req_callback_data(subreq,
1202 status = dcerpc_binding_handle_call_recv(subreq);
1203 TALLOC_FREE(subreq);
1204 if (tevent_req_nterror(req, status)) {
1208 tevent_req_done(req);
1211 NTSTATUS dcerpc_DnssrvOperation2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1213 struct dcerpc_DnssrvOperation2_r_state *state =
1214 tevent_req_data(req,
1215 struct dcerpc_DnssrvOperation2_r_state);
1218 if (tevent_req_is_nterror(req, &status)) {
1219 tevent_req_received(req);
1223 talloc_steal(mem_ctx, state->out_mem_ctx);
1225 tevent_req_received(req);
1226 return NT_STATUS_OK;
1229 NTSTATUS dcerpc_DnssrvOperation2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvOperation2 *r)
1233 status = dcerpc_binding_handle_call(h,
1234 NULL, &ndr_table_dnsserver,
1235 NDR_DNSSRVOPERATION2, mem_ctx, r);
1240 struct dcerpc_DnssrvOperation2_state {
1241 struct DnssrvOperation2 orig;
1242 struct DnssrvOperation2 tmp;
1243 TALLOC_CTX *out_mem_ctx;
1246 static void dcerpc_DnssrvOperation2_done(struct tevent_req *subreq);
1248 struct tevent_req *dcerpc_DnssrvOperation2_send(TALLOC_CTX *mem_ctx,
1249 struct tevent_context *ev,
1250 struct dcerpc_binding_handle *h,
1251 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1252 uint32_t _dwSettingFlags /* [in] */,
1253 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1254 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1255 uint32_t _dwContext /* [in] */,
1256 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1257 enum DNS_RPC_TYPEID _dwTypeId /* [in] */,
1258 union DNSSRV_RPC_UNION _pData /* [in] [switch_is(dwTypeId)] */)
1260 struct tevent_req *req;
1261 struct dcerpc_DnssrvOperation2_state *state;
1262 struct tevent_req *subreq;
1264 req = tevent_req_create(mem_ctx, &state,
1265 struct dcerpc_DnssrvOperation2_state);
1269 state->out_mem_ctx = NULL;
1272 state->orig.in.dwClientVersion = _dwClientVersion;
1273 state->orig.in.dwSettingFlags = _dwSettingFlags;
1274 state->orig.in.pwszServerName = _pwszServerName;
1275 state->orig.in.pszZone = _pszZone;
1276 state->orig.in.dwContext = _dwContext;
1277 state->orig.in.pszOperation = _pszOperation;
1278 state->orig.in.dwTypeId = _dwTypeId;
1279 state->orig.in.pData = _pData;
1281 /* Out parameters */
1284 ZERO_STRUCT(state->orig.out.result);
1286 /* make a temporary copy, that we pass to the dispatch function */
1287 state->tmp = state->orig;
1289 subreq = dcerpc_DnssrvOperation2_r_send(state, ev, h, &state->tmp);
1290 if (tevent_req_nomem(subreq, req)) {
1291 return tevent_req_post(req, ev);
1293 tevent_req_set_callback(subreq, dcerpc_DnssrvOperation2_done, req);
1297 static void dcerpc_DnssrvOperation2_done(struct tevent_req *subreq)
1299 struct tevent_req *req = tevent_req_callback_data(
1300 subreq, struct tevent_req);
1301 struct dcerpc_DnssrvOperation2_state *state = tevent_req_data(
1302 req, struct dcerpc_DnssrvOperation2_state);
1304 TALLOC_CTX *mem_ctx;
1306 if (state->out_mem_ctx) {
1307 mem_ctx = state->out_mem_ctx;
1312 status = dcerpc_DnssrvOperation2_r_recv(subreq, mem_ctx);
1313 TALLOC_FREE(subreq);
1314 if (tevent_req_nterror(req, status)) {
1318 /* Copy out parameters */
1321 state->orig.out.result = state->tmp.out.result;
1323 /* Reset temporary structure */
1324 ZERO_STRUCT(state->tmp);
1326 tevent_req_done(req);
1329 NTSTATUS dcerpc_DnssrvOperation2_recv(struct tevent_req *req,
1330 TALLOC_CTX *mem_ctx,
1333 struct dcerpc_DnssrvOperation2_state *state = tevent_req_data(
1334 req, struct dcerpc_DnssrvOperation2_state);
1337 if (tevent_req_is_nterror(req, &status)) {
1338 tevent_req_received(req);
1342 /* Steal possible out parameters to the callers context */
1343 talloc_steal(mem_ctx, state->out_mem_ctx);
1346 *result = state->orig.out.result;
1348 tevent_req_received(req);
1349 return NT_STATUS_OK;
1352 NTSTATUS dcerpc_DnssrvOperation2(struct dcerpc_binding_handle *h,
1353 TALLOC_CTX *mem_ctx,
1354 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1355 uint32_t _dwSettingFlags /* [in] */,
1356 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1357 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1358 uint32_t _dwContext /* [in] */,
1359 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1360 enum DNS_RPC_TYPEID _dwTypeId /* [in] */,
1361 union DNSSRV_RPC_UNION _pData /* [in] [switch_is(dwTypeId)] */,
1364 struct DnssrvOperation2 r;
1368 r.in.dwClientVersion = _dwClientVersion;
1369 r.in.dwSettingFlags = _dwSettingFlags;
1370 r.in.pwszServerName = _pwszServerName;
1371 r.in.pszZone = _pszZone;
1372 r.in.dwContext = _dwContext;
1373 r.in.pszOperation = _pszOperation;
1374 r.in.dwTypeId = _dwTypeId;
1375 r.in.pData = _pData;
1377 status = dcerpc_DnssrvOperation2_r(h, mem_ctx, &r);
1378 if (!NT_STATUS_IS_OK(status)) {
1382 /* Return variables */
1385 *result = r.out.result;
1387 return NT_STATUS_OK;
1390 struct dcerpc_DnssrvQuery2_r_state {
1391 TALLOC_CTX *out_mem_ctx;
1394 static void dcerpc_DnssrvQuery2_r_done(struct tevent_req *subreq);
1396 struct tevent_req *dcerpc_DnssrvQuery2_r_send(TALLOC_CTX *mem_ctx,
1397 struct tevent_context *ev,
1398 struct dcerpc_binding_handle *h,
1399 struct DnssrvQuery2 *r)
1401 struct tevent_req *req;
1402 struct dcerpc_DnssrvQuery2_r_state *state;
1403 struct tevent_req *subreq;
1405 req = tevent_req_create(mem_ctx, &state,
1406 struct dcerpc_DnssrvQuery2_r_state);
1411 state->out_mem_ctx = talloc_new(state);
1412 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1413 return tevent_req_post(req, ev);
1416 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1417 NULL, &ndr_table_dnsserver,
1418 NDR_DNSSRVQUERY2, state->out_mem_ctx, r);
1419 if (tevent_req_nomem(subreq, req)) {
1420 return tevent_req_post(req, ev);
1422 tevent_req_set_callback(subreq, dcerpc_DnssrvQuery2_r_done, req);
1427 static void dcerpc_DnssrvQuery2_r_done(struct tevent_req *subreq)
1429 struct tevent_req *req =
1430 tevent_req_callback_data(subreq,
1434 status = dcerpc_binding_handle_call_recv(subreq);
1435 TALLOC_FREE(subreq);
1436 if (tevent_req_nterror(req, status)) {
1440 tevent_req_done(req);
1443 NTSTATUS dcerpc_DnssrvQuery2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1445 struct dcerpc_DnssrvQuery2_r_state *state =
1446 tevent_req_data(req,
1447 struct dcerpc_DnssrvQuery2_r_state);
1450 if (tevent_req_is_nterror(req, &status)) {
1451 tevent_req_received(req);
1455 talloc_steal(mem_ctx, state->out_mem_ctx);
1457 tevent_req_received(req);
1458 return NT_STATUS_OK;
1461 NTSTATUS dcerpc_DnssrvQuery2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvQuery2 *r)
1465 status = dcerpc_binding_handle_call(h,
1466 NULL, &ndr_table_dnsserver,
1467 NDR_DNSSRVQUERY2, mem_ctx, r);
1472 struct dcerpc_DnssrvQuery2_state {
1473 struct DnssrvQuery2 orig;
1474 struct DnssrvQuery2 tmp;
1475 TALLOC_CTX *out_mem_ctx;
1478 static void dcerpc_DnssrvQuery2_done(struct tevent_req *subreq);
1480 struct tevent_req *dcerpc_DnssrvQuery2_send(TALLOC_CTX *mem_ctx,
1481 struct tevent_context *ev,
1482 struct dcerpc_binding_handle *h,
1483 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1484 uint32_t _dwSettingFlags /* [in] */,
1485 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1486 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1487 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1488 enum DNS_RPC_TYPEID *_pdwTypeId /* [out] [ref] */,
1489 union DNSSRV_RPC_UNION *_ppData /* [out] [ref,switch_is(*pdwTypeId)] */)
1491 struct tevent_req *req;
1492 struct dcerpc_DnssrvQuery2_state *state;
1493 struct tevent_req *subreq;
1495 req = tevent_req_create(mem_ctx, &state,
1496 struct dcerpc_DnssrvQuery2_state);
1500 state->out_mem_ctx = NULL;
1503 state->orig.in.dwClientVersion = _dwClientVersion;
1504 state->orig.in.dwSettingFlags = _dwSettingFlags;
1505 state->orig.in.pwszServerName = _pwszServerName;
1506 state->orig.in.pszZone = _pszZone;
1507 state->orig.in.pszOperation = _pszOperation;
1509 /* Out parameters */
1510 state->orig.out.pdwTypeId = _pdwTypeId;
1511 state->orig.out.ppData = _ppData;
1514 ZERO_STRUCT(state->orig.out.result);
1516 state->out_mem_ctx = talloc_named_const(state, 0,
1517 "dcerpc_DnssrvQuery2_out_memory");
1518 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1519 return tevent_req_post(req, ev);
1522 /* make a temporary copy, that we pass to the dispatch function */
1523 state->tmp = state->orig;
1525 subreq = dcerpc_DnssrvQuery2_r_send(state, ev, h, &state->tmp);
1526 if (tevent_req_nomem(subreq, req)) {
1527 return tevent_req_post(req, ev);
1529 tevent_req_set_callback(subreq, dcerpc_DnssrvQuery2_done, req);
1533 static void dcerpc_DnssrvQuery2_done(struct tevent_req *subreq)
1535 struct tevent_req *req = tevent_req_callback_data(
1536 subreq, struct tevent_req);
1537 struct dcerpc_DnssrvQuery2_state *state = tevent_req_data(
1538 req, struct dcerpc_DnssrvQuery2_state);
1540 TALLOC_CTX *mem_ctx;
1542 if (state->out_mem_ctx) {
1543 mem_ctx = state->out_mem_ctx;
1548 status = dcerpc_DnssrvQuery2_r_recv(subreq, mem_ctx);
1549 TALLOC_FREE(subreq);
1550 if (tevent_req_nterror(req, status)) {
1554 /* Copy out parameters */
1555 *state->orig.out.pdwTypeId = *state->tmp.out.pdwTypeId;
1556 *state->orig.out.ppData = *state->tmp.out.ppData;
1559 state->orig.out.result = state->tmp.out.result;
1561 /* Reset temporary structure */
1562 ZERO_STRUCT(state->tmp);
1564 tevent_req_done(req);
1567 NTSTATUS dcerpc_DnssrvQuery2_recv(struct tevent_req *req,
1568 TALLOC_CTX *mem_ctx,
1571 struct dcerpc_DnssrvQuery2_state *state = tevent_req_data(
1572 req, struct dcerpc_DnssrvQuery2_state);
1575 if (tevent_req_is_nterror(req, &status)) {
1576 tevent_req_received(req);
1580 /* Steal possible out parameters to the callers context */
1581 talloc_steal(mem_ctx, state->out_mem_ctx);
1584 *result = state->orig.out.result;
1586 tevent_req_received(req);
1587 return NT_STATUS_OK;
1590 NTSTATUS dcerpc_DnssrvQuery2(struct dcerpc_binding_handle *h,
1591 TALLOC_CTX *mem_ctx,
1592 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1593 uint32_t _dwSettingFlags /* [in] */,
1594 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1595 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1596 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1597 enum DNS_RPC_TYPEID *_pdwTypeId /* [out] [ref] */,
1598 union DNSSRV_RPC_UNION *_ppData /* [out] [ref,switch_is(*pdwTypeId)] */,
1601 struct DnssrvQuery2 r;
1605 r.in.dwClientVersion = _dwClientVersion;
1606 r.in.dwSettingFlags = _dwSettingFlags;
1607 r.in.pwszServerName = _pwszServerName;
1608 r.in.pszZone = _pszZone;
1609 r.in.pszOperation = _pszOperation;
1611 status = dcerpc_DnssrvQuery2_r(h, mem_ctx, &r);
1612 if (!NT_STATUS_IS_OK(status)) {
1616 /* Return variables */
1617 *_pdwTypeId = *r.out.pdwTypeId;
1618 *_ppData = *r.out.ppData;
1621 *result = r.out.result;
1623 return NT_STATUS_OK;
1626 struct dcerpc_DnssrvComplexOperation2_r_state {
1627 TALLOC_CTX *out_mem_ctx;
1630 static void dcerpc_DnssrvComplexOperation2_r_done(struct tevent_req *subreq);
1632 struct tevent_req *dcerpc_DnssrvComplexOperation2_r_send(TALLOC_CTX *mem_ctx,
1633 struct tevent_context *ev,
1634 struct dcerpc_binding_handle *h,
1635 struct DnssrvComplexOperation2 *r)
1637 struct tevent_req *req;
1638 struct dcerpc_DnssrvComplexOperation2_r_state *state;
1639 struct tevent_req *subreq;
1641 req = tevent_req_create(mem_ctx, &state,
1642 struct dcerpc_DnssrvComplexOperation2_r_state);
1647 state->out_mem_ctx = talloc_new(state);
1648 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1649 return tevent_req_post(req, ev);
1652 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1653 NULL, &ndr_table_dnsserver,
1654 NDR_DNSSRVCOMPLEXOPERATION2, state->out_mem_ctx, r);
1655 if (tevent_req_nomem(subreq, req)) {
1656 return tevent_req_post(req, ev);
1658 tevent_req_set_callback(subreq, dcerpc_DnssrvComplexOperation2_r_done, req);
1663 static void dcerpc_DnssrvComplexOperation2_r_done(struct tevent_req *subreq)
1665 struct tevent_req *req =
1666 tevent_req_callback_data(subreq,
1670 status = dcerpc_binding_handle_call_recv(subreq);
1671 TALLOC_FREE(subreq);
1672 if (tevent_req_nterror(req, status)) {
1676 tevent_req_done(req);
1679 NTSTATUS dcerpc_DnssrvComplexOperation2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1681 struct dcerpc_DnssrvComplexOperation2_r_state *state =
1682 tevent_req_data(req,
1683 struct dcerpc_DnssrvComplexOperation2_r_state);
1686 if (tevent_req_is_nterror(req, &status)) {
1687 tevent_req_received(req);
1691 talloc_steal(mem_ctx, state->out_mem_ctx);
1693 tevent_req_received(req);
1694 return NT_STATUS_OK;
1697 NTSTATUS dcerpc_DnssrvComplexOperation2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvComplexOperation2 *r)
1701 status = dcerpc_binding_handle_call(h,
1702 NULL, &ndr_table_dnsserver,
1703 NDR_DNSSRVCOMPLEXOPERATION2, mem_ctx, r);
1708 struct dcerpc_DnssrvComplexOperation2_state {
1709 struct DnssrvComplexOperation2 orig;
1710 struct DnssrvComplexOperation2 tmp;
1711 TALLOC_CTX *out_mem_ctx;
1714 static void dcerpc_DnssrvComplexOperation2_done(struct tevent_req *subreq);
1716 struct tevent_req *dcerpc_DnssrvComplexOperation2_send(TALLOC_CTX *mem_ctx,
1717 struct tevent_context *ev,
1718 struct dcerpc_binding_handle *h,
1719 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1720 uint32_t _dwSettingFlags /* [in] */,
1721 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1722 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1723 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1724 enum DNS_RPC_TYPEID _dwTypeIn /* [in] */,
1725 union DNSSRV_RPC_UNION _pDataIn /* [in] [switch_is(dwTypeIn)] */,
1726 enum DNS_RPC_TYPEID *_pdwTypeOut /* [out] [ref] */,
1727 union DNSSRV_RPC_UNION *_ppDataOut /* [out] [ref,switch_is(*pdwTypeOut)] */)
1729 struct tevent_req *req;
1730 struct dcerpc_DnssrvComplexOperation2_state *state;
1731 struct tevent_req *subreq;
1733 req = tevent_req_create(mem_ctx, &state,
1734 struct dcerpc_DnssrvComplexOperation2_state);
1738 state->out_mem_ctx = NULL;
1741 state->orig.in.dwClientVersion = _dwClientVersion;
1742 state->orig.in.dwSettingFlags = _dwSettingFlags;
1743 state->orig.in.pwszServerName = _pwszServerName;
1744 state->orig.in.pszZone = _pszZone;
1745 state->orig.in.pszOperation = _pszOperation;
1746 state->orig.in.dwTypeIn = _dwTypeIn;
1747 state->orig.in.pDataIn = _pDataIn;
1749 /* Out parameters */
1750 state->orig.out.pdwTypeOut = _pdwTypeOut;
1751 state->orig.out.ppDataOut = _ppDataOut;
1754 ZERO_STRUCT(state->orig.out.result);
1756 state->out_mem_ctx = talloc_named_const(state, 0,
1757 "dcerpc_DnssrvComplexOperation2_out_memory");
1758 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1759 return tevent_req_post(req, ev);
1762 /* make a temporary copy, that we pass to the dispatch function */
1763 state->tmp = state->orig;
1765 subreq = dcerpc_DnssrvComplexOperation2_r_send(state, ev, h, &state->tmp);
1766 if (tevent_req_nomem(subreq, req)) {
1767 return tevent_req_post(req, ev);
1769 tevent_req_set_callback(subreq, dcerpc_DnssrvComplexOperation2_done, req);
1773 static void dcerpc_DnssrvComplexOperation2_done(struct tevent_req *subreq)
1775 struct tevent_req *req = tevent_req_callback_data(
1776 subreq, struct tevent_req);
1777 struct dcerpc_DnssrvComplexOperation2_state *state = tevent_req_data(
1778 req, struct dcerpc_DnssrvComplexOperation2_state);
1780 TALLOC_CTX *mem_ctx;
1782 if (state->out_mem_ctx) {
1783 mem_ctx = state->out_mem_ctx;
1788 status = dcerpc_DnssrvComplexOperation2_r_recv(subreq, mem_ctx);
1789 TALLOC_FREE(subreq);
1790 if (tevent_req_nterror(req, status)) {
1794 /* Copy out parameters */
1795 *state->orig.out.pdwTypeOut = *state->tmp.out.pdwTypeOut;
1796 *state->orig.out.ppDataOut = *state->tmp.out.ppDataOut;
1799 state->orig.out.result = state->tmp.out.result;
1801 /* Reset temporary structure */
1802 ZERO_STRUCT(state->tmp);
1804 tevent_req_done(req);
1807 NTSTATUS dcerpc_DnssrvComplexOperation2_recv(struct tevent_req *req,
1808 TALLOC_CTX *mem_ctx,
1811 struct dcerpc_DnssrvComplexOperation2_state *state = tevent_req_data(
1812 req, struct dcerpc_DnssrvComplexOperation2_state);
1815 if (tevent_req_is_nterror(req, &status)) {
1816 tevent_req_received(req);
1820 /* Steal possible out parameters to the callers context */
1821 talloc_steal(mem_ctx, state->out_mem_ctx);
1824 *result = state->orig.out.result;
1826 tevent_req_received(req);
1827 return NT_STATUS_OK;
1830 NTSTATUS dcerpc_DnssrvComplexOperation2(struct dcerpc_binding_handle *h,
1831 TALLOC_CTX *mem_ctx,
1832 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1833 uint32_t _dwSettingFlags /* [in] */,
1834 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1835 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1836 const char *_pszOperation /* [in] [unique,charset(UTF8)] */,
1837 enum DNS_RPC_TYPEID _dwTypeIn /* [in] */,
1838 union DNSSRV_RPC_UNION _pDataIn /* [in] [switch_is(dwTypeIn)] */,
1839 enum DNS_RPC_TYPEID *_pdwTypeOut /* [out] [ref] */,
1840 union DNSSRV_RPC_UNION *_ppDataOut /* [out] [ref,switch_is(*pdwTypeOut)] */,
1843 struct DnssrvComplexOperation2 r;
1847 r.in.dwClientVersion = _dwClientVersion;
1848 r.in.dwSettingFlags = _dwSettingFlags;
1849 r.in.pwszServerName = _pwszServerName;
1850 r.in.pszZone = _pszZone;
1851 r.in.pszOperation = _pszOperation;
1852 r.in.dwTypeIn = _dwTypeIn;
1853 r.in.pDataIn = _pDataIn;
1855 status = dcerpc_DnssrvComplexOperation2_r(h, mem_ctx, &r);
1856 if (!NT_STATUS_IS_OK(status)) {
1860 /* Return variables */
1861 *_pdwTypeOut = *r.out.pdwTypeOut;
1862 *_ppDataOut = *r.out.ppDataOut;
1865 *result = r.out.result;
1867 return NT_STATUS_OK;
1870 struct dcerpc_DnssrvEnumRecords2_r_state {
1871 TALLOC_CTX *out_mem_ctx;
1874 static void dcerpc_DnssrvEnumRecords2_r_done(struct tevent_req *subreq);
1876 struct tevent_req *dcerpc_DnssrvEnumRecords2_r_send(TALLOC_CTX *mem_ctx,
1877 struct tevent_context *ev,
1878 struct dcerpc_binding_handle *h,
1879 struct DnssrvEnumRecords2 *r)
1881 struct tevent_req *req;
1882 struct dcerpc_DnssrvEnumRecords2_r_state *state;
1883 struct tevent_req *subreq;
1885 req = tevent_req_create(mem_ctx, &state,
1886 struct dcerpc_DnssrvEnumRecords2_r_state);
1891 state->out_mem_ctx = talloc_new(state);
1892 if (tevent_req_nomem(state->out_mem_ctx, req)) {
1893 return tevent_req_post(req, ev);
1896 subreq = dcerpc_binding_handle_call_send(state, ev, h,
1897 NULL, &ndr_table_dnsserver,
1898 NDR_DNSSRVENUMRECORDS2, state->out_mem_ctx, r);
1899 if (tevent_req_nomem(subreq, req)) {
1900 return tevent_req_post(req, ev);
1902 tevent_req_set_callback(subreq, dcerpc_DnssrvEnumRecords2_r_done, req);
1907 static void dcerpc_DnssrvEnumRecords2_r_done(struct tevent_req *subreq)
1909 struct tevent_req *req =
1910 tevent_req_callback_data(subreq,
1914 status = dcerpc_binding_handle_call_recv(subreq);
1915 TALLOC_FREE(subreq);
1916 if (tevent_req_nterror(req, status)) {
1920 tevent_req_done(req);
1923 NTSTATUS dcerpc_DnssrvEnumRecords2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
1925 struct dcerpc_DnssrvEnumRecords2_r_state *state =
1926 tevent_req_data(req,
1927 struct dcerpc_DnssrvEnumRecords2_r_state);
1930 if (tevent_req_is_nterror(req, &status)) {
1931 tevent_req_received(req);
1935 talloc_steal(mem_ctx, state->out_mem_ctx);
1937 tevent_req_received(req);
1938 return NT_STATUS_OK;
1941 NTSTATUS dcerpc_DnssrvEnumRecords2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvEnumRecords2 *r)
1945 status = dcerpc_binding_handle_call(h,
1946 NULL, &ndr_table_dnsserver,
1947 NDR_DNSSRVENUMRECORDS2, mem_ctx, r);
1952 struct dcerpc_DnssrvEnumRecords2_state {
1953 struct DnssrvEnumRecords2 orig;
1954 struct DnssrvEnumRecords2 tmp;
1955 TALLOC_CTX *out_mem_ctx;
1958 static void dcerpc_DnssrvEnumRecords2_done(struct tevent_req *subreq);
1960 struct tevent_req *dcerpc_DnssrvEnumRecords2_send(TALLOC_CTX *mem_ctx,
1961 struct tevent_context *ev,
1962 struct dcerpc_binding_handle *h,
1963 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
1964 uint32_t _dwSettingFlags /* [in] */,
1965 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
1966 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
1967 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
1968 const char *_pszStartChild /* [in] [unique,charset(UTF8)] */,
1969 enum dns_record_type _wRecordType /* [in] */,
1970 uint32_t _fSelectFlag /* [in] */,
1971 const char *_pszFilterStart /* [in] [unique,charset(UTF8)] */,
1972 const char *_pszFilterStop /* [in] [unique,charset(UTF8)] */,
1973 uint32_t *_pdwBufferLength /* [out] [ref] */,
1974 struct DNS_RPC_RECORDS_ARRAY **_pBuffer /* [out] [subcontext_size(*pdwBufferLength),subcontext(4),ref] */)
1976 struct tevent_req *req;
1977 struct dcerpc_DnssrvEnumRecords2_state *state;
1978 struct tevent_req *subreq;
1980 req = tevent_req_create(mem_ctx, &state,
1981 struct dcerpc_DnssrvEnumRecords2_state);
1985 state->out_mem_ctx = NULL;
1988 state->orig.in.dwClientVersion = _dwClientVersion;
1989 state->orig.in.dwSettingFlags = _dwSettingFlags;
1990 state->orig.in.pwszServerName = _pwszServerName;
1991 state->orig.in.pszZone = _pszZone;
1992 state->orig.in.pszNodeName = _pszNodeName;
1993 state->orig.in.pszStartChild = _pszStartChild;
1994 state->orig.in.wRecordType = _wRecordType;
1995 state->orig.in.fSelectFlag = _fSelectFlag;
1996 state->orig.in.pszFilterStart = _pszFilterStart;
1997 state->orig.in.pszFilterStop = _pszFilterStop;
1999 /* Out parameters */
2000 state->orig.out.pdwBufferLength = _pdwBufferLength;
2001 state->orig.out.pBuffer = _pBuffer;
2004 ZERO_STRUCT(state->orig.out.result);
2006 state->out_mem_ctx = talloc_named_const(state, 0,
2007 "dcerpc_DnssrvEnumRecords2_out_memory");
2008 if (tevent_req_nomem(state->out_mem_ctx, req)) {
2009 return tevent_req_post(req, ev);
2012 /* make a temporary copy, that we pass to the dispatch function */
2013 state->tmp = state->orig;
2015 subreq = dcerpc_DnssrvEnumRecords2_r_send(state, ev, h, &state->tmp);
2016 if (tevent_req_nomem(subreq, req)) {
2017 return tevent_req_post(req, ev);
2019 tevent_req_set_callback(subreq, dcerpc_DnssrvEnumRecords2_done, req);
2023 static void dcerpc_DnssrvEnumRecords2_done(struct tevent_req *subreq)
2025 struct tevent_req *req = tevent_req_callback_data(
2026 subreq, struct tevent_req);
2027 struct dcerpc_DnssrvEnumRecords2_state *state = tevent_req_data(
2028 req, struct dcerpc_DnssrvEnumRecords2_state);
2030 TALLOC_CTX *mem_ctx;
2032 if (state->out_mem_ctx) {
2033 mem_ctx = state->out_mem_ctx;
2038 status = dcerpc_DnssrvEnumRecords2_r_recv(subreq, mem_ctx);
2039 TALLOC_FREE(subreq);
2040 if (tevent_req_nterror(req, status)) {
2044 /* Copy out parameters */
2045 *state->orig.out.pdwBufferLength = *state->tmp.out.pdwBufferLength;
2046 *state->orig.out.pBuffer = *state->tmp.out.pBuffer;
2049 state->orig.out.result = state->tmp.out.result;
2051 /* Reset temporary structure */
2052 ZERO_STRUCT(state->tmp);
2054 tevent_req_done(req);
2057 NTSTATUS dcerpc_DnssrvEnumRecords2_recv(struct tevent_req *req,
2058 TALLOC_CTX *mem_ctx,
2061 struct dcerpc_DnssrvEnumRecords2_state *state = tevent_req_data(
2062 req, struct dcerpc_DnssrvEnumRecords2_state);
2065 if (tevent_req_is_nterror(req, &status)) {
2066 tevent_req_received(req);
2070 /* Steal possible out parameters to the callers context */
2071 talloc_steal(mem_ctx, state->out_mem_ctx);
2074 *result = state->orig.out.result;
2076 tevent_req_received(req);
2077 return NT_STATUS_OK;
2080 NTSTATUS dcerpc_DnssrvEnumRecords2(struct dcerpc_binding_handle *h,
2081 TALLOC_CTX *mem_ctx,
2082 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
2083 uint32_t _dwSettingFlags /* [in] */,
2084 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
2085 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
2086 const char *_pszNodeName /* [in] [unique,charset(UTF8)] */,
2087 const char *_pszStartChild /* [in] [unique,charset(UTF8)] */,
2088 enum dns_record_type _wRecordType /* [in] */,
2089 uint32_t _fSelectFlag /* [in] */,
2090 const char *_pszFilterStart /* [in] [unique,charset(UTF8)] */,
2091 const char *_pszFilterStop /* [in] [unique,charset(UTF8)] */,
2092 uint32_t *_pdwBufferLength /* [out] [ref] */,
2093 struct DNS_RPC_RECORDS_ARRAY **_pBuffer /* [out] [subcontext_size(*pdwBufferLength),subcontext(4),ref] */,
2096 struct DnssrvEnumRecords2 r;
2100 r.in.dwClientVersion = _dwClientVersion;
2101 r.in.dwSettingFlags = _dwSettingFlags;
2102 r.in.pwszServerName = _pwszServerName;
2103 r.in.pszZone = _pszZone;
2104 r.in.pszNodeName = _pszNodeName;
2105 r.in.pszStartChild = _pszStartChild;
2106 r.in.wRecordType = _wRecordType;
2107 r.in.fSelectFlag = _fSelectFlag;
2108 r.in.pszFilterStart = _pszFilterStart;
2109 r.in.pszFilterStop = _pszFilterStop;
2111 status = dcerpc_DnssrvEnumRecords2_r(h, mem_ctx, &r);
2112 if (!NT_STATUS_IS_OK(status)) {
2116 /* Return variables */
2117 *_pdwBufferLength = *r.out.pdwBufferLength;
2118 *_pBuffer = *r.out.pBuffer;
2121 *result = r.out.result;
2123 return NT_STATUS_OK;
2126 struct dcerpc_DnssrvUpdateRecord2_r_state {
2127 TALLOC_CTX *out_mem_ctx;
2130 static void dcerpc_DnssrvUpdateRecord2_r_done(struct tevent_req *subreq);
2132 struct tevent_req *dcerpc_DnssrvUpdateRecord2_r_send(TALLOC_CTX *mem_ctx,
2133 struct tevent_context *ev,
2134 struct dcerpc_binding_handle *h,
2135 struct DnssrvUpdateRecord2 *r)
2137 struct tevent_req *req;
2138 struct dcerpc_DnssrvUpdateRecord2_r_state *state;
2139 struct tevent_req *subreq;
2141 req = tevent_req_create(mem_ctx, &state,
2142 struct dcerpc_DnssrvUpdateRecord2_r_state);
2147 state->out_mem_ctx = NULL;
2149 subreq = dcerpc_binding_handle_call_send(state, ev, h,
2150 NULL, &ndr_table_dnsserver,
2151 NDR_DNSSRVUPDATERECORD2, state, r);
2152 if (tevent_req_nomem(subreq, req)) {
2153 return tevent_req_post(req, ev);
2155 tevent_req_set_callback(subreq, dcerpc_DnssrvUpdateRecord2_r_done, req);
2160 static void dcerpc_DnssrvUpdateRecord2_r_done(struct tevent_req *subreq)
2162 struct tevent_req *req =
2163 tevent_req_callback_data(subreq,
2167 status = dcerpc_binding_handle_call_recv(subreq);
2168 TALLOC_FREE(subreq);
2169 if (tevent_req_nterror(req, status)) {
2173 tevent_req_done(req);
2176 NTSTATUS dcerpc_DnssrvUpdateRecord2_r_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx)
2178 struct dcerpc_DnssrvUpdateRecord2_r_state *state =
2179 tevent_req_data(req,
2180 struct dcerpc_DnssrvUpdateRecord2_r_state);
2183 if (tevent_req_is_nterror(req, &status)) {
2184 tevent_req_received(req);
2188 talloc_steal(mem_ctx, state->out_mem_ctx);
2190 tevent_req_received(req);
2191 return NT_STATUS_OK;
2194 NTSTATUS dcerpc_DnssrvUpdateRecord2_r(struct dcerpc_binding_handle *h, TALLOC_CTX *mem_ctx, struct DnssrvUpdateRecord2 *r)
2198 status = dcerpc_binding_handle_call(h,
2199 NULL, &ndr_table_dnsserver,
2200 NDR_DNSSRVUPDATERECORD2, mem_ctx, r);
2205 struct dcerpc_DnssrvUpdateRecord2_state {
2206 struct DnssrvUpdateRecord2 orig;
2207 struct DnssrvUpdateRecord2 tmp;
2208 TALLOC_CTX *out_mem_ctx;
2211 static void dcerpc_DnssrvUpdateRecord2_done(struct tevent_req *subreq);
2213 struct tevent_req *dcerpc_DnssrvUpdateRecord2_send(TALLOC_CTX *mem_ctx,
2214 struct tevent_context *ev,
2215 struct dcerpc_binding_handle *h,
2216 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
2217 uint32_t _dwSettingFlags /* [in] */,
2218 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
2219 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
2220 const char *_pszNodeName /* [in] [ref,charset(UTF8)] */,
2221 struct DNS_RPC_RECORD_BUF *_pAddRecord /* [in] [unique] */,
2222 struct DNS_RPC_RECORD_BUF *_pDeleteRecord /* [in] [unique] */)
2224 struct tevent_req *req;
2225 struct dcerpc_DnssrvUpdateRecord2_state *state;
2226 struct tevent_req *subreq;
2228 req = tevent_req_create(mem_ctx, &state,
2229 struct dcerpc_DnssrvUpdateRecord2_state);
2233 state->out_mem_ctx = NULL;
2236 state->orig.in.dwClientVersion = _dwClientVersion;
2237 state->orig.in.dwSettingFlags = _dwSettingFlags;
2238 state->orig.in.pwszServerName = _pwszServerName;
2239 state->orig.in.pszZone = _pszZone;
2240 state->orig.in.pszNodeName = _pszNodeName;
2241 state->orig.in.pAddRecord = _pAddRecord;
2242 state->orig.in.pDeleteRecord = _pDeleteRecord;
2244 /* Out parameters */
2247 ZERO_STRUCT(state->orig.out.result);
2249 /* make a temporary copy, that we pass to the dispatch function */
2250 state->tmp = state->orig;
2252 subreq = dcerpc_DnssrvUpdateRecord2_r_send(state, ev, h, &state->tmp);
2253 if (tevent_req_nomem(subreq, req)) {
2254 return tevent_req_post(req, ev);
2256 tevent_req_set_callback(subreq, dcerpc_DnssrvUpdateRecord2_done, req);
2260 static void dcerpc_DnssrvUpdateRecord2_done(struct tevent_req *subreq)
2262 struct tevent_req *req = tevent_req_callback_data(
2263 subreq, struct tevent_req);
2264 struct dcerpc_DnssrvUpdateRecord2_state *state = tevent_req_data(
2265 req, struct dcerpc_DnssrvUpdateRecord2_state);
2267 TALLOC_CTX *mem_ctx;
2269 if (state->out_mem_ctx) {
2270 mem_ctx = state->out_mem_ctx;
2275 status = dcerpc_DnssrvUpdateRecord2_r_recv(subreq, mem_ctx);
2276 TALLOC_FREE(subreq);
2277 if (tevent_req_nterror(req, status)) {
2281 /* Copy out parameters */
2284 state->orig.out.result = state->tmp.out.result;
2286 /* Reset temporary structure */
2287 ZERO_STRUCT(state->tmp);
2289 tevent_req_done(req);
2292 NTSTATUS dcerpc_DnssrvUpdateRecord2_recv(struct tevent_req *req,
2293 TALLOC_CTX *mem_ctx,
2296 struct dcerpc_DnssrvUpdateRecord2_state *state = tevent_req_data(
2297 req, struct dcerpc_DnssrvUpdateRecord2_state);
2300 if (tevent_req_is_nterror(req, &status)) {
2301 tevent_req_received(req);
2305 /* Steal possible out parameters to the callers context */
2306 talloc_steal(mem_ctx, state->out_mem_ctx);
2309 *result = state->orig.out.result;
2311 tevent_req_received(req);
2312 return NT_STATUS_OK;
2315 NTSTATUS dcerpc_DnssrvUpdateRecord2(struct dcerpc_binding_handle *h,
2316 TALLOC_CTX *mem_ctx,
2317 enum DNS_RPC_CLIENT_VERSION _dwClientVersion /* [in] */,
2318 uint32_t _dwSettingFlags /* [in] */,
2319 const char *_pwszServerName /* [in] [unique,charset(UTF16)] */,
2320 const char *_pszZone /* [in] [unique,charset(UTF8)] */,
2321 const char *_pszNodeName /* [in] [ref,charset(UTF8)] */,
2322 struct DNS_RPC_RECORD_BUF *_pAddRecord /* [in] [unique] */,
2323 struct DNS_RPC_RECORD_BUF *_pDeleteRecord /* [in] [unique] */,
2326 struct DnssrvUpdateRecord2 r;
2330 r.in.dwClientVersion = _dwClientVersion;
2331 r.in.dwSettingFlags = _dwSettingFlags;
2332 r.in.pwszServerName = _pwszServerName;
2333 r.in.pszZone = _pszZone;
2334 r.in.pszNodeName = _pszNodeName;
2335 r.in.pAddRecord = _pAddRecord;
2336 r.in.pDeleteRecord = _pDeleteRecord;
2338 status = dcerpc_DnssrvUpdateRecord2_r(h, mem_ctx, &r);
2339 if (!NT_STATUS_IS_OK(status)) {
2343 /* Return variables */
2346 *result = r.out.result;
2348 return NT_STATUS_OK;