git add -f bin/default/librpc/gen_ndr/*.{c,h,ndr,pidl} bin/default/source*/librpc...
authorStefan Metzmacher <metze@samba.org>
Wed, 19 Mar 2014 10:27:02 +0000 (11:27 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 4 Jun 2019 10:58:04 +0000 (12:58 +0200)
128 files changed:
bin/default/librpc/gen_ndr/s3compat_atsvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_atsvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_audiosrv.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_audiosrv.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_auth.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_auth.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_backupkey.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_backupkey.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_bkupblobs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_bkupblobs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_browser.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_browser.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dbgidl.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dbgidl.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dcerpc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dcerpc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dfs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dfs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dfsblobs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dfsblobs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dns.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dns.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dnsserver.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dnsserver.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_drsblobs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_drsblobs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_drsuapi.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_drsuapi.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dsbackup.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dsbackup.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dssetup.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_dssetup.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_echo.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_echo.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_efs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_efs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_epmapper.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_epmapper.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_eventlog.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_eventlog.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_eventlog6.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_eventlog6.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_file_id.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_file_id.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsapi.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsapi.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsblobs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsblobs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsrpc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frsrpc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frstrans.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_frstrans.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_fscc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_fscc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_fsrvp.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_fsrvp.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_initshutdown.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_initshutdown.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_keysvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_keysvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_krb5pac.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_krb5pac.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_lsa.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_lsa.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_mgmt.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_mgmt.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_misc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_misc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_msgsvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_msgsvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_nbt.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_nbt.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_netlogon.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_netlogon.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_notify.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_notify.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_ntlmssp.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_ntlmssp.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_ntsvcs.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_ntsvcs.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_orpc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_orpc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_oxidresolver.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_oxidresolver.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_policyagent.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_policyagent.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_remact.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_remact.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_rot.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_rot.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_samr.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_samr.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_scerpc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_scerpc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_schannel.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_schannel.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_security.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_security.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_server_id.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_server_id.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_smb_acl.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_smb_acl.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_spoolss.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_spoolss.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_srvsvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_srvsvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_svcctl.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_svcctl.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_trkwks.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_trkwks.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_unixinfo.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_unixinfo.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_w32time.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_w32time.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_winreg.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_winreg.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_witness.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_witness.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_wkssvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_wkssvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_wzcsvc.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_wzcsvc.h [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_xattr.c [new file with mode: 0644]
bin/default/librpc/gen_ndr/s3compat_xattr.h [new file with mode: 0644]

diff --git a/bin/default/librpc/gen_ndr/s3compat_atsvc.c b/bin/default/librpc/gen_ndr/s3compat_atsvc.c
new file mode 100644 (file)
index 0000000..838f11a
--- /dev/null
@@ -0,0 +1,239 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_atsvc.h"
+
+struct _s3_compat_atsvc_JobAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct atsvc_JobAdd *r;
+};
+
+static struct tevent_req *_s3_compat_atsvc_JobAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct atsvc_JobAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_atsvc_JobAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_atsvc_JobAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.job_id = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.job_id, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _atsvc_JobAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_atsvc_JobAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_atsvc_JobDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct atsvc_JobDel *r;
+};
+
+static struct tevent_req *_s3_compat_atsvc_JobDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct atsvc_JobDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_atsvc_JobDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_atsvc_JobDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _atsvc_JobDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_atsvc_JobDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_atsvc_JobEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct atsvc_JobEnum *r;
+};
+
+static struct tevent_req *_s3_compat_atsvc_JobEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct atsvc_JobEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_atsvc_JobEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_atsvc_JobEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = r->in.ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.total_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _atsvc_JobEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_atsvc_JobEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_atsvc_JobGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct atsvc_JobGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_atsvc_JobGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct atsvc_JobGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_atsvc_JobGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_atsvc_JobGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.job_info = talloc_zero(r, struct atsvc_JobInfo *);
+       if (tevent_req_nomem(r->out.job_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _atsvc_JobGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_atsvc_JobGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_atsvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_atsvc_JobAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_atsvc_JobAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_atsvc_JobDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_atsvc_JobDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_atsvc_JobEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_atsvc_JobEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_atsvc_JobGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_atsvc_JobGetInfo_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_atsvc_epv[] = {
+       .name = "_s3_compat_atsvc",
+       .table = &ndr_table_atsvc,
+       .num_fns = 4,
+       .fns = _s3_compat_atsvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_atsvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_atsvc.h b/bin/default/librpc/gen_ndr/s3compat_atsvc.h
new file mode 100644 (file)
index 0000000..a3fde1e
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_atsvc.h"
+#ifndef __S3COMPAT_ATSVC__
+#define __S3COMPAT_ATSVC__
+NTSTATUS _atsvc_JobAdd(struct pipes_struct *p, struct atsvc_JobAdd *r);
+NTSTATUS _atsvc_JobDel(struct pipes_struct *p, struct atsvc_JobDel *r);
+NTSTATUS _atsvc_JobEnum(struct pipes_struct *p, struct atsvc_JobEnum *r);
+NTSTATUS _atsvc_JobGetInfo(struct pipes_struct *p, struct atsvc_JobGetInfo *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_atsvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_ATSVC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_audiosrv.c b/bin/default/librpc/gen_ndr/s3compat_audiosrv.c
new file mode 100644 (file)
index 0000000..94929f8
--- /dev/null
@@ -0,0 +1,758 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_audiosrv.h"
+
+struct _s3_compat_audiosrv_CreatezoneFactoriesList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_CreatezoneFactoriesList *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_CreatezoneFactoriesList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_CreatezoneFactoriesList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_CreatezoneFactoriesList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_CreatezoneFactoriesList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_CreatezoneFactoriesList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_CreatezoneFactoriesList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_CreateGfxFactoriesList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_CreateGfxFactoriesList *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_CreateGfxFactoriesList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_CreateGfxFactoriesList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_CreateGfxFactoriesList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_CreateGfxFactoriesList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_CreateGfxFactoriesList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_CreateGfxFactoriesList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_CreateGfxList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_CreateGfxList *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_CreateGfxList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_CreateGfxList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_CreateGfxList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_CreateGfxList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_CreateGfxList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_CreateGfxList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_RemoveGfx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_RemoveGfx *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_RemoveGfx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_RemoveGfx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_RemoveGfx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_RemoveGfx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_RemoveGfx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_RemoveGfx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_AddGfx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_AddGfx *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_AddGfx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_AddGfx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_AddGfx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_AddGfx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_AddGfx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_AddGfx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_ModifyGfx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_ModifyGfx *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_ModifyGfx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_ModifyGfx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_ModifyGfx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_ModifyGfx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_ModifyGfx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_ModifyGfx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_OpenGfx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_OpenGfx *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_OpenGfx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_OpenGfx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_OpenGfx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_OpenGfx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_OpenGfx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_OpenGfx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_Logon_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_Logon *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_Logon_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_Logon *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_Logon_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_Logon_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_Logon(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_Logon_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_Logoff_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_Logoff *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_Logoff_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_Logoff *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_Logoff_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_Logoff_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_Logoff(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_Logoff_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_RegisterSessionNotificationEvent_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_RegisterSessionNotificationEvent *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_RegisterSessionNotificationEvent_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_RegisterSessionNotificationEvent *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_RegisterSessionNotificationEvent_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_RegisterSessionNotificationEvent_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_RegisterSessionNotificationEvent(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_RegisterSessionNotificationEvent_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_UnregisterSessionNotificationEvent_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_UnregisterSessionNotificationEvent *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_UnregisterSessionNotificationEvent_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_UnregisterSessionNotificationEvent *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_UnregisterSessionNotificationEvent_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_UnregisterSessionNotificationEvent_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_UnregisterSessionNotificationEvent(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_UnregisterSessionNotificationEvent_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_SessionConnectState_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_SessionConnectState *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_SessionConnectState_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_SessionConnectState *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_SessionConnectState_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_SessionConnectState_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_SessionConnectState(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_SessionConnectState_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_DriverOpenDrvRegKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_DriverOpenDrvRegKey *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_DriverOpenDrvRegKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_DriverOpenDrvRegKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_DriverOpenDrvRegKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_DriverOpenDrvRegKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_DriverOpenDrvRegKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_DriverOpenDrvRegKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_AdvisePreferredDeviceChange_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_AdvisePreferredDeviceChange *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_AdvisePreferredDeviceChange_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_AdvisePreferredDeviceChange *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_AdvisePreferredDeviceChange_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_AdvisePreferredDeviceChange_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_AdvisePreferredDeviceChange(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_AdvisePreferredDeviceChange_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_audiosrv_GetPnpInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct audiosrv_GetPnpInfo *r;
+};
+
+static struct tevent_req *_s3_compat_audiosrv_GetPnpInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct audiosrv_GetPnpInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_audiosrv_GetPnpInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_audiosrv_GetPnpInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _audiosrv_GetPnpInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_audiosrv_GetPnpInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_audiosrv_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_CreatezoneFactoriesList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_CreatezoneFactoriesList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_CreateGfxFactoriesList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_CreateGfxFactoriesList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_CreateGfxList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_CreateGfxList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_RemoveGfx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_RemoveGfx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_AddGfx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_AddGfx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_ModifyGfx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_ModifyGfx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_OpenGfx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_OpenGfx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_Logon_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_Logon_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_Logoff_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_Logoff_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_RegisterSessionNotificationEvent_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_RegisterSessionNotificationEvent_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_UnregisterSessionNotificationEvent_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_UnregisterSessionNotificationEvent_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_SessionConnectState_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_SessionConnectState_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_DriverOpenDrvRegKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_DriverOpenDrvRegKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_AdvisePreferredDeviceChange_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_AdvisePreferredDeviceChange_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_audiosrv_GetPnpInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_audiosrv_GetPnpInfo_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_audiosrv_epv[] = {
+       .name = "_s3_compat_audiosrv",
+       .table = &ndr_table_audiosrv,
+       .num_fns = 15,
+       .fns = _s3_compat_audiosrv_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_audiosrv(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_audiosrv.h b/bin/default/librpc/gen_ndr/s3compat_audiosrv.h
new file mode 100644 (file)
index 0000000..bc6c53f
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_audiosrv.h"
+#ifndef __S3COMPAT_AUDIOSRV__
+#define __S3COMPAT_AUDIOSRV__
+void _audiosrv_CreatezoneFactoriesList(struct pipes_struct *p, struct audiosrv_CreatezoneFactoriesList *r);
+void _audiosrv_CreateGfxFactoriesList(struct pipes_struct *p, struct audiosrv_CreateGfxFactoriesList *r);
+void _audiosrv_CreateGfxList(struct pipes_struct *p, struct audiosrv_CreateGfxList *r);
+void _audiosrv_RemoveGfx(struct pipes_struct *p, struct audiosrv_RemoveGfx *r);
+void _audiosrv_AddGfx(struct pipes_struct *p, struct audiosrv_AddGfx *r);
+void _audiosrv_ModifyGfx(struct pipes_struct *p, struct audiosrv_ModifyGfx *r);
+void _audiosrv_OpenGfx(struct pipes_struct *p, struct audiosrv_OpenGfx *r);
+void _audiosrv_Logon(struct pipes_struct *p, struct audiosrv_Logon *r);
+void _audiosrv_Logoff(struct pipes_struct *p, struct audiosrv_Logoff *r);
+void _audiosrv_RegisterSessionNotificationEvent(struct pipes_struct *p, struct audiosrv_RegisterSessionNotificationEvent *r);
+void _audiosrv_UnregisterSessionNotificationEvent(struct pipes_struct *p, struct audiosrv_UnregisterSessionNotificationEvent *r);
+void _audiosrv_SessionConnectState(struct pipes_struct *p, struct audiosrv_SessionConnectState *r);
+void _audiosrv_DriverOpenDrvRegKey(struct pipes_struct *p, struct audiosrv_DriverOpenDrvRegKey *r);
+void _audiosrv_AdvisePreferredDeviceChange(struct pipes_struct *p, struct audiosrv_AdvisePreferredDeviceChange *r);
+void _audiosrv_GetPnpInfo(struct pipes_struct *p, struct audiosrv_GetPnpInfo *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_audiosrv(struct dcerpc_server *server);
+#endif /* __S3COMPAT_AUDIOSRV__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_auth.c b/bin/default/librpc/gen_ndr/s3compat_auth.c
new file mode 100644 (file)
index 0000000..f32b5ca
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_auth.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_auth_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_auth_epv[] = {
+       .name = "_s3_compat_auth",
+       .table = &ndr_table_auth,
+       .num_fns = 0,
+       .fns = _s3_compat_auth_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_auth(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_auth.h b/bin/default/librpc/gen_ndr/s3compat_auth.h
new file mode 100644 (file)
index 0000000..af6e557
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_auth.h"
+#ifndef __S3COMPAT_AUTH__
+#define __S3COMPAT_AUTH__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_auth(struct dcerpc_server *server);
+#endif /* __S3COMPAT_AUTH__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_backupkey.c b/bin/default/librpc/gen_ndr/s3compat_backupkey.c
new file mode 100644 (file)
index 0000000..39d2124
--- /dev/null
@@ -0,0 +1,83 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_backupkey.h"
+
+struct _s3_compat_bkrp_BackupKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct bkrp_BackupKey *r;
+};
+
+static struct tevent_req *_s3_compat_bkrp_BackupKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct bkrp_BackupKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_bkrp_BackupKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_bkrp_BackupKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.data_out = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.data_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data_out_len = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.data_out_len, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _bkrp_BackupKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_bkrp_BackupKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_backupkey_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_bkrp_BackupKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_bkrp_BackupKey_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_backupkey_epv[] = {
+       .name = "_s3_compat_backupkey",
+       .table = &ndr_table_backupkey,
+       .num_fns = 1,
+       .fns = _s3_compat_backupkey_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_backupkey(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_backupkey.h b/bin/default/librpc/gen_ndr/s3compat_backupkey.h
new file mode 100644 (file)
index 0000000..f87c0e3
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_backupkey.h"
+#ifndef __S3COMPAT_BACKUPKEY__
+#define __S3COMPAT_BACKUPKEY__
+WERROR _bkrp_BackupKey(struct pipes_struct *p, struct bkrp_BackupKey *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_backupkey(struct dcerpc_server *server);
+#endif /* __S3COMPAT_BACKUPKEY__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_bkupblobs.c b/bin/default/librpc/gen_ndr/s3compat_bkupblobs.c
new file mode 100644 (file)
index 0000000..98ee8c7
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_bkupblobs.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_bkup_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_bkup_epv[] = {
+       .name = "_s3_compat_bkup",
+       .table = &ndr_table_bkup,
+       .num_fns = 0,
+       .fns = _s3_compat_bkup_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_bkup(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_bkupblobs.h b/bin/default/librpc/gen_ndr/s3compat_bkupblobs.h
new file mode 100644 (file)
index 0000000..d06c977
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_bkupblobs.h"
+#ifndef __S3COMPAT_BKUP__
+#define __S3COMPAT_BKUP__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_bkup(struct dcerpc_server *server);
+#endif /* __S3COMPAT_BKUP__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_browser.c b/bin/default/librpc/gen_ndr/s3compat_browser.c
new file mode 100644 (file)
index 0000000..e83fd57
--- /dev/null
@@ -0,0 +1,618 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_browser.h"
+
+struct _s3_compat_BrowserrServerEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrServerEnum *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrServerEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrServerEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrServerEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrServerEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrServerEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrServerEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrDebugCall_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrDebugCall *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrDebugCall_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrDebugCall *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrDebugCall_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrDebugCall_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrDebugCall(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrDebugCall_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrQueryOtherDomains_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrQueryOtherDomains *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrQueryOtherDomains_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrQueryOtherDomains *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrQueryOtherDomains_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrQueryOtherDomains_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.total_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _BrowserrQueryOtherDomains(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrQueryOtherDomains_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrResetNetlogonState_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrResetNetlogonState *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrResetNetlogonState_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrResetNetlogonState *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrResetNetlogonState_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrResetNetlogonState_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrResetNetlogonState(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrResetNetlogonState_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrDebugTrace_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrDebugTrace *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrDebugTrace_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrDebugTrace *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrDebugTrace_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrDebugTrace_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrDebugTrace(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrDebugTrace_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrQueryStatistics_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrQueryStatistics *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrQueryStatistics_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrQueryStatistics *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrQueryStatistics_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrQueryStatistics_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrQueryStatistics(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrQueryStatistics_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserResetStatistics_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserResetStatistics *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserResetStatistics_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserResetStatistics *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserResetStatistics_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserResetStatistics_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserResetStatistics(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserResetStatistics_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_NetrBrowserStatisticsClear_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrBrowserStatisticsClear *r;
+};
+
+static struct tevent_req *_s3_compat_NetrBrowserStatisticsClear_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrBrowserStatisticsClear *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrBrowserStatisticsClear_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrBrowserStatisticsClear_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrBrowserStatisticsClear(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrBrowserStatisticsClear_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_NetrBrowserStatisticsGet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrBrowserStatisticsGet *r;
+};
+
+static struct tevent_req *_s3_compat_NetrBrowserStatisticsGet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrBrowserStatisticsGet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrBrowserStatisticsGet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrBrowserStatisticsGet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrBrowserStatisticsGet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrBrowserStatisticsGet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrSetNetlogonState_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrSetNetlogonState *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrSetNetlogonState_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrSetNetlogonState *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrSetNetlogonState_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrSetNetlogonState_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrSetNetlogonState(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrSetNetlogonState_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrQueryEmulatedDomains_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrQueryEmulatedDomains *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrQueryEmulatedDomains_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrQueryEmulatedDomains *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrQueryEmulatedDomains_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrQueryEmulatedDomains_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrQueryEmulatedDomains(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrQueryEmulatedDomains_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_BrowserrServerEnumEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct BrowserrServerEnumEx *r;
+};
+
+static struct tevent_req *_s3_compat_BrowserrServerEnumEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct BrowserrServerEnumEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_BrowserrServerEnumEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_BrowserrServerEnumEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _BrowserrServerEnumEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_BrowserrServerEnumEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_browser_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrServerEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrServerEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrDebugCall_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrDebugCall_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrQueryOtherDomains_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrQueryOtherDomains_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrResetNetlogonState_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrResetNetlogonState_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrDebugTrace_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrDebugTrace_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrQueryStatistics_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrQueryStatistics_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserResetStatistics_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserResetStatistics_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrBrowserStatisticsClear_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrBrowserStatisticsClear_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrBrowserStatisticsGet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrBrowserStatisticsGet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrSetNetlogonState_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrSetNetlogonState_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrQueryEmulatedDomains_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrQueryEmulatedDomains_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_BrowserrServerEnumEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_BrowserrServerEnumEx_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_browser_epv[] = {
+       .name = "_s3_compat_browser",
+       .table = &ndr_table_browser,
+       .num_fns = 12,
+       .fns = _s3_compat_browser_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_browser(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_browser.h b/bin/default/librpc/gen_ndr/s3compat_browser.h
new file mode 100644 (file)
index 0000000..1a4a7dc
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_browser.h"
+#ifndef __S3COMPAT_BROWSER__
+#define __S3COMPAT_BROWSER__
+void _BrowserrServerEnum(struct pipes_struct *p, struct BrowserrServerEnum *r);
+void _BrowserrDebugCall(struct pipes_struct *p, struct BrowserrDebugCall *r);
+WERROR _BrowserrQueryOtherDomains(struct pipes_struct *p, struct BrowserrQueryOtherDomains *r);
+void _BrowserrResetNetlogonState(struct pipes_struct *p, struct BrowserrResetNetlogonState *r);
+void _BrowserrDebugTrace(struct pipes_struct *p, struct BrowserrDebugTrace *r);
+void _BrowserrQueryStatistics(struct pipes_struct *p, struct BrowserrQueryStatistics *r);
+void _BrowserResetStatistics(struct pipes_struct *p, struct BrowserResetStatistics *r);
+void _NetrBrowserStatisticsClear(struct pipes_struct *p, struct NetrBrowserStatisticsClear *r);
+void _NetrBrowserStatisticsGet(struct pipes_struct *p, struct NetrBrowserStatisticsGet *r);
+void _BrowserrSetNetlogonState(struct pipes_struct *p, struct BrowserrSetNetlogonState *r);
+void _BrowserrQueryEmulatedDomains(struct pipes_struct *p, struct BrowserrQueryEmulatedDomains *r);
+void _BrowserrServerEnumEx(struct pipes_struct *p, struct BrowserrServerEnumEx *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_browser(struct dcerpc_server *server);
+#endif /* __S3COMPAT_BROWSER__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dbgidl.c b/bin/default/librpc/gen_ndr/s3compat_dbgidl.c
new file mode 100644 (file)
index 0000000..0b387d8
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dbgidl.h"
+
+struct _s3_compat_dummy_dbgidl_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dummy_dbgidl *r;
+};
+
+static struct tevent_req *_s3_compat_dummy_dbgidl_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dummy_dbgidl *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dummy_dbgidl_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dummy_dbgidl_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _dummy_dbgidl(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dummy_dbgidl_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dbgidl_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dummy_dbgidl_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dummy_dbgidl_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dbgidl_epv[] = {
+       .name = "_s3_compat_dbgidl",
+       .table = &ndr_table_dbgidl,
+       .num_fns = 1,
+       .fns = _s3_compat_dbgidl_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dbgidl(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dbgidl.h b/bin/default/librpc/gen_ndr/s3compat_dbgidl.h
new file mode 100644 (file)
index 0000000..c99c916
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dbgidl.h"
+#ifndef __S3COMPAT_DBGIDL__
+#define __S3COMPAT_DBGIDL__
+void _dummy_dbgidl(struct pipes_struct *p, struct dummy_dbgidl *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dbgidl(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DBGIDL__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dcerpc.c b/bin/default/librpc/gen_ndr/s3compat_dcerpc.c
new file mode 100644 (file)
index 0000000..addff70
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dcerpc.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dcerpc_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dcerpc_epv[] = {
+       .name = "_s3_compat_dcerpc",
+       .table = &ndr_table_dcerpc,
+       .num_fns = 0,
+       .fns = _s3_compat_dcerpc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dcerpc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dcerpc.h b/bin/default/librpc/gen_ndr/s3compat_dcerpc.h
new file mode 100644 (file)
index 0000000..f6e8eef
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dcerpc.h"
+#ifndef __S3COMPAT_DCERPC__
+#define __S3COMPAT_DCERPC__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dcerpc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DCERPC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dfs.c b/bin/default/librpc/gen_ndr/s3compat_dfs.c
new file mode 100644 (file)
index 0000000..1b1c8b0
--- /dev/null
@@ -0,0 +1,1176 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dfs.h"
+
+struct _s3_compat_dfs_GetManagerVersion_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_GetManagerVersion *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_GetManagerVersion_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_GetManagerVersion *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_GetManagerVersion_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_GetManagerVersion_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.version = talloc_zero(r, enum dfs_ManagerVersion);
+       if (tevent_req_nomem(r->out.version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _dfs_GetManagerVersion(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_GetManagerVersion_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Add_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Add *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Add_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Add *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Add_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Add_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Add(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Add_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Remove_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Remove *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Remove_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Remove *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Remove_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Remove_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Remove(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Remove_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_SetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_SetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_SetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_SetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_SetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_SetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_SetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_SetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_GetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_GetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_GetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_GetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_GetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_GetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union dfs_Info);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _dfs_GetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_GetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Enum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Enum *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Enum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Enum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Enum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Enum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.total = r->in.total;
+       r->out.result = _dfs_Enum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Enum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Rename_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Rename *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Rename_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Rename *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Rename_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Rename_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Rename(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Rename_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Move_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Move *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Move_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Move *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Move_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Move_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Move(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Move_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_ManagerGetConfigInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_ManagerGetConfigInfo *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_ManagerGetConfigInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_ManagerGetConfigInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_ManagerGetConfigInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_ManagerGetConfigInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_ManagerGetConfigInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_ManagerGetConfigInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_ManagerSendSiteInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_ManagerSendSiteInfo *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_ManagerSendSiteInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_ManagerSendSiteInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_ManagerSendSiteInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_ManagerSendSiteInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_ManagerSendSiteInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_ManagerSendSiteInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_AddFtRoot_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_AddFtRoot *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_AddFtRoot_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_AddFtRoot *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_AddFtRoot_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_AddFtRoot_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.unknown2 = r->in.unknown2;
+       r->out.result = _dfs_AddFtRoot(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_AddFtRoot_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_RemoveFtRoot_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_RemoveFtRoot *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_RemoveFtRoot_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_RemoveFtRoot *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_RemoveFtRoot_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_RemoveFtRoot_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.unknown = r->in.unknown;
+       r->out.result = _dfs_RemoveFtRoot(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_RemoveFtRoot_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_AddStdRoot_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_AddStdRoot *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_AddStdRoot_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_AddStdRoot *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_AddStdRoot_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_AddStdRoot_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_AddStdRoot(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_AddStdRoot_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_RemoveStdRoot_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_RemoveStdRoot *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_RemoveStdRoot_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_RemoveStdRoot *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_RemoveStdRoot_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_RemoveStdRoot_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_RemoveStdRoot(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_RemoveStdRoot_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_ManagerInitialize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_ManagerInitialize *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_ManagerInitialize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_ManagerInitialize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_ManagerInitialize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_ManagerInitialize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_ManagerInitialize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_ManagerInitialize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_AddStdRootForced_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_AddStdRootForced *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_AddStdRootForced_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_AddStdRootForced *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_AddStdRootForced_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_AddStdRootForced_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_AddStdRootForced(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_AddStdRootForced_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_GetDcAddress_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_GetDcAddress *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_GetDcAddress_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_GetDcAddress *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_GetDcAddress_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_GetDcAddress_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.server_fullname = r->in.server_fullname;
+       r->out.is_root = r->in.is_root;
+       r->out.ttl = r->in.ttl;
+       r->out.result = _dfs_GetDcAddress(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_GetDcAddress_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_SetDcAddress_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_SetDcAddress *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_SetDcAddress_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_SetDcAddress *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_SetDcAddress_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_SetDcAddress_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_SetDcAddress(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_SetDcAddress_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_FlushFtTable_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_FlushFtTable *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_FlushFtTable_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_FlushFtTable *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_FlushFtTable_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_FlushFtTable_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_FlushFtTable(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_FlushFtTable_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Add2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Add2 *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Add2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Add2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Add2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Add2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Add2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Add2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_Remove2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_Remove2 *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_Remove2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_Remove2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_Remove2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_Remove2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_Remove2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_Remove2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_EnumEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_EnumEx *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_EnumEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_EnumEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_EnumEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_EnumEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.total = r->in.total;
+       r->out.result = _dfs_EnumEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_EnumEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dfs_SetInfo2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_SetInfo2 *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_SetInfo2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_SetInfo2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_SetInfo2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_SetInfo2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dfs_SetInfo2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_SetInfo2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_netdfs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_GetManagerVersion_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_GetManagerVersion_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Add_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Add_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Remove_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Remove_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_SetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_SetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_GetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_GetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Enum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Enum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Rename_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Rename_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Move_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Move_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_ManagerGetConfigInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_ManagerGetConfigInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_ManagerSendSiteInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_ManagerSendSiteInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_AddFtRoot_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_AddFtRoot_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_RemoveFtRoot_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_RemoveFtRoot_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_AddStdRoot_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_AddStdRoot_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_RemoveStdRoot_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_RemoveStdRoot_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_ManagerInitialize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_ManagerInitialize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_AddStdRootForced_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_AddStdRootForced_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_GetDcAddress_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_GetDcAddress_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_SetDcAddress_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_SetDcAddress_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_FlushFtTable_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_FlushFtTable_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Add2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Add2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_Remove2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_Remove2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_EnumEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_EnumEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_SetInfo2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_SetInfo2_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_netdfs_epv[] = {
+       .name = "_s3_compat_netdfs",
+       .table = &ndr_table_netdfs,
+       .num_fns = 23,
+       .fns = _s3_compat_netdfs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_netdfs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dfs.h b/bin/default/librpc/gen_ndr/s3compat_dfs.h
new file mode 100644 (file)
index 0000000..80312bb
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dfs.h"
+#ifndef __S3COMPAT_NETDFS__
+#define __S3COMPAT_NETDFS__
+void _dfs_GetManagerVersion(struct pipes_struct *p, struct dfs_GetManagerVersion *r);
+WERROR _dfs_Add(struct pipes_struct *p, struct dfs_Add *r);
+WERROR _dfs_Remove(struct pipes_struct *p, struct dfs_Remove *r);
+WERROR _dfs_SetInfo(struct pipes_struct *p, struct dfs_SetInfo *r);
+WERROR _dfs_GetInfo(struct pipes_struct *p, struct dfs_GetInfo *r);
+WERROR _dfs_Enum(struct pipes_struct *p, struct dfs_Enum *r);
+WERROR _dfs_Rename(struct pipes_struct *p, struct dfs_Rename *r);
+WERROR _dfs_Move(struct pipes_struct *p, struct dfs_Move *r);
+WERROR _dfs_ManagerGetConfigInfo(struct pipes_struct *p, struct dfs_ManagerGetConfigInfo *r);
+WERROR _dfs_ManagerSendSiteInfo(struct pipes_struct *p, struct dfs_ManagerSendSiteInfo *r);
+WERROR _dfs_AddFtRoot(struct pipes_struct *p, struct dfs_AddFtRoot *r);
+WERROR _dfs_RemoveFtRoot(struct pipes_struct *p, struct dfs_RemoveFtRoot *r);
+WERROR _dfs_AddStdRoot(struct pipes_struct *p, struct dfs_AddStdRoot *r);
+WERROR _dfs_RemoveStdRoot(struct pipes_struct *p, struct dfs_RemoveStdRoot *r);
+WERROR _dfs_ManagerInitialize(struct pipes_struct *p, struct dfs_ManagerInitialize *r);
+WERROR _dfs_AddStdRootForced(struct pipes_struct *p, struct dfs_AddStdRootForced *r);
+WERROR _dfs_GetDcAddress(struct pipes_struct *p, struct dfs_GetDcAddress *r);
+WERROR _dfs_SetDcAddress(struct pipes_struct *p, struct dfs_SetDcAddress *r);
+WERROR _dfs_FlushFtTable(struct pipes_struct *p, struct dfs_FlushFtTable *r);
+WERROR _dfs_Add2(struct pipes_struct *p, struct dfs_Add2 *r);
+WERROR _dfs_Remove2(struct pipes_struct *p, struct dfs_Remove2 *r);
+WERROR _dfs_EnumEx(struct pipes_struct *p, struct dfs_EnumEx *r);
+WERROR _dfs_SetInfo2(struct pipes_struct *p, struct dfs_SetInfo2 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_netdfs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NETDFS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dfsblobs.c b/bin/default/librpc/gen_ndr/s3compat_dfsblobs.c
new file mode 100644 (file)
index 0000000..44eeb13
--- /dev/null
@@ -0,0 +1,78 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dfsblobs.h"
+
+struct _s3_compat_dfs_GetDFSReferral_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dfs_GetDFSReferral *r;
+};
+
+static struct tevent_req *_s3_compat_dfs_GetDFSReferral_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dfs_GetDFSReferral *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dfs_GetDFSReferral_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dfs_GetDFSReferral_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resp = talloc_zero(r, struct dfs_referral_resp);
+       if (tevent_req_nomem(r->out.resp, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _dfs_GetDFSReferral(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dfs_GetDFSReferral_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dfsblobs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dfs_GetDFSReferral_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dfs_GetDFSReferral_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dfsblobs_epv[] = {
+       .name = "_s3_compat_dfsblobs",
+       .table = &ndr_table_dfsblobs,
+       .num_fns = 1,
+       .fns = _s3_compat_dfsblobs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dfsblobs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dfsblobs.h b/bin/default/librpc/gen_ndr/s3compat_dfsblobs.h
new file mode 100644 (file)
index 0000000..1f20d24
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dfsblobs.h"
+#ifndef __S3COMPAT_DFSBLOBS__
+#define __S3COMPAT_DFSBLOBS__
+void _dfs_GetDFSReferral(struct pipes_struct *p, struct dfs_GetDFSReferral *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dfsblobs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DFSBLOBS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dns.c b/bin/default/librpc/gen_ndr/s3compat_dns.c
new file mode 100644 (file)
index 0000000..1386a1c
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dns.h"
+
+struct _s3_compat_decode_dns_name_packet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_dns_name_packet *r;
+};
+
+static struct tevent_req *_s3_compat_decode_dns_name_packet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_dns_name_packet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_dns_name_packet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_dns_name_packet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_dns_name_packet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_dns_name_packet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dns_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_dns_name_packet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_dns_name_packet_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dns_epv[] = {
+       .name = "_s3_compat_dns",
+       .table = &ndr_table_dns,
+       .num_fns = 1,
+       .fns = _s3_compat_dns_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dns(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dns.h b/bin/default/librpc/gen_ndr/s3compat_dns.h
new file mode 100644 (file)
index 0000000..785b406
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dns.h"
+#ifndef __S3COMPAT_DNS__
+#define __S3COMPAT_DNS__
+void _decode_dns_name_packet(struct pipes_struct *p, struct decode_dns_name_packet *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dns(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DNS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dnsserver.c b/bin/default/librpc/gen_ndr/s3compat_dnsserver.c
new file mode 100644 (file)
index 0000000..4ef95d4
--- /dev/null
@@ -0,0 +1,579 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dnsserver.h"
+
+struct _s3_compat_DnssrvOperation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvOperation *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvOperation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvOperation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvOperation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvOperation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DnssrvOperation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvOperation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvQuery_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvQuery *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvQuery_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvQuery *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvQuery_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvQuery_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwTypeId = talloc_zero(r, enum DNS_RPC_TYPEID);
+       if (tevent_req_nomem(r->out.pdwTypeId, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ppData = talloc_zero(r, union DNSSRV_RPC_UNION);
+       if (tevent_req_nomem(r->out.ppData, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvQuery(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvQuery_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvComplexOperation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvComplexOperation *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvComplexOperation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvComplexOperation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvComplexOperation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvComplexOperation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwTypeOut = talloc_zero(r, enum DNS_RPC_TYPEID);
+       if (tevent_req_nomem(r->out.pdwTypeOut, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ppDataOut = talloc_zero(r, union DNSSRV_RPC_UNION);
+       if (tevent_req_nomem(r->out.ppDataOut, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvComplexOperation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvComplexOperation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvEnumRecords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvEnumRecords *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvEnumRecords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvEnumRecords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvEnumRecords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvEnumRecords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwBufferLength = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.pdwBufferLength, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pBuffer = talloc_zero(r, struct DNS_RPC_RECORDS_ARRAY *);
+       if (tevent_req_nomem(r->out.pBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvEnumRecords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvEnumRecords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvUpdateRecord_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvUpdateRecord *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvUpdateRecord_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvUpdateRecord *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvUpdateRecord_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvUpdateRecord_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DnssrvUpdateRecord(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvUpdateRecord_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvOperation2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvOperation2 *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvOperation2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvOperation2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvOperation2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvOperation2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DnssrvOperation2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvOperation2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvQuery2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvQuery2 *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvQuery2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvQuery2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvQuery2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvQuery2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwTypeId = talloc_zero(r, enum DNS_RPC_TYPEID);
+       if (tevent_req_nomem(r->out.pdwTypeId, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ppData = talloc_zero(r, union DNSSRV_RPC_UNION);
+       if (tevent_req_nomem(r->out.ppData, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvQuery2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvQuery2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvComplexOperation2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvComplexOperation2 *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvComplexOperation2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvComplexOperation2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvComplexOperation2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvComplexOperation2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwTypeOut = talloc_zero(r, enum DNS_RPC_TYPEID);
+       if (tevent_req_nomem(r->out.pdwTypeOut, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ppDataOut = talloc_zero(r, union DNSSRV_RPC_UNION);
+       if (tevent_req_nomem(r->out.ppDataOut, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvComplexOperation2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvComplexOperation2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvEnumRecords2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvEnumRecords2 *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvEnumRecords2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvEnumRecords2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvEnumRecords2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvEnumRecords2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdwBufferLength = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.pdwBufferLength, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pBuffer = talloc_zero(r, struct DNS_RPC_RECORDS_ARRAY *);
+       if (tevent_req_nomem(r->out.pBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _DnssrvEnumRecords2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvEnumRecords2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DnssrvUpdateRecord2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DnssrvUpdateRecord2 *r;
+};
+
+static struct tevent_req *_s3_compat_DnssrvUpdateRecord2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DnssrvUpdateRecord2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DnssrvUpdateRecord2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DnssrvUpdateRecord2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DnssrvUpdateRecord2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DnssrvUpdateRecord2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dnsserver_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvOperation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvOperation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvQuery_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvQuery_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvComplexOperation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvComplexOperation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvEnumRecords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvEnumRecords_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvUpdateRecord_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvUpdateRecord_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvOperation2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvOperation2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvQuery2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvQuery2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvComplexOperation2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvComplexOperation2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvEnumRecords2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvEnumRecords2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DnssrvUpdateRecord2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DnssrvUpdateRecord2_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dnsserver_epv[] = {
+       .name = "_s3_compat_dnsserver",
+       .table = &ndr_table_dnsserver,
+       .num_fns = 10,
+       .fns = _s3_compat_dnsserver_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dnsserver(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dnsserver.h b/bin/default/librpc/gen_ndr/s3compat_dnsserver.h
new file mode 100644 (file)
index 0000000..5b9a773
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dnsserver.h"
+#ifndef __S3COMPAT_DNSSERVER__
+#define __S3COMPAT_DNSSERVER__
+WERROR _DnssrvOperation(struct pipes_struct *p, struct DnssrvOperation *r);
+WERROR _DnssrvQuery(struct pipes_struct *p, struct DnssrvQuery *r);
+WERROR _DnssrvComplexOperation(struct pipes_struct *p, struct DnssrvComplexOperation *r);
+WERROR _DnssrvEnumRecords(struct pipes_struct *p, struct DnssrvEnumRecords *r);
+WERROR _DnssrvUpdateRecord(struct pipes_struct *p, struct DnssrvUpdateRecord *r);
+WERROR _DnssrvOperation2(struct pipes_struct *p, struct DnssrvOperation2 *r);
+WERROR _DnssrvQuery2(struct pipes_struct *p, struct DnssrvQuery2 *r);
+WERROR _DnssrvComplexOperation2(struct pipes_struct *p, struct DnssrvComplexOperation2 *r);
+WERROR _DnssrvEnumRecords2(struct pipes_struct *p, struct DnssrvEnumRecords2 *r);
+WERROR _DnssrvUpdateRecord2(struct pipes_struct *p, struct DnssrvUpdateRecord2 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dnsserver(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DNSSERVER__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_drsblobs.c b/bin/default/librpc/gen_ndr/s3compat_drsblobs.c
new file mode 100644 (file)
index 0000000..9205507
--- /dev/null
@@ -0,0 +1,758 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_drsblobs.h"
+
+struct _s3_compat_decode_replPropertyMetaData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_replPropertyMetaData *r;
+};
+
+static struct tevent_req *_s3_compat_decode_replPropertyMetaData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_replPropertyMetaData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_replPropertyMetaData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_replPropertyMetaData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_replPropertyMetaData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_replPropertyMetaData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_replUpToDateVector_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_replUpToDateVector *r;
+};
+
+static struct tevent_req *_s3_compat_decode_replUpToDateVector_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_replUpToDateVector *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_replUpToDateVector_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_replUpToDateVector_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_replUpToDateVector(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_replUpToDateVector_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_repsFromTo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_repsFromTo *r;
+};
+
+static struct tevent_req *_s3_compat_decode_repsFromTo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_repsFromTo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_repsFromTo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_repsFromTo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_repsFromTo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_repsFromTo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_partialAttributeSet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_partialAttributeSet *r;
+};
+
+static struct tevent_req *_s3_compat_decode_partialAttributeSet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_partialAttributeSet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_partialAttributeSet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_partialAttributeSet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_partialAttributeSet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_partialAttributeSet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_prefixMap_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_prefixMap *r;
+};
+
+static struct tevent_req *_s3_compat_decode_prefixMap_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_prefixMap *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_prefixMap_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_prefixMap_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_prefixMap(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_prefixMap_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_ldapControlDirSync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_ldapControlDirSync *r;
+};
+
+static struct tevent_req *_s3_compat_decode_ldapControlDirSync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_ldapControlDirSync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_ldapControlDirSync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_ldapControlDirSync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_ldapControlDirSync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_ldapControlDirSync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_supplementalCredentials_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_supplementalCredentials *r;
+};
+
+static struct tevent_req *_s3_compat_decode_supplementalCredentials_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_supplementalCredentials *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_supplementalCredentials_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_supplementalCredentials_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_supplementalCredentials(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_supplementalCredentials_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_Packages_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_Packages *r;
+};
+
+static struct tevent_req *_s3_compat_decode_Packages_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_Packages *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_Packages_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_Packages_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_Packages(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_Packages_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_PrimaryKerberos_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_PrimaryKerberos *r;
+};
+
+static struct tevent_req *_s3_compat_decode_PrimaryKerberos_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_PrimaryKerberos *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_PrimaryKerberos_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_PrimaryKerberos_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_PrimaryKerberos(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_PrimaryKerberos_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_PrimaryCLEARTEXT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_PrimaryCLEARTEXT *r;
+};
+
+static struct tevent_req *_s3_compat_decode_PrimaryCLEARTEXT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_PrimaryCLEARTEXT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_PrimaryCLEARTEXT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_PrimaryCLEARTEXT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_PrimaryCLEARTEXT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_PrimaryCLEARTEXT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_PrimaryWDigest_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_PrimaryWDigest *r;
+};
+
+static struct tevent_req *_s3_compat_decode_PrimaryWDigest_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_PrimaryWDigest *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_PrimaryWDigest_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_PrimaryWDigest_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_PrimaryWDigest(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_PrimaryWDigest_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_trustAuthInOut_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_trustAuthInOut *r;
+};
+
+static struct tevent_req *_s3_compat_decode_trustAuthInOut_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_trustAuthInOut *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_trustAuthInOut_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_trustAuthInOut_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_trustAuthInOut(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_trustAuthInOut_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_trustDomainPasswords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_trustDomainPasswords *r;
+};
+
+static struct tevent_req *_s3_compat_decode_trustDomainPasswords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_trustDomainPasswords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_trustDomainPasswords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_trustDomainPasswords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_trustDomainPasswords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_trustDomainPasswords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_ExtendedErrorInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_ExtendedErrorInfo *r;
+};
+
+static struct tevent_req *_s3_compat_decode_ExtendedErrorInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_ExtendedErrorInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_ExtendedErrorInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_ExtendedErrorInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_ExtendedErrorInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_ExtendedErrorInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_ForestTrustInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_ForestTrustInfo *r;
+};
+
+static struct tevent_req *_s3_compat_decode_ForestTrustInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_ForestTrustInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_ForestTrustInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_ForestTrustInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_ForestTrustInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_ForestTrustInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_drsblobs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_replPropertyMetaData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_replPropertyMetaData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_replUpToDateVector_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_replUpToDateVector_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_repsFromTo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_repsFromTo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_partialAttributeSet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_partialAttributeSet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_prefixMap_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_prefixMap_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_ldapControlDirSync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_ldapControlDirSync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_supplementalCredentials_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_supplementalCredentials_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_Packages_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_Packages_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_PrimaryKerberos_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_PrimaryKerberos_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_PrimaryCLEARTEXT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_PrimaryCLEARTEXT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_PrimaryWDigest_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_PrimaryWDigest_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_trustAuthInOut_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_trustAuthInOut_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_trustDomainPasswords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_trustDomainPasswords_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_ExtendedErrorInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_ExtendedErrorInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_ForestTrustInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_ForestTrustInfo_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_drsblobs_epv[] = {
+       .name = "_s3_compat_drsblobs",
+       .table = &ndr_table_drsblobs,
+       .num_fns = 15,
+       .fns = _s3_compat_drsblobs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_drsblobs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_drsblobs.h b/bin/default/librpc/gen_ndr/s3compat_drsblobs.h
new file mode 100644 (file)
index 0000000..fb7daa2
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_drsblobs.h"
+#ifndef __S3COMPAT_DRSBLOBS__
+#define __S3COMPAT_DRSBLOBS__
+void _decode_replPropertyMetaData(struct pipes_struct *p, struct decode_replPropertyMetaData *r);
+void _decode_replUpToDateVector(struct pipes_struct *p, struct decode_replUpToDateVector *r);
+void _decode_repsFromTo(struct pipes_struct *p, struct decode_repsFromTo *r);
+void _decode_partialAttributeSet(struct pipes_struct *p, struct decode_partialAttributeSet *r);
+void _decode_prefixMap(struct pipes_struct *p, struct decode_prefixMap *r);
+void _decode_ldapControlDirSync(struct pipes_struct *p, struct decode_ldapControlDirSync *r);
+void _decode_supplementalCredentials(struct pipes_struct *p, struct decode_supplementalCredentials *r);
+void _decode_Packages(struct pipes_struct *p, struct decode_Packages *r);
+void _decode_PrimaryKerberos(struct pipes_struct *p, struct decode_PrimaryKerberos *r);
+void _decode_PrimaryCLEARTEXT(struct pipes_struct *p, struct decode_PrimaryCLEARTEXT *r);
+void _decode_PrimaryWDigest(struct pipes_struct *p, struct decode_PrimaryWDigest *r);
+void _decode_trustAuthInOut(struct pipes_struct *p, struct decode_trustAuthInOut *r);
+void _decode_trustDomainPasswords(struct pipes_struct *p, struct decode_trustDomainPasswords *r);
+void _decode_ExtendedErrorInfo(struct pipes_struct *p, struct decode_ExtendedErrorInfo *r);
+void _decode_ForestTrustInfo(struct pipes_struct *p, struct decode_ForestTrustInfo *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_drsblobs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DRSBLOBS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_drsuapi.c b/bin/default/librpc/gen_ndr/s3compat_drsuapi.c
new file mode 100644 (file)
index 0000000..8422dfe
--- /dev/null
@@ -0,0 +1,1378 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_drsuapi.h"
+
+struct _s3_compat_drsuapi_DsBind_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsBind *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsBind_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsBind *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsBind_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsBind_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.bind_info = r->in.bind_info;
+       r->out.bind_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.bind_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsBind(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsBind_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsUnbind_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsUnbind *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsUnbind_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsUnbind *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsUnbind_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsUnbind_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.bind_handle = r->in.bind_handle;
+       r->out.result = _drsuapi_DsUnbind(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsUnbind_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaSync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaSync *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaSync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaSync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaSync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaSync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsReplicaSync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaSync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsGetNCChanges_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsGetNCChanges *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsGetNCChanges_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsGetNCChanges *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsGetNCChanges_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsGetNCChanges_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsGetNCChangesCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsGetNCChanges(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsGetNCChanges_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaUpdateRefs_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaUpdateRefs *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaUpdateRefs_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaUpdateRefs *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaUpdateRefs_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaUpdateRefs_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsReplicaUpdateRefs(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaUpdateRefs_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaAdd *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsReplicaAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaDel *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsReplicaDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaMod_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaMod *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaMod_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaMod *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaMod_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaMod_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsReplicaMod(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaMod_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_VERIFY_NAMES_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_VERIFY_NAMES *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_VERIFY_NAMES_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_VERIFY_NAMES *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_VERIFY_NAMES_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_VERIFY_NAMES_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_VERIFY_NAMES(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_VERIFY_NAMES_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsGetMemberships_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsGetMemberships *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsGetMemberships_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsGetMemberships *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsGetMemberships_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsGetMemberships_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsGetMembershipsCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsGetMemberships(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsGetMemberships_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_INTER_DOMAIN_MOVE *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_INTER_DOMAIN_MOVE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_INTER_DOMAIN_MOVE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsGetNT4ChangeLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsGetNT4ChangeLog *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsGetNT4ChangeLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsGetNT4ChangeLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsGetNT4ChangeLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsGetNT4ChangeLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union drsuapi_DsGetNT4ChangeLogInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsGetNT4ChangeLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsGetNT4ChangeLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsCrackNames_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsCrackNames *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsCrackNames_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsCrackNames *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsCrackNames_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsCrackNames_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsNameCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsCrackNames(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsCrackNames_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsWriteAccountSpn_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsWriteAccountSpn *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsWriteAccountSpn_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsWriteAccountSpn *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsWriteAccountSpn_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsWriteAccountSpn_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.res = talloc_zero(r, union drsuapi_DsWriteAccountSpnResult);
+       if (tevent_req_nomem(r->out.res, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsWriteAccountSpn(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsWriteAccountSpn_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsRemoveDSServer_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsRemoveDSServer *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsRemoveDSServer_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsRemoveDSServer *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsRemoveDSServer_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsRemoveDSServer_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.res = talloc_zero(r, union drsuapi_DsRemoveDSServerResult);
+       if (tevent_req_nomem(r->out.res, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsRemoveDSServer(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsRemoveDSServer_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_REMOVE_DS_DOMAIN *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_REMOVE_DS_DOMAIN *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_REMOVE_DS_DOMAIN(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsGetDomainControllerInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsGetDomainControllerInfo *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsGetDomainControllerInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsGetDomainControllerInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsGetDomainControllerInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsGetDomainControllerInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, enum drsuapi_DsGetDCInfoCtrLevels);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsGetDCInfoCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsGetDomainControllerInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsGetDomainControllerInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsAddEntry_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsAddEntry *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsAddEntry_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsAddEntry *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsAddEntry_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsAddEntry_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsAddEntryCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsAddEntry(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsAddEntry_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsExecuteKCC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsExecuteKCC *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsExecuteKCC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsExecuteKCC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsExecuteKCC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsExecuteKCC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _drsuapi_DsExecuteKCC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsExecuteKCC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsReplicaGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsReplicaGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsReplicaGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsReplicaGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsReplicaGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsReplicaGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_type = talloc_zero(r, enum drsuapi_DsReplicaInfoType);
+       if (tevent_req_nomem(r->out.info_type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union drsuapi_DsReplicaInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsReplicaGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsReplicaGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_ADD_SID_HISTORY_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_ADD_SID_HISTORY *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_ADD_SID_HISTORY_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_ADD_SID_HISTORY *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_ADD_SID_HISTORY_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_ADD_SID_HISTORY_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_ADD_SID_HISTORY(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_ADD_SID_HISTORY_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_DsGetMemberships2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_DsGetMemberships2 *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_DsGetMemberships2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_DsGetMemberships2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_DsGetMemberships2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_DsGetMemberships2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_DsGetMemberships2Ctr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_DsGetMemberships2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_DsGetMemberships2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_REPLICA_VERIFY_OBJECTS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct DRSUAPI_GET_OBJECT_EXISTENCE *r;
+};
+
+static struct tevent_req *_s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _DRSUAPI_GET_OBJECT_EXISTENCE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_drsuapi_QuerySitesByCost_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct drsuapi_QuerySitesByCost *r;
+};
+
+static struct tevent_req *_s3_compat_drsuapi_QuerySitesByCost_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct drsuapi_QuerySitesByCost *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_drsuapi_QuerySitesByCost_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_drsuapi_QuerySitesByCost_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ctr = talloc_zero(r, union drsuapi_QuerySitesByCostCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _drsuapi_QuerySitesByCost(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_drsuapi_QuerySitesByCost_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_drsuapi_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsBind_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsBind_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsUnbind_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsUnbind_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaSync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaSync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsGetNCChanges_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsGetNCChanges_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaUpdateRefs_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaUpdateRefs_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaMod_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaMod_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_VERIFY_NAMES_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_VERIFY_NAMES_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsGetMemberships_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsGetMemberships_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_INTER_DOMAIN_MOVE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsGetNT4ChangeLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsGetNT4ChangeLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsCrackNames_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsCrackNames_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsWriteAccountSpn_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsWriteAccountSpn_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsRemoveDSServer_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsRemoveDSServer_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_REMOVE_DS_DOMAIN_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsGetDomainControllerInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsGetDomainControllerInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsAddEntry_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsAddEntry_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsExecuteKCC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsExecuteKCC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsReplicaGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsReplicaGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_ADD_SID_HISTORY_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_ADD_SID_HISTORY_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_DsGetMemberships2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_DsGetMemberships2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_REPLICA_VERIFY_OBJECTS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_DRSUAPI_GET_OBJECT_EXISTENCE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_drsuapi_QuerySitesByCost_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_drsuapi_QuerySitesByCost_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_drsuapi_epv[] = {
+       .name = "_s3_compat_drsuapi",
+       .table = &ndr_table_drsuapi,
+       .num_fns = 25,
+       .fns = _s3_compat_drsuapi_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_drsuapi(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_drsuapi.h b/bin/default/librpc/gen_ndr/s3compat_drsuapi.h
new file mode 100644 (file)
index 0000000..1394e79
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_drsuapi.h"
+#ifndef __S3COMPAT_DRSUAPI__
+#define __S3COMPAT_DRSUAPI__
+WERROR _drsuapi_DsBind(struct pipes_struct *p, struct drsuapi_DsBind *r);
+WERROR _drsuapi_DsUnbind(struct pipes_struct *p, struct drsuapi_DsUnbind *r);
+WERROR _drsuapi_DsReplicaSync(struct pipes_struct *p, struct drsuapi_DsReplicaSync *r);
+WERROR _drsuapi_DsGetNCChanges(struct pipes_struct *p, struct drsuapi_DsGetNCChanges *r);
+WERROR _drsuapi_DsReplicaUpdateRefs(struct pipes_struct *p, struct drsuapi_DsReplicaUpdateRefs *r);
+WERROR _drsuapi_DsReplicaAdd(struct pipes_struct *p, struct drsuapi_DsReplicaAdd *r);
+WERROR _drsuapi_DsReplicaDel(struct pipes_struct *p, struct drsuapi_DsReplicaDel *r);
+WERROR _drsuapi_DsReplicaMod(struct pipes_struct *p, struct drsuapi_DsReplicaMod *r);
+WERROR _DRSUAPI_VERIFY_NAMES(struct pipes_struct *p, struct DRSUAPI_VERIFY_NAMES *r);
+WERROR _drsuapi_DsGetMemberships(struct pipes_struct *p, struct drsuapi_DsGetMemberships *r);
+WERROR _DRSUAPI_INTER_DOMAIN_MOVE(struct pipes_struct *p, struct DRSUAPI_INTER_DOMAIN_MOVE *r);
+WERROR _drsuapi_DsGetNT4ChangeLog(struct pipes_struct *p, struct drsuapi_DsGetNT4ChangeLog *r);
+WERROR _drsuapi_DsCrackNames(struct pipes_struct *p, struct drsuapi_DsCrackNames *r);
+WERROR _drsuapi_DsWriteAccountSpn(struct pipes_struct *p, struct drsuapi_DsWriteAccountSpn *r);
+WERROR _drsuapi_DsRemoveDSServer(struct pipes_struct *p, struct drsuapi_DsRemoveDSServer *r);
+WERROR _DRSUAPI_REMOVE_DS_DOMAIN(struct pipes_struct *p, struct DRSUAPI_REMOVE_DS_DOMAIN *r);
+WERROR _drsuapi_DsGetDomainControllerInfo(struct pipes_struct *p, struct drsuapi_DsGetDomainControllerInfo *r);
+WERROR _drsuapi_DsAddEntry(struct pipes_struct *p, struct drsuapi_DsAddEntry *r);
+WERROR _drsuapi_DsExecuteKCC(struct pipes_struct *p, struct drsuapi_DsExecuteKCC *r);
+WERROR _drsuapi_DsReplicaGetInfo(struct pipes_struct *p, struct drsuapi_DsReplicaGetInfo *r);
+WERROR _DRSUAPI_ADD_SID_HISTORY(struct pipes_struct *p, struct DRSUAPI_ADD_SID_HISTORY *r);
+WERROR _drsuapi_DsGetMemberships2(struct pipes_struct *p, struct drsuapi_DsGetMemberships2 *r);
+WERROR _DRSUAPI_REPLICA_VERIFY_OBJECTS(struct pipes_struct *p, struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r);
+WERROR _DRSUAPI_GET_OBJECT_EXISTENCE(struct pipes_struct *p, struct DRSUAPI_GET_OBJECT_EXISTENCE *r);
+WERROR _drsuapi_QuerySitesByCost(struct pipes_struct *p, struct drsuapi_QuerySitesByCost *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_drsuapi(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DRSUAPI__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dsbackup.c b/bin/default/librpc/gen_ndr/s3compat_dsbackup.c
new file mode 100644 (file)
index 0000000..278a7c7
--- /dev/null
@@ -0,0 +1,875 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dsbackup.h"
+
+struct _s3_compat_HrRBackupPrepare_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupPrepare *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupPrepare_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupPrepare *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupPrepare_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupPrepare_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupPrepare(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupPrepare_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupEnd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupEnd *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupEnd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupEnd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupEnd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupEnd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupEnd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupEnd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupGetAttachmentInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupGetAttachmentInformation *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupGetAttachmentInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupGetAttachmentInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupGetAttachmentInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupGetAttachmentInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupGetAttachmentInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupGetAttachmentInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupOpenFile_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupOpenFile *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupOpenFile_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupOpenFile *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupOpenFile_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupOpenFile_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupOpenFile(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupOpenFile_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupRead_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupRead *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupRead_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupRead *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupRead_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupRead_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupRead(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupRead_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupClose_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupClose *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupClose_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupClose *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupClose_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupClose_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupClose(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupClose_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupGetBackupLogs_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupGetBackupLogs *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupGetBackupLogs_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupGetBackupLogs *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupGetBackupLogs_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupGetBackupLogs_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupGetBackupLogs(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupGetBackupLogs_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupTruncateLogs_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupTruncateLogs *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupTruncateLogs_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupTruncateLogs *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupTruncateLogs_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupTruncateLogs_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupTruncateLogs(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupTruncateLogs_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRBackupPing_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRBackupPing *r;
+};
+
+static struct tevent_req *_s3_compat_HrRBackupPing_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRBackupPing *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRBackupPing_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRBackupPing_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRBackupPing(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRBackupPing_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_ad_backup_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupPrepare_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupPrepare_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupEnd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupEnd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupGetAttachmentInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupGetAttachmentInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupOpenFile_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupOpenFile_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupRead_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupRead_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupClose_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupClose_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupGetBackupLogs_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupGetBackupLogs_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupTruncateLogs_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupTruncateLogs_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRBackupPing_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRBackupPing_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_ad_backup_epv[] = {
+       .name = "_s3_compat_ad_backup",
+       .table = &ndr_table_ad_backup,
+       .num_fns = 9,
+       .fns = _s3_compat_ad_backup_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_ad_backup(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+struct _s3_compat_HrRIsNTDSOnline_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRIsNTDSOnline *r;
+};
+
+static struct tevent_req *_s3_compat_HrRIsNTDSOnline_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRIsNTDSOnline *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRIsNTDSOnline_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRIsNTDSOnline_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRIsNTDSOnline(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRIsNTDSOnline_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestorePrepare_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestorePrepare *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestorePrepare_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestorePrepare *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestorePrepare_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestorePrepare_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestorePrepare(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestorePrepare_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreRegister_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreRegister *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreRegister_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreRegister *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreRegister_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreRegister_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreRegister(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreRegister_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreRegisterComplete_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreRegisterComplete *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreRegisterComplete_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreRegisterComplete *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreRegisterComplete_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreRegisterComplete_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreRegisterComplete(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreRegisterComplete_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreGetDatabaseLocations_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreGetDatabaseLocations *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreGetDatabaseLocations_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreGetDatabaseLocations *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreGetDatabaseLocations_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreGetDatabaseLocations_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreGetDatabaseLocations(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreGetDatabaseLocations_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreEnd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreEnd *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreEnd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreEnd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreEnd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreEnd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreEnd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreEnd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreSetCurrentLogNumber_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreSetCurrentLogNumber *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreSetCurrentLogNumber_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreSetCurrentLogNumber *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreSetCurrentLogNumber_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreSetCurrentLogNumber_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreSetCurrentLogNumber(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreSetCurrentLogNumber_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_HrRRestoreCheckLogsForBackup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct HrRRestoreCheckLogsForBackup *r;
+};
+
+static struct tevent_req *_s3_compat_HrRRestoreCheckLogsForBackup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct HrRRestoreCheckLogsForBackup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_HrRRestoreCheckLogsForBackup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_HrRRestoreCheckLogsForBackup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _HrRRestoreCheckLogsForBackup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_HrRRestoreCheckLogsForBackup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_ad_restore_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRIsNTDSOnline_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRIsNTDSOnline_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestorePrepare_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestorePrepare_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreRegister_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreRegister_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreRegisterComplete_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreRegisterComplete_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreGetDatabaseLocations_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreGetDatabaseLocations_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreEnd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreEnd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreSetCurrentLogNumber_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreSetCurrentLogNumber_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_HrRRestoreCheckLogsForBackup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_HrRRestoreCheckLogsForBackup_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_ad_restore_epv[] = {
+       .name = "_s3_compat_ad_restore",
+       .table = &ndr_table_ad_restore,
+       .num_fns = 8,
+       .fns = _s3_compat_ad_restore_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_ad_restore(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dsbackup.h b/bin/default/librpc/gen_ndr/s3compat_dsbackup.h
new file mode 100644 (file)
index 0000000..fa05c74
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dsbackup.h"
+#ifndef __S3COMPAT_AD_BACKUP__
+#define __S3COMPAT_AD_BACKUP__
+void _HrRBackupPrepare(struct pipes_struct *p, struct HrRBackupPrepare *r);
+void _HrRBackupEnd(struct pipes_struct *p, struct HrRBackupEnd *r);
+void _HrRBackupGetAttachmentInformation(struct pipes_struct *p, struct HrRBackupGetAttachmentInformation *r);
+void _HrRBackupOpenFile(struct pipes_struct *p, struct HrRBackupOpenFile *r);
+void _HrRBackupRead(struct pipes_struct *p, struct HrRBackupRead *r);
+void _HrRBackupClose(struct pipes_struct *p, struct HrRBackupClose *r);
+void _HrRBackupGetBackupLogs(struct pipes_struct *p, struct HrRBackupGetBackupLogs *r);
+void _HrRBackupTruncateLogs(struct pipes_struct *p, struct HrRBackupTruncateLogs *r);
+void _HrRBackupPing(struct pipes_struct *p, struct HrRBackupPing *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_ad_backup(struct dcerpc_server *server);
+#endif /* __S3COMPAT_AD_BACKUP__ */
+#ifndef __S3COMPAT_AD_RESTORE__
+#define __S3COMPAT_AD_RESTORE__
+void _HrRIsNTDSOnline(struct pipes_struct *p, struct HrRIsNTDSOnline *r);
+void _HrRRestorePrepare(struct pipes_struct *p, struct HrRRestorePrepare *r);
+void _HrRRestoreRegister(struct pipes_struct *p, struct HrRRestoreRegister *r);
+void _HrRRestoreRegisterComplete(struct pipes_struct *p, struct HrRRestoreRegisterComplete *r);
+void _HrRRestoreGetDatabaseLocations(struct pipes_struct *p, struct HrRRestoreGetDatabaseLocations *r);
+void _HrRRestoreEnd(struct pipes_struct *p, struct HrRRestoreEnd *r);
+void _HrRRestoreSetCurrentLogNumber(struct pipes_struct *p, struct HrRRestoreSetCurrentLogNumber *r);
+void _HrRRestoreCheckLogsForBackup(struct pipes_struct *p, struct HrRRestoreCheckLogsForBackup *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_ad_restore(struct dcerpc_server *server);
+#endif /* __S3COMPAT_AD_RESTORE__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_dssetup.c b/bin/default/librpc/gen_ndr/s3compat_dssetup.c
new file mode 100644 (file)
index 0000000..52bb022
--- /dev/null
@@ -0,0 +1,568 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_dssetup.h"
+
+struct _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleGetPrimaryDomainInformation *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleGetPrimaryDomainInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union dssetup_DsRoleInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _dssetup_DsRoleGetPrimaryDomainInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleDnsNameToFlatName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleDnsNameToFlatName *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleDnsNameToFlatName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleDnsNameToFlatName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleDnsNameToFlatName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleDnsNameToFlatName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleDnsNameToFlatName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleDnsNameToFlatName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleDcAsDc_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleDcAsDc *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleDcAsDc_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleDcAsDc *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleDcAsDc_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleDcAsDc_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleDcAsDc(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleDcAsDc_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleDcAsReplica_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleDcAsReplica *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleDcAsReplica_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleDcAsReplica *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleDcAsReplica_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleDcAsReplica_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleDcAsReplica(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleDcAsReplica_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleDemoteDc_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleDemoteDc *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleDemoteDc_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleDemoteDc *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleDemoteDc_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleDemoteDc_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleDemoteDc(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleDemoteDc_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleGetDcOperationProgress_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleGetDcOperationProgress *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleGetDcOperationProgress_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleGetDcOperationProgress *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleGetDcOperationProgress_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleGetDcOperationProgress_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleGetDcOperationProgress(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleGetDcOperationProgress_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleGetDcOperationResults_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleGetDcOperationResults *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleGetDcOperationResults_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleGetDcOperationResults *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleGetDcOperationResults_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleGetDcOperationResults_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleGetDcOperationResults(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleGetDcOperationResults_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleCancel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleCancel *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleCancel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleCancel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleCancel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleCancel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleCancel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleCancel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleServerSaveStateForUpgrade *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleServerSaveStateForUpgrade *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleServerSaveStateForUpgrade(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleUpgradeDownlevelServer *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleUpgradeDownlevelServer_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleUpgradeDownlevelServer *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleUpgradeDownlevelServer(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct dssetup_DsRoleAbortDownlevelServerUpgrade *r;
+};
+
+static struct tevent_req *_s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct dssetup_DsRoleAbortDownlevelServerUpgrade *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _dssetup_DsRoleAbortDownlevelServerUpgrade(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_dssetup_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleGetPrimaryDomainInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleDnsNameToFlatName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleDnsNameToFlatName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleDcAsDc_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleDcAsDc_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleDcAsReplica_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleDcAsReplica_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleDemoteDc_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleDemoteDc_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleGetDcOperationProgress_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleGetDcOperationProgress_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleGetDcOperationResults_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleGetDcOperationResults_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleCancel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleCancel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleServerSaveStateForUpgrade_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleUpgradeDownlevelServer_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_dssetup_DsRoleAbortDownlevelServerUpgrade_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_dssetup_epv[] = {
+       .name = "_s3_compat_dssetup",
+       .table = &ndr_table_dssetup,
+       .num_fns = 11,
+       .fns = _s3_compat_dssetup_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_dssetup(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_dssetup.h b/bin/default/librpc/gen_ndr/s3compat_dssetup.h
new file mode 100644 (file)
index 0000000..1e11cea
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_dssetup.h"
+#ifndef __S3COMPAT_DSSETUP__
+#define __S3COMPAT_DSSETUP__
+WERROR _dssetup_DsRoleGetPrimaryDomainInformation(struct pipes_struct *p, struct dssetup_DsRoleGetPrimaryDomainInformation *r);
+WERROR _dssetup_DsRoleDnsNameToFlatName(struct pipes_struct *p, struct dssetup_DsRoleDnsNameToFlatName *r);
+WERROR _dssetup_DsRoleDcAsDc(struct pipes_struct *p, struct dssetup_DsRoleDcAsDc *r);
+WERROR _dssetup_DsRoleDcAsReplica(struct pipes_struct *p, struct dssetup_DsRoleDcAsReplica *r);
+WERROR _dssetup_DsRoleDemoteDc(struct pipes_struct *p, struct dssetup_DsRoleDemoteDc *r);
+WERROR _dssetup_DsRoleGetDcOperationProgress(struct pipes_struct *p, struct dssetup_DsRoleGetDcOperationProgress *r);
+WERROR _dssetup_DsRoleGetDcOperationResults(struct pipes_struct *p, struct dssetup_DsRoleGetDcOperationResults *r);
+WERROR _dssetup_DsRoleCancel(struct pipes_struct *p, struct dssetup_DsRoleCancel *r);
+WERROR _dssetup_DsRoleServerSaveStateForUpgrade(struct pipes_struct *p, struct dssetup_DsRoleServerSaveStateForUpgrade *r);
+WERROR _dssetup_DsRoleUpgradeDownlevelServer(struct pipes_struct *p, struct dssetup_DsRoleUpgradeDownlevelServer *r);
+WERROR _dssetup_DsRoleAbortDownlevelServerUpgrade(struct pipes_struct *p, struct dssetup_DsRoleAbortDownlevelServerUpgrade *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_dssetup(struct dcerpc_server *server);
+#endif /* __S3COMPAT_DSSETUP__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_echo.c b/bin/default/librpc/gen_ndr/s3compat_echo.c
new file mode 100644 (file)
index 0000000..ee1dd08
--- /dev/null
@@ -0,0 +1,549 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_echo.h"
+
+struct _s3_compat_echo_AddOne_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_AddOne *r;
+};
+
+static struct tevent_req *_s3_compat_echo_AddOne_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_AddOne *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_AddOne_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_AddOne_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.out_data = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.out_data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _echo_AddOne(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_AddOne_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_EchoData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_EchoData *r;
+};
+
+static struct tevent_req *_s3_compat_echo_EchoData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_EchoData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_EchoData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_EchoData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.out_data = talloc_zero_array(r, uint8_t, r->in.len);
+       if (tevent_req_nomem(r->out.out_data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _echo_EchoData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_EchoData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_SinkData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_SinkData *r;
+};
+
+static struct tevent_req *_s3_compat_echo_SinkData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_SinkData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_SinkData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_SinkData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _echo_SinkData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_SinkData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_SourceData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_SourceData *r;
+};
+
+static struct tevent_req *_s3_compat_echo_SourceData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_SourceData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_SourceData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_SourceData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.len);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _echo_SourceData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_SourceData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestCall_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestCall *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestCall_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestCall *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestCall_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestCall_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.s2 = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.s2, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       _echo_TestCall(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestCall_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestCall2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestCall2 *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestCall2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestCall2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestCall2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestCall2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union echo_Info);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _echo_TestCall2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestCall2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestSleep_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestSleep *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestSleep_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestSleep *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestSleep_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestSleep_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _echo_TestSleep(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestSleep_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestEnum *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.foo1 = r->in.foo1;
+       r->out.foo2 = r->in.foo2;
+       r->out.foo3 = r->in.foo3;
+       _echo_TestEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestSurrounding_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestSurrounding *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestSurrounding_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestSurrounding *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestSurrounding_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestSurrounding_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.data = r->in.data;
+       _echo_TestSurrounding(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestSurrounding_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_echo_TestDoublePointer_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct echo_TestDoublePointer *r;
+};
+
+static struct tevent_req *_s3_compat_echo_TestDoublePointer_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct echo_TestDoublePointer *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_echo_TestDoublePointer_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_echo_TestDoublePointer_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _echo_TestDoublePointer(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_echo_TestDoublePointer_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_rpcecho_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_AddOne_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_AddOne_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_EchoData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_EchoData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_SinkData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_SinkData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_SourceData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_SourceData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestCall_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestCall_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestCall2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestCall2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestSleep_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestSleep_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestSurrounding_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestSurrounding_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_echo_TestDoublePointer_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_echo_TestDoublePointer_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_rpcecho_epv[] = {
+       .name = "_s3_compat_rpcecho",
+       .table = &ndr_table_rpcecho,
+       .num_fns = 10,
+       .fns = _s3_compat_rpcecho_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_rpcecho(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_echo.h b/bin/default/librpc/gen_ndr/s3compat_echo.h
new file mode 100644 (file)
index 0000000..3ceb81c
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_echo.h"
+#ifndef __S3COMPAT_RPCECHO__
+#define __S3COMPAT_RPCECHO__
+void _echo_AddOne(struct pipes_struct *p, struct echo_AddOne *r);
+void _echo_EchoData(struct pipes_struct *p, struct echo_EchoData *r);
+void _echo_SinkData(struct pipes_struct *p, struct echo_SinkData *r);
+void _echo_SourceData(struct pipes_struct *p, struct echo_SourceData *r);
+void _echo_TestCall(struct pipes_struct *p, struct echo_TestCall *r);
+NTSTATUS _echo_TestCall2(struct pipes_struct *p, struct echo_TestCall2 *r);
+uint32 _echo_TestSleep(struct pipes_struct *p, struct echo_TestSleep *r);
+void _echo_TestEnum(struct pipes_struct *p, struct echo_TestEnum *r);
+void _echo_TestSurrounding(struct pipes_struct *p, struct echo_TestSurrounding *r);
+uint16 _echo_TestDoublePointer(struct pipes_struct *p, struct echo_TestDoublePointer *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_rpcecho(struct dcerpc_server *server);
+#endif /* __S3COMPAT_RPCECHO__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_efs.c b/bin/default/librpc/gen_ndr/s3compat_efs.c
new file mode 100644 (file)
index 0000000..f82ab65
--- /dev/null
@@ -0,0 +1,729 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_efs.h"
+
+struct _s3_compat_EfsRpcOpenFileRaw_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcOpenFileRaw *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcOpenFileRaw_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcOpenFileRaw *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcOpenFileRaw_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcOpenFileRaw_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pvContext = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.pvContext, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _EfsRpcOpenFileRaw(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcOpenFileRaw_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcReadFileRaw_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcReadFileRaw *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcReadFileRaw_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcReadFileRaw *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcReadFileRaw_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcReadFileRaw_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcReadFileRaw(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcReadFileRaw_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcWriteFileRaw_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcWriteFileRaw *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcWriteFileRaw_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcWriteFileRaw *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcWriteFileRaw_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcWriteFileRaw_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcWriteFileRaw(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcWriteFileRaw_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcCloseRaw_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcCloseRaw *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcCloseRaw_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcCloseRaw *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcCloseRaw_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcCloseRaw_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pvContext = r->in.pvContext;
+       _EfsRpcCloseRaw(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcCloseRaw_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcEncryptFileSrv_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcEncryptFileSrv *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcEncryptFileSrv_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcEncryptFileSrv *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcEncryptFileSrv_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcEncryptFileSrv_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcEncryptFileSrv(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcEncryptFileSrv_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcDecryptFileSrv_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcDecryptFileSrv *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcDecryptFileSrv_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcDecryptFileSrv *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcDecryptFileSrv_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcDecryptFileSrv_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcDecryptFileSrv(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcDecryptFileSrv_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcQueryUsersOnFile_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcQueryUsersOnFile *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcQueryUsersOnFile_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcQueryUsersOnFile *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcQueryUsersOnFile_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcQueryUsersOnFile_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pUsers = talloc_zero(r, struct ENCRYPTION_CERTIFICATE_HASH_LIST *);
+       if (tevent_req_nomem(r->out.pUsers, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _EfsRpcQueryUsersOnFile(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcQueryUsersOnFile_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcQueryRecoveryAgents_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcQueryRecoveryAgents *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcQueryRecoveryAgents_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcQueryRecoveryAgents *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcQueryRecoveryAgents_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcQueryRecoveryAgents_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pRecoveryAgents = talloc_zero(r, struct ENCRYPTION_CERTIFICATE_HASH_LIST *);
+       if (tevent_req_nomem(r->out.pRecoveryAgents, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _EfsRpcQueryRecoveryAgents(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcQueryRecoveryAgents_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcRemoveUsersFromFile_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcRemoveUsersFromFile *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcRemoveUsersFromFile_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcRemoveUsersFromFile *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcRemoveUsersFromFile_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcRemoveUsersFromFile_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcRemoveUsersFromFile(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcRemoveUsersFromFile_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcAddUsersToFile_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcAddUsersToFile *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcAddUsersToFile_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcAddUsersToFile *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcAddUsersToFile_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcAddUsersToFile_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcAddUsersToFile(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcAddUsersToFile_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcSetFileEncryptionKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcSetFileEncryptionKey *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcSetFileEncryptionKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcSetFileEncryptionKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcSetFileEncryptionKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcSetFileEncryptionKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcSetFileEncryptionKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcSetFileEncryptionKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcNotSupported_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcNotSupported *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcNotSupported_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcNotSupported *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcNotSupported_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcNotSupported_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcNotSupported(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcNotSupported_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcFileKeyInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcFileKeyInfo *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcFileKeyInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcFileKeyInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcFileKeyInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcFileKeyInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcFileKeyInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcFileKeyInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EfsRpcDuplicateEncryptionInfoFile_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EfsRpcDuplicateEncryptionInfoFile *r;
+};
+
+static struct tevent_req *_s3_compat_EfsRpcDuplicateEncryptionInfoFile_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EfsRpcDuplicateEncryptionInfoFile *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EfsRpcDuplicateEncryptionInfoFile_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EfsRpcDuplicateEncryptionInfoFile_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _EfsRpcDuplicateEncryptionInfoFile(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EfsRpcDuplicateEncryptionInfoFile_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_efs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcOpenFileRaw_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcOpenFileRaw_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcReadFileRaw_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcReadFileRaw_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcWriteFileRaw_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcWriteFileRaw_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcCloseRaw_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcCloseRaw_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcEncryptFileSrv_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcEncryptFileSrv_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcDecryptFileSrv_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcDecryptFileSrv_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcQueryUsersOnFile_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcQueryUsersOnFile_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcQueryRecoveryAgents_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcQueryRecoveryAgents_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcRemoveUsersFromFile_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcRemoveUsersFromFile_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcAddUsersToFile_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcAddUsersToFile_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcSetFileEncryptionKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcSetFileEncryptionKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcNotSupported_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcNotSupported_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcFileKeyInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcFileKeyInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EfsRpcDuplicateEncryptionInfoFile_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EfsRpcDuplicateEncryptionInfoFile_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_efs_epv[] = {
+       .name = "_s3_compat_efs",
+       .table = &ndr_table_efs,
+       .num_fns = 14,
+       .fns = _s3_compat_efs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_efs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_efs.h b/bin/default/librpc/gen_ndr/s3compat_efs.h
new file mode 100644 (file)
index 0000000..2ea9968
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_efs.h"
+#ifndef __S3COMPAT_EFS__
+#define __S3COMPAT_EFS__
+WERROR _EfsRpcOpenFileRaw(struct pipes_struct *p, struct EfsRpcOpenFileRaw *r);
+WERROR _EfsRpcReadFileRaw(struct pipes_struct *p, struct EfsRpcReadFileRaw *r);
+WERROR _EfsRpcWriteFileRaw(struct pipes_struct *p, struct EfsRpcWriteFileRaw *r);
+void _EfsRpcCloseRaw(struct pipes_struct *p, struct EfsRpcCloseRaw *r);
+WERROR _EfsRpcEncryptFileSrv(struct pipes_struct *p, struct EfsRpcEncryptFileSrv *r);
+WERROR _EfsRpcDecryptFileSrv(struct pipes_struct *p, struct EfsRpcDecryptFileSrv *r);
+WERROR _EfsRpcQueryUsersOnFile(struct pipes_struct *p, struct EfsRpcQueryUsersOnFile *r);
+WERROR _EfsRpcQueryRecoveryAgents(struct pipes_struct *p, struct EfsRpcQueryRecoveryAgents *r);
+WERROR _EfsRpcRemoveUsersFromFile(struct pipes_struct *p, struct EfsRpcRemoveUsersFromFile *r);
+WERROR _EfsRpcAddUsersToFile(struct pipes_struct *p, struct EfsRpcAddUsersToFile *r);
+WERROR _EfsRpcSetFileEncryptionKey(struct pipes_struct *p, struct EfsRpcSetFileEncryptionKey *r);
+WERROR _EfsRpcNotSupported(struct pipes_struct *p, struct EfsRpcNotSupported *r);
+WERROR _EfsRpcFileKeyInfo(struct pipes_struct *p, struct EfsRpcFileKeyInfo *r);
+WERROR _EfsRpcDuplicateEncryptionInfoFile(struct pipes_struct *p, struct EfsRpcDuplicateEncryptionInfoFile *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_efs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_EFS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_epmapper.c b/bin/default/librpc/gen_ndr/s3compat_epmapper.c
new file mode 100644 (file)
index 0000000..2ed1f45
--- /dev/null
@@ -0,0 +1,441 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_epmapper.h"
+
+struct _s3_compat_epm_Insert_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_Insert *r;
+};
+
+static struct tevent_req *_s3_compat_epm_Insert_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_Insert *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_Insert_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_Insert_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _epm_Insert(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_Insert_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_Delete_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_Delete *r;
+};
+
+static struct tevent_req *_s3_compat_epm_Delete_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_Delete *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_Delete_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_Delete_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _epm_Delete(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_Delete_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_Lookup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_Lookup *r;
+};
+
+static struct tevent_req *_s3_compat_epm_Lookup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_Lookup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_Lookup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_Lookup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.entry_handle = r->in.entry_handle;
+       r->out.num_ents = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_ents, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.entries = talloc_zero_array(r, struct epm_entry_t, r->in.max_ents);
+       if (tevent_req_nomem(r->out.entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _epm_Lookup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_Lookup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_Map_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_Map *r;
+};
+
+static struct tevent_req *_s3_compat_epm_Map_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_Map *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_Map_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_Map_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.entry_handle = r->in.entry_handle;
+       r->out.num_towers = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_towers, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.towers = talloc_zero_array(r, struct epm_twr_p_t, r->in.max_towers);
+       if (tevent_req_nomem(r->out.towers, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _epm_Map(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_Map_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_LookupHandleFree_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_LookupHandleFree *r;
+};
+
+static struct tevent_req *_s3_compat_epm_LookupHandleFree_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_LookupHandleFree *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_LookupHandleFree_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_LookupHandleFree_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.entry_handle = r->in.entry_handle;
+       r->out.result = _epm_LookupHandleFree(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_LookupHandleFree_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_InqObject_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_InqObject *r;
+};
+
+static struct tevent_req *_s3_compat_epm_InqObject_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_InqObject *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_InqObject_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_InqObject_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _epm_InqObject(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_InqObject_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_MgmtDelete_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_MgmtDelete *r;
+};
+
+static struct tevent_req *_s3_compat_epm_MgmtDelete_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_MgmtDelete *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_MgmtDelete_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_MgmtDelete_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _epm_MgmtDelete(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_MgmtDelete_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_epm_MapAuth_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct epm_MapAuth *r;
+};
+
+static struct tevent_req *_s3_compat_epm_MapAuth_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct epm_MapAuth *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_epm_MapAuth_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_epm_MapAuth_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _epm_MapAuth(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_epm_MapAuth_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_epmapper_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_Insert_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_Insert_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_Delete_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_Delete_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_Lookup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_Lookup_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_Map_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_Map_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_LookupHandleFree_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_LookupHandleFree_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_InqObject_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_InqObject_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_MgmtDelete_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_MgmtDelete_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_epm_MapAuth_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_epm_MapAuth_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_epmapper_epv[] = {
+       .name = "_s3_compat_epmapper",
+       .table = &ndr_table_epmapper,
+       .num_fns = 8,
+       .fns = _s3_compat_epmapper_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_epmapper(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_epmapper.h b/bin/default/librpc/gen_ndr/s3compat_epmapper.h
new file mode 100644 (file)
index 0000000..f3caae9
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_epmapper.h"
+#ifndef __S3COMPAT_EPMAPPER__
+#define __S3COMPAT_EPMAPPER__
+uint32 _epm_Insert(struct pipes_struct *p, struct epm_Insert *r);
+uint32 _epm_Delete(struct pipes_struct *p, struct epm_Delete *r);
+uint32 _epm_Lookup(struct pipes_struct *p, struct epm_Lookup *r);
+uint32 _epm_Map(struct pipes_struct *p, struct epm_Map *r);
+uint32 _epm_LookupHandleFree(struct pipes_struct *p, struct epm_LookupHandleFree *r);
+uint32 _epm_InqObject(struct pipes_struct *p, struct epm_InqObject *r);
+uint32 _epm_MgmtDelete(struct pipes_struct *p, struct epm_MgmtDelete *r);
+uint32 _epm_MapAuth(struct pipes_struct *p, struct epm_MapAuth *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_epmapper(struct dcerpc_server *server);
+#endif /* __S3COMPAT_EPMAPPER__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_eventlog.c b/bin/default/librpc/gen_ndr/s3compat_eventlog.c
new file mode 100644 (file)
index 0000000..9d08301
--- /dev/null
@@ -0,0 +1,1315 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_eventlog.h"
+
+struct _s3_compat_eventlog_ClearEventLogW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ClearEventLogW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ClearEventLogW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ClearEventLogW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ClearEventLogW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ClearEventLogW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_ClearEventLogW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ClearEventLogW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_BackupEventLogW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_BackupEventLogW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_BackupEventLogW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_BackupEventLogW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_BackupEventLogW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_BackupEventLogW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_BackupEventLogW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_BackupEventLogW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_CloseEventLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_CloseEventLog *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_CloseEventLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_CloseEventLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_CloseEventLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_CloseEventLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _eventlog_CloseEventLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_CloseEventLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_DeregisterEventSource_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_DeregisterEventSource *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_DeregisterEventSource_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_DeregisterEventSource *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_DeregisterEventSource_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_DeregisterEventSource_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _eventlog_DeregisterEventSource(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_DeregisterEventSource_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_GetNumRecords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_GetNumRecords *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_GetNumRecords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_GetNumRecords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_GetNumRecords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_GetNumRecords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.number = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.number, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_GetNumRecords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_GetNumRecords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_GetOldestRecord_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_GetOldestRecord *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_GetOldestRecord_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_GetOldestRecord *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_GetOldestRecord_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_GetOldestRecord_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.oldest_entry = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.oldest_entry, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_GetOldestRecord(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_GetOldestRecord_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ChangeNotify_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ChangeNotify *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ChangeNotify_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ChangeNotify *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ChangeNotify_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ChangeNotify_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_ChangeNotify(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ChangeNotify_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_OpenEventLogW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_OpenEventLogW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_OpenEventLogW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_OpenEventLogW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_OpenEventLogW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_OpenEventLogW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_OpenEventLogW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_OpenEventLogW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_RegisterEventSourceW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_RegisterEventSourceW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_RegisterEventSourceW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_RegisterEventSourceW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_RegisterEventSourceW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_RegisterEventSourceW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.log_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.log_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_RegisterEventSourceW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_RegisterEventSourceW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_OpenBackupEventLogW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_OpenBackupEventLogW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_OpenBackupEventLogW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_OpenBackupEventLogW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_OpenBackupEventLogW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_OpenBackupEventLogW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_OpenBackupEventLogW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_OpenBackupEventLogW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ReadEventLogW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ReadEventLogW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ReadEventLogW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ReadEventLogW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ReadEventLogW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ReadEventLogW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.number_of_bytes);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.sent_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.sent_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.real_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.real_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_ReadEventLogW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ReadEventLogW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ReportEventW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ReportEventW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ReportEventW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ReportEventW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ReportEventW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ReportEventW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.record_number = r->in.record_number;
+       r->out.time_written = r->in.time_written;
+       r->out.result = _eventlog_ReportEventW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ReportEventW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ClearEventLogA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ClearEventLogA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ClearEventLogA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ClearEventLogA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ClearEventLogA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ClearEventLogA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_ClearEventLogA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ClearEventLogA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_BackupEventLogA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_BackupEventLogA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_BackupEventLogA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_BackupEventLogA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_BackupEventLogA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_BackupEventLogA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_BackupEventLogA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_BackupEventLogA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_OpenEventLogA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_OpenEventLogA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_OpenEventLogA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_OpenEventLogA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_OpenEventLogA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_OpenEventLogA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_OpenEventLogA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_OpenEventLogA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_RegisterEventSourceA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_RegisterEventSourceA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_RegisterEventSourceA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_RegisterEventSourceA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_RegisterEventSourceA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_RegisterEventSourceA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_RegisterEventSourceA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_RegisterEventSourceA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_OpenBackupEventLogA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_OpenBackupEventLogA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_OpenBackupEventLogA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_OpenBackupEventLogA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_OpenBackupEventLogA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_OpenBackupEventLogA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_OpenBackupEventLogA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_OpenBackupEventLogA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ReadEventLogA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ReadEventLogA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ReadEventLogA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ReadEventLogA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ReadEventLogA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ReadEventLogA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_ReadEventLogA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ReadEventLogA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ReportEventA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ReportEventA *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ReportEventA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ReportEventA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ReportEventA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ReportEventA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_ReportEventA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ReportEventA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_RegisterClusterSvc_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_RegisterClusterSvc *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_RegisterClusterSvc_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_RegisterClusterSvc *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_RegisterClusterSvc_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_RegisterClusterSvc_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_RegisterClusterSvc(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_RegisterClusterSvc_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_DeregisterClusterSvc_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_DeregisterClusterSvc *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_DeregisterClusterSvc_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_DeregisterClusterSvc *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_DeregisterClusterSvc_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_DeregisterClusterSvc_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_DeregisterClusterSvc(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_DeregisterClusterSvc_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_WriteClusterEvents_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_WriteClusterEvents *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_WriteClusterEvents_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_WriteClusterEvents *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_WriteClusterEvents_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_WriteClusterEvents_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_WriteClusterEvents(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_WriteClusterEvents_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_GetLogInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_GetLogInformation *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_GetLogInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_GetLogInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_GetLogInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_GetLogInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = talloc_zero_array(r, uint8_t, r->in.buf_size);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.bytes_needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.bytes_needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog_GetLogInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_GetLogInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_FlushEventLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_FlushEventLog *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_FlushEventLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_FlushEventLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_FlushEventLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_FlushEventLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog_FlushEventLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_FlushEventLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog_ReportEventAndSourceW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog_ReportEventAndSourceW *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog_ReportEventAndSourceW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog_ReportEventAndSourceW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog_ReportEventAndSourceW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog_ReportEventAndSourceW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.record_number = r->in.record_number;
+       r->out.time_written = r->in.time_written;
+       r->out.result = _eventlog_ReportEventAndSourceW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog_ReportEventAndSourceW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_eventlog_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ClearEventLogW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ClearEventLogW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_BackupEventLogW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_BackupEventLogW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_CloseEventLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_CloseEventLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_DeregisterEventSource_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_DeregisterEventSource_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_GetNumRecords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_GetNumRecords_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_GetOldestRecord_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_GetOldestRecord_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ChangeNotify_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ChangeNotify_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_OpenEventLogW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_OpenEventLogW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_RegisterEventSourceW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_RegisterEventSourceW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_OpenBackupEventLogW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_OpenBackupEventLogW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ReadEventLogW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ReadEventLogW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ReportEventW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ReportEventW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ClearEventLogA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ClearEventLogA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_BackupEventLogA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_BackupEventLogA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_OpenEventLogA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_OpenEventLogA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_RegisterEventSourceA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_RegisterEventSourceA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_OpenBackupEventLogA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_OpenBackupEventLogA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ReadEventLogA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ReadEventLogA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ReportEventA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ReportEventA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_RegisterClusterSvc_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_RegisterClusterSvc_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_DeregisterClusterSvc_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_DeregisterClusterSvc_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_WriteClusterEvents_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_WriteClusterEvents_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_GetLogInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_GetLogInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_FlushEventLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_FlushEventLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog_ReportEventAndSourceW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog_ReportEventAndSourceW_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_eventlog_epv[] = {
+       .name = "_s3_compat_eventlog",
+       .table = &ndr_table_eventlog,
+       .num_fns = 25,
+       .fns = _s3_compat_eventlog_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_eventlog(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_eventlog.h b/bin/default/librpc/gen_ndr/s3compat_eventlog.h
new file mode 100644 (file)
index 0000000..aaabe1c
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_eventlog.h"
+#ifndef __S3COMPAT_EVENTLOG__
+#define __S3COMPAT_EVENTLOG__
+NTSTATUS _eventlog_ClearEventLogW(struct pipes_struct *p, struct eventlog_ClearEventLogW *r);
+NTSTATUS _eventlog_BackupEventLogW(struct pipes_struct *p, struct eventlog_BackupEventLogW *r);
+NTSTATUS _eventlog_CloseEventLog(struct pipes_struct *p, struct eventlog_CloseEventLog *r);
+NTSTATUS _eventlog_DeregisterEventSource(struct pipes_struct *p, struct eventlog_DeregisterEventSource *r);
+NTSTATUS _eventlog_GetNumRecords(struct pipes_struct *p, struct eventlog_GetNumRecords *r);
+NTSTATUS _eventlog_GetOldestRecord(struct pipes_struct *p, struct eventlog_GetOldestRecord *r);
+NTSTATUS _eventlog_ChangeNotify(struct pipes_struct *p, struct eventlog_ChangeNotify *r);
+NTSTATUS _eventlog_OpenEventLogW(struct pipes_struct *p, struct eventlog_OpenEventLogW *r);
+NTSTATUS _eventlog_RegisterEventSourceW(struct pipes_struct *p, struct eventlog_RegisterEventSourceW *r);
+NTSTATUS _eventlog_OpenBackupEventLogW(struct pipes_struct *p, struct eventlog_OpenBackupEventLogW *r);
+NTSTATUS _eventlog_ReadEventLogW(struct pipes_struct *p, struct eventlog_ReadEventLogW *r);
+NTSTATUS _eventlog_ReportEventW(struct pipes_struct *p, struct eventlog_ReportEventW *r);
+NTSTATUS _eventlog_ClearEventLogA(struct pipes_struct *p, struct eventlog_ClearEventLogA *r);
+NTSTATUS _eventlog_BackupEventLogA(struct pipes_struct *p, struct eventlog_BackupEventLogA *r);
+NTSTATUS _eventlog_OpenEventLogA(struct pipes_struct *p, struct eventlog_OpenEventLogA *r);
+NTSTATUS _eventlog_RegisterEventSourceA(struct pipes_struct *p, struct eventlog_RegisterEventSourceA *r);
+NTSTATUS _eventlog_OpenBackupEventLogA(struct pipes_struct *p, struct eventlog_OpenBackupEventLogA *r);
+NTSTATUS _eventlog_ReadEventLogA(struct pipes_struct *p, struct eventlog_ReadEventLogA *r);
+NTSTATUS _eventlog_ReportEventA(struct pipes_struct *p, struct eventlog_ReportEventA *r);
+NTSTATUS _eventlog_RegisterClusterSvc(struct pipes_struct *p, struct eventlog_RegisterClusterSvc *r);
+NTSTATUS _eventlog_DeregisterClusterSvc(struct pipes_struct *p, struct eventlog_DeregisterClusterSvc *r);
+NTSTATUS _eventlog_WriteClusterEvents(struct pipes_struct *p, struct eventlog_WriteClusterEvents *r);
+NTSTATUS _eventlog_GetLogInformation(struct pipes_struct *p, struct eventlog_GetLogInformation *r);
+NTSTATUS _eventlog_FlushEventLog(struct pipes_struct *p, struct eventlog_FlushEventLog *r);
+NTSTATUS _eventlog_ReportEventAndSourceW(struct pipes_struct *p, struct eventlog_ReportEventAndSourceW *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_eventlog(struct dcerpc_server *server);
+#endif /* __S3COMPAT_EVENTLOG__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_eventlog6.c b/bin/default/librpc/gen_ndr/s3compat_eventlog6.c
new file mode 100644 (file)
index 0000000..224737c
--- /dev/null
@@ -0,0 +1,1755 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_eventlog6.h"
+
+struct _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRegisterRemoteSubscription *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRegisterRemoteSubscription *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.control = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.control, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.queryChannelInfoSize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.queryChannelInfoSize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.queryChannelInfo = talloc_zero(r, struct eventlog6_EvtRpcQueryChannelInfo *);
+       if (tevent_req_nomem(r->out.queryChannelInfo, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcRegisterRemoteSubscription(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRemoteSubscriptionNextAsync *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRemoteSubscriptionNextAsync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numActualRecords = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numActualRecords, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataIndices = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataIndices, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataSizes = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataSizes, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBufferSize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.resultBufferSize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBuffer = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.resultBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcRemoteSubscriptionNextAsync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRemoteSubscriptionNext *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRemoteSubscriptionNext *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numActualRecords = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numActualRecords, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataIndices = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataIndices, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataSizes = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataSizes, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBufferSize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.resultBufferSize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBuffer = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.resultBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcRemoteSubscriptionNext(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRemoteSubscriptionWaitAsync *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRemoteSubscriptionWaitAsync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog6_EvtRpcRemoteSubscriptionWaitAsync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRegisterControllableOperation *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRegisterControllableOperation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRegisterControllableOperation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcRegisterControllableOperation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRegisterLogQuery_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRegisterLogQuery *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRegisterLogQuery_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRegisterLogQuery *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRegisterLogQuery_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRegisterLogQuery_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.opControl = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.opControl, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.queryChannelInfoSize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.queryChannelInfoSize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.queryChannelInfo = talloc_zero(r, struct eventlog6_EvtRpcQueryChannelInfo *);
+       if (tevent_req_nomem(r->out.queryChannelInfo, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcRegisterLogQuery(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRegisterLogQuery_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcClearLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcClearLog *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcClearLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcClearLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcClearLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcClearLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcClearLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcClearLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcExportLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcExportLog *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcExportLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcExportLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcExportLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcExportLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcExportLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcExportLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcLocalizeExportLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcLocalizeExportLog *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcLocalizeExportLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcLocalizeExportLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcLocalizeExportLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcLocalizeExportLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcLocalizeExportLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcLocalizeExportLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcMessageRender_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcMessageRender *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcMessageRender_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcMessageRender *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcMessageRender_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcMessageRender_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.actualSizeString = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.actualSizeString, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.neededSizeString = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.neededSizeString, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.string = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.string, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcMessageRender(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcMessageRender_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcMessageRenderDefault_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcMessageRenderDefault *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcMessageRenderDefault_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcMessageRenderDefault *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcMessageRenderDefault_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcMessageRenderDefault_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.actualSizeString = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.actualSizeString, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.neededSizeString = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.neededSizeString, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.string = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.string, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcMessageRenderDefault(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcMessageRenderDefault_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcQueryNext_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcQueryNext *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcQueryNext_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcQueryNext *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcQueryNext_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcQueryNext_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numActualRecords = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numActualRecords, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataIndices = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataIndices, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventDataSizes = talloc_zero(r, uint32_t *);
+       if (tevent_req_nomem(r->out.eventDataSizes, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBufferSize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.resultBufferSize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.resultBuffer = talloc_zero(r, uint8_t *);
+       if (tevent_req_nomem(r->out.resultBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcQueryNext(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcQueryNext_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcQuerySeek_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcQuerySeek *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcQuerySeek_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcQuerySeek *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcQuerySeek_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcQuerySeek_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcQuerySeek(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcQuerySeek_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcClose_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcClose *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcClose_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcClose *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcClose_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcClose_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _eventlog6_EvtRpcClose(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcClose_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcCancel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcCancel *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcCancel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcCancel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcCancel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcCancel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog6_EvtRpcCancel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcCancel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcAssertConfig_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcAssertConfig *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcAssertConfig_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcAssertConfig *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcAssertConfig_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcAssertConfig_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog6_EvtRpcAssertConfig(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcAssertConfig_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcRetractConfig_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcRetractConfig *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcRetractConfig_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcRetractConfig *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcRetractConfig_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcRetractConfig_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _eventlog6_EvtRpcRetractConfig(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcRetractConfig_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcOpenLogHandle_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcOpenLogHandle *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcOpenLogHandle_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcOpenLogHandle *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcOpenLogHandle_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcOpenLogHandle_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcOpenLogHandle(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcOpenLogHandle_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetLogFileInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetLogFileInfo *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetLogFileInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetLogFileInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetLogFileInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetLogFileInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.propertyValueBuffer = talloc_zero_array(r, uint8_t, r->in.propertyValueBufferSize);
+       if (tevent_req_nomem(r->out.propertyValueBuffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.propertyValueBufferLength = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.propertyValueBufferLength, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetLogFileInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetLogFileInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetChannelList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetChannelList *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetChannelList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetChannelList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetChannelList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetChannelList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numChannelPaths = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numChannelPaths, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.channelPaths = talloc_zero(r, const char **);
+       if (tevent_req_nomem(r->out.channelPaths, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetChannelList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetChannelList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetChannelConfig_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetChannelConfig *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetChannelConfig_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetChannelConfig *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetChannelConfig_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetChannelConfig_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.props = talloc_zero(r, struct eventlog6_EvtRpcVariantList);
+       if (tevent_req_nomem(r->out.props, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetChannelConfig(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetChannelConfig_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcPutChannelConfig_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcPutChannelConfig *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcPutChannelConfig_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcPutChannelConfig *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcPutChannelConfig_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcPutChannelConfig_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.error = talloc_zero(r, struct eventlog6_RpcInfo);
+       if (tevent_req_nomem(r->out.error, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcPutChannelConfig(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcPutChannelConfig_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetPublisherList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetPublisherList *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetPublisherList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetPublisherList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetPublisherList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetPublisherList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numPublisherIds = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numPublisherIds, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.publisherIds = talloc_zero(r, const char **);
+       if (tevent_req_nomem(r->out.publisherIds, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetPublisherList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetPublisherList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetPublisherListForChannel *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetPublisherListForChannel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numPublisherIds = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numPublisherIds, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.publisherIds = talloc_zero(r, const char **);
+       if (tevent_req_nomem(r->out.publisherIds, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetPublisherListForChannel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetPublisherMetadata *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetPublisherMetadata_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetPublisherMetadata *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pubMetadataProps = talloc_zero(r, struct eventlog6_EvtRpcVariantList);
+       if (tevent_req_nomem(r->out.pubMetadataProps, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pubMetadata = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.pubMetadata, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetPublisherMetadata(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetPublisherResourceMetadata *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetPublisherResourceMetadata *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pubMetadataProps = talloc_zero(r, struct eventlog6_EvtRpcVariantList);
+       if (tevent_req_nomem(r->out.pubMetadataProps, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetPublisherResourceMetadata(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetEventMetadataEnum *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetEventMetadataEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.eventMetaDataEnum = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.eventMetaDataEnum, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetEventMetadataEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetNextEventMetadata *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetNextEventMetadata_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetNextEventMetadata *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.numReturned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.numReturned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.eventMetadataInstances = talloc_zero(r, struct eventlog6_EvtRpcVariantList *);
+       if (tevent_req_nomem(r->out.eventMetadataInstances, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetNextEventMetadata(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct eventlog6_EvtRpcGetClassicLogDisplayName *r;
+};
+
+static struct tevent_req *_s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct eventlog6_EvtRpcGetClassicLogDisplayName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.displayName = talloc_zero(r, uint16_t *);
+       if (tevent_req_nomem(r->out.displayName, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _eventlog6_EvtRpcGetClassicLogDisplayName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_eventlog6_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterRemoteSubscription_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNextAsync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionNext_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRemoteSubscriptionWaitAsync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterControllableOperation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterLogQuery_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRegisterLogQuery_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcClearLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcClearLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcExportLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcExportLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcLocalizeExportLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcLocalizeExportLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcMessageRender_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcMessageRender_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcMessageRenderDefault_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcMessageRenderDefault_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcQueryNext_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcQueryNext_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcQuerySeek_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcQuerySeek_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcClose_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcClose_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcCancel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcCancel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcAssertConfig_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcAssertConfig_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRetractConfig_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcRetractConfig_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcOpenLogHandle_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcOpenLogHandle_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetLogFileInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetLogFileInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetChannelList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetChannelList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetChannelConfig_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetChannelConfig_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcPutChannelConfig_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcPutChannelConfig_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherListForChannel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherMetadata_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetPublisherResourceMetadata_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetEventMetadataEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetNextEventMetadata_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_eventlog6_EvtRpcGetClassicLogDisplayName_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_eventlog6_epv[] = {
+       .name = "_s3_compat_eventlog6",
+       .table = &ndr_table_eventlog6,
+       .num_fns = 29,
+       .fns = _s3_compat_eventlog6_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_eventlog6(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_eventlog6.h b/bin/default/librpc/gen_ndr/s3compat_eventlog6.h
new file mode 100644 (file)
index 0000000..63ee9d4
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_eventlog6.h"
+#ifndef __S3COMPAT_EVENTLOG6__
+#define __S3COMPAT_EVENTLOG6__
+WERROR _eventlog6_EvtRpcRegisterRemoteSubscription(struct pipes_struct *p, struct eventlog6_EvtRpcRegisterRemoteSubscription *r);
+WERROR _eventlog6_EvtRpcRemoteSubscriptionNextAsync(struct pipes_struct *p, struct eventlog6_EvtRpcRemoteSubscriptionNextAsync *r);
+WERROR _eventlog6_EvtRpcRemoteSubscriptionNext(struct pipes_struct *p, struct eventlog6_EvtRpcRemoteSubscriptionNext *r);
+WERROR _eventlog6_EvtRpcRemoteSubscriptionWaitAsync(struct pipes_struct *p, struct eventlog6_EvtRpcRemoteSubscriptionWaitAsync *r);
+WERROR _eventlog6_EvtRpcRegisterControllableOperation(struct pipes_struct *p, struct eventlog6_EvtRpcRegisterControllableOperation *r);
+WERROR _eventlog6_EvtRpcRegisterLogQuery(struct pipes_struct *p, struct eventlog6_EvtRpcRegisterLogQuery *r);
+WERROR _eventlog6_EvtRpcClearLog(struct pipes_struct *p, struct eventlog6_EvtRpcClearLog *r);
+WERROR _eventlog6_EvtRpcExportLog(struct pipes_struct *p, struct eventlog6_EvtRpcExportLog *r);
+WERROR _eventlog6_EvtRpcLocalizeExportLog(struct pipes_struct *p, struct eventlog6_EvtRpcLocalizeExportLog *r);
+WERROR _eventlog6_EvtRpcMessageRender(struct pipes_struct *p, struct eventlog6_EvtRpcMessageRender *r);
+WERROR _eventlog6_EvtRpcMessageRenderDefault(struct pipes_struct *p, struct eventlog6_EvtRpcMessageRenderDefault *r);
+WERROR _eventlog6_EvtRpcQueryNext(struct pipes_struct *p, struct eventlog6_EvtRpcQueryNext *r);
+WERROR _eventlog6_EvtRpcQuerySeek(struct pipes_struct *p, struct eventlog6_EvtRpcQuerySeek *r);
+WERROR _eventlog6_EvtRpcClose(struct pipes_struct *p, struct eventlog6_EvtRpcClose *r);
+WERROR _eventlog6_EvtRpcCancel(struct pipes_struct *p, struct eventlog6_EvtRpcCancel *r);
+WERROR _eventlog6_EvtRpcAssertConfig(struct pipes_struct *p, struct eventlog6_EvtRpcAssertConfig *r);
+WERROR _eventlog6_EvtRpcRetractConfig(struct pipes_struct *p, struct eventlog6_EvtRpcRetractConfig *r);
+WERROR _eventlog6_EvtRpcOpenLogHandle(struct pipes_struct *p, struct eventlog6_EvtRpcOpenLogHandle *r);
+WERROR _eventlog6_EvtRpcGetLogFileInfo(struct pipes_struct *p, struct eventlog6_EvtRpcGetLogFileInfo *r);
+WERROR _eventlog6_EvtRpcGetChannelList(struct pipes_struct *p, struct eventlog6_EvtRpcGetChannelList *r);
+WERROR _eventlog6_EvtRpcGetChannelConfig(struct pipes_struct *p, struct eventlog6_EvtRpcGetChannelConfig *r);
+WERROR _eventlog6_EvtRpcPutChannelConfig(struct pipes_struct *p, struct eventlog6_EvtRpcPutChannelConfig *r);
+WERROR _eventlog6_EvtRpcGetPublisherList(struct pipes_struct *p, struct eventlog6_EvtRpcGetPublisherList *r);
+WERROR _eventlog6_EvtRpcGetPublisherListForChannel(struct pipes_struct *p, struct eventlog6_EvtRpcGetPublisherListForChannel *r);
+WERROR _eventlog6_EvtRpcGetPublisherMetadata(struct pipes_struct *p, struct eventlog6_EvtRpcGetPublisherMetadata *r);
+WERROR _eventlog6_EvtRpcGetPublisherResourceMetadata(struct pipes_struct *p, struct eventlog6_EvtRpcGetPublisherResourceMetadata *r);
+WERROR _eventlog6_EvtRpcGetEventMetadataEnum(struct pipes_struct *p, struct eventlog6_EvtRpcGetEventMetadataEnum *r);
+WERROR _eventlog6_EvtRpcGetNextEventMetadata(struct pipes_struct *p, struct eventlog6_EvtRpcGetNextEventMetadata *r);
+WERROR _eventlog6_EvtRpcGetClassicLogDisplayName(struct pipes_struct *p, struct eventlog6_EvtRpcGetClassicLogDisplayName *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_eventlog6(struct dcerpc_server *server);
+#endif /* __S3COMPAT_EVENTLOG6__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_file_id.c b/bin/default/librpc/gen_ndr/s3compat_file_id.c
new file mode 100644 (file)
index 0000000..dd10c18
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_file_id.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_file_id_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_file_id_epv[] = {
+       .name = "_s3_compat_file_id",
+       .table = &ndr_table_file_id,
+       .num_fns = 0,
+       .fns = _s3_compat_file_id_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_file_id(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_file_id.h b/bin/default/librpc/gen_ndr/s3compat_file_id.h
new file mode 100644 (file)
index 0000000..900b0d0
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_file_id.h"
+#ifndef __S3COMPAT_FILE_ID__
+#define __S3COMPAT_FILE_ID__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_file_id(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FILE_ID__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsapi.c b/bin/default/librpc/gen_ndr/s3compat_frsapi.c
new file mode 100644 (file)
index 0000000..1f785cd
--- /dev/null
@@ -0,0 +1,601 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_frsapi.h"
+
+struct _s3_compat_FRSAPI_VERIFY_PROMOTION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSAPI_VERIFY_PROMOTION *r;
+};
+
+static struct tevent_req *_s3_compat_FRSAPI_VERIFY_PROMOTION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSAPI_VERIFY_PROMOTION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSAPI_VERIFY_PROMOTION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSAPI_VERIFY_PROMOTION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSAPI_VERIFY_PROMOTION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSAPI_VERIFY_PROMOTION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSAPI_PROMOTION_STATUS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSAPI_PROMOTION_STATUS *r;
+};
+
+static struct tevent_req *_s3_compat_FRSAPI_PROMOTION_STATUS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSAPI_PROMOTION_STATUS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSAPI_PROMOTION_STATUS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSAPI_PROMOTION_STATUS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSAPI_PROMOTION_STATUS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSAPI_PROMOTION_STATUS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSAPI_START_DEMOTION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSAPI_START_DEMOTION *r;
+};
+
+static struct tevent_req *_s3_compat_FRSAPI_START_DEMOTION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSAPI_START_DEMOTION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSAPI_START_DEMOTION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSAPI_START_DEMOTION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSAPI_START_DEMOTION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSAPI_START_DEMOTION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSAPI_COMMIT_DEMOTION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSAPI_COMMIT_DEMOTION *r;
+};
+
+static struct tevent_req *_s3_compat_FRSAPI_COMMIT_DEMOTION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSAPI_COMMIT_DEMOTION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSAPI_COMMIT_DEMOTION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSAPI_COMMIT_DEMOTION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSAPI_COMMIT_DEMOTION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSAPI_COMMIT_DEMOTION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_SetDsPollingIntervalW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_SetDsPollingIntervalW *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_SetDsPollingIntervalW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_SetDsPollingIntervalW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_SetDsPollingIntervalW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_SetDsPollingIntervalW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsapi_SetDsPollingIntervalW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_SetDsPollingIntervalW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_GetDsPollingIntervalW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_GetDsPollingIntervalW *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_GetDsPollingIntervalW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_GetDsPollingIntervalW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_GetDsPollingIntervalW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_GetDsPollingIntervalW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.CurrentInterval = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.CurrentInterval, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.DsPollingLongInterval = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.DsPollingLongInterval, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.DsPollingShortInterval = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.DsPollingShortInterval, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frsapi_GetDsPollingIntervalW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_GetDsPollingIntervalW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSAPI_VERIFY_PROMOTION_W_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSAPI_VERIFY_PROMOTION_W *r;
+};
+
+static struct tevent_req *_s3_compat_FRSAPI_VERIFY_PROMOTION_W_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSAPI_VERIFY_PROMOTION_W *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSAPI_VERIFY_PROMOTION_W_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSAPI_VERIFY_PROMOTION_W_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSAPI_VERIFY_PROMOTION_W(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSAPI_VERIFY_PROMOTION_W_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_InfoW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_InfoW *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_InfoW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_InfoW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_InfoW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_InfoW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.result = _frsapi_InfoW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_InfoW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_IsPathReplicated_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_IsPathReplicated *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_IsPathReplicated_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_IsPathReplicated *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_IsPathReplicated_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_IsPathReplicated_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.replicated = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.replicated, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.primary = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.primary, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.root = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.root, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.replica_set_guid = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.replica_set_guid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frsapi_IsPathReplicated(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_IsPathReplicated_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_WriterCommand_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_WriterCommand *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_WriterCommand_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_WriterCommand *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_WriterCommand_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_WriterCommand_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsapi_WriterCommand(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_WriterCommand_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsapi_ForceReplication_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsapi_ForceReplication *r;
+};
+
+static struct tevent_req *_s3_compat_frsapi_ForceReplication_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsapi_ForceReplication *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsapi_ForceReplication_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsapi_ForceReplication_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsapi_ForceReplication(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsapi_ForceReplication_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_frsapi_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSAPI_VERIFY_PROMOTION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSAPI_VERIFY_PROMOTION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSAPI_PROMOTION_STATUS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSAPI_PROMOTION_STATUS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSAPI_START_DEMOTION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSAPI_START_DEMOTION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSAPI_COMMIT_DEMOTION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSAPI_COMMIT_DEMOTION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_SetDsPollingIntervalW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_SetDsPollingIntervalW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_GetDsPollingIntervalW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_GetDsPollingIntervalW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSAPI_VERIFY_PROMOTION_W_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSAPI_VERIFY_PROMOTION_W_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_InfoW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_InfoW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_IsPathReplicated_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_IsPathReplicated_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_WriterCommand_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_WriterCommand_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsapi_ForceReplication_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsapi_ForceReplication_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_frsapi_epv[] = {
+       .name = "_s3_compat_frsapi",
+       .table = &ndr_table_frsapi,
+       .num_fns = 11,
+       .fns = _s3_compat_frsapi_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_frsapi(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsapi.h b/bin/default/librpc/gen_ndr/s3compat_frsapi.h
new file mode 100644 (file)
index 0000000..f2830f1
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_frsapi.h"
+#ifndef __S3COMPAT_FRSAPI__
+#define __S3COMPAT_FRSAPI__
+void _FRSAPI_VERIFY_PROMOTION(struct pipes_struct *p, struct FRSAPI_VERIFY_PROMOTION *r);
+void _FRSAPI_PROMOTION_STATUS(struct pipes_struct *p, struct FRSAPI_PROMOTION_STATUS *r);
+void _FRSAPI_START_DEMOTION(struct pipes_struct *p, struct FRSAPI_START_DEMOTION *r);
+void _FRSAPI_COMMIT_DEMOTION(struct pipes_struct *p, struct FRSAPI_COMMIT_DEMOTION *r);
+WERROR _frsapi_SetDsPollingIntervalW(struct pipes_struct *p, struct frsapi_SetDsPollingIntervalW *r);
+WERROR _frsapi_GetDsPollingIntervalW(struct pipes_struct *p, struct frsapi_GetDsPollingIntervalW *r);
+void _FRSAPI_VERIFY_PROMOTION_W(struct pipes_struct *p, struct FRSAPI_VERIFY_PROMOTION_W *r);
+WERROR _frsapi_InfoW(struct pipes_struct *p, struct frsapi_InfoW *r);
+WERROR _frsapi_IsPathReplicated(struct pipes_struct *p, struct frsapi_IsPathReplicated *r);
+WERROR _frsapi_WriterCommand(struct pipes_struct *p, struct frsapi_WriterCommand *r);
+WERROR _frsapi_ForceReplication(struct pipes_struct *p, struct frsapi_ForceReplication *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_frsapi(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FRSAPI__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsblobs.c b/bin/default/librpc/gen_ndr/s3compat_frsblobs.c
new file mode 100644 (file)
index 0000000..58644bf
--- /dev/null
@@ -0,0 +1,170 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_frsblobs.h"
+
+struct _s3_compat_decode_nt_backup_file_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_nt_backup_file *r;
+};
+
+static struct tevent_req *_s3_compat_decode_nt_backup_file_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_nt_backup_file *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_nt_backup_file_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_nt_backup_file_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_nt_backup_file(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_nt_backup_file_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_frsrpc_StageHeader_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_frsrpc_StageHeader *r;
+};
+
+static struct tevent_req *_s3_compat_decode_frsrpc_StageHeader_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_frsrpc_StageHeader *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_frsrpc_StageHeader_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_frsrpc_StageHeader_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_frsrpc_StageHeader(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_frsrpc_StageHeader_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_FileNetworkOpenInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_FileNetworkOpenInformation *r;
+};
+
+static struct tevent_req *_s3_compat_decode_FileNetworkOpenInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_FileNetworkOpenInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_FileNetworkOpenInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_FileNetworkOpenInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_FileNetworkOpenInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_FileNetworkOpenInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_frsblobs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_nt_backup_file_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_nt_backup_file_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_frsrpc_StageHeader_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_frsrpc_StageHeader_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_FileNetworkOpenInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_FileNetworkOpenInformation_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_frsblobs_epv[] = {
+       .name = "_s3_compat_frsblobs",
+       .table = &ndr_table_frsblobs,
+       .num_fns = 3,
+       .fns = _s3_compat_frsblobs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_frsblobs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsblobs.h b/bin/default/librpc/gen_ndr/s3compat_frsblobs.h
new file mode 100644 (file)
index 0000000..fbe9bbd
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_frsblobs.h"
+#ifndef __S3COMPAT_FRSBLOBS__
+#define __S3COMPAT_FRSBLOBS__
+void _decode_nt_backup_file(struct pipes_struct *p, struct decode_nt_backup_file *r);
+void _decode_frsrpc_StageHeader(struct pipes_struct *p, struct decode_frsrpc_StageHeader *r);
+void _decode_FileNetworkOpenInformation(struct pipes_struct *p, struct decode_FileNetworkOpenInformation *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_frsblobs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FRSBLOBS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsrpc.c b/bin/default/librpc/gen_ndr/s3compat_frsrpc.c
new file mode 100644 (file)
index 0000000..bfed235
--- /dev/null
@@ -0,0 +1,221 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_frsrpc.h"
+
+struct _s3_compat_frsrpc_FrsSendCommPkt_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsrpc_FrsSendCommPkt *r;
+};
+
+static struct tevent_req *_s3_compat_frsrpc_FrsSendCommPkt_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsrpc_FrsSendCommPkt *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsrpc_FrsSendCommPkt_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsrpc_FrsSendCommPkt_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsrpc_FrsSendCommPkt(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsrpc_FrsSendCommPkt_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsrpc_FrsVerifyPromotionParent_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsrpc_FrsVerifyPromotionParent *r;
+};
+
+static struct tevent_req *_s3_compat_frsrpc_FrsVerifyPromotionParent_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsrpc_FrsVerifyPromotionParent *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsrpc_FrsVerifyPromotionParent_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsrpc_FrsVerifyPromotionParent_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsrpc_FrsVerifyPromotionParent(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsrpc_FrsVerifyPromotionParent_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsrpc_FrsStartPromotionParent_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsrpc_FrsStartPromotionParent *r;
+};
+
+static struct tevent_req *_s3_compat_frsrpc_FrsStartPromotionParent_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsrpc_FrsStartPromotionParent *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsrpc_FrsStartPromotionParent_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsrpc_FrsStartPromotionParent_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parent_guid = r->in.parent_guid;
+       r->out.result = _frsrpc_FrsStartPromotionParent(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsrpc_FrsStartPromotionParent_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frsrpc_FrsNOP_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frsrpc_FrsNOP *r;
+};
+
+static struct tevent_req *_s3_compat_frsrpc_FrsNOP_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frsrpc_FrsNOP *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frsrpc_FrsNOP_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frsrpc_FrsNOP_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frsrpc_FrsNOP(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frsrpc_FrsNOP_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_frsrpc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsrpc_FrsSendCommPkt_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsrpc_FrsSendCommPkt_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsrpc_FrsVerifyPromotionParent_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsrpc_FrsVerifyPromotionParent_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsrpc_FrsStartPromotionParent_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsrpc_FrsStartPromotionParent_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frsrpc_FrsNOP_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frsrpc_FrsNOP_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_frsrpc_epv[] = {
+       .name = "_s3_compat_frsrpc",
+       .table = &ndr_table_frsrpc,
+       .num_fns = 4,
+       .fns = _s3_compat_frsrpc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_frsrpc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_frsrpc.h b/bin/default/librpc/gen_ndr/s3compat_frsrpc.h
new file mode 100644 (file)
index 0000000..2c1a896
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_frsrpc.h"
+#ifndef __S3COMPAT_FRSRPC__
+#define __S3COMPAT_FRSRPC__
+WERROR _frsrpc_FrsSendCommPkt(struct pipes_struct *p, struct frsrpc_FrsSendCommPkt *r);
+WERROR _frsrpc_FrsVerifyPromotionParent(struct pipes_struct *p, struct frsrpc_FrsVerifyPromotionParent *r);
+WERROR _frsrpc_FrsStartPromotionParent(struct pipes_struct *p, struct frsrpc_FrsStartPromotionParent *r);
+WERROR _frsrpc_FrsNOP(struct pipes_struct *p, struct frsrpc_FrsNOP *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_frsrpc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FRSRPC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_frstrans.c b/bin/default/librpc/gen_ndr/s3compat_frstrans.c
new file mode 100644 (file)
index 0000000..af63878
--- /dev/null
@@ -0,0 +1,931 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_frstrans.h"
+
+struct _s3_compat_frstrans_CheckConnectivity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_CheckConnectivity *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_CheckConnectivity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_CheckConnectivity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_CheckConnectivity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_CheckConnectivity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frstrans_CheckConnectivity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_CheckConnectivity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_EstablishConnection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_EstablishConnection *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_EstablishConnection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_EstablishConnection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_EstablishConnection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_EstablishConnection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.upstream_protocol_version = talloc_zero(r, enum frstrans_ProtocolVersion);
+       if (tevent_req_nomem(r->out.upstream_protocol_version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.upstream_flags = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.upstream_flags, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frstrans_EstablishConnection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_EstablishConnection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_EstablishSession_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_EstablishSession *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_EstablishSession_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_EstablishSession *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_EstablishSession_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_EstablishSession_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frstrans_EstablishSession(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_EstablishSession_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_RequestUpdates_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_RequestUpdates *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_RequestUpdates_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_RequestUpdates *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_RequestUpdates_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_RequestUpdates_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.frs_update = talloc_zero_array(r, struct frstrans_Update, r->in.credits_available);
+       if (tevent_req_nomem(r->out.frs_update, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.update_count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.update_count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.update_status = talloc_zero(r, enum frstrans_UpdateStatus);
+       if (tevent_req_nomem(r->out.update_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.gvsn_db_guid = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.gvsn_db_guid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.gvsn_version = talloc_zero(r, uint64_t);
+       if (tevent_req_nomem(r->out.gvsn_version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frstrans_RequestUpdates(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_RequestUpdates_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_RequestVersionVector_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_RequestVersionVector *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_RequestVersionVector_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_RequestVersionVector *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_RequestVersionVector_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_RequestVersionVector_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _frstrans_RequestVersionVector(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_RequestVersionVector_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_AsyncPoll_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_AsyncPoll *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_AsyncPoll_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_AsyncPoll *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_AsyncPoll_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_AsyncPoll_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.response = talloc_zero(r, struct frstrans_AsyncResponseContext);
+       if (tevent_req_nomem(r->out.response, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frstrans_AsyncPoll(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_AsyncPoll_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_REQUEST_RECORDS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_REQUEST_RECORDS *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_REQUEST_RECORDS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_REQUEST_RECORDS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_REQUEST_RECORDS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_REQUEST_RECORDS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_REQUEST_RECORDS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_REQUEST_RECORDS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_UPDATE_CANCEL_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_UPDATE_CANCEL *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_UPDATE_CANCEL_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_UPDATE_CANCEL *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_UPDATE_CANCEL_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_UPDATE_CANCEL_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_UPDATE_CANCEL(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_UPDATE_CANCEL_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_RAW_GET_FILE_DATA *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_RAW_GET_FILE_DATA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_RAW_GET_FILE_DATA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_RAW_GET_FILE_DATA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_RDC_GET_SIGNATURES *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_RDC_GET_SIGNATURES_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_RDC_GET_SIGNATURES *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_RDC_GET_SIGNATURES(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_RDC_PUSH_SOURCE_NEEDS *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_RDC_PUSH_SOURCE_NEEDS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_RDC_PUSH_SOURCE_NEEDS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_RDC_GET_FILE_DATA *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_RDC_GET_FILE_DATA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_RDC_GET_FILE_DATA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_RDC_GET_FILE_DATA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_RdcClose_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_RdcClose *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_RdcClose_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_RdcClose *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_RdcClose_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_RdcClose_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.server_context = r->in.server_context;
+       r->out.result = _frstrans_RdcClose(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_RdcClose_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_InitializeFileTransferAsync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_InitializeFileTransferAsync *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_InitializeFileTransferAsync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_InitializeFileTransferAsync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_InitializeFileTransferAsync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_InitializeFileTransferAsync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.frs_update = r->in.frs_update;
+       r->out.staging_policy = r->in.staging_policy;
+       r->out.server_context = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.server_context, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rdc_file_info = talloc_zero(r, struct frstrans_RdcFileInfo *);
+       if (tevent_req_nomem(r->out.rdc_file_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data_buffer = talloc_zero_array(r, uint8_t, r->in.buffer_size);
+       if (tevent_req_nomem(r->out.data_buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.size_read = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.size_read, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.is_end_of_file = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.is_end_of_file, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _frstrans_InitializeFileTransferAsync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_InitializeFileTransferAsync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE *r;
+};
+
+static struct tevent_req *_s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_RawGetFileDataAsync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_RawGetFileDataAsync *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_RawGetFileDataAsync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_RawGetFileDataAsync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_RawGetFileDataAsync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_RawGetFileDataAsync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.result = _frstrans_RawGetFileDataAsync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_RawGetFileDataAsync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_frstrans_RdcGetFileDataAsync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct frstrans_RdcGetFileDataAsync *r;
+};
+
+static struct tevent_req *_s3_compat_frstrans_RdcGetFileDataAsync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct frstrans_RdcGetFileDataAsync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_frstrans_RdcGetFileDataAsync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_frstrans_RdcGetFileDataAsync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.result = _frstrans_RdcGetFileDataAsync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_frstrans_RdcGetFileDataAsync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_frstrans_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_CheckConnectivity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_CheckConnectivity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_EstablishConnection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_EstablishConnection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_EstablishSession_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_EstablishSession_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_RequestUpdates_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_RequestUpdates_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_RequestVersionVector_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_RequestVersionVector_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_AsyncPoll_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_AsyncPoll_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_REQUEST_RECORDS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_REQUEST_RECORDS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_UPDATE_CANCEL_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_UPDATE_CANCEL_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_RAW_GET_FILE_DATA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_RDC_GET_SIGNATURES_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_RDC_PUSH_SOURCE_NEEDS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_RDC_GET_FILE_DATA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_RdcClose_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_RdcClose_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_InitializeFileTransferAsync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_InitializeFileTransferAsync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_RawGetFileDataAsync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_RawGetFileDataAsync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_frstrans_RdcGetFileDataAsync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_frstrans_RdcGetFileDataAsync_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_frstrans_epv[] = {
+       .name = "_s3_compat_frstrans",
+       .table = &ndr_table_frstrans,
+       .num_fns = 17,
+       .fns = _s3_compat_frstrans_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_frstrans(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_frstrans.h b/bin/default/librpc/gen_ndr/s3compat_frstrans.h
new file mode 100644 (file)
index 0000000..0dd31a3
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_frstrans.h"
+#ifndef __S3COMPAT_FRSTRANS__
+#define __S3COMPAT_FRSTRANS__
+WERROR _frstrans_CheckConnectivity(struct pipes_struct *p, struct frstrans_CheckConnectivity *r);
+WERROR _frstrans_EstablishConnection(struct pipes_struct *p, struct frstrans_EstablishConnection *r);
+WERROR _frstrans_EstablishSession(struct pipes_struct *p, struct frstrans_EstablishSession *r);
+WERROR _frstrans_RequestUpdates(struct pipes_struct *p, struct frstrans_RequestUpdates *r);
+WERROR _frstrans_RequestVersionVector(struct pipes_struct *p, struct frstrans_RequestVersionVector *r);
+WERROR _frstrans_AsyncPoll(struct pipes_struct *p, struct frstrans_AsyncPoll *r);
+void _FRSTRANS_REQUEST_RECORDS(struct pipes_struct *p, struct FRSTRANS_REQUEST_RECORDS *r);
+void _FRSTRANS_UPDATE_CANCEL(struct pipes_struct *p, struct FRSTRANS_UPDATE_CANCEL *r);
+void _FRSTRANS_RAW_GET_FILE_DATA(struct pipes_struct *p, struct FRSTRANS_RAW_GET_FILE_DATA *r);
+void _FRSTRANS_RDC_GET_SIGNATURES(struct pipes_struct *p, struct FRSTRANS_RDC_GET_SIGNATURES *r);
+void _FRSTRANS_RDC_PUSH_SOURCE_NEEDS(struct pipes_struct *p, struct FRSTRANS_RDC_PUSH_SOURCE_NEEDS *r);
+void _FRSTRANS_RDC_GET_FILE_DATA(struct pipes_struct *p, struct FRSTRANS_RDC_GET_FILE_DATA *r);
+WERROR _frstrans_RdcClose(struct pipes_struct *p, struct frstrans_RdcClose *r);
+WERROR _frstrans_InitializeFileTransferAsync(struct pipes_struct *p, struct frstrans_InitializeFileTransferAsync *r);
+void _FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE(struct pipes_struct *p, struct FRSTRANS_OPNUM_0E_NOT_USED_ON_THE_WIRE *r);
+WERROR _frstrans_RawGetFileDataAsync(struct pipes_struct *p, struct frstrans_RawGetFileDataAsync *r);
+WERROR _frstrans_RdcGetFileDataAsync(struct pipes_struct *p, struct frstrans_RdcGetFileDataAsync *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_frstrans(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FRSTRANS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_fscc.c b/bin/default/librpc/gen_ndr/s3compat_fscc.c
new file mode 100644 (file)
index 0000000..bbaa22b
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_fscc.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_fscc_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_fscc_epv[] = {
+       .name = "_s3_compat_fscc",
+       .table = &ndr_table_fscc,
+       .num_fns = 0,
+       .fns = _s3_compat_fscc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_fscc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_fscc.h b/bin/default/librpc/gen_ndr/s3compat_fscc.h
new file mode 100644 (file)
index 0000000..3923a55
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_fscc.h"
+#ifndef __S3COMPAT_FSCC__
+#define __S3COMPAT_FSCC__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_fscc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FSCC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_fsrvp.c b/bin/default/librpc/gen_ndr/s3compat_fsrvp.c
new file mode 100644 (file)
index 0000000..a5c364a
--- /dev/null
@@ -0,0 +1,711 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_fsrvp.h"
+
+struct _s3_compat_fss_GetSupportedVersion_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_GetSupportedVersion *r;
+};
+
+static struct tevent_req *_s3_compat_fss_GetSupportedVersion_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_GetSupportedVersion *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_GetSupportedVersion_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_GetSupportedVersion_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.MinVersion = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.MinVersion, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.MaxVersion = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.MaxVersion, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_GetSupportedVersion(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_GetSupportedVersion_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_SetContext_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_SetContext *r;
+};
+
+static struct tevent_req *_s3_compat_fss_SetContext_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_SetContext *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_SetContext_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_SetContext_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_SetContext(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_SetContext_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_StartShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_StartShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_StartShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_StartShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_StartShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_StartShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pShadowCopySetId = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.pShadowCopySetId, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_StartShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_StartShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_AddToShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_AddToShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_AddToShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_AddToShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_AddToShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_AddToShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pShadowCopyId = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.pShadowCopyId, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_AddToShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_AddToShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_CommitShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_CommitShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_CommitShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_CommitShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_CommitShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_CommitShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_CommitShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_CommitShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_ExposeShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_ExposeShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_ExposeShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_ExposeShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_ExposeShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_ExposeShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_ExposeShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_ExposeShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_RecoveryCompleteShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_RecoveryCompleteShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_RecoveryCompleteShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_RecoveryCompleteShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_RecoveryCompleteShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_RecoveryCompleteShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_RecoveryCompleteShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_RecoveryCompleteShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_AbortShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_AbortShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_AbortShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_AbortShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_AbortShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_AbortShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_AbortShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_AbortShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_IsPathSupported_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_IsPathSupported *r;
+};
+
+static struct tevent_req *_s3_compat_fss_IsPathSupported_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_IsPathSupported *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_IsPathSupported_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_IsPathSupported_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.SupportedByThisProvider = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.SupportedByThisProvider, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.OwnerMachineName = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.OwnerMachineName, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_IsPathSupported(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_IsPathSupported_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_IsPathShadowCopied_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_IsPathShadowCopied *r;
+};
+
+static struct tevent_req *_s3_compat_fss_IsPathShadowCopied_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_IsPathShadowCopied *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_IsPathShadowCopied_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_IsPathShadowCopied_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ShadowCopyPresent = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.ShadowCopyPresent, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ShadowCopyCompatibility = talloc_zero(r, int32_t);
+       if (tevent_req_nomem(r->out.ShadowCopyCompatibility, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_IsPathShadowCopied(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_IsPathShadowCopied_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_GetShareMapping_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_GetShareMapping *r;
+};
+
+static struct tevent_req *_s3_compat_fss_GetShareMapping_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_GetShareMapping *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_GetShareMapping_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_GetShareMapping_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ShareMapping = talloc_zero(r, union fssagent_share_mapping);
+       if (tevent_req_nomem(r->out.ShareMapping, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _fss_GetShareMapping(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_GetShareMapping_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_DeleteShareMapping_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_DeleteShareMapping *r;
+};
+
+static struct tevent_req *_s3_compat_fss_DeleteShareMapping_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_DeleteShareMapping *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_DeleteShareMapping_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_DeleteShareMapping_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_DeleteShareMapping(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_DeleteShareMapping_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_fss_PrepareShadowCopySet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct fss_PrepareShadowCopySet *r;
+};
+
+static struct tevent_req *_s3_compat_fss_PrepareShadowCopySet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct fss_PrepareShadowCopySet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_fss_PrepareShadowCopySet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_fss_PrepareShadowCopySet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _fss_PrepareShadowCopySet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_fss_PrepareShadowCopySet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_FileServerVssAgent_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_GetSupportedVersion_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_GetSupportedVersion_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_SetContext_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_SetContext_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_StartShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_StartShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_AddToShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_AddToShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_CommitShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_CommitShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_ExposeShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_ExposeShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_RecoveryCompleteShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_RecoveryCompleteShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_AbortShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_AbortShadowCopySet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_IsPathSupported_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_IsPathSupported_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_IsPathShadowCopied_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_IsPathShadowCopied_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_GetShareMapping_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_GetShareMapping_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_DeleteShareMapping_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_DeleteShareMapping_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_fss_PrepareShadowCopySet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_fss_PrepareShadowCopySet_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_FileServerVssAgent_epv[] = {
+       .name = "_s3_compat_FileServerVssAgent",
+       .table = &ndr_table_FileServerVssAgent,
+       .num_fns = 13,
+       .fns = _s3_compat_FileServerVssAgent_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_FileServerVssAgent(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_fsrvp.h b/bin/default/librpc/gen_ndr/s3compat_fsrvp.h
new file mode 100644 (file)
index 0000000..5c86bb1
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_fsrvp.h"
+#ifndef __S3COMPAT_FILESERVERVSSAGENT__
+#define __S3COMPAT_FILESERVERVSSAGENT__
+uint32 _fss_GetSupportedVersion(struct pipes_struct *p, struct fss_GetSupportedVersion *r);
+uint32 _fss_SetContext(struct pipes_struct *p, struct fss_SetContext *r);
+uint32 _fss_StartShadowCopySet(struct pipes_struct *p, struct fss_StartShadowCopySet *r);
+uint32 _fss_AddToShadowCopySet(struct pipes_struct *p, struct fss_AddToShadowCopySet *r);
+uint32 _fss_CommitShadowCopySet(struct pipes_struct *p, struct fss_CommitShadowCopySet *r);
+uint32 _fss_ExposeShadowCopySet(struct pipes_struct *p, struct fss_ExposeShadowCopySet *r);
+uint32 _fss_RecoveryCompleteShadowCopySet(struct pipes_struct *p, struct fss_RecoveryCompleteShadowCopySet *r);
+uint32 _fss_AbortShadowCopySet(struct pipes_struct *p, struct fss_AbortShadowCopySet *r);
+uint32 _fss_IsPathSupported(struct pipes_struct *p, struct fss_IsPathSupported *r);
+uint32 _fss_IsPathShadowCopied(struct pipes_struct *p, struct fss_IsPathShadowCopied *r);
+uint32 _fss_GetShareMapping(struct pipes_struct *p, struct fss_GetShareMapping *r);
+uint32 _fss_DeleteShareMapping(struct pipes_struct *p, struct fss_DeleteShareMapping *r);
+uint32 _fss_PrepareShadowCopySet(struct pipes_struct *p, struct fss_PrepareShadowCopySet *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_FileServerVssAgent(struct dcerpc_server *server);
+#endif /* __S3COMPAT_FILESERVERVSSAGENT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_initshutdown.c b/bin/default/librpc/gen_ndr/s3compat_initshutdown.c
new file mode 100644 (file)
index 0000000..7fdab80
--- /dev/null
@@ -0,0 +1,170 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_initshutdown.h"
+
+struct _s3_compat_initshutdown_Init_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct initshutdown_Init *r;
+};
+
+static struct tevent_req *_s3_compat_initshutdown_Init_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct initshutdown_Init *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_initshutdown_Init_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_initshutdown_Init_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _initshutdown_Init(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_initshutdown_Init_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_initshutdown_Abort_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct initshutdown_Abort *r;
+};
+
+static struct tevent_req *_s3_compat_initshutdown_Abort_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct initshutdown_Abort *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_initshutdown_Abort_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_initshutdown_Abort_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _initshutdown_Abort(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_initshutdown_Abort_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_initshutdown_InitEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct initshutdown_InitEx *r;
+};
+
+static struct tevent_req *_s3_compat_initshutdown_InitEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct initshutdown_InitEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_initshutdown_InitEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_initshutdown_InitEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _initshutdown_InitEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_initshutdown_InitEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_initshutdown_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_initshutdown_Init_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_initshutdown_Init_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_initshutdown_Abort_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_initshutdown_Abort_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_initshutdown_InitEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_initshutdown_InitEx_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_initshutdown_epv[] = {
+       .name = "_s3_compat_initshutdown",
+       .table = &ndr_table_initshutdown,
+       .num_fns = 3,
+       .fns = _s3_compat_initshutdown_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_initshutdown(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_initshutdown.h b/bin/default/librpc/gen_ndr/s3compat_initshutdown.h
new file mode 100644 (file)
index 0000000..1c59dfc
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_initshutdown.h"
+#ifndef __S3COMPAT_INITSHUTDOWN__
+#define __S3COMPAT_INITSHUTDOWN__
+WERROR _initshutdown_Init(struct pipes_struct *p, struct initshutdown_Init *r);
+WERROR _initshutdown_Abort(struct pipes_struct *p, struct initshutdown_Abort *r);
+WERROR _initshutdown_InitEx(struct pipes_struct *p, struct initshutdown_InitEx *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_initshutdown(struct dcerpc_server *server);
+#endif /* __S3COMPAT_INITSHUTDOWN__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_keysvc.c b/bin/default/librpc/gen_ndr/s3compat_keysvc.c
new file mode 100644 (file)
index 0000000..be43575
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_keysvc.h"
+
+struct _s3_compat_keysvc_Unknown0_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct keysvc_Unknown0 *r;
+};
+
+static struct tevent_req *_s3_compat_keysvc_Unknown0_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct keysvc_Unknown0 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_keysvc_Unknown0_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_keysvc_Unknown0_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _keysvc_Unknown0(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_keysvc_Unknown0_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_keysvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_keysvc_Unknown0_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_keysvc_Unknown0_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_keysvc_epv[] = {
+       .name = "_s3_compat_keysvc",
+       .table = &ndr_table_keysvc,
+       .num_fns = 1,
+       .fns = _s3_compat_keysvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_keysvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_keysvc.h b/bin/default/librpc/gen_ndr/s3compat_keysvc.h
new file mode 100644 (file)
index 0000000..276c07d
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_keysvc.h"
+#ifndef __S3COMPAT_KEYSVC__
+#define __S3COMPAT_KEYSVC__
+WERROR _keysvc_Unknown0(struct pipes_struct *p, struct keysvc_Unknown0 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_keysvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_KEYSVC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_krb5pac.c b/bin/default/librpc/gen_ndr/s3compat_krb5pac.c
new file mode 100644 (file)
index 0000000..4176677
--- /dev/null
@@ -0,0 +1,268 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_krb5pac.h"
+
+struct _s3_compat_decode_pac_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_pac *r;
+};
+
+static struct tevent_req *_s3_compat_decode_pac_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_pac *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_pac_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_pac_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_pac(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_pac_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_pac_raw_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_pac_raw *r;
+};
+
+static struct tevent_req *_s3_compat_decode_pac_raw_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_pac_raw *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_pac_raw_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_pac_raw_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_pac_raw(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_pac_raw_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_login_info_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_login_info *r;
+};
+
+static struct tevent_req *_s3_compat_decode_login_info_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_login_info *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_login_info_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_login_info_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_login_info(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_login_info_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_login_info_ctr_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_login_info_ctr *r;
+};
+
+static struct tevent_req *_s3_compat_decode_login_info_ctr_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_login_info_ctr *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_login_info_ctr_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_login_info_ctr_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_login_info_ctr(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_login_info_ctr_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_pac_validate_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_pac_validate *r;
+};
+
+static struct tevent_req *_s3_compat_decode_pac_validate_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_pac_validate *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_pac_validate_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_pac_validate_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_pac_validate(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_pac_validate_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_krb5pac_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_pac_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_pac_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_pac_raw_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_pac_raw_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_login_info_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_login_info_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_login_info_ctr_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_login_info_ctr_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_pac_validate_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_pac_validate_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_krb5pac_epv[] = {
+       .name = "_s3_compat_krb5pac",
+       .table = &ndr_table_krb5pac,
+       .num_fns = 5,
+       .fns = _s3_compat_krb5pac_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_krb5pac(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_krb5pac.h b/bin/default/librpc/gen_ndr/s3compat_krb5pac.h
new file mode 100644 (file)
index 0000000..1c8f5fb
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_krb5pac.h"
+#ifndef __S3COMPAT_KRB5PAC__
+#define __S3COMPAT_KRB5PAC__
+void _decode_pac(struct pipes_struct *p, struct decode_pac *r);
+void _decode_pac_raw(struct pipes_struct *p, struct decode_pac_raw *r);
+void _decode_login_info(struct pipes_struct *p, struct decode_login_info *r);
+void _decode_login_info_ctr(struct pipes_struct *p, struct decode_login_info_ctr *r);
+void _decode_pac_validate(struct pipes_struct *p, struct decode_pac_validate *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_krb5pac(struct dcerpc_server *server);
+#endif /* __S3COMPAT_KRB5PAC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_lsa.c b/bin/default/librpc/gen_ndr/s3compat_lsa.c
new file mode 100644 (file)
index 0000000..80db74a
--- /dev/null
@@ -0,0 +1,4308 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_lsa.h"
+
+struct _s3_compat_lsa_Close_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_Close *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_Close_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_Close *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_Close_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_Close_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _lsa_Close(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_Close_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_Delete_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_Delete *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_Delete_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_Delete *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_Delete_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_Delete_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_Delete(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_Delete_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumPrivs_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumPrivs *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumPrivs_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumPrivs *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumPrivs_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumPrivs_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.privs = talloc_zero(r, struct lsa_PrivArray);
+       if (tevent_req_nomem(r->out.privs, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumPrivs(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumPrivs_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QuerySecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QuerySecurity *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QuerySecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QuerySecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QuerySecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QuerySecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sdbuf = talloc_zero(r, struct sec_desc_buf *);
+       if (tevent_req_nomem(r->out.sdbuf, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QuerySecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QuerySecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetSecObj_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetSecObj *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetSecObj_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetSecObj *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetSecObj_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetSecObj_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetSecObj(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetSecObj_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_ChangePassword_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_ChangePassword *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_ChangePassword_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_ChangePassword *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_ChangePassword_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_ChangePassword_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_ChangePassword(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_ChangePassword_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenPolicy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenPolicy *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenPolicy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenPolicy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenPolicy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenPolicy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenPolicy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenPolicy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryInfoPolicy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryInfoPolicy *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryInfoPolicy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryInfoPolicy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryInfoPolicy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryInfoPolicy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_PolicyInformation *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryInfoPolicy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryInfoPolicy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetInfoPolicy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetInfoPolicy *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetInfoPolicy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetInfoPolicy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetInfoPolicy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetInfoPolicy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetInfoPolicy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetInfoPolicy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_ClearAuditLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_ClearAuditLog *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_ClearAuditLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_ClearAuditLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_ClearAuditLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_ClearAuditLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_ClearAuditLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_ClearAuditLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CreateAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CreateAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CreateAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CreateAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CreateAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CreateAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.acct_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.acct_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_CreateAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CreateAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumAccounts_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumAccounts *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumAccounts_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumAccounts *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumAccounts_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumAccounts_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.sids = talloc_zero(r, struct lsa_SidArray);
+       if (tevent_req_nomem(r->out.sids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumAccounts(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumAccounts_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CreateTrustedDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CreateTrustedDomain *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CreateTrustedDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CreateTrustedDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CreateTrustedDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CreateTrustedDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trustdom_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.trustdom_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_CreateTrustedDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CreateTrustedDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumTrustDom_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumTrustDom *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumTrustDom_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumTrustDom *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumTrustDom_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumTrustDom_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.domains = talloc_zero(r, struct lsa_DomainList);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumTrustDom(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumTrustDom_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupNames_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupNames *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupNames_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupNames *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupNames_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupNames_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = r->in.sids;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupNames(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupNames_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupSids_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupSids *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupSids_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupSids *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupSids_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupSids_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.names = r->in.names;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupSids(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupSids_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CreateSecret_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CreateSecret *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CreateSecret_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CreateSecret *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CreateSecret_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CreateSecret_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sec_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.sec_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_CreateSecret(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CreateSecret_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.acct_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.acct_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumPrivsAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumPrivsAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumPrivsAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumPrivsAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumPrivsAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumPrivsAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.privs = talloc_zero(r, struct lsa_PrivilegeSet *);
+       if (tevent_req_nomem(r->out.privs, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumPrivsAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumPrivsAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_AddPrivilegesToAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_AddPrivilegesToAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_AddPrivilegesToAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_AddPrivilegesToAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_AddPrivilegesToAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_AddPrivilegesToAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_AddPrivilegesToAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_AddPrivilegesToAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_RemovePrivilegesFromAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_RemovePrivilegesFromAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_RemovePrivilegesFromAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_RemovePrivilegesFromAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_RemovePrivilegesFromAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_RemovePrivilegesFromAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_RemovePrivilegesFromAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_RemovePrivilegesFromAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_GetQuotasForAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_GetQuotasForAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_GetQuotasForAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_GetQuotasForAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_GetQuotasForAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_GetQuotasForAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_GetQuotasForAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_GetQuotasForAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetQuotasForAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetQuotasForAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetQuotasForAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetQuotasForAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetQuotasForAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetQuotasForAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetQuotasForAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetQuotasForAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_GetSystemAccessAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_GetSystemAccessAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_GetSystemAccessAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_GetSystemAccessAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_GetSystemAccessAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_GetSystemAccessAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.access_mask = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.access_mask, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_GetSystemAccessAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_GetSystemAccessAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetSystemAccessAccount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetSystemAccessAccount *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetSystemAccessAccount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetSystemAccessAccount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetSystemAccessAccount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetSystemAccessAccount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetSystemAccessAccount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetSystemAccessAccount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenTrustedDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenTrustedDomain *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenTrustedDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenTrustedDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenTrustedDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenTrustedDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trustdom_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.trustdom_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenTrustedDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenTrustedDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryTrustedDomainInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryTrustedDomainInfo *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryTrustedDomainInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryTrustedDomainInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryTrustedDomainInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryTrustedDomainInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_TrustedDomainInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryTrustedDomainInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryTrustedDomainInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetInformationTrustedDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetInformationTrustedDomain *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetInformationTrustedDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetInformationTrustedDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetInformationTrustedDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetInformationTrustedDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetInformationTrustedDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetInformationTrustedDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenSecret_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenSecret *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenSecret_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenSecret *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenSecret_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenSecret_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sec_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.sec_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenSecret(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenSecret_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetSecret_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetSecret *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetSecret_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetSecret *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetSecret_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetSecret_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetSecret(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetSecret_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QuerySecret_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QuerySecret *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QuerySecret_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QuerySecret *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QuerySecret_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QuerySecret_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.new_val = r->in.new_val;
+       r->out.new_mtime = r->in.new_mtime;
+       r->out.old_val = r->in.old_val;
+       r->out.old_mtime = r->in.old_mtime;
+       r->out.result = _lsa_QuerySecret(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QuerySecret_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupPrivValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupPrivValue *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupPrivValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupPrivValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupPrivValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupPrivValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.luid = talloc_zero(r, struct lsa_LUID);
+       if (tevent_req_nomem(r->out.luid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupPrivValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupPrivValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupPrivName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupPrivName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupPrivName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupPrivName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupPrivName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupPrivName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.name = talloc_zero(r, struct lsa_StringLarge *);
+       if (tevent_req_nomem(r->out.name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupPrivName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupPrivName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupPrivDisplayName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupPrivDisplayName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupPrivDisplayName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupPrivDisplayName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupPrivDisplayName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupPrivDisplayName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.disp_name = talloc_zero(r, struct lsa_StringLarge *);
+       if (tevent_req_nomem(r->out.disp_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.returned_language_id = talloc_zero(r, uint16_t);
+       if (tevent_req_nomem(r->out.returned_language_id, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupPrivDisplayName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupPrivDisplayName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_DeleteObject_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_DeleteObject *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_DeleteObject_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_DeleteObject *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_DeleteObject_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_DeleteObject_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _lsa_DeleteObject(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_DeleteObject_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumAccountsWithUserRight_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumAccountsWithUserRight *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumAccountsWithUserRight_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumAccountsWithUserRight *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumAccountsWithUserRight_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumAccountsWithUserRight_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = talloc_zero(r, struct lsa_SidArray);
+       if (tevent_req_nomem(r->out.sids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumAccountsWithUserRight(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumAccountsWithUserRight_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumAccountRights_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumAccountRights *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumAccountRights_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumAccountRights *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumAccountRights_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumAccountRights_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rights = talloc_zero(r, struct lsa_RightSet);
+       if (tevent_req_nomem(r->out.rights, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumAccountRights(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumAccountRights_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_AddAccountRights_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_AddAccountRights *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_AddAccountRights_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_AddAccountRights *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_AddAccountRights_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_AddAccountRights_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_AddAccountRights(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_AddAccountRights_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_RemoveAccountRights_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_RemoveAccountRights *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_RemoveAccountRights_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_RemoveAccountRights *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_RemoveAccountRights_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_RemoveAccountRights_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_RemoveAccountRights(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_RemoveAccountRights_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryTrustedDomainInfoBySid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryTrustedDomainInfoBySid *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryTrustedDomainInfoBySid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryTrustedDomainInfoBySid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryTrustedDomainInfoBySid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryTrustedDomainInfoBySid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_TrustedDomainInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryTrustedDomainInfoBySid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryTrustedDomainInfoBySid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetTrustedDomainInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetTrustedDomainInfo *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetTrustedDomainInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetTrustedDomainInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetTrustedDomainInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetTrustedDomainInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetTrustedDomainInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetTrustedDomainInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_DeleteTrustedDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_DeleteTrustedDomain *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_DeleteTrustedDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_DeleteTrustedDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_DeleteTrustedDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_DeleteTrustedDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_DeleteTrustedDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_DeleteTrustedDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_StorePrivateData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_StorePrivateData *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_StorePrivateData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_StorePrivateData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_StorePrivateData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_StorePrivateData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_StorePrivateData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_StorePrivateData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_RetrievePrivateData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_RetrievePrivateData *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_RetrievePrivateData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_RetrievePrivateData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_RetrievePrivateData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_RetrievePrivateData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.val = r->in.val;
+       r->out.result = _lsa_RetrievePrivateData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_RetrievePrivateData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenPolicy2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenPolicy2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenPolicy2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenPolicy2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenPolicy2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenPolicy2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenPolicy2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenPolicy2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_GetUserName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_GetUserName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_GetUserName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_GetUserName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_GetUserName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_GetUserName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.account_name = r->in.account_name;
+       r->out.authority_name = r->in.authority_name;
+       r->out.result = _lsa_GetUserName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_GetUserName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryInfoPolicy2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryInfoPolicy2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryInfoPolicy2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryInfoPolicy2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryInfoPolicy2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryInfoPolicy2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_PolicyInformation *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryInfoPolicy2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryInfoPolicy2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetInfoPolicy2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetInfoPolicy2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetInfoPolicy2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetInfoPolicy2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetInfoPolicy2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetInfoPolicy2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetInfoPolicy2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetInfoPolicy2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryTrustedDomainInfoByName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryTrustedDomainInfoByName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryTrustedDomainInfoByName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryTrustedDomainInfoByName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryTrustedDomainInfoByName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryTrustedDomainInfoByName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_TrustedDomainInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryTrustedDomainInfoByName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryTrustedDomainInfoByName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetTrustedDomainInfoByName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetTrustedDomainInfoByName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetTrustedDomainInfoByName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetTrustedDomainInfoByName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetTrustedDomainInfoByName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetTrustedDomainInfoByName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetTrustedDomainInfoByName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetTrustedDomainInfoByName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_EnumTrustedDomainsEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_EnumTrustedDomainsEx *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_EnumTrustedDomainsEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_EnumTrustedDomainsEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_EnumTrustedDomainsEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_EnumTrustedDomainsEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.domains = talloc_zero(r, struct lsa_DomainListEx);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_EnumTrustedDomainsEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_EnumTrustedDomainsEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CreateTrustedDomainEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CreateTrustedDomainEx *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CreateTrustedDomainEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CreateTrustedDomainEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CreateTrustedDomainEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CreateTrustedDomainEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trustdom_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.trustdom_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_CreateTrustedDomainEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CreateTrustedDomainEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CloseTrustedDomainEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CloseTrustedDomainEx *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CloseTrustedDomainEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CloseTrustedDomainEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CloseTrustedDomainEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CloseTrustedDomainEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _lsa_CloseTrustedDomainEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CloseTrustedDomainEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_QueryDomainInformationPolicy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_QueryDomainInformationPolicy *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_QueryDomainInformationPolicy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_QueryDomainInformationPolicy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_QueryDomainInformationPolicy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_QueryDomainInformationPolicy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union lsa_DomainInformationPolicy *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_QueryDomainInformationPolicy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_QueryDomainInformationPolicy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_SetDomainInformationPolicy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_SetDomainInformationPolicy *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_SetDomainInformationPolicy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_SetDomainInformationPolicy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_SetDomainInformationPolicy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_SetDomainInformationPolicy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_SetDomainInformationPolicy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_SetDomainInformationPolicy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_OpenTrustedDomainByName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_OpenTrustedDomainByName *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_OpenTrustedDomainByName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_OpenTrustedDomainByName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_OpenTrustedDomainByName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_OpenTrustedDomainByName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trustdom_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.trustdom_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_OpenTrustedDomainByName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_OpenTrustedDomainByName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_TestCall_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_TestCall *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_TestCall_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_TestCall *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_TestCall_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_TestCall_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_TestCall(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_TestCall_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupSids2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupSids2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupSids2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupSids2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupSids2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupSids2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.names = r->in.names;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupSids2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupSids2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupNames2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupNames2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupNames2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupNames2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupNames2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupNames2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = r->in.sids;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupNames2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupNames2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CreateTrustedDomainEx2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CreateTrustedDomainEx2 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CreateTrustedDomainEx2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CreateTrustedDomainEx2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CreateTrustedDomainEx2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CreateTrustedDomainEx2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trustdom_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.trustdom_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_CreateTrustedDomainEx2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CreateTrustedDomainEx2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRWRITE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRWRITE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRWRITE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRWRITE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRWRITE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRWRITE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRWRITE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRWRITE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRREAD_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRREAD *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRREAD_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRREAD *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRREAD_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRREAD_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRREAD(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRREAD_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRENUMERATE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRENUMERATE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRENUMERATE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRENUMERATE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRENUMERATE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRENUMERATE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRENUMERATE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRENUMERATE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRWRITEDOMAINCREDENTIALS *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRWRITEDOMAINCREDENTIALS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRREADDOMAINCREDENTIALS *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRREADDOMAINCREDENTIALS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRREADDOMAINCREDENTIALS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRDELETE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRDELETE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRDELETE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRDELETE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRDELETE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRDELETE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRDELETE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRDELETE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRGETTARGETINFO_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRGETTARGETINFO *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRGETTARGETINFO_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRGETTARGETINFO *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRGETTARGETINFO_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRGETTARGETINFO_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRGETTARGETINFO(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRGETTARGETINFO_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRPROFILELOADED_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRPROFILELOADED *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRPROFILELOADED_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRPROFILELOADED *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRPROFILELOADED_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRPROFILELOADED_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRPROFILELOADED(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRPROFILELOADED_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupNames3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupNames3 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupNames3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupNames3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupNames3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupNames3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = r->in.sids;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupNames3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupNames3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRGETSESSIONTYPES_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRGETSESSIONTYPES *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRGETSESSIONTYPES_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRGETSESSIONTYPES *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRGETSESSIONTYPES_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRGETSESSIONTYPES_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRGETSESSIONTYPES(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRGETSESSIONTYPES_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARREGISTERAUDITEVENT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARREGISTERAUDITEVENT *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARREGISTERAUDITEVENT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARREGISTERAUDITEVENT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARREGISTERAUDITEVENT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARREGISTERAUDITEVENT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARREGISTERAUDITEVENT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARREGISTERAUDITEVENT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARGENAUDITEVENT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARGENAUDITEVENT *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARGENAUDITEVENT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARGENAUDITEVENT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARGENAUDITEVENT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARGENAUDITEVENT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARGENAUDITEVENT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARGENAUDITEVENT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARUNREGISTERAUDITEVENT *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARUNREGISTERAUDITEVENT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARUNREGISTERAUDITEVENT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARUNREGISTERAUDITEVENT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_lsaRQueryForestTrustInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_lsaRQueryForestTrustInformation *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_lsaRQueryForestTrustInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_lsaRQueryForestTrustInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_lsaRQueryForestTrustInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_lsaRQueryForestTrustInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.forest_trust_info = talloc_zero(r, struct lsa_ForestTrustInformation *);
+       if (tevent_req_nomem(r->out.forest_trust_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_lsaRQueryForestTrustInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_lsaRQueryForestTrustInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_lsaRSetForestTrustInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_lsaRSetForestTrustInformation *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_lsaRSetForestTrustInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_lsaRSetForestTrustInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_lsaRSetForestTrustInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_lsaRSetForestTrustInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.collision_info = talloc_zero(r, struct lsa_ForestTrustCollisionInfo *);
+       if (tevent_req_nomem(r->out.collision_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_lsaRSetForestTrustInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_lsaRSetForestTrustInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_CREDRRENAME_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_CREDRRENAME *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_CREDRRENAME_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_CREDRRENAME *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_CREDRRENAME_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_CREDRRENAME_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_CREDRRENAME(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_CREDRRENAME_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupSids3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupSids3 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupSids3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupSids3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupSids3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupSids3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.names = r->in.names;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupSids3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupSids3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LookupNames4_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LookupNames4 *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LookupNames4_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LookupNames4 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LookupNames4_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LookupNames4_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = r->in.sids;
+       r->out.count = r->in.count;
+       r->out.domains = talloc_zero(r, struct lsa_RefDomainList *);
+       if (tevent_req_nomem(r->out.domains, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _lsa_LookupNames4(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LookupNames4_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSAROPENPOLICYSCE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSAROPENPOLICYSCE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSAROPENPOLICYSCE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSAROPENPOLICYSCE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSAROPENPOLICYSCE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSAROPENPOLICYSCE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSAROPENPOLICYSCE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSAROPENPOLICYSCE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct lsa_LSARADTREPORTSECURITYEVENT *r;
+};
+
+static struct tevent_req *_s3_compat_lsa_LSARADTREPORTSECURITYEVENT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct lsa_LSARADTREPORTSECURITYEVENT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _lsa_LSARADTREPORTSECURITYEVENT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_lsarpc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_Close_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_Close_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_Delete_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_Delete_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumPrivs_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumPrivs_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QuerySecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QuerySecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetSecObj_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetSecObj_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_ChangePassword_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_ChangePassword_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenPolicy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenPolicy_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryInfoPolicy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryInfoPolicy_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetInfoPolicy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetInfoPolicy_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_ClearAuditLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_ClearAuditLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CreateAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CreateAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumAccounts_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumAccounts_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumTrustDom_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumTrustDom_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupNames_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupNames_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupSids_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupSids_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CreateSecret_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CreateSecret_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumPrivsAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumPrivsAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_AddPrivilegesToAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_AddPrivilegesToAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_RemovePrivilegesFromAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_RemovePrivilegesFromAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_GetQuotasForAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_GetQuotasForAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetQuotasForAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetQuotasForAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_GetSystemAccessAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_GetSystemAccessAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetSystemAccessAccount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetSystemAccessAccount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenTrustedDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenTrustedDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetInformationTrustedDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetInformationTrustedDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenSecret_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenSecret_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetSecret_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetSecret_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QuerySecret_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QuerySecret_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupPrivValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupPrivValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupPrivName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupPrivName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupPrivDisplayName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupPrivDisplayName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_DeleteObject_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_DeleteObject_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumAccountsWithUserRight_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumAccountsWithUserRight_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumAccountRights_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumAccountRights_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_AddAccountRights_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_AddAccountRights_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_RemoveAccountRights_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_RemoveAccountRights_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfoBySid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfoBySid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetTrustedDomainInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetTrustedDomainInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_DeleteTrustedDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_DeleteTrustedDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_StorePrivateData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_StorePrivateData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_RetrievePrivateData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_RetrievePrivateData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenPolicy2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenPolicy2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_GetUserName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_GetUserName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryInfoPolicy2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryInfoPolicy2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetInfoPolicy2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetInfoPolicy2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfoByName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryTrustedDomainInfoByName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetTrustedDomainInfoByName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetTrustedDomainInfoByName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_EnumTrustedDomainsEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_EnumTrustedDomainsEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomainEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomainEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CloseTrustedDomainEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CloseTrustedDomainEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_QueryDomainInformationPolicy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_QueryDomainInformationPolicy_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_SetDomainInformationPolicy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_SetDomainInformationPolicy_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_OpenTrustedDomainByName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_OpenTrustedDomainByName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_TestCall_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_TestCall_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupSids2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupSids2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupNames2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupNames2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomainEx2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CreateTrustedDomainEx2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRWRITE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRWRITE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRREAD_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRREAD_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRENUMERATE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRENUMERATE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRWRITEDOMAINCREDENTIALS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRREADDOMAINCREDENTIALS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRDELETE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRDELETE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRGETTARGETINFO_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRGETTARGETINFO_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRPROFILELOADED_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRPROFILELOADED_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupNames3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupNames3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRGETSESSIONTYPES_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRGETSESSIONTYPES_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARREGISTERAUDITEVENT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARREGISTERAUDITEVENT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARGENAUDITEVENT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARGENAUDITEVENT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARUNREGISTERAUDITEVENT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_lsaRQueryForestTrustInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_lsaRQueryForestTrustInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_lsaRSetForestTrustInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_lsaRSetForestTrustInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_CREDRRENAME_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_CREDRRENAME_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupSids3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupSids3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LookupNames4_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LookupNames4_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSAROPENPOLICYSCE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSAROPENPOLICYSCE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARADTREGISTERSECURITYEVENTSOURCE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_lsa_LSARADTREPORTSECURITYEVENT_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_lsarpc_epv[] = {
+       .name = "_s3_compat_lsarpc",
+       .table = &ndr_table_lsarpc,
+       .num_fns = 82,
+       .fns = _s3_compat_lsarpc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_lsarpc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_lsa.h b/bin/default/librpc/gen_ndr/s3compat_lsa.h
new file mode 100644 (file)
index 0000000..7274fde
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_lsa.h"
+#ifndef __S3COMPAT_LSARPC__
+#define __S3COMPAT_LSARPC__
+NTSTATUS _lsa_Close(struct pipes_struct *p, struct lsa_Close *r);
+NTSTATUS _lsa_Delete(struct pipes_struct *p, struct lsa_Delete *r);
+NTSTATUS _lsa_EnumPrivs(struct pipes_struct *p, struct lsa_EnumPrivs *r);
+NTSTATUS _lsa_QuerySecurity(struct pipes_struct *p, struct lsa_QuerySecurity *r);
+NTSTATUS _lsa_SetSecObj(struct pipes_struct *p, struct lsa_SetSecObj *r);
+NTSTATUS _lsa_ChangePassword(struct pipes_struct *p, struct lsa_ChangePassword *r);
+NTSTATUS _lsa_OpenPolicy(struct pipes_struct *p, struct lsa_OpenPolicy *r);
+NTSTATUS _lsa_QueryInfoPolicy(struct pipes_struct *p, struct lsa_QueryInfoPolicy *r);
+NTSTATUS _lsa_SetInfoPolicy(struct pipes_struct *p, struct lsa_SetInfoPolicy *r);
+NTSTATUS _lsa_ClearAuditLog(struct pipes_struct *p, struct lsa_ClearAuditLog *r);
+NTSTATUS _lsa_CreateAccount(struct pipes_struct *p, struct lsa_CreateAccount *r);
+NTSTATUS _lsa_EnumAccounts(struct pipes_struct *p, struct lsa_EnumAccounts *r);
+NTSTATUS _lsa_CreateTrustedDomain(struct pipes_struct *p, struct lsa_CreateTrustedDomain *r);
+NTSTATUS _lsa_EnumTrustDom(struct pipes_struct *p, struct lsa_EnumTrustDom *r);
+NTSTATUS _lsa_LookupNames(struct pipes_struct *p, struct lsa_LookupNames *r);
+NTSTATUS _lsa_LookupSids(struct pipes_struct *p, struct lsa_LookupSids *r);
+NTSTATUS _lsa_CreateSecret(struct pipes_struct *p, struct lsa_CreateSecret *r);
+NTSTATUS _lsa_OpenAccount(struct pipes_struct *p, struct lsa_OpenAccount *r);
+NTSTATUS _lsa_EnumPrivsAccount(struct pipes_struct *p, struct lsa_EnumPrivsAccount *r);
+NTSTATUS _lsa_AddPrivilegesToAccount(struct pipes_struct *p, struct lsa_AddPrivilegesToAccount *r);
+NTSTATUS _lsa_RemovePrivilegesFromAccount(struct pipes_struct *p, struct lsa_RemovePrivilegesFromAccount *r);
+NTSTATUS _lsa_GetQuotasForAccount(struct pipes_struct *p, struct lsa_GetQuotasForAccount *r);
+NTSTATUS _lsa_SetQuotasForAccount(struct pipes_struct *p, struct lsa_SetQuotasForAccount *r);
+NTSTATUS _lsa_GetSystemAccessAccount(struct pipes_struct *p, struct lsa_GetSystemAccessAccount *r);
+NTSTATUS _lsa_SetSystemAccessAccount(struct pipes_struct *p, struct lsa_SetSystemAccessAccount *r);
+NTSTATUS _lsa_OpenTrustedDomain(struct pipes_struct *p, struct lsa_OpenTrustedDomain *r);
+NTSTATUS _lsa_QueryTrustedDomainInfo(struct pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r);
+NTSTATUS _lsa_SetInformationTrustedDomain(struct pipes_struct *p, struct lsa_SetInformationTrustedDomain *r);
+NTSTATUS _lsa_OpenSecret(struct pipes_struct *p, struct lsa_OpenSecret *r);
+NTSTATUS _lsa_SetSecret(struct pipes_struct *p, struct lsa_SetSecret *r);
+NTSTATUS _lsa_QuerySecret(struct pipes_struct *p, struct lsa_QuerySecret *r);
+NTSTATUS _lsa_LookupPrivValue(struct pipes_struct *p, struct lsa_LookupPrivValue *r);
+NTSTATUS _lsa_LookupPrivName(struct pipes_struct *p, struct lsa_LookupPrivName *r);
+NTSTATUS _lsa_LookupPrivDisplayName(struct pipes_struct *p, struct lsa_LookupPrivDisplayName *r);
+NTSTATUS _lsa_DeleteObject(struct pipes_struct *p, struct lsa_DeleteObject *r);
+NTSTATUS _lsa_EnumAccountsWithUserRight(struct pipes_struct *p, struct lsa_EnumAccountsWithUserRight *r);
+NTSTATUS _lsa_EnumAccountRights(struct pipes_struct *p, struct lsa_EnumAccountRights *r);
+NTSTATUS _lsa_AddAccountRights(struct pipes_struct *p, struct lsa_AddAccountRights *r);
+NTSTATUS _lsa_RemoveAccountRights(struct pipes_struct *p, struct lsa_RemoveAccountRights *r);
+NTSTATUS _lsa_QueryTrustedDomainInfoBySid(struct pipes_struct *p, struct lsa_QueryTrustedDomainInfoBySid *r);
+NTSTATUS _lsa_SetTrustedDomainInfo(struct pipes_struct *p, struct lsa_SetTrustedDomainInfo *r);
+NTSTATUS _lsa_DeleteTrustedDomain(struct pipes_struct *p, struct lsa_DeleteTrustedDomain *r);
+NTSTATUS _lsa_StorePrivateData(struct pipes_struct *p, struct lsa_StorePrivateData *r);
+NTSTATUS _lsa_RetrievePrivateData(struct pipes_struct *p, struct lsa_RetrievePrivateData *r);
+NTSTATUS _lsa_OpenPolicy2(struct pipes_struct *p, struct lsa_OpenPolicy2 *r);
+NTSTATUS _lsa_GetUserName(struct pipes_struct *p, struct lsa_GetUserName *r);
+NTSTATUS _lsa_QueryInfoPolicy2(struct pipes_struct *p, struct lsa_QueryInfoPolicy2 *r);
+NTSTATUS _lsa_SetInfoPolicy2(struct pipes_struct *p, struct lsa_SetInfoPolicy2 *r);
+NTSTATUS _lsa_QueryTrustedDomainInfoByName(struct pipes_struct *p, struct lsa_QueryTrustedDomainInfoByName *r);
+NTSTATUS _lsa_SetTrustedDomainInfoByName(struct pipes_struct *p, struct lsa_SetTrustedDomainInfoByName *r);
+NTSTATUS _lsa_EnumTrustedDomainsEx(struct pipes_struct *p, struct lsa_EnumTrustedDomainsEx *r);
+NTSTATUS _lsa_CreateTrustedDomainEx(struct pipes_struct *p, struct lsa_CreateTrustedDomainEx *r);
+NTSTATUS _lsa_CloseTrustedDomainEx(struct pipes_struct *p, struct lsa_CloseTrustedDomainEx *r);
+NTSTATUS _lsa_QueryDomainInformationPolicy(struct pipes_struct *p, struct lsa_QueryDomainInformationPolicy *r);
+NTSTATUS _lsa_SetDomainInformationPolicy(struct pipes_struct *p, struct lsa_SetDomainInformationPolicy *r);
+NTSTATUS _lsa_OpenTrustedDomainByName(struct pipes_struct *p, struct lsa_OpenTrustedDomainByName *r);
+NTSTATUS _lsa_TestCall(struct pipes_struct *p, struct lsa_TestCall *r);
+NTSTATUS _lsa_LookupSids2(struct pipes_struct *p, struct lsa_LookupSids2 *r);
+NTSTATUS _lsa_LookupNames2(struct pipes_struct *p, struct lsa_LookupNames2 *r);
+NTSTATUS _lsa_CreateTrustedDomainEx2(struct pipes_struct *p, struct lsa_CreateTrustedDomainEx2 *r);
+NTSTATUS _lsa_CREDRWRITE(struct pipes_struct *p, struct lsa_CREDRWRITE *r);
+NTSTATUS _lsa_CREDRREAD(struct pipes_struct *p, struct lsa_CREDRREAD *r);
+NTSTATUS _lsa_CREDRENUMERATE(struct pipes_struct *p, struct lsa_CREDRENUMERATE *r);
+NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(struct pipes_struct *p, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r);
+NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(struct pipes_struct *p, struct lsa_CREDRREADDOMAINCREDENTIALS *r);
+NTSTATUS _lsa_CREDRDELETE(struct pipes_struct *p, struct lsa_CREDRDELETE *r);
+NTSTATUS _lsa_CREDRGETTARGETINFO(struct pipes_struct *p, struct lsa_CREDRGETTARGETINFO *r);
+NTSTATUS _lsa_CREDRPROFILELOADED(struct pipes_struct *p, struct lsa_CREDRPROFILELOADED *r);
+NTSTATUS _lsa_LookupNames3(struct pipes_struct *p, struct lsa_LookupNames3 *r);
+NTSTATUS _lsa_CREDRGETSESSIONTYPES(struct pipes_struct *p, struct lsa_CREDRGETSESSIONTYPES *r);
+NTSTATUS _lsa_LSARREGISTERAUDITEVENT(struct pipes_struct *p, struct lsa_LSARREGISTERAUDITEVENT *r);
+NTSTATUS _lsa_LSARGENAUDITEVENT(struct pipes_struct *p, struct lsa_LSARGENAUDITEVENT *r);
+NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(struct pipes_struct *p, struct lsa_LSARUNREGISTERAUDITEVENT *r);
+NTSTATUS _lsa_lsaRQueryForestTrustInformation(struct pipes_struct *p, struct lsa_lsaRQueryForestTrustInformation *r);
+NTSTATUS _lsa_lsaRSetForestTrustInformation(struct pipes_struct *p, struct lsa_lsaRSetForestTrustInformation *r);
+NTSTATUS _lsa_CREDRRENAME(struct pipes_struct *p, struct lsa_CREDRRENAME *r);
+NTSTATUS _lsa_LookupSids3(struct pipes_struct *p, struct lsa_LookupSids3 *r);
+NTSTATUS _lsa_LookupNames4(struct pipes_struct *p, struct lsa_LookupNames4 *r);
+NTSTATUS _lsa_LSAROPENPOLICYSCE(struct pipes_struct *p, struct lsa_LSAROPENPOLICYSCE *r);
+NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct pipes_struct *p, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r);
+NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct pipes_struct *p, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r);
+NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(struct pipes_struct *p, struct lsa_LSARADTREPORTSECURITYEVENT *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_lsarpc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_LSARPC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_mgmt.c b/bin/default/librpc/gen_ndr/s3compat_mgmt.c
new file mode 100644 (file)
index 0000000..a76e4c8
--- /dev/null
@@ -0,0 +1,292 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_mgmt.h"
+
+struct _s3_compat_mgmt_inq_if_ids_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct mgmt_inq_if_ids *r;
+};
+
+static struct tevent_req *_s3_compat_mgmt_inq_if_ids_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct mgmt_inq_if_ids *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_mgmt_inq_if_ids_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_mgmt_inq_if_ids_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.if_id_vector = talloc_zero(r, struct rpc_if_id_vector_t *);
+       if (tevent_req_nomem(r->out.if_id_vector, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _mgmt_inq_if_ids(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_mgmt_inq_if_ids_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_mgmt_inq_stats_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct mgmt_inq_stats *r;
+};
+
+static struct tevent_req *_s3_compat_mgmt_inq_stats_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct mgmt_inq_stats *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_mgmt_inq_stats_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_mgmt_inq_stats_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.statistics = talloc_zero(r, struct mgmt_statistics);
+       if (tevent_req_nomem(r->out.statistics, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _mgmt_inq_stats(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_mgmt_inq_stats_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_mgmt_is_server_listening_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct mgmt_is_server_listening *r;
+};
+
+static struct tevent_req *_s3_compat_mgmt_is_server_listening_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct mgmt_is_server_listening *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_mgmt_is_server_listening_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_mgmt_is_server_listening_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.status = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _mgmt_is_server_listening(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_mgmt_is_server_listening_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_mgmt_stop_server_listening_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct mgmt_stop_server_listening *r;
+};
+
+static struct tevent_req *_s3_compat_mgmt_stop_server_listening_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct mgmt_stop_server_listening *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_mgmt_stop_server_listening_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_mgmt_stop_server_listening_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _mgmt_stop_server_listening(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_mgmt_stop_server_listening_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_mgmt_inq_princ_name_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct mgmt_inq_princ_name *r;
+};
+
+static struct tevent_req *_s3_compat_mgmt_inq_princ_name_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct mgmt_inq_princ_name *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_mgmt_inq_princ_name_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_mgmt_inq_princ_name_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.princ_name = talloc_zero_array(r, const char, r->in.princ_name_size);
+       if (tevent_req_nomem(r->out.princ_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _mgmt_inq_princ_name(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_mgmt_inq_princ_name_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_mgmt_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_mgmt_inq_if_ids_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_mgmt_inq_if_ids_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_mgmt_inq_stats_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_mgmt_inq_stats_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_mgmt_is_server_listening_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_mgmt_is_server_listening_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_mgmt_stop_server_listening_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_mgmt_stop_server_listening_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_mgmt_inq_princ_name_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_mgmt_inq_princ_name_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_mgmt_epv[] = {
+       .name = "_s3_compat_mgmt",
+       .table = &ndr_table_mgmt,
+       .num_fns = 5,
+       .fns = _s3_compat_mgmt_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_mgmt(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_mgmt.h b/bin/default/librpc/gen_ndr/s3compat_mgmt.h
new file mode 100644 (file)
index 0000000..275a351
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_mgmt.h"
+#ifndef __S3COMPAT_MGMT__
+#define __S3COMPAT_MGMT__
+WERROR _mgmt_inq_if_ids(struct pipes_struct *p, struct mgmt_inq_if_ids *r);
+WERROR _mgmt_inq_stats(struct pipes_struct *p, struct mgmt_inq_stats *r);
+uint32 _mgmt_is_server_listening(struct pipes_struct *p, struct mgmt_is_server_listening *r);
+WERROR _mgmt_stop_server_listening(struct pipes_struct *p, struct mgmt_stop_server_listening *r);
+WERROR _mgmt_inq_princ_name(struct pipes_struct *p, struct mgmt_inq_princ_name *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_mgmt(struct dcerpc_server *server);
+#endif /* __S3COMPAT_MGMT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_misc.c b/bin/default/librpc/gen_ndr/s3compat_misc.c
new file mode 100644 (file)
index 0000000..9286f92
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_misc.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_misc_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_misc_epv[] = {
+       .name = "_s3_compat_misc",
+       .table = &ndr_table_misc,
+       .num_fns = 0,
+       .fns = _s3_compat_misc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_misc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_misc.h b/bin/default/librpc/gen_ndr/s3compat_misc.h
new file mode 100644 (file)
index 0000000..45351cf
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_misc.h"
+#ifndef __S3COMPAT_MISC__
+#define __S3COMPAT_MISC__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_misc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_MISC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_msgsvc.c b/bin/default/librpc/gen_ndr/s3compat_msgsvc.c
new file mode 100644 (file)
index 0000000..86d724d
--- /dev/null
@@ -0,0 +1,287 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_msgsvc.h"
+
+struct _s3_compat_NetrMessageNameAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrMessageNameAdd *r;
+};
+
+static struct tevent_req *_s3_compat_NetrMessageNameAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrMessageNameAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrMessageNameAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrMessageNameAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrMessageNameAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrMessageNameAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_NetrMessageNameEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrMessageNameEnum *r;
+};
+
+static struct tevent_req *_s3_compat_NetrMessageNameEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrMessageNameEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrMessageNameEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrMessageNameEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrMessageNameEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrMessageNameEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_NetrMessageNameGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrMessageNameGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_NetrMessageNameGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrMessageNameGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrMessageNameGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrMessageNameGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrMessageNameGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrMessageNameGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_NetrMessageNameDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrMessageNameDel *r;
+};
+
+static struct tevent_req *_s3_compat_NetrMessageNameDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrMessageNameDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrMessageNameDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrMessageNameDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrMessageNameDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrMessageNameDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_msgsvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrMessageNameAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrMessageNameAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrMessageNameEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrMessageNameEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrMessageNameGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrMessageNameGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrMessageNameDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrMessageNameDel_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_msgsvc_epv[] = {
+       .name = "_s3_compat_msgsvc",
+       .table = &ndr_table_msgsvc,
+       .num_fns = 4,
+       .fns = _s3_compat_msgsvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_msgsvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
+struct _s3_compat_NetrSendMessage_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct NetrSendMessage *r;
+};
+
+static struct tevent_req *_s3_compat_NetrSendMessage_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct NetrSendMessage *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_NetrSendMessage_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_NetrSendMessage_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _NetrSendMessage(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_NetrSendMessage_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_msgsvcsend_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_NetrSendMessage_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_NetrSendMessage_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_msgsvcsend_epv[] = {
+       .name = "_s3_compat_msgsvcsend",
+       .table = &ndr_table_msgsvcsend,
+       .num_fns = 1,
+       .fns = _s3_compat_msgsvcsend_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_msgsvcsend(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_msgsvc.h b/bin/default/librpc/gen_ndr/s3compat_msgsvc.h
new file mode 100644 (file)
index 0000000..4fef0c2
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_msgsvc.h"
+#ifndef __S3COMPAT_MSGSVC__
+#define __S3COMPAT_MSGSVC__
+void _NetrMessageNameAdd(struct pipes_struct *p, struct NetrMessageNameAdd *r);
+void _NetrMessageNameEnum(struct pipes_struct *p, struct NetrMessageNameEnum *r);
+void _NetrMessageNameGetInfo(struct pipes_struct *p, struct NetrMessageNameGetInfo *r);
+void _NetrMessageNameDel(struct pipes_struct *p, struct NetrMessageNameDel *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_msgsvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_MSGSVC__ */
+#ifndef __S3COMPAT_MSGSVCSEND__
+#define __S3COMPAT_MSGSVCSEND__
+void _NetrSendMessage(struct pipes_struct *p, struct NetrSendMessage *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_msgsvcsend(struct dcerpc_server *server);
+#endif /* __S3COMPAT_MSGSVCSEND__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.c b/bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.c
new file mode 100644 (file)
index 0000000..0e447b8
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_named_pipe_auth_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_named_pipe_auth_epv[] = {
+       .name = "_s3_compat_named_pipe_auth",
+       .table = &ndr_table_named_pipe_auth,
+       .num_fns = 0,
+       .fns = _s3_compat_named_pipe_auth_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_named_pipe_auth(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.h b/bin/default/librpc/gen_ndr/s3compat_named_pipe_auth.h
new file mode 100644 (file)
index 0000000..353167d
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_named_pipe_auth.h"
+#ifndef __S3COMPAT_NAMED_PIPE_AUTH__
+#define __S3COMPAT_NAMED_PIPE_AUTH__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_named_pipe_auth(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NAMED_PIPE_AUTH__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_nbt.c b/bin/default/librpc/gen_ndr/s3compat_nbt.c
new file mode 100644 (file)
index 0000000..c4c3cf0
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_nbt.h"
+
+struct _s3_compat_decode_nbt_netlogon_packet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_nbt_netlogon_packet *r;
+};
+
+static struct tevent_req *_s3_compat_decode_nbt_netlogon_packet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_nbt_netlogon_packet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_nbt_netlogon_packet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_nbt_netlogon_packet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_nbt_netlogon_packet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_nbt_netlogon_packet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_nbt_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_nbt_netlogon_packet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_nbt_netlogon_packet_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_nbt_epv[] = {
+       .name = "_s3_compat_nbt",
+       .table = &ndr_table_nbt,
+       .num_fns = 1,
+       .fns = _s3_compat_nbt_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_nbt(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_nbt.h b/bin/default/librpc/gen_ndr/s3compat_nbt.h
new file mode 100644 (file)
index 0000000..5848e10
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_nbt.h"
+#ifndef __S3COMPAT_NBT__
+#define __S3COMPAT_NBT__
+void _decode_nbt_netlogon_packet(struct pipes_struct *p, struct decode_nbt_netlogon_packet *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_nbt(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NBT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_netlogon.c b/bin/default/librpc/gen_ndr/s3compat_netlogon.c
new file mode 100644 (file)
index 0000000..a10b9fb
--- /dev/null
@@ -0,0 +1,2776 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_netlogon.h"
+
+struct _s3_compat_netr_LogonUasLogon_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonUasLogon *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonUasLogon_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonUasLogon *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonUasLogon_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonUasLogon_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct netr_UasInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonUasLogon(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonUasLogon_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonUasLogoff_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonUasLogoff *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonUasLogoff_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonUasLogoff *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonUasLogoff_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonUasLogoff_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct netr_UasLogoffInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonUasLogoff(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonUasLogoff_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonSamLogon_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonSamLogon *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonSamLogon_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonSamLogon *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonSamLogon_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonSamLogon_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.validation = talloc_zero(r, union netr_Validation);
+       if (tevent_req_nomem(r->out.validation, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.authoritative = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.authoritative, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonSamLogon(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonSamLogon_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonSamLogoff_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonSamLogoff *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonSamLogoff_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonSamLogoff *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonSamLogoff_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonSamLogoff_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.result = _netr_LogonSamLogoff(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonSamLogoff_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerReqChallenge_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerReqChallenge *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerReqChallenge_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerReqChallenge *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerReqChallenge_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerReqChallenge_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_credentials = talloc_zero(r, struct netr_Credential);
+       if (tevent_req_nomem(r->out.return_credentials, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerReqChallenge(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerReqChallenge_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerAuthenticate_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerAuthenticate *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerAuthenticate_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerAuthenticate *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerAuthenticate_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerAuthenticate_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_credentials = talloc_zero(r, struct netr_Credential);
+       if (tevent_req_nomem(r->out.return_credentials, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerAuthenticate(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerAuthenticate_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerPasswordSet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerPasswordSet *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerPasswordSet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerPasswordSet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerPasswordSet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerPasswordSet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerPasswordSet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerPasswordSet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DatabaseDeltas_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DatabaseDeltas *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DatabaseDeltas_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DatabaseDeltas *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DatabaseDeltas_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DatabaseDeltas_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.sequence_num = r->in.sequence_num;
+       r->out.delta_enum_array = talloc_zero(r, struct netr_DELTA_ENUM_ARRAY *);
+       if (tevent_req_nomem(r->out.delta_enum_array, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DatabaseDeltas(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DatabaseDeltas_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DatabaseSync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DatabaseSync *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DatabaseSync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DatabaseSync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DatabaseSync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DatabaseSync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.sync_context = r->in.sync_context;
+       r->out.delta_enum_array = talloc_zero(r, struct netr_DELTA_ENUM_ARRAY *);
+       if (tevent_req_nomem(r->out.delta_enum_array, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DatabaseSync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DatabaseSync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_AccountDeltas_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_AccountDeltas *r;
+};
+
+static struct tevent_req *_s3_compat_netr_AccountDeltas_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_AccountDeltas *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_AccountDeltas_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_AccountDeltas_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.buffer = talloc_zero(r, struct netr_AccountBuffer);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.count_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.total_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.recordid = talloc_zero(r, struct netr_UAS_INFO_0);
+       if (tevent_req_nomem(r->out.recordid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_AccountDeltas(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_AccountDeltas_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_AccountSync_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_AccountSync *r;
+};
+
+static struct tevent_req *_s3_compat_netr_AccountSync_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_AccountSync *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_AccountSync_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_AccountSync_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.recordid = r->in.recordid;
+       r->out.buffer = talloc_zero(r, struct netr_AccountBuffer);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.count_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.total_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.next_reference = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.next_reference, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_AccountSync(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_AccountSync_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_GetDcName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_GetDcName *r;
+};
+
+static struct tevent_req *_s3_compat_netr_GetDcName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_GetDcName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_GetDcName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_GetDcName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.dcname = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.dcname, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_GetDcName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_GetDcName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonControl_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonControl *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonControl_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonControl *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonControl_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonControl_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.query = talloc_zero(r, union netr_CONTROL_QUERY_INFORMATION);
+       if (tevent_req_nomem(r->out.query, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonControl(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonControl_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_GetAnyDCName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_GetAnyDCName *r;
+};
+
+static struct tevent_req *_s3_compat_netr_GetAnyDCName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_GetAnyDCName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_GetAnyDCName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_GetAnyDCName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.dcname = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.dcname, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_GetAnyDCName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_GetAnyDCName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonControl2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonControl2 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonControl2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonControl2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonControl2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonControl2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.query = talloc_zero(r, union netr_CONTROL_QUERY_INFORMATION);
+       if (tevent_req_nomem(r->out.query, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonControl2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonControl2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerAuthenticate2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerAuthenticate2 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerAuthenticate2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerAuthenticate2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerAuthenticate2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerAuthenticate2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.negotiate_flags = r->in.negotiate_flags;
+       r->out.return_credentials = talloc_zero(r, struct netr_Credential);
+       if (tevent_req_nomem(r->out.return_credentials, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerAuthenticate2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerAuthenticate2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DatabaseSync2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DatabaseSync2 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DatabaseSync2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DatabaseSync2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DatabaseSync2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DatabaseSync2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.sync_context = r->in.sync_context;
+       r->out.delta_enum_array = talloc_zero(r, struct netr_DELTA_ENUM_ARRAY *);
+       if (tevent_req_nomem(r->out.delta_enum_array, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DatabaseSync2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DatabaseSync2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DatabaseRedo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DatabaseRedo *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DatabaseRedo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DatabaseRedo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DatabaseRedo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DatabaseRedo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.delta_enum_array = talloc_zero(r, struct netr_DELTA_ENUM_ARRAY *);
+       if (tevent_req_nomem(r->out.delta_enum_array, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DatabaseRedo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DatabaseRedo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonControl2Ex_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonControl2Ex *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonControl2Ex_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonControl2Ex *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonControl2Ex_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonControl2Ex_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.query = talloc_zero(r, union netr_CONTROL_QUERY_INFORMATION);
+       if (tevent_req_nomem(r->out.query, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonControl2Ex(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonControl2Ex_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NetrEnumerateTrustedDomains_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NetrEnumerateTrustedDomains *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NetrEnumerateTrustedDomains_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NetrEnumerateTrustedDomains *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NetrEnumerateTrustedDomains_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NetrEnumerateTrustedDomains_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trusted_domains_blob = talloc_zero(r, struct netr_Blob);
+       if (tevent_req_nomem(r->out.trusted_domains_blob, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_NetrEnumerateTrustedDomains(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NetrEnumerateTrustedDomains_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRGetDCName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRGetDCName *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRGetDCName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRGetDCName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRGetDCName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRGetDCName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct netr_DsRGetDCNameInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRGetDCName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRGetDCName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonGetCapabilities_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonGetCapabilities *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonGetCapabilities_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonGetCapabilities *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonGetCapabilities_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonGetCapabilities_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.capabilities = talloc_zero(r, union netr_Capabilities);
+       if (tevent_req_nomem(r->out.capabilities, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonGetCapabilities(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonGetCapabilities_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NETRLOGONSETSERVICEBITS_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NETRLOGONSETSERVICEBITS *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NETRLOGONSETSERVICEBITS_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NETRLOGONSETSERVICEBITS *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NETRLOGONSETSERVICEBITS_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NETRLOGONSETSERVICEBITS_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_NETRLOGONSETSERVICEBITS(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NETRLOGONSETSERVICEBITS_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonGetTrustRid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonGetTrustRid *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonGetTrustRid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonGetTrustRid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonGetTrustRid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonGetTrustRid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonGetTrustRid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonGetTrustRid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NETRLOGONCOMPUTESERVERDIGEST *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_NETRLOGONCOMPUTESERVERDIGEST(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_NETRLOGONCOMPUTECLIENTDIGEST(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerAuthenticate3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerAuthenticate3 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerAuthenticate3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerAuthenticate3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerAuthenticate3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerAuthenticate3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.negotiate_flags = r->in.negotiate_flags;
+       r->out.return_credentials = talloc_zero(r, struct netr_Credential);
+       if (tevent_req_nomem(r->out.return_credentials, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerAuthenticate3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerAuthenticate3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRGetDCNameEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRGetDCNameEx *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRGetDCNameEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRGetDCNameEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRGetDCNameEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRGetDCNameEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct netr_DsRGetDCNameInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRGetDCNameEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRGetDCNameEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRGetSiteName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRGetSiteName *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRGetSiteName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRGetSiteName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRGetSiteName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRGetSiteName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.site = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.site, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRGetSiteName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRGetSiteName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonGetDomainInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonGetDomainInfo *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonGetDomainInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonGetDomainInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonGetDomainInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonGetDomainInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.info = talloc_zero(r, union netr_DomainInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonGetDomainInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonGetDomainInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerPasswordSet2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerPasswordSet2 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerPasswordSet2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerPasswordSet2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerPasswordSet2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerPasswordSet2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerPasswordSet2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerPasswordSet2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerPasswordGet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerPasswordGet *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerPasswordGet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerPasswordGet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerPasswordGet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerPasswordGet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.password = talloc_zero(r, struct samr_Password);
+       if (tevent_req_nomem(r->out.password, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerPasswordGet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerPasswordGet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NETRLOGONSENDTOSAM_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NETRLOGONSENDTOSAM *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NETRLOGONSENDTOSAM_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NETRLOGONSENDTOSAM *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NETRLOGONSENDTOSAM_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NETRLOGONSENDTOSAM_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_NETRLOGONSENDTOSAM(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NETRLOGONSENDTOSAM_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRAddressToSitenamesW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRAddressToSitenamesW *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRAddressToSitenamesW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRAddressToSitenamesW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRAddressToSitenamesW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRAddressToSitenamesW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = talloc_zero(r, struct netr_DsRAddressToSitenamesWCtr *);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRAddressToSitenamesW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRAddressToSitenamesW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRGetDCNameEx2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRGetDCNameEx2 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRGetDCNameEx2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRGetDCNameEx2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRGetDCNameEx2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRGetDCNameEx2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct netr_DsRGetDCNameInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRGetDCNameEx2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRGetDCNameEx2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_NetrEnumerateTrustedDomainsEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_NetrEnumerateTrustedDomainsEx *r;
+};
+
+static struct tevent_req *_s3_compat_netr_NetrEnumerateTrustedDomainsEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_NetrEnumerateTrustedDomainsEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_NetrEnumerateTrustedDomainsEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_NetrEnumerateTrustedDomainsEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.dom_trust_list = talloc_zero(r, struct netr_DomainTrustList);
+       if (tevent_req_nomem(r->out.dom_trust_list, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_NetrEnumerateTrustedDomainsEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_NetrEnumerateTrustedDomainsEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRAddressToSitenamesExW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRAddressToSitenamesExW *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRAddressToSitenamesExW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRAddressToSitenamesExW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRAddressToSitenamesExW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRAddressToSitenamesExW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = talloc_zero(r, struct netr_DsRAddressToSitenamesExWCtr *);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRAddressToSitenamesExW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRAddressToSitenamesExW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsrGetDcSiteCoverageW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsrGetDcSiteCoverageW *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsrGetDcSiteCoverageW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsrGetDcSiteCoverageW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsrGetDcSiteCoverageW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsrGetDcSiteCoverageW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = talloc_zero(r, struct DcSitesCtr *);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsrGetDcSiteCoverageW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsrGetDcSiteCoverageW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonSamLogonEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonSamLogonEx *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonSamLogonEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonSamLogonEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonSamLogonEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonSamLogonEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.flags = r->in.flags;
+       r->out.validation = talloc_zero(r, union netr_Validation);
+       if (tevent_req_nomem(r->out.validation, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.authoritative = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.authoritative, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonSamLogonEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonSamLogonEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsrEnumerateDomainTrusts_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsrEnumerateDomainTrusts *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsrEnumerateDomainTrusts_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsrEnumerateDomainTrusts *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsrEnumerateDomainTrusts_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsrEnumerateDomainTrusts_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.trusts = talloc_zero(r, struct netr_DomainTrustList);
+       if (tevent_req_nomem(r->out.trusts, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsrEnumerateDomainTrusts(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsrEnumerateDomainTrusts_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsrDeregisterDNSHostRecords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsrDeregisterDNSHostRecords *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsrDeregisterDNSHostRecords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsrDeregisterDNSHostRecords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsrDeregisterDNSHostRecords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsrDeregisterDNSHostRecords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_DsrDeregisterDNSHostRecords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsrDeregisterDNSHostRecords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerTrustPasswordsGet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerTrustPasswordsGet *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerTrustPasswordsGet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerTrustPasswordsGet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerTrustPasswordsGet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerTrustPasswordsGet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.password = talloc_zero(r, struct samr_Password);
+       if (tevent_req_nomem(r->out.password, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.password2 = talloc_zero(r, struct samr_Password);
+       if (tevent_req_nomem(r->out.password2, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerTrustPasswordsGet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerTrustPasswordsGet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsRGetForestTrustInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsRGetForestTrustInformation *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsRGetForestTrustInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsRGetForestTrustInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsRGetForestTrustInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsRGetForestTrustInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.forest_trust_info = talloc_zero(r, struct lsa_ForestTrustInformation *);
+       if (tevent_req_nomem(r->out.forest_trust_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsRGetForestTrustInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsRGetForestTrustInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_GetForestTrustInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_GetForestTrustInformation *r;
+};
+
+static struct tevent_req *_s3_compat_netr_GetForestTrustInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_GetForestTrustInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_GetForestTrustInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_GetForestTrustInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.forest_trust_info = talloc_zero(r, struct lsa_ForestTrustInformation *);
+       if (tevent_req_nomem(r->out.forest_trust_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_GetForestTrustInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_GetForestTrustInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_LogonSamLogonWithFlags_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_LogonSamLogonWithFlags *r;
+};
+
+static struct tevent_req *_s3_compat_netr_LogonSamLogonWithFlags_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_LogonSamLogonWithFlags *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_LogonSamLogonWithFlags_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_LogonSamLogonWithFlags_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = r->in.return_authenticator;
+       r->out.flags = r->in.flags;
+       r->out.validation = talloc_zero(r, union netr_Validation);
+       if (tevent_req_nomem(r->out.validation, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.authoritative = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.authoritative, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_LogonSamLogonWithFlags(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_LogonSamLogonWithFlags_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_ServerGetTrustInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_ServerGetTrustInfo *r;
+};
+
+static struct tevent_req *_s3_compat_netr_ServerGetTrustInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_ServerGetTrustInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_ServerGetTrustInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_ServerGetTrustInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.new_owf_password = talloc_zero(r, struct samr_Password);
+       if (tevent_req_nomem(r->out.new_owf_password, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.old_owf_password = talloc_zero(r, struct samr_Password);
+       if (tevent_req_nomem(r->out.old_owf_password, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.trust_info = talloc_zero(r, struct netr_TrustInfo *);
+       if (tevent_req_nomem(r->out.trust_info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_ServerGetTrustInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_ServerGetTrustInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_Unused47_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_Unused47 *r;
+};
+
+static struct tevent_req *_s3_compat_netr_Unused47_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_Unused47 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_Unused47_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_Unused47_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _netr_Unused47(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_Unused47_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct netr_DsrUpdateReadOnlyServerDnsRecords *r;
+};
+
+static struct tevent_req *_s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct netr_DsrUpdateReadOnlyServerDnsRecords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.dns_names = r->in.dns_names;
+       r->out.return_authenticator = talloc_zero(r, struct netr_Authenticator);
+       if (tevent_req_nomem(r->out.return_authenticator, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _netr_DsrUpdateReadOnlyServerDnsRecords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_netlogon_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonUasLogon_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonUasLogon_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonUasLogoff_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonUasLogoff_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonSamLogon_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonSamLogon_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonSamLogoff_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonSamLogoff_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerReqChallenge_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerReqChallenge_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerAuthenticate_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerAuthenticate_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerPasswordSet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerPasswordSet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DatabaseDeltas_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DatabaseDeltas_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DatabaseSync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DatabaseSync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_AccountDeltas_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_AccountDeltas_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_AccountSync_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_AccountSync_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_GetDcName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_GetDcName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonControl_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonControl_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_GetAnyDCName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_GetAnyDCName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonControl2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonControl2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerAuthenticate2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerAuthenticate2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DatabaseSync2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DatabaseSync2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DatabaseRedo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DatabaseRedo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonControl2Ex_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonControl2Ex_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NetrEnumerateTrustedDomains_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NetrEnumerateTrustedDomains_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRGetDCName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRGetDCName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonGetCapabilities_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonGetCapabilities_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NETRLOGONSETSERVICEBITS_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NETRLOGONSETSERVICEBITS_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonGetTrustRid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonGetTrustRid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NETRLOGONCOMPUTESERVERDIGEST_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NETRLOGONCOMPUTECLIENTDIGEST_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerAuthenticate3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerAuthenticate3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRGetDCNameEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRGetDCNameEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRGetSiteName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRGetSiteName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonGetDomainInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonGetDomainInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerPasswordSet2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerPasswordSet2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerPasswordGet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerPasswordGet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NETRLOGONSENDTOSAM_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NETRLOGONSENDTOSAM_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRAddressToSitenamesW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRAddressToSitenamesW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRGetDCNameEx2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRGetDCNameEx2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_NetrEnumerateTrustedDomainsEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_NetrEnumerateTrustedDomainsEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRAddressToSitenamesExW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRAddressToSitenamesExW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsrGetDcSiteCoverageW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsrGetDcSiteCoverageW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonSamLogonEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonSamLogonEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsrEnumerateDomainTrusts_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsrEnumerateDomainTrusts_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsrDeregisterDNSHostRecords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsrDeregisterDNSHostRecords_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerTrustPasswordsGet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerTrustPasswordsGet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsRGetForestTrustInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsRGetForestTrustInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_GetForestTrustInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_GetForestTrustInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_LogonSamLogonWithFlags_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_LogonSamLogonWithFlags_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_ServerGetTrustInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_ServerGetTrustInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_Unused47_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_Unused47_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_netr_DsrUpdateReadOnlyServerDnsRecords_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_netlogon_epv[] = {
+       .name = "_s3_compat_netlogon",
+       .table = &ndr_table_netlogon,
+       .num_fns = 49,
+       .fns = _s3_compat_netlogon_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_netlogon(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_netlogon.h b/bin/default/librpc/gen_ndr/s3compat_netlogon.h
new file mode 100644 (file)
index 0000000..a3f932f
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_netlogon.h"
+#ifndef __S3COMPAT_NETLOGON__
+#define __S3COMPAT_NETLOGON__
+WERROR _netr_LogonUasLogon(struct pipes_struct *p, struct netr_LogonUasLogon *r);
+WERROR _netr_LogonUasLogoff(struct pipes_struct *p, struct netr_LogonUasLogoff *r);
+NTSTATUS _netr_LogonSamLogon(struct pipes_struct *p, struct netr_LogonSamLogon *r);
+NTSTATUS _netr_LogonSamLogoff(struct pipes_struct *p, struct netr_LogonSamLogoff *r);
+NTSTATUS _netr_ServerReqChallenge(struct pipes_struct *p, struct netr_ServerReqChallenge *r);
+NTSTATUS _netr_ServerAuthenticate(struct pipes_struct *p, struct netr_ServerAuthenticate *r);
+NTSTATUS _netr_ServerPasswordSet(struct pipes_struct *p, struct netr_ServerPasswordSet *r);
+NTSTATUS _netr_DatabaseDeltas(struct pipes_struct *p, struct netr_DatabaseDeltas *r);
+NTSTATUS _netr_DatabaseSync(struct pipes_struct *p, struct netr_DatabaseSync *r);
+NTSTATUS _netr_AccountDeltas(struct pipes_struct *p, struct netr_AccountDeltas *r);
+NTSTATUS _netr_AccountSync(struct pipes_struct *p, struct netr_AccountSync *r);
+WERROR _netr_GetDcName(struct pipes_struct *p, struct netr_GetDcName *r);
+WERROR _netr_LogonControl(struct pipes_struct *p, struct netr_LogonControl *r);
+WERROR _netr_GetAnyDCName(struct pipes_struct *p, struct netr_GetAnyDCName *r);
+WERROR _netr_LogonControl2(struct pipes_struct *p, struct netr_LogonControl2 *r);
+NTSTATUS _netr_ServerAuthenticate2(struct pipes_struct *p, struct netr_ServerAuthenticate2 *r);
+NTSTATUS _netr_DatabaseSync2(struct pipes_struct *p, struct netr_DatabaseSync2 *r);
+NTSTATUS _netr_DatabaseRedo(struct pipes_struct *p, struct netr_DatabaseRedo *r);
+WERROR _netr_LogonControl2Ex(struct pipes_struct *p, struct netr_LogonControl2Ex *r);
+NTSTATUS _netr_NetrEnumerateTrustedDomains(struct pipes_struct *p, struct netr_NetrEnumerateTrustedDomains *r);
+WERROR _netr_DsRGetDCName(struct pipes_struct *p, struct netr_DsRGetDCName *r);
+NTSTATUS _netr_LogonGetCapabilities(struct pipes_struct *p, struct netr_LogonGetCapabilities *r);
+WERROR _netr_NETRLOGONSETSERVICEBITS(struct pipes_struct *p, struct netr_NETRLOGONSETSERVICEBITS *r);
+WERROR _netr_LogonGetTrustRid(struct pipes_struct *p, struct netr_LogonGetTrustRid *r);
+WERROR _netr_NETRLOGONCOMPUTESERVERDIGEST(struct pipes_struct *p, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r);
+WERROR _netr_NETRLOGONCOMPUTECLIENTDIGEST(struct pipes_struct *p, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r);
+NTSTATUS _netr_ServerAuthenticate3(struct pipes_struct *p, struct netr_ServerAuthenticate3 *r);
+WERROR _netr_DsRGetDCNameEx(struct pipes_struct *p, struct netr_DsRGetDCNameEx *r);
+WERROR _netr_DsRGetSiteName(struct pipes_struct *p, struct netr_DsRGetSiteName *r);
+NTSTATUS _netr_LogonGetDomainInfo(struct pipes_struct *p, struct netr_LogonGetDomainInfo *r);
+NTSTATUS _netr_ServerPasswordSet2(struct pipes_struct *p, struct netr_ServerPasswordSet2 *r);
+WERROR _netr_ServerPasswordGet(struct pipes_struct *p, struct netr_ServerPasswordGet *r);
+WERROR _netr_NETRLOGONSENDTOSAM(struct pipes_struct *p, struct netr_NETRLOGONSENDTOSAM *r);
+WERROR _netr_DsRAddressToSitenamesW(struct pipes_struct *p, struct netr_DsRAddressToSitenamesW *r);
+WERROR _netr_DsRGetDCNameEx2(struct pipes_struct *p, struct netr_DsRGetDCNameEx2 *r);
+WERROR _netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct pipes_struct *p, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r);
+WERROR _netr_NetrEnumerateTrustedDomainsEx(struct pipes_struct *p, struct netr_NetrEnumerateTrustedDomainsEx *r);
+WERROR _netr_DsRAddressToSitenamesExW(struct pipes_struct *p, struct netr_DsRAddressToSitenamesExW *r);
+WERROR _netr_DsrGetDcSiteCoverageW(struct pipes_struct *p, struct netr_DsrGetDcSiteCoverageW *r);
+NTSTATUS _netr_LogonSamLogonEx(struct pipes_struct *p, struct netr_LogonSamLogonEx *r);
+WERROR _netr_DsrEnumerateDomainTrusts(struct pipes_struct *p, struct netr_DsrEnumerateDomainTrusts *r);
+WERROR _netr_DsrDeregisterDNSHostRecords(struct pipes_struct *p, struct netr_DsrDeregisterDNSHostRecords *r);
+NTSTATUS _netr_ServerTrustPasswordsGet(struct pipes_struct *p, struct netr_ServerTrustPasswordsGet *r);
+WERROR _netr_DsRGetForestTrustInformation(struct pipes_struct *p, struct netr_DsRGetForestTrustInformation *r);
+NTSTATUS _netr_GetForestTrustInformation(struct pipes_struct *p, struct netr_GetForestTrustInformation *r);
+NTSTATUS _netr_LogonSamLogonWithFlags(struct pipes_struct *p, struct netr_LogonSamLogonWithFlags *r);
+NTSTATUS _netr_ServerGetTrustInfo(struct pipes_struct *p, struct netr_ServerGetTrustInfo *r);
+NTSTATUS _netr_Unused47(struct pipes_struct *p, struct netr_Unused47 *r);
+NTSTATUS _netr_DsrUpdateReadOnlyServerDnsRecords(struct pipes_struct *p, struct netr_DsrUpdateReadOnlyServerDnsRecords *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_netlogon(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NETLOGON__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_notify.c b/bin/default/librpc/gen_ndr/s3compat_notify.c
new file mode 100644 (file)
index 0000000..125d7f4
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_notify.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_notify_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_notify_epv[] = {
+       .name = "_s3_compat_notify",
+       .table = &ndr_table_notify,
+       .num_fns = 0,
+       .fns = _s3_compat_notify_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_notify(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_notify.h b/bin/default/librpc/gen_ndr/s3compat_notify.h
new file mode 100644 (file)
index 0000000..e51d557
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_notify.h"
+#ifndef __S3COMPAT_NOTIFY__
+#define __S3COMPAT_NOTIFY__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_notify(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NOTIFY__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_ntlmssp.c b/bin/default/librpc/gen_ndr/s3compat_ntlmssp.c
new file mode 100644 (file)
index 0000000..2051c42
--- /dev/null
@@ -0,0 +1,268 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_ntlmssp.h"
+
+struct _s3_compat_decode_NEGOTIATE_MESSAGE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_NEGOTIATE_MESSAGE *r;
+};
+
+static struct tevent_req *_s3_compat_decode_NEGOTIATE_MESSAGE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_NEGOTIATE_MESSAGE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_NEGOTIATE_MESSAGE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_NEGOTIATE_MESSAGE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_NEGOTIATE_MESSAGE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_NEGOTIATE_MESSAGE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_CHALLENGE_MESSAGE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_CHALLENGE_MESSAGE *r;
+};
+
+static struct tevent_req *_s3_compat_decode_CHALLENGE_MESSAGE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_CHALLENGE_MESSAGE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_CHALLENGE_MESSAGE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_CHALLENGE_MESSAGE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_CHALLENGE_MESSAGE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_CHALLENGE_MESSAGE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_AUTHENTICATE_MESSAGE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_AUTHENTICATE_MESSAGE *r;
+};
+
+static struct tevent_req *_s3_compat_decode_AUTHENTICATE_MESSAGE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_AUTHENTICATE_MESSAGE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_AUTHENTICATE_MESSAGE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_AUTHENTICATE_MESSAGE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_AUTHENTICATE_MESSAGE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_AUTHENTICATE_MESSAGE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_NTLMv2_CLIENT_CHALLENGE *r;
+};
+
+static struct tevent_req *_s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_NTLMv2_CLIENT_CHALLENGE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_NTLMv2_CLIENT_CHALLENGE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_NTLMv2_RESPONSE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_NTLMv2_RESPONSE *r;
+};
+
+static struct tevent_req *_s3_compat_decode_NTLMv2_RESPONSE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_NTLMv2_RESPONSE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_NTLMv2_RESPONSE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_NTLMv2_RESPONSE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_NTLMv2_RESPONSE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_NTLMv2_RESPONSE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_ntlmssp_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_NEGOTIATE_MESSAGE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_NEGOTIATE_MESSAGE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_CHALLENGE_MESSAGE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_CHALLENGE_MESSAGE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_AUTHENTICATE_MESSAGE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_AUTHENTICATE_MESSAGE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_NTLMv2_CLIENT_CHALLENGE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_NTLMv2_RESPONSE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_NTLMv2_RESPONSE_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_ntlmssp_epv[] = {
+       .name = "_s3_compat_ntlmssp",
+       .table = &ndr_table_ntlmssp,
+       .num_fns = 5,
+       .fns = _s3_compat_ntlmssp_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_ntlmssp(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_ntlmssp.h b/bin/default/librpc/gen_ndr/s3compat_ntlmssp.h
new file mode 100644 (file)
index 0000000..ae333f8
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_ntlmssp.h"
+#ifndef __S3COMPAT_NTLMSSP__
+#define __S3COMPAT_NTLMSSP__
+void _decode_NEGOTIATE_MESSAGE(struct pipes_struct *p, struct decode_NEGOTIATE_MESSAGE *r);
+void _decode_CHALLENGE_MESSAGE(struct pipes_struct *p, struct decode_CHALLENGE_MESSAGE *r);
+void _decode_AUTHENTICATE_MESSAGE(struct pipes_struct *p, struct decode_AUTHENTICATE_MESSAGE *r);
+void _decode_NTLMv2_CLIENT_CHALLENGE(struct pipes_struct *p, struct decode_NTLMv2_CLIENT_CHALLENGE *r);
+void _decode_NTLMv2_RESPONSE(struct pipes_struct *p, struct decode_NTLMv2_RESPONSE *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_ntlmssp(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NTLMSSP__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_ntsvcs.c b/bin/default/librpc/gen_ndr/s3compat_ntsvcs.c
new file mode 100644 (file)
index 0000000..6e25865
--- /dev/null
@@ -0,0 +1,3246 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_ntsvcs.h"
+
+struct _s3_compat_PNP_Disconnect_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_Disconnect *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_Disconnect_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_Disconnect *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_Disconnect_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_Disconnect_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_Disconnect(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_Disconnect_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_Connect_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_Connect *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_Connect_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_Connect *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_Connect_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_Connect_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_Connect(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_Connect_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetVersion_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetVersion *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetVersion_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetVersion *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetVersion_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetVersion_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.version = talloc_zero(r, uint16_t);
+       if (tevent_req_nomem(r->out.version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _PNP_GetVersion(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetVersion_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetGlobalState_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetGlobalState *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetGlobalState_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetGlobalState *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetGlobalState_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetGlobalState_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetGlobalState(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetGlobalState_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_InitDetection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_InitDetection *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_InitDetection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_InitDetection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_InitDetection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_InitDetection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_InitDetection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_InitDetection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_ReportLogOn_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_ReportLogOn *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_ReportLogOn_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_ReportLogOn *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_ReportLogOn_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_ReportLogOn_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_ReportLogOn(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_ReportLogOn_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_ValidateDeviceInstance_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_ValidateDeviceInstance *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_ValidateDeviceInstance_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_ValidateDeviceInstance *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_ValidateDeviceInstance_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_ValidateDeviceInstance_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_ValidateDeviceInstance(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_ValidateDeviceInstance_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetRootDeviceInstance_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetRootDeviceInstance *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetRootDeviceInstance_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetRootDeviceInstance *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetRootDeviceInstance_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetRootDeviceInstance_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetRootDeviceInstance(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetRootDeviceInstance_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetRelatedDeviceInstance_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetRelatedDeviceInstance *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetRelatedDeviceInstance_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetRelatedDeviceInstance *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetRelatedDeviceInstance_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetRelatedDeviceInstance_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetRelatedDeviceInstance(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetRelatedDeviceInstance_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_EnumerateSubKeys_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_EnumerateSubKeys *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_EnumerateSubKeys_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_EnumerateSubKeys *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_EnumerateSubKeys_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_EnumerateSubKeys_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_EnumerateSubKeys(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_EnumerateSubKeys_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetDeviceList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetDeviceList *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetDeviceList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetDeviceList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetDeviceList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetDeviceList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.length = r->in.length;
+       r->out.buffer = talloc_zero_array(r, uint16_t, *r->out.length);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _PNP_GetDeviceList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetDeviceList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetDeviceListSize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetDeviceListSize *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetDeviceListSize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetDeviceListSize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetDeviceListSize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetDeviceListSize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _PNP_GetDeviceListSize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetDeviceListSize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetDepth_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetDepth *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetDepth_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetDepth *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetDepth_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetDepth_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetDepth(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetDepth_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetDeviceRegProp_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetDeviceRegProp *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetDeviceRegProp_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetDeviceRegProp *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetDeviceRegProp_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetDeviceRegProp_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.reg_data_type = r->in.reg_data_type;
+       r->out.buffer_size = r->in.buffer_size;
+       r->out.needed = r->in.needed;
+       r->out.buffer = talloc_zero_array(r, uint8_t, *r->out.buffer_size);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _PNP_GetDeviceRegProp(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetDeviceRegProp_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_SetDeviceRegProp_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_SetDeviceRegProp *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_SetDeviceRegProp_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_SetDeviceRegProp *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_SetDeviceRegProp_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_SetDeviceRegProp_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_SetDeviceRegProp(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_SetDeviceRegProp_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetClassInstance_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetClassInstance *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetClassInstance_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetClassInstance *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetClassInstance_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetClassInstance_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetClassInstance(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetClassInstance_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_CreateKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_CreateKey *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_CreateKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_CreateKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_CreateKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_CreateKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_CreateKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_CreateKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_DeleteRegistryKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_DeleteRegistryKey *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_DeleteRegistryKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_DeleteRegistryKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_DeleteRegistryKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_DeleteRegistryKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_DeleteRegistryKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_DeleteRegistryKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetClassCount_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetClassCount *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetClassCount_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetClassCount *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetClassCount_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetClassCount_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetClassCount(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetClassCount_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetClassName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetClassName *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetClassName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetClassName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetClassName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetClassName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetClassName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetClassName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_DeleteClassKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_DeleteClassKey *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_DeleteClassKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_DeleteClassKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_DeleteClassKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_DeleteClassKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_DeleteClassKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_DeleteClassKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetInterfaceDeviceAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetInterfaceDeviceAlias *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetInterfaceDeviceAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetInterfaceDeviceAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetInterfaceDeviceAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetInterfaceDeviceAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetInterfaceDeviceAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetInterfaceDeviceAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetInterfaceDeviceList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetInterfaceDeviceList *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetInterfaceDeviceList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetInterfaceDeviceList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetInterfaceDeviceList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetInterfaceDeviceList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetInterfaceDeviceList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetInterfaceDeviceList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetInterfaceDeviceListSize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetInterfaceDeviceListSize *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetInterfaceDeviceListSize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetInterfaceDeviceListSize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetInterfaceDeviceListSize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetInterfaceDeviceListSize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetInterfaceDeviceListSize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetInterfaceDeviceListSize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RegisterDeviceClassAssociation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RegisterDeviceClassAssociation *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RegisterDeviceClassAssociation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RegisterDeviceClassAssociation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RegisterDeviceClassAssociation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RegisterDeviceClassAssociation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RegisterDeviceClassAssociation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RegisterDeviceClassAssociation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_UnregisterDeviceClassAssociation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_UnregisterDeviceClassAssociation *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_UnregisterDeviceClassAssociation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_UnregisterDeviceClassAssociation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_UnregisterDeviceClassAssociation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_UnregisterDeviceClassAssociation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_UnregisterDeviceClassAssociation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_UnregisterDeviceClassAssociation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetClassRegProp_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetClassRegProp *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetClassRegProp_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetClassRegProp *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetClassRegProp_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetClassRegProp_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetClassRegProp(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetClassRegProp_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_SetClassRegProp_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_SetClassRegProp *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_SetClassRegProp_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_SetClassRegProp *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_SetClassRegProp_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_SetClassRegProp_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_SetClassRegProp(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_SetClassRegProp_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_CreateDevInst_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_CreateDevInst *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_CreateDevInst_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_CreateDevInst *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_CreateDevInst_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_CreateDevInst_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_CreateDevInst(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_CreateDevInst_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_DeviceInstanceAction_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_DeviceInstanceAction *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_DeviceInstanceAction_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_DeviceInstanceAction *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_DeviceInstanceAction_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_DeviceInstanceAction_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_DeviceInstanceAction(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_DeviceInstanceAction_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetDeviceStatus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetDeviceStatus *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetDeviceStatus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetDeviceStatus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetDeviceStatus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetDeviceStatus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetDeviceStatus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetDeviceStatus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_SetDeviceProblem_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_SetDeviceProblem *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_SetDeviceProblem_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_SetDeviceProblem *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_SetDeviceProblem_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_SetDeviceProblem_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_SetDeviceProblem(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_SetDeviceProblem_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_DisableDevInst_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_DisableDevInst *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_DisableDevInst_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_DisableDevInst *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_DisableDevInst_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_DisableDevInst_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_DisableDevInst(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_DisableDevInst_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_UninstallDevInst_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_UninstallDevInst *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_UninstallDevInst_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_UninstallDevInst *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_UninstallDevInst_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_UninstallDevInst_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_UninstallDevInst(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_UninstallDevInst_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_AddID_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_AddID *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_AddID_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_AddID *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_AddID_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_AddID_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_AddID(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_AddID_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RegisterDriver_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RegisterDriver *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RegisterDriver_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RegisterDriver *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RegisterDriver_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RegisterDriver_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RegisterDriver(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RegisterDriver_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_QueryRemove_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_QueryRemove *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_QueryRemove_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_QueryRemove *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_QueryRemove_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_QueryRemove_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_QueryRemove(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_QueryRemove_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RequestDeviceEject_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RequestDeviceEject *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RequestDeviceEject_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RequestDeviceEject *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RequestDeviceEject_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RequestDeviceEject_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RequestDeviceEject(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RequestDeviceEject_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_IsDockStationPresent_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_IsDockStationPresent *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_IsDockStationPresent_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_IsDockStationPresent *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_IsDockStationPresent_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_IsDockStationPresent_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_IsDockStationPresent(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_IsDockStationPresent_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RequestEjectPC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RequestEjectPC *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RequestEjectPC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RequestEjectPC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RequestEjectPC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RequestEjectPC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RequestEjectPC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RequestEjectPC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_HwProfFlags_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_HwProfFlags *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_HwProfFlags_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_HwProfFlags *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_HwProfFlags_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_HwProfFlags_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.profile_flags = r->in.profile_flags;
+       r->out.veto_type = r->in.veto_type;
+       r->out.unknown5a = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.unknown5a, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _PNP_HwProfFlags(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_HwProfFlags_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetHwProfInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetHwProfInfo *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetHwProfInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetHwProfInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetHwProfInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetHwProfInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.result = _PNP_GetHwProfInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetHwProfInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_AddEmptyLogConf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_AddEmptyLogConf *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_AddEmptyLogConf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_AddEmptyLogConf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_AddEmptyLogConf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_AddEmptyLogConf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_AddEmptyLogConf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_AddEmptyLogConf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_FreeLogConf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_FreeLogConf *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_FreeLogConf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_FreeLogConf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_FreeLogConf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_FreeLogConf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_FreeLogConf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_FreeLogConf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetFirstLogConf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetFirstLogConf *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetFirstLogConf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetFirstLogConf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetFirstLogConf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetFirstLogConf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetFirstLogConf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetFirstLogConf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetNextLogConf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetNextLogConf *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetNextLogConf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetNextLogConf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetNextLogConf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetNextLogConf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetNextLogConf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetNextLogConf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetLogConfPriority_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetLogConfPriority *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetLogConfPriority_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetLogConfPriority *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetLogConfPriority_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetLogConfPriority_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetLogConfPriority(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetLogConfPriority_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_AddResDes_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_AddResDes *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_AddResDes_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_AddResDes *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_AddResDes_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_AddResDes_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_AddResDes(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_AddResDes_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_FreeResDes_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_FreeResDes *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_FreeResDes_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_FreeResDes *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_FreeResDes_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_FreeResDes_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_FreeResDes(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_FreeResDes_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetNextResDes_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetNextResDes *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetNextResDes_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetNextResDes *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetNextResDes_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetNextResDes_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetNextResDes(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetNextResDes_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetResDesData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetResDesData *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetResDesData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetResDesData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetResDesData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetResDesData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetResDesData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetResDesData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetResDesDataSize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetResDesDataSize *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetResDesDataSize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetResDesDataSize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetResDesDataSize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetResDesDataSize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetResDesDataSize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetResDesDataSize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_ModifyResDes_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_ModifyResDes *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_ModifyResDes_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_ModifyResDes *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_ModifyResDes_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_ModifyResDes_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_ModifyResDes(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_ModifyResDes_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_DetectResourceLimit_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_DetectResourceLimit *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_DetectResourceLimit_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_DetectResourceLimit *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_DetectResourceLimit_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_DetectResourceLimit_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_DetectResourceLimit(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_DetectResourceLimit_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_QueryResConfList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_QueryResConfList *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_QueryResConfList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_QueryResConfList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_QueryResConfList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_QueryResConfList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_QueryResConfList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_QueryResConfList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_SetHwProf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_SetHwProf *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_SetHwProf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_SetHwProf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_SetHwProf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_SetHwProf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_SetHwProf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_SetHwProf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_QueryArbitratorFreeData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_QueryArbitratorFreeData *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_QueryArbitratorFreeData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_QueryArbitratorFreeData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_QueryArbitratorFreeData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_QueryArbitratorFreeData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_QueryArbitratorFreeData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_QueryArbitratorFreeData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_QueryArbitratorFreeSize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_QueryArbitratorFreeSize *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_QueryArbitratorFreeSize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_QueryArbitratorFreeSize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_QueryArbitratorFreeSize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_QueryArbitratorFreeSize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_QueryArbitratorFreeSize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_QueryArbitratorFreeSize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RunDetection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RunDetection *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RunDetection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RunDetection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RunDetection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RunDetection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RunDetection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RunDetection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_RegisterNotification_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_RegisterNotification *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_RegisterNotification_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_RegisterNotification *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_RegisterNotification_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_RegisterNotification_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_RegisterNotification(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_RegisterNotification_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_UnregisterNotification_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_UnregisterNotification *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_UnregisterNotification_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_UnregisterNotification *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_UnregisterNotification_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_UnregisterNotification_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_UnregisterNotification(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_UnregisterNotification_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetCustomDevProp_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetCustomDevProp *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetCustomDevProp_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetCustomDevProp *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetCustomDevProp_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetCustomDevProp_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetCustomDevProp(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetCustomDevProp_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetVersionInternal_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetVersionInternal *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetVersionInternal_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetVersionInternal *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetVersionInternal_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetVersionInternal_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetVersionInternal(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetVersionInternal_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetBlockedDriverInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetBlockedDriverInfo *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetBlockedDriverInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetBlockedDriverInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetBlockedDriverInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetBlockedDriverInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetBlockedDriverInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetBlockedDriverInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_PNP_GetServerSideDeviceInstallFlags_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct PNP_GetServerSideDeviceInstallFlags *r;
+};
+
+static struct tevent_req *_s3_compat_PNP_GetServerSideDeviceInstallFlags_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct PNP_GetServerSideDeviceInstallFlags *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_PNP_GetServerSideDeviceInstallFlags_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_PNP_GetServerSideDeviceInstallFlags_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _PNP_GetServerSideDeviceInstallFlags(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_PNP_GetServerSideDeviceInstallFlags_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_ntsvcs_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_Disconnect_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_Disconnect_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_Connect_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_Connect_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetVersion_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetVersion_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetGlobalState_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetGlobalState_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_InitDetection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_InitDetection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_ReportLogOn_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_ReportLogOn_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_ValidateDeviceInstance_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_ValidateDeviceInstance_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetRootDeviceInstance_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetRootDeviceInstance_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetRelatedDeviceInstance_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetRelatedDeviceInstance_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_EnumerateSubKeys_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_EnumerateSubKeys_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetDeviceList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetDeviceList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetDeviceListSize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetDeviceListSize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetDepth_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetDepth_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetDeviceRegProp_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetDeviceRegProp_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_SetDeviceRegProp_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_SetDeviceRegProp_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetClassInstance_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetClassInstance_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_CreateKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_CreateKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_DeleteRegistryKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_DeleteRegistryKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetClassCount_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetClassCount_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetClassName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetClassName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_DeleteClassKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_DeleteClassKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceListSize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetInterfaceDeviceListSize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RegisterDeviceClassAssociation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RegisterDeviceClassAssociation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_UnregisterDeviceClassAssociation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_UnregisterDeviceClassAssociation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetClassRegProp_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetClassRegProp_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_SetClassRegProp_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_SetClassRegProp_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_CreateDevInst_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_CreateDevInst_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_DeviceInstanceAction_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_DeviceInstanceAction_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetDeviceStatus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetDeviceStatus_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_SetDeviceProblem_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_SetDeviceProblem_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_DisableDevInst_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_DisableDevInst_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_UninstallDevInst_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_UninstallDevInst_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_AddID_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_AddID_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RegisterDriver_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RegisterDriver_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_QueryRemove_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_QueryRemove_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RequestDeviceEject_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RequestDeviceEject_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_IsDockStationPresent_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_IsDockStationPresent_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RequestEjectPC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RequestEjectPC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_HwProfFlags_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_HwProfFlags_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetHwProfInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetHwProfInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_AddEmptyLogConf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_AddEmptyLogConf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_FreeLogConf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_FreeLogConf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetFirstLogConf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetFirstLogConf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetNextLogConf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetNextLogConf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetLogConfPriority_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetLogConfPriority_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_AddResDes_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_AddResDes_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_FreeResDes_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_FreeResDes_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetNextResDes_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetNextResDes_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetResDesData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetResDesData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetResDesDataSize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetResDesDataSize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_ModifyResDes_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_ModifyResDes_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_DetectResourceLimit_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_DetectResourceLimit_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_QueryResConfList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_QueryResConfList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_SetHwProf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_SetHwProf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_QueryArbitratorFreeData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_QueryArbitratorFreeData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_QueryArbitratorFreeSize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_QueryArbitratorFreeSize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RunDetection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RunDetection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_RegisterNotification_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_RegisterNotification_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_UnregisterNotification_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_UnregisterNotification_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetCustomDevProp_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetCustomDevProp_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetVersionInternal_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetVersionInternal_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetBlockedDriverInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetBlockedDriverInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_PNP_GetServerSideDeviceInstallFlags_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_PNP_GetServerSideDeviceInstallFlags_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_ntsvcs_epv[] = {
+       .name = "_s3_compat_ntsvcs",
+       .table = &ndr_table_ntsvcs,
+       .num_fns = 65,
+       .fns = _s3_compat_ntsvcs_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_ntsvcs(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_ntsvcs.h b/bin/default/librpc/gen_ndr/s3compat_ntsvcs.h
new file mode 100644 (file)
index 0000000..4634b54
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_ntsvcs.h"
+#ifndef __S3COMPAT_NTSVCS__
+#define __S3COMPAT_NTSVCS__
+WERROR _PNP_Disconnect(struct pipes_struct *p, struct PNP_Disconnect *r);
+WERROR _PNP_Connect(struct pipes_struct *p, struct PNP_Connect *r);
+WERROR _PNP_GetVersion(struct pipes_struct *p, struct PNP_GetVersion *r);
+WERROR _PNP_GetGlobalState(struct pipes_struct *p, struct PNP_GetGlobalState *r);
+WERROR _PNP_InitDetection(struct pipes_struct *p, struct PNP_InitDetection *r);
+WERROR _PNP_ReportLogOn(struct pipes_struct *p, struct PNP_ReportLogOn *r);
+WERROR _PNP_ValidateDeviceInstance(struct pipes_struct *p, struct PNP_ValidateDeviceInstance *r);
+WERROR _PNP_GetRootDeviceInstance(struct pipes_struct *p, struct PNP_GetRootDeviceInstance *r);
+WERROR _PNP_GetRelatedDeviceInstance(struct pipes_struct *p, struct PNP_GetRelatedDeviceInstance *r);
+WERROR _PNP_EnumerateSubKeys(struct pipes_struct *p, struct PNP_EnumerateSubKeys *r);
+WERROR _PNP_GetDeviceList(struct pipes_struct *p, struct PNP_GetDeviceList *r);
+WERROR _PNP_GetDeviceListSize(struct pipes_struct *p, struct PNP_GetDeviceListSize *r);
+WERROR _PNP_GetDepth(struct pipes_struct *p, struct PNP_GetDepth *r);
+WERROR _PNP_GetDeviceRegProp(struct pipes_struct *p, struct PNP_GetDeviceRegProp *r);
+WERROR _PNP_SetDeviceRegProp(struct pipes_struct *p, struct PNP_SetDeviceRegProp *r);
+WERROR _PNP_GetClassInstance(struct pipes_struct *p, struct PNP_GetClassInstance *r);
+WERROR _PNP_CreateKey(struct pipes_struct *p, struct PNP_CreateKey *r);
+WERROR _PNP_DeleteRegistryKey(struct pipes_struct *p, struct PNP_DeleteRegistryKey *r);
+WERROR _PNP_GetClassCount(struct pipes_struct *p, struct PNP_GetClassCount *r);
+WERROR _PNP_GetClassName(struct pipes_struct *p, struct PNP_GetClassName *r);
+WERROR _PNP_DeleteClassKey(struct pipes_struct *p, struct PNP_DeleteClassKey *r);
+WERROR _PNP_GetInterfaceDeviceAlias(struct pipes_struct *p, struct PNP_GetInterfaceDeviceAlias *r);
+WERROR _PNP_GetInterfaceDeviceList(struct pipes_struct *p, struct PNP_GetInterfaceDeviceList *r);
+WERROR _PNP_GetInterfaceDeviceListSize(struct pipes_struct *p, struct PNP_GetInterfaceDeviceListSize *r);
+WERROR _PNP_RegisterDeviceClassAssociation(struct pipes_struct *p, struct PNP_RegisterDeviceClassAssociation *r);
+WERROR _PNP_UnregisterDeviceClassAssociation(struct pipes_struct *p, struct PNP_UnregisterDeviceClassAssociation *r);
+WERROR _PNP_GetClassRegProp(struct pipes_struct *p, struct PNP_GetClassRegProp *r);
+WERROR _PNP_SetClassRegProp(struct pipes_struct *p, struct PNP_SetClassRegProp *r);
+WERROR _PNP_CreateDevInst(struct pipes_struct *p, struct PNP_CreateDevInst *r);
+WERROR _PNP_DeviceInstanceAction(struct pipes_struct *p, struct PNP_DeviceInstanceAction *r);
+WERROR _PNP_GetDeviceStatus(struct pipes_struct *p, struct PNP_GetDeviceStatus *r);
+WERROR _PNP_SetDeviceProblem(struct pipes_struct *p, struct PNP_SetDeviceProblem *r);
+WERROR _PNP_DisableDevInst(struct pipes_struct *p, struct PNP_DisableDevInst *r);
+WERROR _PNP_UninstallDevInst(struct pipes_struct *p, struct PNP_UninstallDevInst *r);
+WERROR _PNP_AddID(struct pipes_struct *p, struct PNP_AddID *r);
+WERROR _PNP_RegisterDriver(struct pipes_struct *p, struct PNP_RegisterDriver *r);
+WERROR _PNP_QueryRemove(struct pipes_struct *p, struct PNP_QueryRemove *r);
+WERROR _PNP_RequestDeviceEject(struct pipes_struct *p, struct PNP_RequestDeviceEject *r);
+WERROR _PNP_IsDockStationPresent(struct pipes_struct *p, struct PNP_IsDockStationPresent *r);
+WERROR _PNP_RequestEjectPC(struct pipes_struct *p, struct PNP_RequestEjectPC *r);
+WERROR _PNP_HwProfFlags(struct pipes_struct *p, struct PNP_HwProfFlags *r);
+WERROR _PNP_GetHwProfInfo(struct pipes_struct *p, struct PNP_GetHwProfInfo *r);
+WERROR _PNP_AddEmptyLogConf(struct pipes_struct *p, struct PNP_AddEmptyLogConf *r);
+WERROR _PNP_FreeLogConf(struct pipes_struct *p, struct PNP_FreeLogConf *r);
+WERROR _PNP_GetFirstLogConf(struct pipes_struct *p, struct PNP_GetFirstLogConf *r);
+WERROR _PNP_GetNextLogConf(struct pipes_struct *p, struct PNP_GetNextLogConf *r);
+WERROR _PNP_GetLogConfPriority(struct pipes_struct *p, struct PNP_GetLogConfPriority *r);
+WERROR _PNP_AddResDes(struct pipes_struct *p, struct PNP_AddResDes *r);
+WERROR _PNP_FreeResDes(struct pipes_struct *p, struct PNP_FreeResDes *r);
+WERROR _PNP_GetNextResDes(struct pipes_struct *p, struct PNP_GetNextResDes *r);
+WERROR _PNP_GetResDesData(struct pipes_struct *p, struct PNP_GetResDesData *r);
+WERROR _PNP_GetResDesDataSize(struct pipes_struct *p, struct PNP_GetResDesDataSize *r);
+WERROR _PNP_ModifyResDes(struct pipes_struct *p, struct PNP_ModifyResDes *r);
+WERROR _PNP_DetectResourceLimit(struct pipes_struct *p, struct PNP_DetectResourceLimit *r);
+WERROR _PNP_QueryResConfList(struct pipes_struct *p, struct PNP_QueryResConfList *r);
+WERROR _PNP_SetHwProf(struct pipes_struct *p, struct PNP_SetHwProf *r);
+WERROR _PNP_QueryArbitratorFreeData(struct pipes_struct *p, struct PNP_QueryArbitratorFreeData *r);
+WERROR _PNP_QueryArbitratorFreeSize(struct pipes_struct *p, struct PNP_QueryArbitratorFreeSize *r);
+WERROR _PNP_RunDetection(struct pipes_struct *p, struct PNP_RunDetection *r);
+WERROR _PNP_RegisterNotification(struct pipes_struct *p, struct PNP_RegisterNotification *r);
+WERROR _PNP_UnregisterNotification(struct pipes_struct *p, struct PNP_UnregisterNotification *r);
+WERROR _PNP_GetCustomDevProp(struct pipes_struct *p, struct PNP_GetCustomDevProp *r);
+WERROR _PNP_GetVersionInternal(struct pipes_struct *p, struct PNP_GetVersionInternal *r);
+WERROR _PNP_GetBlockedDriverInfo(struct pipes_struct *p, struct PNP_GetBlockedDriverInfo *r);
+WERROR _PNP_GetServerSideDeviceInstallFlags(struct pipes_struct *p, struct PNP_GetServerSideDeviceInstallFlags *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_ntsvcs(struct dcerpc_server *server);
+#endif /* __S3COMPAT_NTSVCS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_orpc.c b/bin/default/librpc/gen_ndr/s3compat_orpc.c
new file mode 100644 (file)
index 0000000..3c62767
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_orpc.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_ObjectRpcBaseTypes_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_ObjectRpcBaseTypes_epv[] = {
+       .name = "_s3_compat_ObjectRpcBaseTypes",
+       .table = &ndr_table_ObjectRpcBaseTypes,
+       .num_fns = 0,
+       .fns = _s3_compat_ObjectRpcBaseTypes_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_ObjectRpcBaseTypes(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_orpc.h b/bin/default/librpc/gen_ndr/s3compat_orpc.h
new file mode 100644 (file)
index 0000000..077885a
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_orpc.h"
+#ifndef __S3COMPAT_OBJECTRPCBASETYPES__
+#define __S3COMPAT_OBJECTRPCBASETYPES__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_ObjectRpcBaseTypes(struct dcerpc_server *server);
+#endif /* __S3COMPAT_OBJECTRPCBASETYPES__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_oxidresolver.c b/bin/default/librpc/gen_ndr/s3compat_oxidresolver.c
new file mode 100644 (file)
index 0000000..67b46b7
--- /dev/null
@@ -0,0 +1,387 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_oxidresolver.h"
+
+struct _s3_compat_ResolveOxid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct ResolveOxid *r;
+};
+
+static struct tevent_req *_s3_compat_ResolveOxid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct ResolveOxid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_ResolveOxid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_ResolveOxid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ppdsaOxidBindings = talloc_zero(r, struct DUALSTRINGARRAY *);
+       if (tevent_req_nomem(r->out.ppdsaOxidBindings, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pipidRemUnknown = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.pipidRemUnknown, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pAuthnHint = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.pAuthnHint, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _ResolveOxid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_ResolveOxid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_SimplePing_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct SimplePing *r;
+};
+
+static struct tevent_req *_s3_compat_SimplePing_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct SimplePing *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_SimplePing_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_SimplePing_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _SimplePing(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_SimplePing_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_ComplexPing_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct ComplexPing *r;
+};
+
+static struct tevent_req *_s3_compat_ComplexPing_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct ComplexPing *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_ComplexPing_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_ComplexPing_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.SetId = r->in.SetId;
+       r->out.PingBackoffFactor = talloc_zero(r, uint16_t);
+       if (tevent_req_nomem(r->out.PingBackoffFactor, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _ComplexPing(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_ComplexPing_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_ServerAlive_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct ServerAlive *r;
+};
+
+static struct tevent_req *_s3_compat_ServerAlive_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct ServerAlive *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_ServerAlive_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_ServerAlive_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _ServerAlive(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_ServerAlive_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_ResolveOxid2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct ResolveOxid2 *r;
+};
+
+static struct tevent_req *_s3_compat_ResolveOxid2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct ResolveOxid2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_ResolveOxid2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_ResolveOxid2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pdsaOxidBindings = talloc_zero(r, struct DUALSTRINGARRAY *);
+       if (tevent_req_nomem(r->out.pdsaOxidBindings, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ipidRemUnknown = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.ipidRemUnknown, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.AuthnHint = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.AuthnHint, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ComVersion = talloc_zero(r, struct COMVERSION);
+       if (tevent_req_nomem(r->out.ComVersion, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _ResolveOxid2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_ResolveOxid2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_ServerAlive2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct ServerAlive2 *r;
+};
+
+static struct tevent_req *_s3_compat_ServerAlive2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct ServerAlive2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_ServerAlive2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_ServerAlive2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct COMINFO);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.dualstring = talloc_zero(r, struct DUALSTRINGARRAY);
+       if (tevent_req_nomem(r->out.dualstring, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.unknown2 = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.unknown2, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.unknown3 = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.unknown3, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.unknown4 = talloc_zero(r, uint8_t);
+       if (tevent_req_nomem(r->out.unknown4, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _ServerAlive2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_ServerAlive2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_IOXIDResolver_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_ResolveOxid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_ResolveOxid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_SimplePing_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_SimplePing_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_ComplexPing_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_ComplexPing_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_ServerAlive_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_ServerAlive_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_ResolveOxid2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_ResolveOxid2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_ServerAlive2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_ServerAlive2_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_IOXIDResolver_epv[] = {
+       .name = "_s3_compat_IOXIDResolver",
+       .table = &ndr_table_IOXIDResolver,
+       .num_fns = 6,
+       .fns = _s3_compat_IOXIDResolver_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_IOXIDResolver(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_oxidresolver.h b/bin/default/librpc/gen_ndr/s3compat_oxidresolver.h
new file mode 100644 (file)
index 0000000..bf2532f
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_oxidresolver.h"
+#ifndef __S3COMPAT_IOXIDRESOLVER__
+#define __S3COMPAT_IOXIDRESOLVER__
+WERROR _ResolveOxid(struct pipes_struct *p, struct ResolveOxid *r);
+WERROR _SimplePing(struct pipes_struct *p, struct SimplePing *r);
+WERROR _ComplexPing(struct pipes_struct *p, struct ComplexPing *r);
+WERROR _ServerAlive(struct pipes_struct *p, struct ServerAlive *r);
+WERROR _ResolveOxid2(struct pipes_struct *p, struct ResolveOxid2 *r);
+WERROR _ServerAlive2(struct pipes_struct *p, struct ServerAlive2 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_IOXIDResolver(struct dcerpc_server *server);
+#endif /* __S3COMPAT_IOXIDRESOLVER__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_policyagent.c b/bin/default/librpc/gen_ndr/s3compat_policyagent.c
new file mode 100644 (file)
index 0000000..03215a9
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_policyagent.h"
+
+struct _s3_compat_policyagent_Dummy_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct policyagent_Dummy *r;
+};
+
+static struct tevent_req *_s3_compat_policyagent_Dummy_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct policyagent_Dummy *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_policyagent_Dummy_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_policyagent_Dummy_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _policyagent_Dummy(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_policyagent_Dummy_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_policyagent_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_policyagent_Dummy_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_policyagent_Dummy_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_policyagent_epv[] = {
+       .name = "_s3_compat_policyagent",
+       .table = &ndr_table_policyagent,
+       .num_fns = 1,
+       .fns = _s3_compat_policyagent_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_policyagent(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_policyagent.h b/bin/default/librpc/gen_ndr/s3compat_policyagent.h
new file mode 100644 (file)
index 0000000..44538e8
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_policyagent.h"
+#ifndef __S3COMPAT_POLICYAGENT__
+#define __S3COMPAT_POLICYAGENT__
+WERROR _policyagent_Dummy(struct pipes_struct *p, struct policyagent_Dummy *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_policyagent(struct dcerpc_server *server);
+#endif /* __S3COMPAT_POLICYAGENT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_remact.c b/bin/default/librpc/gen_ndr/s3compat_remact.c
new file mode 100644 (file)
index 0000000..9b26eeb
--- /dev/null
@@ -0,0 +1,118 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_remact.h"
+
+struct _s3_compat_RemoteActivation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct RemoteActivation *r;
+};
+
+static struct tevent_req *_s3_compat_RemoteActivation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct RemoteActivation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_RemoteActivation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_RemoteActivation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.that = talloc_zero(r, struct ORPCTHAT);
+       if (tevent_req_nomem(r->out.that, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pOxid = talloc_zero(r, uint64_t);
+       if (tevent_req_nomem(r->out.pOxid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.pdsaOxidBindings = talloc_zero(r, struct DUALSTRINGARRAY);
+       if (tevent_req_nomem(r->out.pdsaOxidBindings, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ipidRemUnknown = talloc_zero(r, struct GUID);
+       if (tevent_req_nomem(r->out.ipidRemUnknown, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.AuthnHint = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.AuthnHint, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ServerVersion = talloc_zero(r, struct COMVERSION);
+       if (tevent_req_nomem(r->out.ServerVersion, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.hr = talloc_zero(r, WERROR);
+       if (tevent_req_nomem(r->out.hr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ifaces = talloc_zero_array(r, struct MInterfacePointer *, r->in.Interfaces);
+       if (tevent_req_nomem(r->out.ifaces, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.results = talloc_zero_array(r, WERROR, r->in.Interfaces);
+       if (tevent_req_nomem(r->out.results, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _RemoteActivation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_RemoteActivation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_IRemoteActivation_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_RemoteActivation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_RemoteActivation_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_IRemoteActivation_epv[] = {
+       .name = "_s3_compat_IRemoteActivation",
+       .table = &ndr_table_IRemoteActivation,
+       .num_fns = 1,
+       .fns = _s3_compat_IRemoteActivation_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_IRemoteActivation(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_remact.h b/bin/default/librpc/gen_ndr/s3compat_remact.h
new file mode 100644 (file)
index 0000000..2b2acf4
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_remact.h"
+#ifndef __S3COMPAT_IREMOTEACTIVATION__
+#define __S3COMPAT_IREMOTEACTIVATION__
+WERROR _RemoteActivation(struct pipes_struct *p, struct RemoteActivation *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_IRemoteActivation(struct dcerpc_server *server);
+#endif /* __S3COMPAT_IREMOTEACTIVATION__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_rot.c b/bin/default/librpc/gen_ndr/s3compat_rot.c
new file mode 100644 (file)
index 0000000..499a1a3
--- /dev/null
@@ -0,0 +1,390 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_rot.h"
+
+struct _s3_compat_rot_add_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_add *r;
+};
+
+static struct tevent_req *_s3_compat_rot_add_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_add *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_add_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_add_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rotid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rotid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _rot_add(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_add_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_remove_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_remove *r;
+};
+
+static struct tevent_req *_s3_compat_rot_remove_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_remove *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_remove_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_remove_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _rot_remove(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_remove_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_is_listed_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_is_listed *r;
+};
+
+static struct tevent_req *_s3_compat_rot_is_listed_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_is_listed *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_is_listed_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_is_listed_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _rot_is_listed(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_is_listed_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_get_interface_pointer_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_get_interface_pointer *r;
+};
+
+static struct tevent_req *_s3_compat_rot_get_interface_pointer_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_get_interface_pointer *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_get_interface_pointer_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_get_interface_pointer_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ip = talloc_zero(r, struct MInterfacePointer);
+       if (tevent_req_nomem(r->out.ip, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _rot_get_interface_pointer(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_get_interface_pointer_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_set_modification_time_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_set_modification_time *r;
+};
+
+static struct tevent_req *_s3_compat_rot_set_modification_time_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_set_modification_time *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_set_modification_time_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_set_modification_time_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _rot_set_modification_time(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_set_modification_time_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_get_modification_time_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_get_modification_time *r;
+};
+
+static struct tevent_req *_s3_compat_rot_get_modification_time_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_get_modification_time *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_get_modification_time_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_get_modification_time_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.t = talloc_zero(r, NTTIME);
+       if (tevent_req_nomem(r->out.t, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _rot_get_modification_time(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_get_modification_time_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_rot_enum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct rot_enum *r;
+};
+
+static struct tevent_req *_s3_compat_rot_enum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct rot_enum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_rot_enum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_rot_enum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.EnumMoniker = talloc_zero(r, struct MInterfacePointer);
+       if (tevent_req_nomem(r->out.EnumMoniker, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _rot_enum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_rot_enum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_rot_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_add_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_add_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_remove_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_remove_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_is_listed_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_is_listed_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_get_interface_pointer_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_get_interface_pointer_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_set_modification_time_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_set_modification_time_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_get_modification_time_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_get_modification_time_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_rot_enum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_rot_enum_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_rot_epv[] = {
+       .name = "_s3_compat_rot",
+       .table = &ndr_table_rot,
+       .num_fns = 7,
+       .fns = _s3_compat_rot_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_rot(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_rot.h b/bin/default/librpc/gen_ndr/s3compat_rot.h
new file mode 100644 (file)
index 0000000..fe50f8f
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_rot.h"
+#ifndef __S3COMPAT_ROT__
+#define __S3COMPAT_ROT__
+WERROR _rot_add(struct pipes_struct *p, struct rot_add *r);
+WERROR _rot_remove(struct pipes_struct *p, struct rot_remove *r);
+WERROR _rot_is_listed(struct pipes_struct *p, struct rot_is_listed *r);
+WERROR _rot_get_interface_pointer(struct pipes_struct *p, struct rot_get_interface_pointer *r);
+WERROR _rot_set_modification_time(struct pipes_struct *p, struct rot_set_modification_time *r);
+WERROR _rot_get_modification_time(struct pipes_struct *p, struct rot_get_modification_time *r);
+WERROR _rot_enum(struct pipes_struct *p, struct rot_enum *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_rot(struct dcerpc_server *server);
+#endif /* __S3COMPAT_ROT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_samr.c b/bin/default/librpc/gen_ndr/s3compat_samr.c
new file mode 100644 (file)
index 0000000..5aebf68
--- /dev/null
@@ -0,0 +1,3719 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_samr.h"
+
+struct _s3_compat_samr_Connect_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Connect *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Connect_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Connect *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Connect_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Connect_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.connect_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.connect_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_Connect(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Connect_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Close_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Close *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Close_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Close *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Close_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Close_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _samr_Close(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Close_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetSecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetSecurity *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetSecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetSecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetSecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetSecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetSecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetSecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QuerySecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QuerySecurity *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QuerySecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QuerySecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QuerySecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QuerySecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sdbuf = talloc_zero(r, struct sec_desc_buf *);
+       if (tevent_req_nomem(r->out.sdbuf, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QuerySecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QuerySecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Shutdown_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Shutdown *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Shutdown_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Shutdown *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Shutdown_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Shutdown_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_Shutdown(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Shutdown_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_LookupDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_LookupDomain *r;
+};
+
+static struct tevent_req *_s3_compat_samr_LookupDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_LookupDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_LookupDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_LookupDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sid = talloc_zero(r, struct dom_sid2 *);
+       if (tevent_req_nomem(r->out.sid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_LookupDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_LookupDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_EnumDomains_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_EnumDomains *r;
+};
+
+static struct tevent_req *_s3_compat_samr_EnumDomains_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_EnumDomains *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_EnumDomains_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_EnumDomains_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.sam = talloc_zero(r, struct samr_SamArray *);
+       if (tevent_req_nomem(r->out.sam, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.num_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_EnumDomains(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_EnumDomains_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_OpenDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_OpenDomain *r;
+};
+
+static struct tevent_req *_s3_compat_samr_OpenDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_OpenDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_OpenDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_OpenDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.domain_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.domain_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_OpenDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_OpenDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryDomainInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryDomainInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryDomainInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryDomainInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryDomainInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryDomainInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_DomainInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryDomainInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryDomainInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetDomainInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetDomainInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetDomainInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetDomainInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetDomainInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetDomainInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetDomainInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetDomainInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_CreateDomainGroup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_CreateDomainGroup *r;
+};
+
+static struct tevent_req *_s3_compat_samr_CreateDomainGroup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_CreateDomainGroup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_CreateDomainGroup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_CreateDomainGroup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.group_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.group_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_CreateDomainGroup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_CreateDomainGroup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_EnumDomainGroups_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_EnumDomainGroups *r;
+};
+
+static struct tevent_req *_s3_compat_samr_EnumDomainGroups_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_EnumDomainGroups *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_EnumDomainGroups_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_EnumDomainGroups_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.sam = talloc_zero(r, struct samr_SamArray *);
+       if (tevent_req_nomem(r->out.sam, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.num_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_EnumDomainGroups(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_EnumDomainGroups_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_CreateUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_CreateUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_CreateUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_CreateUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_CreateUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_CreateUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.user_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.user_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_CreateUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_CreateUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_EnumDomainUsers_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_EnumDomainUsers *r;
+};
+
+static struct tevent_req *_s3_compat_samr_EnumDomainUsers_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_EnumDomainUsers *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_EnumDomainUsers_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_EnumDomainUsers_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.sam = talloc_zero(r, struct samr_SamArray *);
+       if (tevent_req_nomem(r->out.sam, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.num_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_EnumDomainUsers(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_EnumDomainUsers_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_CreateDomAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_CreateDomAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_CreateDomAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_CreateDomAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_CreateDomAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_CreateDomAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.alias_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.alias_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_CreateDomAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_CreateDomAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_EnumDomainAliases_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_EnumDomainAliases *r;
+};
+
+static struct tevent_req *_s3_compat_samr_EnumDomainAliases_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_EnumDomainAliases *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_EnumDomainAliases_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_EnumDomainAliases_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.sam = talloc_zero(r, struct samr_SamArray *);
+       if (tevent_req_nomem(r->out.sam, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.num_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_EnumDomainAliases(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_EnumDomainAliases_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetAliasMembership_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetAliasMembership *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetAliasMembership_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetAliasMembership *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetAliasMembership_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetAliasMembership_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rids = talloc_zero(r, struct samr_Ids);
+       if (tevent_req_nomem(r->out.rids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetAliasMembership(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetAliasMembership_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_LookupNames_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_LookupNames *r;
+};
+
+static struct tevent_req *_s3_compat_samr_LookupNames_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_LookupNames *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_LookupNames_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_LookupNames_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rids = talloc_zero(r, struct samr_Ids);
+       if (tevent_req_nomem(r->out.rids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.types = talloc_zero(r, struct samr_Ids);
+       if (tevent_req_nomem(r->out.types, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_LookupNames(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_LookupNames_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_LookupRids_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_LookupRids *r;
+};
+
+static struct tevent_req *_s3_compat_samr_LookupRids_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_LookupRids *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_LookupRids_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_LookupRids_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.names = talloc_zero(r, struct lsa_Strings);
+       if (tevent_req_nomem(r->out.names, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.types = talloc_zero(r, struct samr_Ids);
+       if (tevent_req_nomem(r->out.types, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_LookupRids(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_LookupRids_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_OpenGroup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_OpenGroup *r;
+};
+
+static struct tevent_req *_s3_compat_samr_OpenGroup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_OpenGroup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_OpenGroup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_OpenGroup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.group_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.group_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_OpenGroup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_OpenGroup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryGroupInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryGroupInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryGroupInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryGroupInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryGroupInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryGroupInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_GroupInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryGroupInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryGroupInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetGroupInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetGroupInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetGroupInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetGroupInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetGroupInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetGroupInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetGroupInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetGroupInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_AddGroupMember_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_AddGroupMember *r;
+};
+
+static struct tevent_req *_s3_compat_samr_AddGroupMember_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_AddGroupMember *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_AddGroupMember_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_AddGroupMember_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_AddGroupMember(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_AddGroupMember_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_DeleteDomainGroup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_DeleteDomainGroup *r;
+};
+
+static struct tevent_req *_s3_compat_samr_DeleteDomainGroup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_DeleteDomainGroup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_DeleteDomainGroup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_DeleteDomainGroup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.group_handle = r->in.group_handle;
+       r->out.result = _samr_DeleteDomainGroup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_DeleteDomainGroup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_DeleteGroupMember_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_DeleteGroupMember *r;
+};
+
+static struct tevent_req *_s3_compat_samr_DeleteGroupMember_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_DeleteGroupMember *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_DeleteGroupMember_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_DeleteGroupMember_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_DeleteGroupMember(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_DeleteGroupMember_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryGroupMember_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryGroupMember *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryGroupMember_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryGroupMember *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryGroupMember_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryGroupMember_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rids = talloc_zero(r, struct samr_RidAttrArray *);
+       if (tevent_req_nomem(r->out.rids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryGroupMember(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryGroupMember_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetMemberAttributesOfGroup_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetMemberAttributesOfGroup *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetMemberAttributesOfGroup_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetMemberAttributesOfGroup *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetMemberAttributesOfGroup_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetMemberAttributesOfGroup_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetMemberAttributesOfGroup(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetMemberAttributesOfGroup_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_OpenAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_OpenAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_OpenAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_OpenAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_OpenAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_OpenAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.alias_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.alias_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_OpenAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_OpenAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryAliasInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryAliasInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryAliasInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryAliasInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryAliasInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryAliasInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_AliasInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryAliasInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryAliasInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetAliasInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetAliasInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetAliasInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetAliasInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetAliasInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetAliasInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetAliasInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetAliasInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_DeleteDomAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_DeleteDomAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_DeleteDomAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_DeleteDomAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_DeleteDomAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_DeleteDomAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.alias_handle = r->in.alias_handle;
+       r->out.result = _samr_DeleteDomAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_DeleteDomAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_AddAliasMember_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_AddAliasMember *r;
+};
+
+static struct tevent_req *_s3_compat_samr_AddAliasMember_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_AddAliasMember *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_AddAliasMember_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_AddAliasMember_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_AddAliasMember(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_AddAliasMember_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_DeleteAliasMember_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_DeleteAliasMember *r;
+};
+
+static struct tevent_req *_s3_compat_samr_DeleteAliasMember_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_DeleteAliasMember *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_DeleteAliasMember_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_DeleteAliasMember_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_DeleteAliasMember(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_DeleteAliasMember_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetMembersInAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetMembersInAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetMembersInAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetMembersInAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetMembersInAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetMembersInAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sids = talloc_zero(r, struct lsa_SidArray);
+       if (tevent_req_nomem(r->out.sids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetMembersInAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetMembersInAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_OpenUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_OpenUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_OpenUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_OpenUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_OpenUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_OpenUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.user_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.user_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_OpenUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_OpenUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_DeleteUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_DeleteUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_DeleteUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_DeleteUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_DeleteUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_DeleteUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.user_handle = r->in.user_handle;
+       r->out.result = _samr_DeleteUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_DeleteUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryUserInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryUserInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryUserInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryUserInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryUserInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryUserInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_UserInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryUserInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryUserInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetUserInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetUserInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetUserInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetUserInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetUserInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetUserInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetUserInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetUserInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_ChangePasswordUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_ChangePasswordUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_ChangePasswordUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_ChangePasswordUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_ChangePasswordUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_ChangePasswordUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_ChangePasswordUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_ChangePasswordUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetGroupsForUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetGroupsForUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetGroupsForUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetGroupsForUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetGroupsForUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetGroupsForUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rids = talloc_zero(r, struct samr_RidWithAttributeArray *);
+       if (tevent_req_nomem(r->out.rids, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetGroupsForUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetGroupsForUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryDisplayInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryDisplayInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryDisplayInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryDisplayInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryDisplayInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryDisplayInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.total_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.returned_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.returned_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union samr_DispInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryDisplayInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryDisplayInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetDisplayEnumerationIndex_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetDisplayEnumerationIndex *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetDisplayEnumerationIndex_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetDisplayEnumerationIndex *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetDisplayEnumerationIndex_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetDisplayEnumerationIndex_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.idx = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.idx, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetDisplayEnumerationIndex(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetDisplayEnumerationIndex_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_TestPrivateFunctionsDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_TestPrivateFunctionsDomain *r;
+};
+
+static struct tevent_req *_s3_compat_samr_TestPrivateFunctionsDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_TestPrivateFunctionsDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_TestPrivateFunctionsDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_TestPrivateFunctionsDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_TestPrivateFunctionsDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_TestPrivateFunctionsDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_TestPrivateFunctionsUser_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_TestPrivateFunctionsUser *r;
+};
+
+static struct tevent_req *_s3_compat_samr_TestPrivateFunctionsUser_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_TestPrivateFunctionsUser *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_TestPrivateFunctionsUser_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_TestPrivateFunctionsUser_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_TestPrivateFunctionsUser(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_TestPrivateFunctionsUser_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetUserPwInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetUserPwInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetUserPwInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetUserPwInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetUserPwInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetUserPwInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct samr_PwInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetUserPwInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetUserPwInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_RemoveMemberFromForeignDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_RemoveMemberFromForeignDomain *r;
+};
+
+static struct tevent_req *_s3_compat_samr_RemoveMemberFromForeignDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_RemoveMemberFromForeignDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_RemoveMemberFromForeignDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_RemoveMemberFromForeignDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_RemoveMemberFromForeignDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_RemoveMemberFromForeignDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryDomainInfo2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryDomainInfo2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryDomainInfo2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryDomainInfo2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryDomainInfo2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryDomainInfo2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_DomainInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryDomainInfo2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryDomainInfo2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryUserInfo2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryUserInfo2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryUserInfo2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryUserInfo2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryUserInfo2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryUserInfo2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union samr_UserInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryUserInfo2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryUserInfo2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryDisplayInfo2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryDisplayInfo2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryDisplayInfo2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryDisplayInfo2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryDisplayInfo2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryDisplayInfo2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.total_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.returned_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.returned_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union samr_DispInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryDisplayInfo2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryDisplayInfo2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetDisplayEnumerationIndex2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetDisplayEnumerationIndex2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetDisplayEnumerationIndex2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetDisplayEnumerationIndex2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetDisplayEnumerationIndex2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetDisplayEnumerationIndex2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.idx = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.idx, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetDisplayEnumerationIndex2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetDisplayEnumerationIndex2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_CreateUser2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_CreateUser2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_CreateUser2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_CreateUser2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_CreateUser2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_CreateUser2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.user_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.user_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.access_granted = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.access_granted, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.rid = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.rid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_CreateUser2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_CreateUser2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_QueryDisplayInfo3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_QueryDisplayInfo3 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_QueryDisplayInfo3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_QueryDisplayInfo3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_QueryDisplayInfo3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_QueryDisplayInfo3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.total_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.returned_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.returned_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union samr_DispInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_QueryDisplayInfo3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_QueryDisplayInfo3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_AddMultipleMembersToAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_AddMultipleMembersToAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_AddMultipleMembersToAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_AddMultipleMembersToAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_AddMultipleMembersToAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_AddMultipleMembersToAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_AddMultipleMembersToAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_AddMultipleMembersToAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_RemoveMultipleMembersFromAlias_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_RemoveMultipleMembersFromAlias *r;
+};
+
+static struct tevent_req *_s3_compat_samr_RemoveMultipleMembersFromAlias_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_RemoveMultipleMembersFromAlias *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_RemoveMultipleMembersFromAlias_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_RemoveMultipleMembersFromAlias_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_RemoveMultipleMembersFromAlias(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_RemoveMultipleMembersFromAlias_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_OemChangePasswordUser2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_OemChangePasswordUser2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_OemChangePasswordUser2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_OemChangePasswordUser2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_OemChangePasswordUser2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_OemChangePasswordUser2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_OemChangePasswordUser2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_OemChangePasswordUser2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_ChangePasswordUser2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_ChangePasswordUser2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_ChangePasswordUser2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_ChangePasswordUser2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_ChangePasswordUser2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_ChangePasswordUser2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_ChangePasswordUser2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_ChangePasswordUser2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetDomPwInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetDomPwInfo *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetDomPwInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetDomPwInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetDomPwInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetDomPwInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct samr_PwInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetDomPwInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetDomPwInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Connect2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Connect2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Connect2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Connect2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Connect2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Connect2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.connect_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.connect_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_Connect2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Connect2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetUserInfo2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetUserInfo2 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetUserInfo2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetUserInfo2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetUserInfo2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetUserInfo2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetUserInfo2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetUserInfo2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetBootKeyInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetBootKeyInformation *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetBootKeyInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetBootKeyInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetBootKeyInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetBootKeyInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetBootKeyInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetBootKeyInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_GetBootKeyInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_GetBootKeyInformation *r;
+};
+
+static struct tevent_req *_s3_compat_samr_GetBootKeyInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_GetBootKeyInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_GetBootKeyInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_GetBootKeyInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.unknown = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.unknown, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_GetBootKeyInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_GetBootKeyInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Connect3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Connect3 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Connect3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Connect3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Connect3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Connect3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.connect_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.connect_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_Connect3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Connect3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Connect4_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Connect4 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Connect4_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Connect4 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Connect4_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Connect4_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.connect_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.connect_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_Connect4(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Connect4_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_ChangePasswordUser3_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_ChangePasswordUser3 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_ChangePasswordUser3_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_ChangePasswordUser3 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_ChangePasswordUser3_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_ChangePasswordUser3_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.dominfo = talloc_zero(r, struct samr_DomInfo1 *);
+       if (tevent_req_nomem(r->out.dominfo, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.reject = talloc_zero(r, struct userPwdChangeFailureInformation *);
+       if (tevent_req_nomem(r->out.reject, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_ChangePasswordUser3(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_ChangePasswordUser3_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_Connect5_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_Connect5 *r;
+};
+
+static struct tevent_req *_s3_compat_samr_Connect5_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_Connect5 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_Connect5_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_Connect5_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.level_out = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.level_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info_out = talloc_zero(r, union samr_ConnectInfo);
+       if (tevent_req_nomem(r->out.info_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.connect_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.connect_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_Connect5(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_Connect5_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_RidToSid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_RidToSid *r;
+};
+
+static struct tevent_req *_s3_compat_samr_RidToSid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_RidToSid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_RidToSid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_RidToSid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sid = talloc_zero(r, struct dom_sid2 *);
+       if (tevent_req_nomem(r->out.sid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_RidToSid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_RidToSid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_SetDsrmPassword_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_SetDsrmPassword *r;
+};
+
+static struct tevent_req *_s3_compat_samr_SetDsrmPassword_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_SetDsrmPassword *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_SetDsrmPassword_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_SetDsrmPassword_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _samr_SetDsrmPassword(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_SetDsrmPassword_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_samr_ValidatePassword_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct samr_ValidatePassword *r;
+};
+
+static struct tevent_req *_s3_compat_samr_ValidatePassword_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct samr_ValidatePassword *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_samr_ValidatePassword_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_samr_ValidatePassword_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.rep = talloc_zero(r, union samr_ValidatePasswordRep *);
+       if (tevent_req_nomem(r->out.rep, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _samr_ValidatePassword(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_samr_ValidatePassword_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_samr_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Connect_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Connect_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Close_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Close_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetSecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetSecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QuerySecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QuerySecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Shutdown_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Shutdown_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_LookupDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_LookupDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_EnumDomains_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_EnumDomains_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_OpenDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_OpenDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryDomainInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryDomainInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetDomainInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetDomainInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_CreateDomainGroup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_CreateDomainGroup_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_EnumDomainGroups_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_EnumDomainGroups_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_CreateUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_CreateUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_EnumDomainUsers_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_EnumDomainUsers_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_CreateDomAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_CreateDomAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_EnumDomainAliases_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_EnumDomainAliases_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetAliasMembership_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetAliasMembership_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_LookupNames_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_LookupNames_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_LookupRids_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_LookupRids_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_OpenGroup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_OpenGroup_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryGroupInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryGroupInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetGroupInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetGroupInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_AddGroupMember_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_AddGroupMember_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_DeleteDomainGroup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_DeleteDomainGroup_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_DeleteGroupMember_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_DeleteGroupMember_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryGroupMember_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryGroupMember_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetMemberAttributesOfGroup_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetMemberAttributesOfGroup_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_OpenAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_OpenAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryAliasInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryAliasInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetAliasInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetAliasInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_DeleteDomAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_DeleteDomAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_AddAliasMember_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_AddAliasMember_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_DeleteAliasMember_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_DeleteAliasMember_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetMembersInAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetMembersInAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_OpenUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_OpenUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_DeleteUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_DeleteUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryUserInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryUserInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetUserInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetUserInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_ChangePasswordUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_ChangePasswordUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetGroupsForUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetGroupsForUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetDisplayEnumerationIndex_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetDisplayEnumerationIndex_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_TestPrivateFunctionsDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_TestPrivateFunctionsDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_TestPrivateFunctionsUser_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_TestPrivateFunctionsUser_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetUserPwInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetUserPwInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_RemoveMemberFromForeignDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_RemoveMemberFromForeignDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryDomainInfo2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryDomainInfo2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryUserInfo2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryUserInfo2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetDisplayEnumerationIndex2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetDisplayEnumerationIndex2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_CreateUser2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_CreateUser2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_QueryDisplayInfo3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_AddMultipleMembersToAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_AddMultipleMembersToAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_RemoveMultipleMembersFromAlias_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_RemoveMultipleMembersFromAlias_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_OemChangePasswordUser2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_OemChangePasswordUser2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_ChangePasswordUser2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_ChangePasswordUser2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetDomPwInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetDomPwInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Connect2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Connect2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetUserInfo2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetUserInfo2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetBootKeyInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetBootKeyInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_GetBootKeyInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_GetBootKeyInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Connect3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Connect3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Connect4_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Connect4_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_ChangePasswordUser3_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_ChangePasswordUser3_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_Connect5_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_Connect5_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_RidToSid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_RidToSid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_SetDsrmPassword_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_SetDsrmPassword_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_samr_ValidatePassword_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_samr_ValidatePassword_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_samr_epv[] = {
+       .name = "_s3_compat_samr",
+       .table = &ndr_table_samr,
+       .num_fns = 68,
+       .fns = _s3_compat_samr_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_samr(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_samr.h b/bin/default/librpc/gen_ndr/s3compat_samr.h
new file mode 100644 (file)
index 0000000..aa43a79
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_samr.h"
+#ifndef __S3COMPAT_SAMR__
+#define __S3COMPAT_SAMR__
+NTSTATUS _samr_Connect(struct pipes_struct *p, struct samr_Connect *r);
+NTSTATUS _samr_Close(struct pipes_struct *p, struct samr_Close *r);
+NTSTATUS _samr_SetSecurity(struct pipes_struct *p, struct samr_SetSecurity *r);
+NTSTATUS _samr_QuerySecurity(struct pipes_struct *p, struct samr_QuerySecurity *r);
+NTSTATUS _samr_Shutdown(struct pipes_struct *p, struct samr_Shutdown *r);
+NTSTATUS _samr_LookupDomain(struct pipes_struct *p, struct samr_LookupDomain *r);
+NTSTATUS _samr_EnumDomains(struct pipes_struct *p, struct samr_EnumDomains *r);
+NTSTATUS _samr_OpenDomain(struct pipes_struct *p, struct samr_OpenDomain *r);
+NTSTATUS _samr_QueryDomainInfo(struct pipes_struct *p, struct samr_QueryDomainInfo *r);
+NTSTATUS _samr_SetDomainInfo(struct pipes_struct *p, struct samr_SetDomainInfo *r);
+NTSTATUS _samr_CreateDomainGroup(struct pipes_struct *p, struct samr_CreateDomainGroup *r);
+NTSTATUS _samr_EnumDomainGroups(struct pipes_struct *p, struct samr_EnumDomainGroups *r);
+NTSTATUS _samr_CreateUser(struct pipes_struct *p, struct samr_CreateUser *r);
+NTSTATUS _samr_EnumDomainUsers(struct pipes_struct *p, struct samr_EnumDomainUsers *r);
+NTSTATUS _samr_CreateDomAlias(struct pipes_struct *p, struct samr_CreateDomAlias *r);
+NTSTATUS _samr_EnumDomainAliases(struct pipes_struct *p, struct samr_EnumDomainAliases *r);
+NTSTATUS _samr_GetAliasMembership(struct pipes_struct *p, struct samr_GetAliasMembership *r);
+NTSTATUS _samr_LookupNames(struct pipes_struct *p, struct samr_LookupNames *r);
+NTSTATUS _samr_LookupRids(struct pipes_struct *p, struct samr_LookupRids *r);
+NTSTATUS _samr_OpenGroup(struct pipes_struct *p, struct samr_OpenGroup *r);
+NTSTATUS _samr_QueryGroupInfo(struct pipes_struct *p, struct samr_QueryGroupInfo *r);
+NTSTATUS _samr_SetGroupInfo(struct pipes_struct *p, struct samr_SetGroupInfo *r);
+NTSTATUS _samr_AddGroupMember(struct pipes_struct *p, struct samr_AddGroupMember *r);
+NTSTATUS _samr_DeleteDomainGroup(struct pipes_struct *p, struct samr_DeleteDomainGroup *r);
+NTSTATUS _samr_DeleteGroupMember(struct pipes_struct *p, struct samr_DeleteGroupMember *r);
+NTSTATUS _samr_QueryGroupMember(struct pipes_struct *p, struct samr_QueryGroupMember *r);
+NTSTATUS _samr_SetMemberAttributesOfGroup(struct pipes_struct *p, struct samr_SetMemberAttributesOfGroup *r);
+NTSTATUS _samr_OpenAlias(struct pipes_struct *p, struct samr_OpenAlias *r);
+NTSTATUS _samr_QueryAliasInfo(struct pipes_struct *p, struct samr_QueryAliasInfo *r);
+NTSTATUS _samr_SetAliasInfo(struct pipes_struct *p, struct samr_SetAliasInfo *r);
+NTSTATUS _samr_DeleteDomAlias(struct pipes_struct *p, struct samr_DeleteDomAlias *r);
+NTSTATUS _samr_AddAliasMember(struct pipes_struct *p, struct samr_AddAliasMember *r);
+NTSTATUS _samr_DeleteAliasMember(struct pipes_struct *p, struct samr_DeleteAliasMember *r);
+NTSTATUS _samr_GetMembersInAlias(struct pipes_struct *p, struct samr_GetMembersInAlias *r);
+NTSTATUS _samr_OpenUser(struct pipes_struct *p, struct samr_OpenUser *r);
+NTSTATUS _samr_DeleteUser(struct pipes_struct *p, struct samr_DeleteUser *r);
+NTSTATUS _samr_QueryUserInfo(struct pipes_struct *p, struct samr_QueryUserInfo *r);
+NTSTATUS _samr_SetUserInfo(struct pipes_struct *p, struct samr_SetUserInfo *r);
+NTSTATUS _samr_ChangePasswordUser(struct pipes_struct *p, struct samr_ChangePasswordUser *r);
+NTSTATUS _samr_GetGroupsForUser(struct pipes_struct *p, struct samr_GetGroupsForUser *r);
+NTSTATUS _samr_QueryDisplayInfo(struct pipes_struct *p, struct samr_QueryDisplayInfo *r);
+NTSTATUS _samr_GetDisplayEnumerationIndex(struct pipes_struct *p, struct samr_GetDisplayEnumerationIndex *r);
+NTSTATUS _samr_TestPrivateFunctionsDomain(struct pipes_struct *p, struct samr_TestPrivateFunctionsDomain *r);
+NTSTATUS _samr_TestPrivateFunctionsUser(struct pipes_struct *p, struct samr_TestPrivateFunctionsUser *r);
+NTSTATUS _samr_GetUserPwInfo(struct pipes_struct *p, struct samr_GetUserPwInfo *r);
+NTSTATUS _samr_RemoveMemberFromForeignDomain(struct pipes_struct *p, struct samr_RemoveMemberFromForeignDomain *r);
+NTSTATUS _samr_QueryDomainInfo2(struct pipes_struct *p, struct samr_QueryDomainInfo2 *r);
+NTSTATUS _samr_QueryUserInfo2(struct pipes_struct *p, struct samr_QueryUserInfo2 *r);
+NTSTATUS _samr_QueryDisplayInfo2(struct pipes_struct *p, struct samr_QueryDisplayInfo2 *r);
+NTSTATUS _samr_GetDisplayEnumerationIndex2(struct pipes_struct *p, struct samr_GetDisplayEnumerationIndex2 *r);
+NTSTATUS _samr_CreateUser2(struct pipes_struct *p, struct samr_CreateUser2 *r);
+NTSTATUS _samr_QueryDisplayInfo3(struct pipes_struct *p, struct samr_QueryDisplayInfo3 *r);
+NTSTATUS _samr_AddMultipleMembersToAlias(struct pipes_struct *p, struct samr_AddMultipleMembersToAlias *r);
+NTSTATUS _samr_RemoveMultipleMembersFromAlias(struct pipes_struct *p, struct samr_RemoveMultipleMembersFromAlias *r);
+NTSTATUS _samr_OemChangePasswordUser2(struct pipes_struct *p, struct samr_OemChangePasswordUser2 *r);
+NTSTATUS _samr_ChangePasswordUser2(struct pipes_struct *p, struct samr_ChangePasswordUser2 *r);
+NTSTATUS _samr_GetDomPwInfo(struct pipes_struct *p, struct samr_GetDomPwInfo *r);
+NTSTATUS _samr_Connect2(struct pipes_struct *p, struct samr_Connect2 *r);
+NTSTATUS _samr_SetUserInfo2(struct pipes_struct *p, struct samr_SetUserInfo2 *r);
+NTSTATUS _samr_SetBootKeyInformation(struct pipes_struct *p, struct samr_SetBootKeyInformation *r);
+NTSTATUS _samr_GetBootKeyInformation(struct pipes_struct *p, struct samr_GetBootKeyInformation *r);
+NTSTATUS _samr_Connect3(struct pipes_struct *p, struct samr_Connect3 *r);
+NTSTATUS _samr_Connect4(struct pipes_struct *p, struct samr_Connect4 *r);
+NTSTATUS _samr_ChangePasswordUser3(struct pipes_struct *p, struct samr_ChangePasswordUser3 *r);
+NTSTATUS _samr_Connect5(struct pipes_struct *p, struct samr_Connect5 *r);
+NTSTATUS _samr_RidToSid(struct pipes_struct *p, struct samr_RidToSid *r);
+NTSTATUS _samr_SetDsrmPassword(struct pipes_struct *p, struct samr_SetDsrmPassword *r);
+NTSTATUS _samr_ValidatePassword(struct pipes_struct *p, struct samr_ValidatePassword *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_samr(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SAMR__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_scerpc.c b/bin/default/librpc/gen_ndr/s3compat_scerpc.c
new file mode 100644 (file)
index 0000000..01ef7b5
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_scerpc.h"
+
+struct _s3_compat_scerpc_Unknown0_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct scerpc_Unknown0 *r;
+};
+
+static struct tevent_req *_s3_compat_scerpc_Unknown0_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct scerpc_Unknown0 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_scerpc_Unknown0_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_scerpc_Unknown0_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _scerpc_Unknown0(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_scerpc_Unknown0_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_scerpc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_scerpc_Unknown0_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_scerpc_Unknown0_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_scerpc_epv[] = {
+       .name = "_s3_compat_scerpc",
+       .table = &ndr_table_scerpc,
+       .num_fns = 1,
+       .fns = _s3_compat_scerpc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_scerpc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_scerpc.h b/bin/default/librpc/gen_ndr/s3compat_scerpc.h
new file mode 100644 (file)
index 0000000..b957fcb
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_scerpc.h"
+#ifndef __S3COMPAT_SCERPC__
+#define __S3COMPAT_SCERPC__
+WERROR _scerpc_Unknown0(struct pipes_struct *p, struct scerpc_Unknown0 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_scerpc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SCERPC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_schannel.c b/bin/default/librpc/gen_ndr/s3compat_schannel.c
new file mode 100644 (file)
index 0000000..8465e96
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_schannel.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_schannel_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_schannel_epv[] = {
+       .name = "_s3_compat_schannel",
+       .table = &ndr_table_schannel,
+       .num_fns = 0,
+       .fns = _s3_compat_schannel_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_schannel(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_schannel.h b/bin/default/librpc/gen_ndr/s3compat_schannel.h
new file mode 100644 (file)
index 0000000..6b22db5
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_schannel.h"
+#ifndef __S3COMPAT_SCHANNEL__
+#define __S3COMPAT_SCHANNEL__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_schannel(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SCHANNEL__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_security.c b/bin/default/librpc/gen_ndr/s3compat_security.c
new file mode 100644 (file)
index 0000000..d33ce60
--- /dev/null
@@ -0,0 +1,219 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_security.h"
+
+struct _s3_compat_decode_security_descriptor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_security_descriptor *r;
+};
+
+static struct tevent_req *_s3_compat_decode_security_descriptor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_security_descriptor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_security_descriptor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_security_descriptor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_security_descriptor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_security_descriptor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_sec_desc_buf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_sec_desc_buf *r;
+};
+
+static struct tevent_req *_s3_compat_decode_sec_desc_buf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_sec_desc_buf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_sec_desc_buf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_sec_desc_buf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_sec_desc_buf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_sec_desc_buf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_security_token_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_security_token *r;
+};
+
+static struct tevent_req *_s3_compat_decode_security_token_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_security_token *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_security_token_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_security_token_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_security_token(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_security_token_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_decode_security_unix_token_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct decode_security_unix_token *r;
+};
+
+static struct tevent_req *_s3_compat_decode_security_unix_token_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct decode_security_unix_token *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_decode_security_unix_token_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_decode_security_unix_token_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _decode_security_unix_token(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_decode_security_unix_token_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_security_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_security_descriptor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_security_descriptor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_sec_desc_buf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_sec_desc_buf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_security_token_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_security_token_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_decode_security_unix_token_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_decode_security_unix_token_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_security_epv[] = {
+       .name = "_s3_compat_security",
+       .table = &ndr_table_security,
+       .num_fns = 4,
+       .fns = _s3_compat_security_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_security(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_security.h b/bin/default/librpc/gen_ndr/s3compat_security.h
new file mode 100644 (file)
index 0000000..37ef11f
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_security.h"
+#ifndef __S3COMPAT_SECURITY__
+#define __S3COMPAT_SECURITY__
+void _decode_security_descriptor(struct pipes_struct *p, struct decode_security_descriptor *r);
+void _decode_sec_desc_buf(struct pipes_struct *p, struct decode_sec_desc_buf *r);
+void _decode_security_token(struct pipes_struct *p, struct decode_security_token *r);
+void _decode_security_unix_token(struct pipes_struct *p, struct decode_security_unix_token *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_security(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SECURITY__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_server_id.c b/bin/default/librpc/gen_ndr/s3compat_server_id.c
new file mode 100644 (file)
index 0000000..af267d4
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_server_id.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_server_id_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_server_id_epv[] = {
+       .name = "_s3_compat_server_id",
+       .table = &ndr_table_server_id,
+       .num_fns = 0,
+       .fns = _s3_compat_server_id_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_server_id(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_server_id.h b/bin/default/librpc/gen_ndr/s3compat_server_id.h
new file mode 100644 (file)
index 0000000..9a21555
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_server_id.h"
+#ifndef __S3COMPAT_SERVER_ID__
+#define __S3COMPAT_SERVER_ID__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_server_id(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SERVER_ID__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.c b/bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.c
new file mode 100644 (file)
index 0000000..ea3e642
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_smb2_lease_struct_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_smb2_lease_struct_epv[] = {
+       .name = "_s3_compat_smb2_lease_struct",
+       .table = &ndr_table_smb2_lease_struct,
+       .num_fns = 0,
+       .fns = _s3_compat_smb2_lease_struct_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_smb2_lease_struct(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.h b/bin/default/librpc/gen_ndr/s3compat_smb2_lease_struct.h
new file mode 100644 (file)
index 0000000..0f06fd8
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_smb2_lease_struct.h"
+#ifndef __S3COMPAT_SMB2_LEASE_STRUCT__
+#define __S3COMPAT_SMB2_LEASE_STRUCT__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_smb2_lease_struct(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SMB2_LEASE_STRUCT__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_smb_acl.c b/bin/default/librpc/gen_ndr/s3compat_smb_acl.c
new file mode 100644 (file)
index 0000000..fa21e8a
--- /dev/null
@@ -0,0 +1,23 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_smb_acl.h"
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_smb_acl_fns[] = {
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_smb_acl_epv[] = {
+       .name = "_s3_compat_smb_acl",
+       .table = &ndr_table_smb_acl,
+       .num_fns = 0,
+       .fns = _s3_compat_smb_acl_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_smb_acl(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_smb_acl.h b/bin/default/librpc/gen_ndr/s3compat_smb_acl.h
new file mode 100644 (file)
index 0000000..f1c68a8
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_smb_acl.h"
+#ifndef __S3COMPAT_SMB_ACL__
+#define __S3COMPAT_SMB_ACL__
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_smb_acl(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SMB_ACL__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_spoolss.c b/bin/default/librpc/gen_ndr/s3compat_spoolss.c
new file mode 100644 (file)
index 0000000..01d5568
--- /dev/null
@@ -0,0 +1,6052 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_spoolss.h"
+
+struct _s3_compat_spoolss_EnumPrinters_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrinters *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrinters_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrinters *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrinters_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrinters_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_PrinterInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrinters(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrinters_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_OpenPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_OpenPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_OpenPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_OpenPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_OpenPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_OpenPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_OpenPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_OpenPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetJob_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetJob *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetJob_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetJob *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetJob_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetJob_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetJob(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetJob_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetJob_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetJob *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetJob_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetJob *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetJob_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetJob_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_JobInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetJob(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetJob_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumJobs_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumJobs *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumJobs_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumJobs *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumJobs_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumJobs_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_JobInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumJobs(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumJobs_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_AddPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_PrinterInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrinterDriver_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrinterDriver *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrinterDriver_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrinterDriver *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrinterDriver_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrinterDriver_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPrinterDriver(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrinterDriver_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrinterDrivers_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrinterDrivers *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrinterDrivers_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrinterDrivers *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrinterDrivers_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrinterDrivers_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_DriverInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrinterDrivers(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrinterDrivers_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterDriver_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterDriver *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterDriver_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterDriver *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterDriver_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterDriver_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_DriverInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterDriver(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterDriver_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterDriverDirectory_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterDriverDirectory *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterDriverDirectory_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterDriverDirectory *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterDriverDirectory_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterDriverDirectory_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_DriverDirectoryInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterDriverDirectory(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterDriverDirectory_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterDriver_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterDriver *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterDriver_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterDriver *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterDriver_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterDriver_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterDriver(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterDriver_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrintProcessor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrintProcessor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrintProcessor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrintProcessor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrintProcessor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrintProcessor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPrintProcessor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrintProcessor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrintProcessors_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrintProcessors *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrintProcessors_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrintProcessors *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrintProcessors_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrintProcessors_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_PrintProcessorInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrintProcessors(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrintProcessors_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrintProcessorDirectory_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrintProcessorDirectory *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrintProcessorDirectory_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrintProcessorDirectory *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrintProcessorDirectory_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrintProcessorDirectory_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_PrintProcessorDirectoryInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrintProcessorDirectory(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrintProcessorDirectory_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_StartDocPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_StartDocPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_StartDocPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_StartDocPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_StartDocPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_StartDocPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.job_id = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.job_id, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_StartDocPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_StartDocPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_StartPagePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_StartPagePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_StartPagePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_StartPagePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_StartPagePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_StartPagePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_StartPagePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_StartPagePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_WritePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_WritePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_WritePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_WritePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_WritePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_WritePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.num_written = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_written, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_WritePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_WritePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EndPagePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EndPagePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EndPagePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EndPagePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EndPagePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EndPagePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_EndPagePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EndPagePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AbortPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AbortPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AbortPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AbortPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AbortPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AbortPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AbortPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AbortPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ReadPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ReadPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ReadPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ReadPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ReadPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ReadPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.data_size);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out._data_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out._data_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_ReadPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ReadPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EndDocPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EndDocPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EndDocPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EndDocPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EndDocPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EndDocPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_EndDocPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EndDocPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddJob_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddJob *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddJob_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddJob *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddJob_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddJob_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = r->in.buffer;
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_AddJob(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddJob_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ScheduleJob_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ScheduleJob *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ScheduleJob_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ScheduleJob *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ScheduleJob_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ScheduleJob_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_ScheduleJob(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ScheduleJob_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.type = talloc_zero(r, enum winreg_Type);
+       if (tevent_req_nomem(r->out.type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetPrinterData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetPrinterData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetPrinterData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetPrinterData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetPrinterData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetPrinterData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetPrinterData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetPrinterData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_WaitForPrinterChange_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_WaitForPrinterChange *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_WaitForPrinterChange_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_WaitForPrinterChange *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_WaitForPrinterChange_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_WaitForPrinterChange_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_WaitForPrinterChange(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_WaitForPrinterChange_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ClosePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ClosePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ClosePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ClosePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ClosePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ClosePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _spoolss_ClosePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ClosePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddForm_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddForm *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddForm_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddForm *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddForm_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddForm_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddForm(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddForm_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeleteForm_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeleteForm *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeleteForm_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeleteForm *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeleteForm_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeleteForm_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeleteForm(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeleteForm_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetForm_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetForm *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetForm_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetForm *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetForm_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetForm_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_FormInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetForm(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetForm_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetForm_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetForm *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetForm_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetForm *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetForm_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetForm_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetForm(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetForm_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumForms_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumForms *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumForms_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumForms *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumForms_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumForms_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_FormInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumForms(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumForms_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPorts_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPorts *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPorts_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPorts *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPorts_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPorts_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_PortInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPorts(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPorts_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumMonitors_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumMonitors *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumMonitors_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumMonitors *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumMonitors_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumMonitors_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_MonitorInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumMonitors(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumMonitors_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPort_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPort *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPort_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPort *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPort_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPort_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPort(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPort_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ConfigurePort_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ConfigurePort *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ConfigurePort_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ConfigurePort *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ConfigurePort_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ConfigurePort_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_ConfigurePort(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ConfigurePort_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePort_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePort *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePort_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePort *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePort_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePort_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePort(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePort_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_CreatePrinterIC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_CreatePrinterIC *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_CreatePrinterIC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_CreatePrinterIC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_CreatePrinterIC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_CreatePrinterIC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.gdi_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.gdi_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_CreatePrinterIC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_CreatePrinterIC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_PlayGDIScriptOnPrinterIC *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_PlayGDIScriptOnPrinterIC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_PlayGDIScriptOnPrinterIC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pOut = talloc_zero_array(r, uint8_t, r->in.cOut);
+       if (tevent_req_nomem(r->out.pOut, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_PlayGDIScriptOnPrinterIC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterIC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterIC *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterIC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterIC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterIC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterIC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.gdi_handle = r->in.gdi_handle;
+       r->out.result = _spoolss_DeletePrinterIC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterIC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrinterConnection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrinterConnection *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrinterConnection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrinterConnection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrinterConnection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrinterConnection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPrinterConnection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrinterConnection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterConnection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterConnection *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterConnection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterConnection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterConnection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterConnection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterConnection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterConnection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_PrinterMessageBox_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_PrinterMessageBox *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_PrinterMessageBox_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_PrinterMessageBox *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_PrinterMessageBox_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_PrinterMessageBox_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_PrinterMessageBox(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_PrinterMessageBox_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddMonitor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddMonitor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddMonitor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddMonitor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddMonitor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddMonitor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddMonitor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddMonitor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeleteMonitor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeleteMonitor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeleteMonitor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeleteMonitor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeleteMonitor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeleteMonitor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeleteMonitor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeleteMonitor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrintProcessor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrintProcessor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrintProcessor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrintProcessor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrintProcessor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrintProcessor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrintProcessor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrintProcessor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrintProvidor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrintProvidor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrintProvidor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrintProvidor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrintProvidor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrintProvidor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPrintProvidor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrintProvidor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrintProvidor_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrintProvidor *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrintProvidor_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrintProvidor *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrintProvidor_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrintProvidor_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrintProvidor(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrintProvidor_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrintProcDataTypes_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrintProcDataTypes *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrintProcDataTypes_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrintProcDataTypes *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrintProcDataTypes_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrintProcDataTypes_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, union spoolss_PrintProcDataTypesInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrintProcDataTypes(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrintProcDataTypes_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ResetPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ResetPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ResetPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ResetPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ResetPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ResetPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_ResetPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ResetPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterDriver2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterDriver2 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterDriver2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterDriver2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterDriver2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterDriver2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union spoolss_DriverInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.server_major_version = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.server_major_version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.server_minor_version = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.server_minor_version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterDriver2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterDriver2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_FindFirstPrinterChangeNotification_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_FindFirstPrinterChangeNotification *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_FindFirstPrinterChangeNotification_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_FindFirstPrinterChangeNotification *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_FindFirstPrinterChangeNotification_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_FindFirstPrinterChangeNotification_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_FindFirstPrinterChangeNotification(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_FindFirstPrinterChangeNotification_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_FindNextPrinterChangeNotification_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_FindNextPrinterChangeNotification *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_FindNextPrinterChangeNotification_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_FindNextPrinterChangeNotification *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_FindNextPrinterChangeNotification_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_FindNextPrinterChangeNotification_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_FindNextPrinterChangeNotification(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_FindNextPrinterChangeNotification_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_FindClosePrinterNotify_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_FindClosePrinterNotify *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_FindClosePrinterNotify_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_FindClosePrinterNotify *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_FindClosePrinterNotify_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_FindClosePrinterNotify_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_FindClosePrinterNotify(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_FindClosePrinterNotify_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RouterFindFirstPrinterChangeNotificationOld(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ReplyOpenPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ReplyOpenPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ReplyOpenPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ReplyOpenPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ReplyOpenPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ReplyOpenPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_ReplyOpenPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ReplyOpenPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RouterReplyPrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RouterReplyPrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RouterReplyPrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RouterReplyPrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RouterReplyPrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RouterReplyPrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RouterReplyPrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RouterReplyPrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ReplyClosePrinter_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ReplyClosePrinter *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ReplyClosePrinter_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ReplyClosePrinter *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ReplyClosePrinter_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ReplyClosePrinter_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _spoolss_ReplyClosePrinter(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ReplyClosePrinter_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPortEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPortEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPortEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPortEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPortEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPortEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPortEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPortEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RouterFindFirstPrinterChangeNotification *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RouterFindFirstPrinterChangeNotification *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RouterFindFirstPrinterChangeNotification(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SpoolerInit_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SpoolerInit *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SpoolerInit_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SpoolerInit *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SpoolerInit_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SpoolerInit_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SpoolerInit(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SpoolerInit_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_ResetPrinterEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_ResetPrinterEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_ResetPrinterEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_ResetPrinterEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_ResetPrinterEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_ResetPrinterEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_ResetPrinterEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_ResetPrinterEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RemoteFindFirstPrinterChangeNotifyEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RouterReplyPrinterEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RouterReplyPrinterEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RouterReplyPrinterEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RouterReplyPrinterEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RouterReplyPrinterEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RouterReplyPrinterEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.reply_result = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.reply_result, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_RouterReplyPrinterEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RouterReplyPrinterEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RouterRefreshPrinterChangeNotify *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RouterRefreshPrinterChangeNotify_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RouterRefreshPrinterChangeNotify *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct spoolss_NotifyInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_RouterRefreshPrinterChangeNotify(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_44_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_44 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_44_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_44 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_44_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_44_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_44(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_44_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_OpenPrinterEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_OpenPrinterEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_OpenPrinterEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_OpenPrinterEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_OpenPrinterEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_OpenPrinterEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_OpenPrinterEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_OpenPrinterEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrinterEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrinterEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrinterEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrinterEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrinterEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrinterEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_AddPrinterEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrinterEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetPort_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetPort *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetPort_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetPort *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetPort_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetPort_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetPort(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetPort_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrinterData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrinterData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrinterData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrinterData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrinterData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrinterData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.value_name = talloc_zero_array(r, const char, r->in.value_offered / 2);
+       if (tevent_req_nomem(r->out.value_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.value_needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.value_needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.type = talloc_zero(r, enum winreg_Type);
+       if (tevent_req_nomem(r->out.type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.data_offered);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data_needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.data_needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrinterData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrinterData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_4a_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_4a *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_4a_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_4a *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_4a_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_4a_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_4a(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_4a_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_4b_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_4b *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_4b_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_4b *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_4b_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_4b_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_4b(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_4b_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_4c_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_4c *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_4c_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_4c *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_4c_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_4c_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_4c(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_4c_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_SetPrinterDataEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_SetPrinterDataEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_SetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_SetPrinterDataEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_SetPrinterDataEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_SetPrinterDataEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_SetPrinterDataEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_SetPrinterDataEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterDataEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterDataEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterDataEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterDataEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterDataEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterDataEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.type = talloc_zero(r, enum winreg_Type);
+       if (tevent_req_nomem(r->out.type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.data = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterDataEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterDataEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrinterDataEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrinterDataEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrinterDataEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrinterDataEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrinterDataEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrinterDataEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.count, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.info = talloc_zero(r, struct spoolss_PrinterEnumValues *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrinterDataEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrinterDataEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPrinterKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPrinterKey *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPrinterKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPrinterKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPrinterKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out._ndr_size = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out._ndr_size, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.key_buffer = talloc_zero(r, union spoolss_KeyNames);
+       if (tevent_req_nomem(r->out.key_buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_EnumPrinterKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPrinterKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterDataEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterDataEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterDataEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterDataEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterDataEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterDataEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterDataEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterDataEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterKey *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_53_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_53 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_53_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_53 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_53_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_53_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_53(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_53_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePrinterDriverEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePrinterDriverEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePrinterDriverEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePrinterDriverEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePrinterDriverEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePrinterDriverEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePrinterDriverEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePrinterDriverEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPerMachineConnection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPerMachineConnection *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPerMachineConnection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPerMachineConnection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPerMachineConnection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPerMachineConnection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPerMachineConnection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPerMachineConnection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_DeletePerMachineConnection_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_DeletePerMachineConnection *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_DeletePerMachineConnection_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_DeletePerMachineConnection *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_DeletePerMachineConnection_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_DeletePerMachineConnection_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_DeletePerMachineConnection(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_DeletePerMachineConnection_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_EnumPerMachineConnections_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_EnumPerMachineConnections *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_EnumPerMachineConnections_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_EnumPerMachineConnections *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_EnumPerMachineConnections_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_EnumPerMachineConnections_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_EnumPerMachineConnections(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_EnumPerMachineConnections_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_XcvData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_XcvData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_XcvData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_XcvData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_XcvData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_XcvData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.status_code = r->in.status_code;
+       r->out.out_data = talloc_zero_array(r, uint8_t, r->in.out_data_size);
+       if (tevent_req_nomem(r->out.out_data, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_XcvData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_XcvData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_AddPrinterDriverEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_AddPrinterDriverEx *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_AddPrinterDriverEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_AddPrinterDriverEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_AddPrinterDriverEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_AddPrinterDriverEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_AddPrinterDriverEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_AddPrinterDriverEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5a_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5a *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5a_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5a *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5a_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5a_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5a(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5a_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5b_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5b *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5b_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5b *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5b_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5b_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5b(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5b_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5c_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5c *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5c_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5c *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5c_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5c_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5c(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5c_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5d_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5d *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5d_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5d *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5d_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5d_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5d(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5d_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5e_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5e *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5e_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5e *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5e_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5e_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5e(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5e_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_5f_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_5f *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_5f_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_5f *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_5f_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_5f_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_5f(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_5f_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_60_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_60 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_60_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_60 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_60_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_60_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_60(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_60_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RpcSendRecvBidiData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RpcSendRecvBidiData *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RpcSendRecvBidiData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RpcSendRecvBidiData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RpcSendRecvBidiData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RpcSendRecvBidiData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ppRespData = talloc_zero(r, struct RPC_BIDI_RESPONSE_CONTAINER *);
+       if (tevent_req_nomem(r->out.ppRespData, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_RpcSendRecvBidiData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RpcSendRecvBidiData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_62_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_62 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_62_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_62 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_62_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_62_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_62(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_62_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_63_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_63 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_63_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_63 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_63_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_63_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_63(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_63_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_64_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_64 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_64_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_64 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_64_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_64_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_64(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_64_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_65_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_65 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_65_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_65 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_65_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_65_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_65(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_65_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetCorePrinterDrivers_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetCorePrinterDrivers *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetCorePrinterDrivers_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetCorePrinterDrivers *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetCorePrinterDrivers_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetCorePrinterDrivers_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.core_printer_drivers = talloc_zero_array(r, struct spoolss_CorePrinterDriver, r->in.core_printer_driver_count);
+       if (tevent_req_nomem(r->out.core_printer_drivers, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetCorePrinterDrivers(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetCorePrinterDrivers_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_67_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_67 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_67_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_67 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_67_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_67_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_67(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_67_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_GetPrinterDriverPackagePath_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_GetPrinterDriverPackagePath *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_GetPrinterDriverPackagePath_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_GetPrinterDriverPackagePath *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_GetPrinterDriverPackagePath_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_GetPrinterDriverPackagePath_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.driver_package_cab = r->in.driver_package_cab;
+       r->out.required = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.required, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_GetPrinterDriverPackagePath(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_GetPrinterDriverPackagePath_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_69_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_69 *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_69_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_69 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_69_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_69_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_69(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_69_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_6a_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_6a *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_6a_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_6a *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_6a_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_6a_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_6a(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_6a_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_6b_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_6b *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_6b_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_6b *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_6b_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_6b_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_6b(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_6b_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_6c_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_6c *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_6c_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_6c *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_6c_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_6c_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_6c(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_6c_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_6d_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_6d *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_6d_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_6d *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_6d_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_6d_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_6d(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_6d_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RpcGetJobNamedPropertyValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RpcGetJobNamedPropertyValue *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RpcGetJobNamedPropertyValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RpcGetJobNamedPropertyValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RpcGetJobNamedPropertyValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RpcGetJobNamedPropertyValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pValue = talloc_zero(r, struct RPC_PrintPropertyValue);
+       if (tevent_req_nomem(r->out.pValue, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_RpcGetJobNamedPropertyValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RpcGetJobNamedPropertyValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RpcSetJobNamedProperty_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RpcSetJobNamedProperty *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RpcSetJobNamedProperty_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RpcSetJobNamedProperty *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RpcSetJobNamedProperty_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RpcSetJobNamedProperty_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RpcSetJobNamedProperty(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RpcSetJobNamedProperty_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RpcDeleteJobNamedProperty_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RpcDeleteJobNamedProperty *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RpcDeleteJobNamedProperty_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RpcDeleteJobNamedProperty *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RpcDeleteJobNamedProperty_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RpcDeleteJobNamedProperty_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _spoolss_RpcDeleteJobNamedProperty(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RpcDeleteJobNamedProperty_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_spoolss_RpcEnumJobNamedProperties_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct spoolss_RpcEnumJobNamedProperties *r;
+};
+
+static struct tevent_req *_s3_compat_spoolss_RpcEnumJobNamedProperties_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct spoolss_RpcEnumJobNamedProperties *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_spoolss_RpcEnumJobNamedProperties_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_spoolss_RpcEnumJobNamedProperties_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pcProperties = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.pcProperties, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.ppProperties = talloc_zero(r, struct RPC_PrintNamedProperty *);
+       if (tevent_req_nomem(r->out.ppProperties, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _spoolss_RpcEnumJobNamedProperties(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_spoolss_RpcEnumJobNamedProperties_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_spoolss_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrinters_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrinters_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_OpenPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_OpenPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetJob_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetJob_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetJob_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetJob_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumJobs_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumJobs_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrinterDriver_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrinterDriver_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrinterDrivers_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrinterDrivers_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriver_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriver_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriverDirectory_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriverDirectory_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDriver_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDriver_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrintProcessor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrintProcessor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrintProcessors_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrintProcessors_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrintProcessorDirectory_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrintProcessorDirectory_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_StartDocPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_StartDocPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_StartPagePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_StartPagePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_WritePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_WritePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EndPagePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EndPagePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AbortPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AbortPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ReadPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ReadPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EndDocPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EndDocPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddJob_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddJob_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ScheduleJob_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ScheduleJob_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetPrinterData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetPrinterData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_WaitForPrinterChange_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_WaitForPrinterChange_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ClosePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ClosePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddForm_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddForm_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeleteForm_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeleteForm_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetForm_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetForm_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetForm_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetForm_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumForms_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumForms_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPorts_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPorts_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumMonitors_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumMonitors_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPort_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPort_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ConfigurePort_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ConfigurePort_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePort_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePort_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_CreatePrinterIC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_CreatePrinterIC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_PlayGDIScriptOnPrinterIC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterIC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterIC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrinterConnection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrinterConnection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterConnection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterConnection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_PrinterMessageBox_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_PrinterMessageBox_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddMonitor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddMonitor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeleteMonitor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeleteMonitor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrintProcessor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrintProcessor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrintProvidor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrintProvidor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrintProvidor_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrintProvidor_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrintProcDataTypes_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrintProcDataTypes_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ResetPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ResetPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriver2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriver2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_FindFirstPrinterChangeNotification_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_FindFirstPrinterChangeNotification_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_FindNextPrinterChangeNotification_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_FindNextPrinterChangeNotification_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_FindClosePrinterNotify_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_FindClosePrinterNotify_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RouterFindFirstPrinterChangeNotificationOld_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ReplyOpenPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ReplyOpenPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RouterReplyPrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RouterReplyPrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ReplyClosePrinter_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ReplyClosePrinter_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPortEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPortEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RouterFindFirstPrinterChangeNotification_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SpoolerInit_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SpoolerInit_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_ResetPrinterEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_ResetPrinterEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RemoteFindFirstPrinterChangeNotifyEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RouterReplyPrinterEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RouterReplyPrinterEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RouterRefreshPrinterChangeNotify_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_44_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_44_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_OpenPrinterEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_OpenPrinterEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrinterEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrinterEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetPort_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetPort_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrinterData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrinterData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_4a_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_4a_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_4b_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_4b_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_4c_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_4c_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_SetPrinterDataEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_SetPrinterDataEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterDataEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterDataEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrinterDataEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrinterDataEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPrinterKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPrinterKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDataEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDataEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_53_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_53_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDriverEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePrinterDriverEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPerMachineConnection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPerMachineConnection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_DeletePerMachineConnection_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_DeletePerMachineConnection_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_EnumPerMachineConnections_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_EnumPerMachineConnections_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_XcvData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_XcvData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_AddPrinterDriverEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_AddPrinterDriverEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5a_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5a_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5b_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5b_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5c_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5c_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5d_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5d_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5e_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5e_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_5f_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_5f_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_60_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_60_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RpcSendRecvBidiData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RpcSendRecvBidiData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_62_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_62_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_63_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_63_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_64_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_64_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_65_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_65_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetCorePrinterDrivers_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetCorePrinterDrivers_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_67_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_67_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriverPackagePath_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_GetPrinterDriverPackagePath_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_69_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_69_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_6a_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_6a_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_6b_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_6b_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_6c_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_6c_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_6d_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_6d_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RpcGetJobNamedPropertyValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RpcGetJobNamedPropertyValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RpcSetJobNamedProperty_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RpcSetJobNamedProperty_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RpcDeleteJobNamedProperty_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RpcDeleteJobNamedProperty_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_spoolss_RpcEnumJobNamedProperties_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_spoolss_RpcEnumJobNamedProperties_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_spoolss_epv[] = {
+       .name = "_s3_compat_spoolss",
+       .table = &ndr_table_spoolss,
+       .num_fns = 114,
+       .fns = _s3_compat_spoolss_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_spoolss(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_spoolss.h b/bin/default/librpc/gen_ndr/s3compat_spoolss.h
new file mode 100644 (file)
index 0000000..b6b9c9f
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_spoolss.h"
+#ifndef __S3COMPAT_SPOOLSS__
+#define __S3COMPAT_SPOOLSS__
+WERROR _spoolss_EnumPrinters(struct pipes_struct *p, struct spoolss_EnumPrinters *r);
+WERROR _spoolss_OpenPrinter(struct pipes_struct *p, struct spoolss_OpenPrinter *r);
+WERROR _spoolss_SetJob(struct pipes_struct *p, struct spoolss_SetJob *r);
+WERROR _spoolss_GetJob(struct pipes_struct *p, struct spoolss_GetJob *r);
+WERROR _spoolss_EnumJobs(struct pipes_struct *p, struct spoolss_EnumJobs *r);
+WERROR _spoolss_AddPrinter(struct pipes_struct *p, struct spoolss_AddPrinter *r);
+WERROR _spoolss_DeletePrinter(struct pipes_struct *p, struct spoolss_DeletePrinter *r);
+WERROR _spoolss_SetPrinter(struct pipes_struct *p, struct spoolss_SetPrinter *r);
+WERROR _spoolss_GetPrinter(struct pipes_struct *p, struct spoolss_GetPrinter *r);
+WERROR _spoolss_AddPrinterDriver(struct pipes_struct *p, struct spoolss_AddPrinterDriver *r);
+WERROR _spoolss_EnumPrinterDrivers(struct pipes_struct *p, struct spoolss_EnumPrinterDrivers *r);
+WERROR _spoolss_GetPrinterDriver(struct pipes_struct *p, struct spoolss_GetPrinterDriver *r);
+WERROR _spoolss_GetPrinterDriverDirectory(struct pipes_struct *p, struct spoolss_GetPrinterDriverDirectory *r);
+WERROR _spoolss_DeletePrinterDriver(struct pipes_struct *p, struct spoolss_DeletePrinterDriver *r);
+WERROR _spoolss_AddPrintProcessor(struct pipes_struct *p, struct spoolss_AddPrintProcessor *r);
+WERROR _spoolss_EnumPrintProcessors(struct pipes_struct *p, struct spoolss_EnumPrintProcessors *r);
+WERROR _spoolss_GetPrintProcessorDirectory(struct pipes_struct *p, struct spoolss_GetPrintProcessorDirectory *r);
+WERROR _spoolss_StartDocPrinter(struct pipes_struct *p, struct spoolss_StartDocPrinter *r);
+WERROR _spoolss_StartPagePrinter(struct pipes_struct *p, struct spoolss_StartPagePrinter *r);
+WERROR _spoolss_WritePrinter(struct pipes_struct *p, struct spoolss_WritePrinter *r);
+WERROR _spoolss_EndPagePrinter(struct pipes_struct *p, struct spoolss_EndPagePrinter *r);
+WERROR _spoolss_AbortPrinter(struct pipes_struct *p, struct spoolss_AbortPrinter *r);
+WERROR _spoolss_ReadPrinter(struct pipes_struct *p, struct spoolss_ReadPrinter *r);
+WERROR _spoolss_EndDocPrinter(struct pipes_struct *p, struct spoolss_EndDocPrinter *r);
+WERROR _spoolss_AddJob(struct pipes_struct *p, struct spoolss_AddJob *r);
+WERROR _spoolss_ScheduleJob(struct pipes_struct *p, struct spoolss_ScheduleJob *r);
+WERROR _spoolss_GetPrinterData(struct pipes_struct *p, struct spoolss_GetPrinterData *r);
+WERROR _spoolss_SetPrinterData(struct pipes_struct *p, struct spoolss_SetPrinterData *r);
+WERROR _spoolss_WaitForPrinterChange(struct pipes_struct *p, struct spoolss_WaitForPrinterChange *r);
+WERROR _spoolss_ClosePrinter(struct pipes_struct *p, struct spoolss_ClosePrinter *r);
+WERROR _spoolss_AddForm(struct pipes_struct *p, struct spoolss_AddForm *r);
+WERROR _spoolss_DeleteForm(struct pipes_struct *p, struct spoolss_DeleteForm *r);
+WERROR _spoolss_GetForm(struct pipes_struct *p, struct spoolss_GetForm *r);
+WERROR _spoolss_SetForm(struct pipes_struct *p, struct spoolss_SetForm *r);
+WERROR _spoolss_EnumForms(struct pipes_struct *p, struct spoolss_EnumForms *r);
+WERROR _spoolss_EnumPorts(struct pipes_struct *p, struct spoolss_EnumPorts *r);
+WERROR _spoolss_EnumMonitors(struct pipes_struct *p, struct spoolss_EnumMonitors *r);
+WERROR _spoolss_AddPort(struct pipes_struct *p, struct spoolss_AddPort *r);
+WERROR _spoolss_ConfigurePort(struct pipes_struct *p, struct spoolss_ConfigurePort *r);
+WERROR _spoolss_DeletePort(struct pipes_struct *p, struct spoolss_DeletePort *r);
+WERROR _spoolss_CreatePrinterIC(struct pipes_struct *p, struct spoolss_CreatePrinterIC *r);
+WERROR _spoolss_PlayGDIScriptOnPrinterIC(struct pipes_struct *p, struct spoolss_PlayGDIScriptOnPrinterIC *r);
+WERROR _spoolss_DeletePrinterIC(struct pipes_struct *p, struct spoolss_DeletePrinterIC *r);
+WERROR _spoolss_AddPrinterConnection(struct pipes_struct *p, struct spoolss_AddPrinterConnection *r);
+WERROR _spoolss_DeletePrinterConnection(struct pipes_struct *p, struct spoolss_DeletePrinterConnection *r);
+WERROR _spoolss_PrinterMessageBox(struct pipes_struct *p, struct spoolss_PrinterMessageBox *r);
+WERROR _spoolss_AddMonitor(struct pipes_struct *p, struct spoolss_AddMonitor *r);
+WERROR _spoolss_DeleteMonitor(struct pipes_struct *p, struct spoolss_DeleteMonitor *r);
+WERROR _spoolss_DeletePrintProcessor(struct pipes_struct *p, struct spoolss_DeletePrintProcessor *r);
+WERROR _spoolss_AddPrintProvidor(struct pipes_struct *p, struct spoolss_AddPrintProvidor *r);
+WERROR _spoolss_DeletePrintProvidor(struct pipes_struct *p, struct spoolss_DeletePrintProvidor *r);
+WERROR _spoolss_EnumPrintProcDataTypes(struct pipes_struct *p, struct spoolss_EnumPrintProcDataTypes *r);
+WERROR _spoolss_ResetPrinter(struct pipes_struct *p, struct spoolss_ResetPrinter *r);
+WERROR _spoolss_GetPrinterDriver2(struct pipes_struct *p, struct spoolss_GetPrinterDriver2 *r);
+WERROR _spoolss_FindFirstPrinterChangeNotification(struct pipes_struct *p, struct spoolss_FindFirstPrinterChangeNotification *r);
+WERROR _spoolss_FindNextPrinterChangeNotification(struct pipes_struct *p, struct spoolss_FindNextPrinterChangeNotification *r);
+WERROR _spoolss_FindClosePrinterNotify(struct pipes_struct *p, struct spoolss_FindClosePrinterNotify *r);
+WERROR _spoolss_RouterFindFirstPrinterChangeNotificationOld(struct pipes_struct *p, struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r);
+WERROR _spoolss_ReplyOpenPrinter(struct pipes_struct *p, struct spoolss_ReplyOpenPrinter *r);
+WERROR _spoolss_RouterReplyPrinter(struct pipes_struct *p, struct spoolss_RouterReplyPrinter *r);
+WERROR _spoolss_ReplyClosePrinter(struct pipes_struct *p, struct spoolss_ReplyClosePrinter *r);
+WERROR _spoolss_AddPortEx(struct pipes_struct *p, struct spoolss_AddPortEx *r);
+WERROR _spoolss_RouterFindFirstPrinterChangeNotification(struct pipes_struct *p, struct spoolss_RouterFindFirstPrinterChangeNotification *r);
+WERROR _spoolss_SpoolerInit(struct pipes_struct *p, struct spoolss_SpoolerInit *r);
+WERROR _spoolss_ResetPrinterEx(struct pipes_struct *p, struct spoolss_ResetPrinterEx *r);
+WERROR _spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct pipes_struct *p, struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r);
+WERROR _spoolss_RouterReplyPrinterEx(struct pipes_struct *p, struct spoolss_RouterReplyPrinterEx *r);
+WERROR _spoolss_RouterRefreshPrinterChangeNotify(struct pipes_struct *p, struct spoolss_RouterRefreshPrinterChangeNotify *r);
+WERROR _spoolss_44(struct pipes_struct *p, struct spoolss_44 *r);
+WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p, struct spoolss_OpenPrinterEx *r);
+WERROR _spoolss_AddPrinterEx(struct pipes_struct *p, struct spoolss_AddPrinterEx *r);
+WERROR _spoolss_SetPort(struct pipes_struct *p, struct spoolss_SetPort *r);
+WERROR _spoolss_EnumPrinterData(struct pipes_struct *p, struct spoolss_EnumPrinterData *r);
+WERROR _spoolss_DeletePrinterData(struct pipes_struct *p, struct spoolss_DeletePrinterData *r);
+WERROR _spoolss_4a(struct pipes_struct *p, struct spoolss_4a *r);
+WERROR _spoolss_4b(struct pipes_struct *p, struct spoolss_4b *r);
+WERROR _spoolss_4c(struct pipes_struct *p, struct spoolss_4c *r);
+WERROR _spoolss_SetPrinterDataEx(struct pipes_struct *p, struct spoolss_SetPrinterDataEx *r);
+WERROR _spoolss_GetPrinterDataEx(struct pipes_struct *p, struct spoolss_GetPrinterDataEx *r);
+WERROR _spoolss_EnumPrinterDataEx(struct pipes_struct *p, struct spoolss_EnumPrinterDataEx *r);
+WERROR _spoolss_EnumPrinterKey(struct pipes_struct *p, struct spoolss_EnumPrinterKey *r);
+WERROR _spoolss_DeletePrinterDataEx(struct pipes_struct *p, struct spoolss_DeletePrinterDataEx *r);
+WERROR _spoolss_DeletePrinterKey(struct pipes_struct *p, struct spoolss_DeletePrinterKey *r);
+WERROR _spoolss_53(struct pipes_struct *p, struct spoolss_53 *r);
+WERROR _spoolss_DeletePrinterDriverEx(struct pipes_struct *p, struct spoolss_DeletePrinterDriverEx *r);
+WERROR _spoolss_AddPerMachineConnection(struct pipes_struct *p, struct spoolss_AddPerMachineConnection *r);
+WERROR _spoolss_DeletePerMachineConnection(struct pipes_struct *p, struct spoolss_DeletePerMachineConnection *r);
+WERROR _spoolss_EnumPerMachineConnections(struct pipes_struct *p, struct spoolss_EnumPerMachineConnections *r);
+WERROR _spoolss_XcvData(struct pipes_struct *p, struct spoolss_XcvData *r);
+WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p, struct spoolss_AddPrinterDriverEx *r);
+WERROR _spoolss_5a(struct pipes_struct *p, struct spoolss_5a *r);
+WERROR _spoolss_5b(struct pipes_struct *p, struct spoolss_5b *r);
+WERROR _spoolss_5c(struct pipes_struct *p, struct spoolss_5c *r);
+WERROR _spoolss_5d(struct pipes_struct *p, struct spoolss_5d *r);
+WERROR _spoolss_5e(struct pipes_struct *p, struct spoolss_5e *r);
+WERROR _spoolss_5f(struct pipes_struct *p, struct spoolss_5f *r);
+WERROR _spoolss_60(struct pipes_struct *p, struct spoolss_60 *r);
+WERROR _spoolss_RpcSendRecvBidiData(struct pipes_struct *p, struct spoolss_RpcSendRecvBidiData *r);
+WERROR _spoolss_62(struct pipes_struct *p, struct spoolss_62 *r);
+WERROR _spoolss_63(struct pipes_struct *p, struct spoolss_63 *r);
+WERROR _spoolss_64(struct pipes_struct *p, struct spoolss_64 *r);
+WERROR _spoolss_65(struct pipes_struct *p, struct spoolss_65 *r);
+WERROR _spoolss_GetCorePrinterDrivers(struct pipes_struct *p, struct spoolss_GetCorePrinterDrivers *r);
+WERROR _spoolss_67(struct pipes_struct *p, struct spoolss_67 *r);
+WERROR _spoolss_GetPrinterDriverPackagePath(struct pipes_struct *p, struct spoolss_GetPrinterDriverPackagePath *r);
+WERROR _spoolss_69(struct pipes_struct *p, struct spoolss_69 *r);
+WERROR _spoolss_6a(struct pipes_struct *p, struct spoolss_6a *r);
+WERROR _spoolss_6b(struct pipes_struct *p, struct spoolss_6b *r);
+WERROR _spoolss_6c(struct pipes_struct *p, struct spoolss_6c *r);
+WERROR _spoolss_6d(struct pipes_struct *p, struct spoolss_6d *r);
+WERROR _spoolss_RpcGetJobNamedPropertyValue(struct pipes_struct *p, struct spoolss_RpcGetJobNamedPropertyValue *r);
+WERROR _spoolss_RpcSetJobNamedProperty(struct pipes_struct *p, struct spoolss_RpcSetJobNamedProperty *r);
+WERROR _spoolss_RpcDeleteJobNamedProperty(struct pipes_struct *p, struct spoolss_RpcDeleteJobNamedProperty *r);
+WERROR _spoolss_RpcEnumJobNamedProperties(struct pipes_struct *p, struct spoolss_RpcEnumJobNamedProperties *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_spoolss(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SPOOLSS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_srvsvc.c b/bin/default/librpc/gen_ndr/s3compat_srvsvc.c
new file mode 100644 (file)
index 0000000..2543ed8
--- /dev/null
@@ -0,0 +1,2824 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_srvsvc.h"
+
+struct _s3_compat_srvsvc_NetCharDevEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetCharDevEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union srvsvc_NetCharDevInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetCharDevGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevControl_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevControl *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevControl_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevControl *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevControl_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevControl_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetCharDevControl(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevControl_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevQEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevQEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevQEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevQEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevQEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevQEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetCharDevQEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevQEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevQGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevQGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevQGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevQGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevQGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevQGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union srvsvc_NetCharDevQInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetCharDevQGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevQGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevQSetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevQSetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevQSetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevQSetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevQSetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevQSetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_error = r->in.parm_error;
+       r->out.result = _srvsvc_NetCharDevQSetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevQSetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevQPurge_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevQPurge *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevQPurge_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevQPurge *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevQPurge_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevQPurge_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetCharDevQPurge(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevQPurge_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetCharDevQPurgeSelf_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetCharDevQPurgeSelf *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetCharDevQPurgeSelf_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetCharDevQPurgeSelf *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetCharDevQPurgeSelf_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetCharDevQPurgeSelf_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetCharDevQPurgeSelf(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetCharDevQPurgeSelf_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetConnEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetConnEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetConnEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetConnEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetConnEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetConnEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetConnEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetConnEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetFileEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetFileEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetFileEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetFileEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetFileEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetFileEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetFileEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetFileEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetFileGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetFileGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetFileGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetFileGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetFileGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetFileGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union srvsvc_NetFileInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetFileGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetFileGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetFileClose_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetFileClose *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetFileClose_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetFileClose *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetFileClose_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetFileClose_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetFileClose(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetFileClose_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSessEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSessEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSessEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSessEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSessEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSessEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetSessEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSessEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSessDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSessDel *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSessDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSessDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSessDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSessDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetSessDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSessDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareAdd *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_error = r->in.parm_error;
+       r->out.result = _srvsvc_NetShareAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareEnumAll_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareEnumAll *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareEnumAll_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareEnumAll *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareEnumAll_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareEnumAll_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetShareEnumAll(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareEnumAll_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union srvsvc_NetShareInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetShareGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareSetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareSetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareSetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareSetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareSetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareSetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_error = r->in.parm_error;
+       r->out.result = _srvsvc_NetShareSetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareSetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareDel *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetShareDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareDelSticky_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareDelSticky *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareDelSticky_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareDelSticky *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareDelSticky_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareDelSticky_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetShareDelSticky(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareDelSticky_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareCheck_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareCheck *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareCheck_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareCheck *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareCheck_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareCheck_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.type = talloc_zero(r, enum srvsvc_ShareType);
+       if (tevent_req_nomem(r->out.type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetShareCheck(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareCheck_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSrvGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSrvGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSrvGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSrvGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSrvGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSrvGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union srvsvc_NetSrvInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetSrvGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSrvGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSrvSetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSrvSetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSrvSetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSrvSetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSrvSetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSrvSetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_error = r->in.parm_error;
+       r->out.result = _srvsvc_NetSrvSetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSrvSetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetDiskEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetDiskEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetDiskEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetDiskEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetDiskEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetDiskEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetDiskEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetDiskEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetServerStatisticsGet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetServerStatisticsGet *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetServerStatisticsGet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetServerStatisticsGet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetServerStatisticsGet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetServerStatisticsGet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.stats = talloc_zero(r, struct srvsvc_Statistics *);
+       if (tevent_req_nomem(r->out.stats, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetServerStatisticsGet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetServerStatisticsGet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetTransportAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetTransportAdd *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetTransportAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetTransportAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetTransportAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetTransportAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetTransportAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetTransportAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetTransportEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetTransportEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetTransportEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetTransportEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetTransportEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetTransportEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.transports = r->in.transports;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetTransportEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetTransportEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetTransportDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetTransportDel *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetTransportDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetTransportDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetTransportDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetTransportDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetTransportDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetTransportDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetRemoteTOD_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetRemoteTOD *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetRemoteTOD_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetRemoteTOD *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetRemoteTOD_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetRemoteTOD_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct srvsvc_NetRemoteTODInfo *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetRemoteTOD(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetRemoteTOD_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSetServiceBits_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSetServiceBits *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSetServiceBits_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSetServiceBits *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSetServiceBits_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSetServiceBits_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetSetServiceBits(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSetServiceBits_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetPathType_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetPathType *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetPathType_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetPathType *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetPathType_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetPathType_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pathtype = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.pathtype, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetPathType(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetPathType_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetPathCanonicalize_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetPathCanonicalize *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetPathCanonicalize_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetPathCanonicalize *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetPathCanonicalize_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetPathCanonicalize_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.pathtype = r->in.pathtype;
+       r->out.can_path = talloc_zero_array(r, uint8_t, r->in.maxbuf);
+       if (tevent_req_nomem(r->out.can_path, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetPathCanonicalize(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetPathCanonicalize_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetPathCompare_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetPathCompare *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetPathCompare_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetPathCompare *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetPathCompare_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetPathCompare_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetPathCompare(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetPathCompare_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetNameValidate_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetNameValidate *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetNameValidate_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetNameValidate *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetNameValidate_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetNameValidate_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetNameValidate(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetNameValidate_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRPRNAMECANONICALIZE *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRPRNAMECANONICALIZE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRPRNAMECANONICALIZE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRPRNAMECANONICALIZE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetPRNameCompare_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetPRNameCompare *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetPRNameCompare_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetPRNameCompare *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetPRNameCompare_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetPRNameCompare_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetPRNameCompare(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetPRNameCompare_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareEnum *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info_ctr = r->in.info_ctr;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.totalentries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.totalentries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetShareEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareDelStart_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareDelStart *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareDelStart_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareDelStart *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareDelStart_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareDelStart_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.hnd = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.hnd, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetShareDelStart(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareDelStart_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetShareDelCommit_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetShareDelCommit *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetShareDelCommit_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetShareDelCommit *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetShareDelCommit_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetShareDelCommit_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.hnd = r->in.hnd;
+       r->out.result = _srvsvc_NetShareDelCommit(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetShareDelCommit_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetGetFileSecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetGetFileSecurity *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetGetFileSecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetGetFileSecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetGetFileSecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetGetFileSecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sd_buf = talloc_zero(r, struct sec_desc_buf *);
+       if (tevent_req_nomem(r->out.sd_buf, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _srvsvc_NetGetFileSecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetGetFileSecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetSetFileSecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetSetFileSecurity *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetSetFileSecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetSetFileSecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetSetFileSecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetSetFileSecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetSetFileSecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetSetFileSecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetServerTransportAddEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetServerTransportAddEx *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetServerTransportAddEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetServerTransportAddEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetServerTransportAddEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetServerTransportAddEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetServerTransportAddEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetServerTransportAddEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NetServerSetServiceBitsEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NetServerSetServiceBitsEx *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NetServerSetServiceBitsEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NetServerSetServiceBitsEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NetServerSetServiceBitsEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NetServerSetServiceBitsEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NetServerSetServiceBitsEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NetServerSetServiceBitsEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSGETVERSION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSGETVERSION *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSGETVERSION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSGETVERSION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSGETVERSION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSGETVERSION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSGETVERSION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSGETVERSION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSCREATELOCALPARTITION *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSCREATELOCALPARTITION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSDELETELOCALPARTITION *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSDELETELOCALPARTITION(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSSETLOCALVOLUMESTATE(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSSETSERVERINFO_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSSETSERVERINFO *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSSETSERVERINFO_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSSETSERVERINFO *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSSETSERVERINFO_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSSETSERVERINFO_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSSETSERVERINFO(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSSETSERVERINFO_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSCREATEEXITPOINT *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSCREATEEXITPOINT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSCREATEEXITPOINT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSDELETEEXITPOINT *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSDELETEEXITPOINT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSDELETEEXITPOINT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSMODIFYPREFIX *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSMODIFYPREFIX_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSMODIFYPREFIX *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSMODIFYPREFIX(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSFIXLOCALVOLUME *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSFIXLOCALVOLUME(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRDFSMANAGERREPORTSITEINFO(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct srvsvc_NETRSERVERTRANSPORTDELEX *r;
+};
+
+static struct tevent_req *_s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _srvsvc_NETRSERVERTRANSPORTDELEX(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_srvsvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevControl_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevControl_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQSetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQSetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQPurge_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQPurge_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQPurgeSelf_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetCharDevQPurgeSelf_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetConnEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetConnEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetFileEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetFileEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetFileGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetFileGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetFileClose_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetFileClose_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSessEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSessEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSessDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSessDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareEnumAll_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareEnumAll_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareSetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareSetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareDelSticky_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareDelSticky_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareCheck_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareCheck_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSrvGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSrvGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSrvSetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSrvSetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetDiskEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetDiskEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetServerStatisticsGet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetServerStatisticsGet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetTransportAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetTransportAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetTransportEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetTransportEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetTransportDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetTransportDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetRemoteTOD_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetRemoteTOD_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSetServiceBits_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSetServiceBits_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetPathType_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetPathType_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetPathCanonicalize_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetPathCanonicalize_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetPathCompare_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetPathCompare_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetNameValidate_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetNameValidate_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRPRNAMECANONICALIZE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetPRNameCompare_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetPRNameCompare_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareDelStart_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareDelStart_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetShareDelCommit_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetShareDelCommit_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetGetFileSecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetGetFileSecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetSetFileSecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetSetFileSecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetServerTransportAddEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetServerTransportAddEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NetServerSetServiceBitsEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NetServerSetServiceBitsEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSGETVERSION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSGETVERSION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSCREATELOCALPARTITION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSDELETELOCALPARTITION_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSSETLOCALVOLUMESTATE_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSSETSERVERINFO_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSSETSERVERINFO_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSCREATEEXITPOINT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSDELETEEXITPOINT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSMODIFYPREFIX_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSFIXLOCALVOLUME_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRDFSMANAGERREPORTSITEINFO_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_srvsvc_NETRSERVERTRANSPORTDELEX_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_srvsvc_epv[] = {
+       .name = "_s3_compat_srvsvc",
+       .table = &ndr_table_srvsvc,
+       .num_fns = 54,
+       .fns = _s3_compat_srvsvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_srvsvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_srvsvc.h b/bin/default/librpc/gen_ndr/s3compat_srvsvc.h
new file mode 100644 (file)
index 0000000..107807c
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_srvsvc.h"
+#ifndef __S3COMPAT_SRVSVC__
+#define __S3COMPAT_SRVSVC__
+WERROR _srvsvc_NetCharDevEnum(struct pipes_struct *p, struct srvsvc_NetCharDevEnum *r);
+WERROR _srvsvc_NetCharDevGetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevGetInfo *r);
+WERROR _srvsvc_NetCharDevControl(struct pipes_struct *p, struct srvsvc_NetCharDevControl *r);
+WERROR _srvsvc_NetCharDevQEnum(struct pipes_struct *p, struct srvsvc_NetCharDevQEnum *r);
+WERROR _srvsvc_NetCharDevQGetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevQGetInfo *r);
+WERROR _srvsvc_NetCharDevQSetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevQSetInfo *r);
+WERROR _srvsvc_NetCharDevQPurge(struct pipes_struct *p, struct srvsvc_NetCharDevQPurge *r);
+WERROR _srvsvc_NetCharDevQPurgeSelf(struct pipes_struct *p, struct srvsvc_NetCharDevQPurgeSelf *r);
+WERROR _srvsvc_NetConnEnum(struct pipes_struct *p, struct srvsvc_NetConnEnum *r);
+WERROR _srvsvc_NetFileEnum(struct pipes_struct *p, struct srvsvc_NetFileEnum *r);
+WERROR _srvsvc_NetFileGetInfo(struct pipes_struct *p, struct srvsvc_NetFileGetInfo *r);
+WERROR _srvsvc_NetFileClose(struct pipes_struct *p, struct srvsvc_NetFileClose *r);
+WERROR _srvsvc_NetSessEnum(struct pipes_struct *p, struct srvsvc_NetSessEnum *r);
+WERROR _srvsvc_NetSessDel(struct pipes_struct *p, struct srvsvc_NetSessDel *r);
+WERROR _srvsvc_NetShareAdd(struct pipes_struct *p, struct srvsvc_NetShareAdd *r);
+WERROR _srvsvc_NetShareEnumAll(struct pipes_struct *p, struct srvsvc_NetShareEnumAll *r);
+WERROR _srvsvc_NetShareGetInfo(struct pipes_struct *p, struct srvsvc_NetShareGetInfo *r);
+WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, struct srvsvc_NetShareSetInfo *r);
+WERROR _srvsvc_NetShareDel(struct pipes_struct *p, struct srvsvc_NetShareDel *r);
+WERROR _srvsvc_NetShareDelSticky(struct pipes_struct *p, struct srvsvc_NetShareDelSticky *r);
+WERROR _srvsvc_NetShareCheck(struct pipes_struct *p, struct srvsvc_NetShareCheck *r);
+WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p, struct srvsvc_NetSrvGetInfo *r);
+WERROR _srvsvc_NetSrvSetInfo(struct pipes_struct *p, struct srvsvc_NetSrvSetInfo *r);
+WERROR _srvsvc_NetDiskEnum(struct pipes_struct *p, struct srvsvc_NetDiskEnum *r);
+WERROR _srvsvc_NetServerStatisticsGet(struct pipes_struct *p, struct srvsvc_NetServerStatisticsGet *r);
+WERROR _srvsvc_NetTransportAdd(struct pipes_struct *p, struct srvsvc_NetTransportAdd *r);
+WERROR _srvsvc_NetTransportEnum(struct pipes_struct *p, struct srvsvc_NetTransportEnum *r);
+WERROR _srvsvc_NetTransportDel(struct pipes_struct *p, struct srvsvc_NetTransportDel *r);
+WERROR _srvsvc_NetRemoteTOD(struct pipes_struct *p, struct srvsvc_NetRemoteTOD *r);
+WERROR _srvsvc_NetSetServiceBits(struct pipes_struct *p, struct srvsvc_NetSetServiceBits *r);
+WERROR _srvsvc_NetPathType(struct pipes_struct *p, struct srvsvc_NetPathType *r);
+WERROR _srvsvc_NetPathCanonicalize(struct pipes_struct *p, struct srvsvc_NetPathCanonicalize *r);
+WERROR _srvsvc_NetPathCompare(struct pipes_struct *p, struct srvsvc_NetPathCompare *r);
+WERROR _srvsvc_NetNameValidate(struct pipes_struct *p, struct srvsvc_NetNameValidate *r);
+WERROR _srvsvc_NETRPRNAMECANONICALIZE(struct pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r);
+WERROR _srvsvc_NetPRNameCompare(struct pipes_struct *p, struct srvsvc_NetPRNameCompare *r);
+WERROR _srvsvc_NetShareEnum(struct pipes_struct *p, struct srvsvc_NetShareEnum *r);
+WERROR _srvsvc_NetShareDelStart(struct pipes_struct *p, struct srvsvc_NetShareDelStart *r);
+WERROR _srvsvc_NetShareDelCommit(struct pipes_struct *p, struct srvsvc_NetShareDelCommit *r);
+WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, struct srvsvc_NetGetFileSecurity *r);
+WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p, struct srvsvc_NetSetFileSecurity *r);
+WERROR _srvsvc_NetServerTransportAddEx(struct pipes_struct *p, struct srvsvc_NetServerTransportAddEx *r);
+WERROR _srvsvc_NetServerSetServiceBitsEx(struct pipes_struct *p, struct srvsvc_NetServerSetServiceBitsEx *r);
+WERROR _srvsvc_NETRDFSGETVERSION(struct pipes_struct *p, struct srvsvc_NETRDFSGETVERSION *r);
+WERROR _srvsvc_NETRDFSCREATELOCALPARTITION(struct pipes_struct *p, struct srvsvc_NETRDFSCREATELOCALPARTITION *r);
+WERROR _srvsvc_NETRDFSDELETELOCALPARTITION(struct pipes_struct *p, struct srvsvc_NETRDFSDELETELOCALPARTITION *r);
+WERROR _srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct pipes_struct *p, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r);
+WERROR _srvsvc_NETRDFSSETSERVERINFO(struct pipes_struct *p, struct srvsvc_NETRDFSSETSERVERINFO *r);
+WERROR _srvsvc_NETRDFSCREATEEXITPOINT(struct pipes_struct *p, struct srvsvc_NETRDFSCREATEEXITPOINT *r);
+WERROR _srvsvc_NETRDFSDELETEEXITPOINT(struct pipes_struct *p, struct srvsvc_NETRDFSDELETEEXITPOINT *r);
+WERROR _srvsvc_NETRDFSMODIFYPREFIX(struct pipes_struct *p, struct srvsvc_NETRDFSMODIFYPREFIX *r);
+WERROR _srvsvc_NETRDFSFIXLOCALVOLUME(struct pipes_struct *p, struct srvsvc_NETRDFSFIXLOCALVOLUME *r);
+WERROR _srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct pipes_struct *p, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r);
+WERROR _srvsvc_NETRSERVERTRANSPORTDELEX(struct pipes_struct *p, struct srvsvc_NETRSERVERTRANSPORTDELEX *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_srvsvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SRVSVC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_svcctl.c b/bin/default/librpc/gen_ndr/s3compat_svcctl.c
new file mode 100644 (file)
index 0000000..a7b40ef
--- /dev/null
@@ -0,0 +1,2471 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_svcctl.h"
+
+struct _s3_compat_svcctl_CloseServiceHandle_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_CloseServiceHandle *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_CloseServiceHandle_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_CloseServiceHandle *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_CloseServiceHandle_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_CloseServiceHandle_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _svcctl_CloseServiceHandle(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_CloseServiceHandle_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_ControlService_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_ControlService *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_ControlService_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_ControlService *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_ControlService_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_ControlService_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
+       if (tevent_req_nomem(r->out.service_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_ControlService(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_ControlService_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_DeleteService_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_DeleteService *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_DeleteService_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_DeleteService *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_DeleteService_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_DeleteService_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_DeleteService(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_DeleteService_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_LockServiceDatabase_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_LockServiceDatabase *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_LockServiceDatabase_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_LockServiceDatabase *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_LockServiceDatabase_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_LockServiceDatabase_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.lock = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.lock, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_LockServiceDatabase(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_LockServiceDatabase_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceObjectSecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceObjectSecurity *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceObjectSecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceObjectSecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceObjectSecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceObjectSecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceObjectSecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceObjectSecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_SetServiceObjectSecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_SetServiceObjectSecurity *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_SetServiceObjectSecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_SetServiceObjectSecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_SetServiceObjectSecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_SetServiceObjectSecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_SetServiceObjectSecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_SetServiceObjectSecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceStatus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceStatus *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceStatus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceStatus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceStatus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceStatus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.service_status = talloc_zero(r, struct SERVICE_STATUS);
+       if (tevent_req_nomem(r->out.service_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceStatus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceStatus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_SetServiceStatus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_SetServiceStatus *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_SetServiceStatus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_SetServiceStatus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_SetServiceStatus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_SetServiceStatus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_SetServiceStatus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_SetServiceStatus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_UnlockServiceDatabase_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_UnlockServiceDatabase *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_UnlockServiceDatabase_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_UnlockServiceDatabase *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_UnlockServiceDatabase_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_UnlockServiceDatabase_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.lock = r->in.lock;
+       r->out.result = _svcctl_UnlockServiceDatabase(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_UnlockServiceDatabase_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_NotifyBootConfigStatus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_NotifyBootConfigStatus *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_NotifyBootConfigStatus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_NotifyBootConfigStatus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_NotifyBootConfigStatus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_NotifyBootConfigStatus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_NotifyBootConfigStatus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_NotifyBootConfigStatus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_SCSetServiceBitsW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_SCSetServiceBitsW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_SCSetServiceBitsW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_SCSetServiceBitsW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_SCSetServiceBitsW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_SCSetServiceBitsW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_SCSetServiceBitsW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_SCSetServiceBitsW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_ChangeServiceConfigW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_ChangeServiceConfigW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfigW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_ChangeServiceConfigW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_ChangeServiceConfigW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_ChangeServiceConfigW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.tag_id = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.tag_id, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_ChangeServiceConfigW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_ChangeServiceConfigW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_CreateServiceW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_CreateServiceW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_CreateServiceW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_CreateServiceW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_CreateServiceW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_CreateServiceW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.TagId = r->in.TagId;
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_CreateServiceW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_CreateServiceW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_EnumDependentServicesW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_EnumDependentServicesW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_EnumDependentServicesW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_EnumDependentServicesW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_EnumDependentServicesW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_EnumDependentServicesW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.service_status = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.service_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.services_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.services_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_EnumDependentServicesW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_EnumDependentServicesW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_EnumServicesStatusW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_EnumServicesStatusW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_EnumServicesStatusW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_EnumServicesStatusW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_EnumServicesStatusW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_EnumServicesStatusW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.service = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.service, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.services_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.services_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_EnumServicesStatusW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_EnumServicesStatusW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_OpenSCManagerW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_OpenSCManagerW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_OpenSCManagerW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_OpenSCManagerW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_OpenSCManagerW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_OpenSCManagerW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_OpenSCManagerW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_OpenSCManagerW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_OpenServiceW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_OpenServiceW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_OpenServiceW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_OpenServiceW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_OpenServiceW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_OpenServiceW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_OpenServiceW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_OpenServiceW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceConfigW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceConfigW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceConfigW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceConfigW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceConfigW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceConfigW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.query = talloc_zero(r, struct QUERY_SERVICE_CONFIG);
+       if (tevent_req_nomem(r->out.query, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceConfigW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceConfigW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceLockStatusW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceLockStatusW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceLockStatusW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceLockStatusW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceLockStatusW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceLockStatusW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
+       if (tevent_req_nomem(r->out.lock_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceLockStatusW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceLockStatusW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_StartServiceW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_StartServiceW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_StartServiceW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_StartServiceW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_StartServiceW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_StartServiceW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_StartServiceW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_StartServiceW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_GetServiceDisplayNameW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_GetServiceDisplayNameW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_GetServiceDisplayNameW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_GetServiceDisplayNameW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_GetServiceDisplayNameW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_GetServiceDisplayNameW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.display_name_length = r->in.display_name_length;
+       r->out.display_name = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.display_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_GetServiceDisplayNameW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_GetServiceDisplayNameW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_GetServiceKeyNameW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_GetServiceKeyNameW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_GetServiceKeyNameW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_GetServiceKeyNameW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_GetServiceKeyNameW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_GetServiceKeyNameW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.display_name_length = r->in.display_name_length;
+       r->out.key_name = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.key_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_GetServiceKeyNameW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_GetServiceKeyNameW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_SCSetServiceBitsA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_SCSetServiceBitsA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_SCSetServiceBitsA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_SCSetServiceBitsA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_SCSetServiceBitsA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_SCSetServiceBitsA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_SCSetServiceBitsA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_SCSetServiceBitsA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_ChangeServiceConfigA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_ChangeServiceConfigA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfigA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_ChangeServiceConfigA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_ChangeServiceConfigA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_ChangeServiceConfigA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.tag_id = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.tag_id, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_ChangeServiceConfigA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_ChangeServiceConfigA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_CreateServiceA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_CreateServiceA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_CreateServiceA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_CreateServiceA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_CreateServiceA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_CreateServiceA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.TagId = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.TagId, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_CreateServiceA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_CreateServiceA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_EnumDependentServicesA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_EnumDependentServicesA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_EnumDependentServicesA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_EnumDependentServicesA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_EnumDependentServicesA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_EnumDependentServicesA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.service_status = talloc_zero(r, struct ENUM_SERVICE_STATUSA);
+       if (tevent_req_nomem(r->out.service_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.services_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.services_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_EnumDependentServicesA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_EnumDependentServicesA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_EnumServicesStatusA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_EnumServicesStatusA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_EnumServicesStatusA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_EnumServicesStatusA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_EnumServicesStatusA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_EnumServicesStatusA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.service = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.service, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.services_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.services_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_EnumServicesStatusA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_EnumServicesStatusA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_OpenSCManagerA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_OpenSCManagerA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_OpenSCManagerA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_OpenSCManagerA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_OpenSCManagerA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_OpenSCManagerA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_OpenSCManagerA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_OpenSCManagerA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_OpenServiceA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_OpenServiceA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_OpenServiceA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_OpenServiceA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_OpenServiceA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_OpenServiceA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_OpenServiceA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_OpenServiceA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceConfigA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceConfigA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceConfigA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceConfigA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceConfigA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceConfigA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.query = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.query, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceConfigA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceConfigA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceLockStatusA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceLockStatusA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceLockStatusA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceLockStatusA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceLockStatusA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceLockStatusA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.lock_status = talloc_zero(r, struct SERVICE_LOCK_STATUS);
+       if (tevent_req_nomem(r->out.lock_status, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceLockStatusA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceLockStatusA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_StartServiceA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_StartServiceA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_StartServiceA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_StartServiceA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_StartServiceA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_StartServiceA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_StartServiceA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_StartServiceA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_GetServiceDisplayNameA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_GetServiceDisplayNameA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_GetServiceDisplayNameA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_GetServiceDisplayNameA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_GetServiceDisplayNameA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_GetServiceDisplayNameA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.display_name_length = r->in.display_name_length;
+       r->out.display_name = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.display_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_GetServiceDisplayNameA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_GetServiceDisplayNameA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_GetServiceKeyNameA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_GetServiceKeyNameA *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_GetServiceKeyNameA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_GetServiceKeyNameA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_GetServiceKeyNameA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_GetServiceKeyNameA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.display_name_length = r->in.display_name_length;
+       r->out.key_name = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.key_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_GetServiceKeyNameA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_GetServiceKeyNameA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_GetCurrentGroupeStateW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_GetCurrentGroupeStateW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_GetCurrentGroupeStateW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_GetCurrentGroupeStateW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_GetCurrentGroupeStateW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_GetCurrentGroupeStateW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_GetCurrentGroupeStateW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_GetCurrentGroupeStateW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_EnumServiceGroupW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_EnumServiceGroupW *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_EnumServiceGroupW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_EnumServiceGroupW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_EnumServiceGroupW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_EnumServiceGroupW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_EnumServiceGroupW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_EnumServiceGroupW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_ChangeServiceConfig2A_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_ChangeServiceConfig2A *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfig2A_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_ChangeServiceConfig2A *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_ChangeServiceConfig2A_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_ChangeServiceConfig2A_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_ChangeServiceConfig2A(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_ChangeServiceConfig2A_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_ChangeServiceConfig2W_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_ChangeServiceConfig2W *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_ChangeServiceConfig2W_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_ChangeServiceConfig2W *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_ChangeServiceConfig2W_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_ChangeServiceConfig2W_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_ChangeServiceConfig2W(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_ChangeServiceConfig2W_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceConfig2A_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceConfig2A *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceConfig2A_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceConfig2A *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceConfig2A_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceConfig2A_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceConfig2A(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceConfig2A_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceConfig2W_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceConfig2W *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceConfig2W_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceConfig2W *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceConfig2W_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceConfig2W_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceConfig2W(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceConfig2W_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_QueryServiceStatusEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_QueryServiceStatusEx *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_QueryServiceStatusEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_QueryServiceStatusEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_QueryServiceStatusEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_QueryServiceStatusEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.buffer, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _svcctl_QueryServiceStatusEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_QueryServiceStatusEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EnumServicesStatusExA_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EnumServicesStatusExA *r;
+};
+
+static struct tevent_req *_s3_compat_EnumServicesStatusExA_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EnumServicesStatusExA *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EnumServicesStatusExA_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EnumServicesStatusExA_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.services = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.services, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.service_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.service_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.group_name = talloc_zero(r, const char *);
+       if (tevent_req_nomem(r->out.group_name, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _EnumServicesStatusExA(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EnumServicesStatusExA_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_EnumServicesStatusExW_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct EnumServicesStatusExW *r;
+};
+
+static struct tevent_req *_s3_compat_EnumServicesStatusExW_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct EnumServicesStatusExW *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_EnumServicesStatusExW_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_EnumServicesStatusExW_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.services = talloc_zero_array(r, uint8_t, r->in.offered);
+       if (tevent_req_nomem(r->out.services, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.service_returned = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.service_returned, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _EnumServicesStatusExW(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_EnumServicesStatusExW_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_svcctl_SCSendTSMessage_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct svcctl_SCSendTSMessage *r;
+};
+
+static struct tevent_req *_s3_compat_svcctl_SCSendTSMessage_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct svcctl_SCSendTSMessage *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_svcctl_SCSendTSMessage_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_svcctl_SCSendTSMessage_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _svcctl_SCSendTSMessage(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_svcctl_SCSendTSMessage_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_svcctl_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_CloseServiceHandle_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_CloseServiceHandle_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_ControlService_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_ControlService_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_DeleteService_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_DeleteService_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_LockServiceDatabase_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_LockServiceDatabase_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceObjectSecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceObjectSecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_SetServiceObjectSecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_SetServiceObjectSecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceStatus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceStatus_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_SetServiceStatus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_SetServiceStatus_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_UnlockServiceDatabase_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_UnlockServiceDatabase_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_NotifyBootConfigStatus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_NotifyBootConfigStatus_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_SCSetServiceBitsW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_SCSetServiceBitsW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfigW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfigW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_CreateServiceW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_CreateServiceW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_EnumDependentServicesW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_EnumDependentServicesW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_EnumServicesStatusW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_EnumServicesStatusW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_OpenSCManagerW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_OpenSCManagerW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_OpenServiceW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_OpenServiceW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfigW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfigW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceLockStatusW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceLockStatusW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_StartServiceW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_StartServiceW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_GetServiceDisplayNameW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_GetServiceDisplayNameW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_GetServiceKeyNameW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_GetServiceKeyNameW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_SCSetServiceBitsA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_SCSetServiceBitsA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfigA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfigA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_CreateServiceA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_CreateServiceA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_EnumDependentServicesA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_EnumDependentServicesA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_EnumServicesStatusA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_EnumServicesStatusA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_OpenSCManagerA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_OpenSCManagerA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_OpenServiceA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_OpenServiceA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfigA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfigA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceLockStatusA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceLockStatusA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_StartServiceA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_StartServiceA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_GetServiceDisplayNameA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_GetServiceDisplayNameA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_GetServiceKeyNameA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_GetServiceKeyNameA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_GetCurrentGroupeStateW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_GetCurrentGroupeStateW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_EnumServiceGroupW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_EnumServiceGroupW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfig2A_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfig2A_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfig2W_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_ChangeServiceConfig2W_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfig2A_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfig2A_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfig2W_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceConfig2W_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_QueryServiceStatusEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_QueryServiceStatusEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EnumServicesStatusExA_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EnumServicesStatusExA_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_EnumServicesStatusExW_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_EnumServicesStatusExW_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_svcctl_SCSendTSMessage_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_svcctl_SCSendTSMessage_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_svcctl_epv[] = {
+       .name = "_s3_compat_svcctl",
+       .table = &ndr_table_svcctl,
+       .num_fns = 44,
+       .fns = _s3_compat_svcctl_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_svcctl(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_svcctl.h b/bin/default/librpc/gen_ndr/s3compat_svcctl.h
new file mode 100644 (file)
index 0000000..172e72d
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_svcctl.h"
+#ifndef __S3COMPAT_SVCCTL__
+#define __S3COMPAT_SVCCTL__
+WERROR _svcctl_CloseServiceHandle(struct pipes_struct *p, struct svcctl_CloseServiceHandle *r);
+WERROR _svcctl_ControlService(struct pipes_struct *p, struct svcctl_ControlService *r);
+WERROR _svcctl_DeleteService(struct pipes_struct *p, struct svcctl_DeleteService *r);
+WERROR _svcctl_LockServiceDatabase(struct pipes_struct *p, struct svcctl_LockServiceDatabase *r);
+WERROR _svcctl_QueryServiceObjectSecurity(struct pipes_struct *p, struct svcctl_QueryServiceObjectSecurity *r);
+WERROR _svcctl_SetServiceObjectSecurity(struct pipes_struct *p, struct svcctl_SetServiceObjectSecurity *r);
+WERROR _svcctl_QueryServiceStatus(struct pipes_struct *p, struct svcctl_QueryServiceStatus *r);
+WERROR _svcctl_SetServiceStatus(struct pipes_struct *p, struct svcctl_SetServiceStatus *r);
+WERROR _svcctl_UnlockServiceDatabase(struct pipes_struct *p, struct svcctl_UnlockServiceDatabase *r);
+WERROR _svcctl_NotifyBootConfigStatus(struct pipes_struct *p, struct svcctl_NotifyBootConfigStatus *r);
+WERROR _svcctl_SCSetServiceBitsW(struct pipes_struct *p, struct svcctl_SCSetServiceBitsW *r);
+WERROR _svcctl_ChangeServiceConfigW(struct pipes_struct *p, struct svcctl_ChangeServiceConfigW *r);
+WERROR _svcctl_CreateServiceW(struct pipes_struct *p, struct svcctl_CreateServiceW *r);
+WERROR _svcctl_EnumDependentServicesW(struct pipes_struct *p, struct svcctl_EnumDependentServicesW *r);
+WERROR _svcctl_EnumServicesStatusW(struct pipes_struct *p, struct svcctl_EnumServicesStatusW *r);
+WERROR _svcctl_OpenSCManagerW(struct pipes_struct *p, struct svcctl_OpenSCManagerW *r);
+WERROR _svcctl_OpenServiceW(struct pipes_struct *p, struct svcctl_OpenServiceW *r);
+WERROR _svcctl_QueryServiceConfigW(struct pipes_struct *p, struct svcctl_QueryServiceConfigW *r);
+WERROR _svcctl_QueryServiceLockStatusW(struct pipes_struct *p, struct svcctl_QueryServiceLockStatusW *r);
+WERROR _svcctl_StartServiceW(struct pipes_struct *p, struct svcctl_StartServiceW *r);
+WERROR _svcctl_GetServiceDisplayNameW(struct pipes_struct *p, struct svcctl_GetServiceDisplayNameW *r);
+WERROR _svcctl_GetServiceKeyNameW(struct pipes_struct *p, struct svcctl_GetServiceKeyNameW *r);
+WERROR _svcctl_SCSetServiceBitsA(struct pipes_struct *p, struct svcctl_SCSetServiceBitsA *r);
+WERROR _svcctl_ChangeServiceConfigA(struct pipes_struct *p, struct svcctl_ChangeServiceConfigA *r);
+WERROR _svcctl_CreateServiceA(struct pipes_struct *p, struct svcctl_CreateServiceA *r);
+WERROR _svcctl_EnumDependentServicesA(struct pipes_struct *p, struct svcctl_EnumDependentServicesA *r);
+WERROR _svcctl_EnumServicesStatusA(struct pipes_struct *p, struct svcctl_EnumServicesStatusA *r);
+WERROR _svcctl_OpenSCManagerA(struct pipes_struct *p, struct svcctl_OpenSCManagerA *r);
+WERROR _svcctl_OpenServiceA(struct pipes_struct *p, struct svcctl_OpenServiceA *r);
+WERROR _svcctl_QueryServiceConfigA(struct pipes_struct *p, struct svcctl_QueryServiceConfigA *r);
+WERROR _svcctl_QueryServiceLockStatusA(struct pipes_struct *p, struct svcctl_QueryServiceLockStatusA *r);
+WERROR _svcctl_StartServiceA(struct pipes_struct *p, struct svcctl_StartServiceA *r);
+WERROR _svcctl_GetServiceDisplayNameA(struct pipes_struct *p, struct svcctl_GetServiceDisplayNameA *r);
+WERROR _svcctl_GetServiceKeyNameA(struct pipes_struct *p, struct svcctl_GetServiceKeyNameA *r);
+WERROR _svcctl_GetCurrentGroupeStateW(struct pipes_struct *p, struct svcctl_GetCurrentGroupeStateW *r);
+WERROR _svcctl_EnumServiceGroupW(struct pipes_struct *p, struct svcctl_EnumServiceGroupW *r);
+WERROR _svcctl_ChangeServiceConfig2A(struct pipes_struct *p, struct svcctl_ChangeServiceConfig2A *r);
+WERROR _svcctl_ChangeServiceConfig2W(struct pipes_struct *p, struct svcctl_ChangeServiceConfig2W *r);
+WERROR _svcctl_QueryServiceConfig2A(struct pipes_struct *p, struct svcctl_QueryServiceConfig2A *r);
+WERROR _svcctl_QueryServiceConfig2W(struct pipes_struct *p, struct svcctl_QueryServiceConfig2W *r);
+WERROR _svcctl_QueryServiceStatusEx(struct pipes_struct *p, struct svcctl_QueryServiceStatusEx *r);
+WERROR _EnumServicesStatusExA(struct pipes_struct *p, struct EnumServicesStatusExA *r);
+WERROR _EnumServicesStatusExW(struct pipes_struct *p, struct EnumServicesStatusExW *r);
+WERROR _svcctl_SCSendTSMessage(struct pipes_struct *p, struct svcctl_SCSendTSMessage *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_svcctl(struct dcerpc_server *server);
+#endif /* __S3COMPAT_SVCCTL__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_trkwks.c b/bin/default/librpc/gen_ndr/s3compat_trkwks.c
new file mode 100644 (file)
index 0000000..eaca66e
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_trkwks.h"
+
+struct _s3_compat_trkwks_Unknown0_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct trkwks_Unknown0 *r;
+};
+
+static struct tevent_req *_s3_compat_trkwks_Unknown0_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct trkwks_Unknown0 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_trkwks_Unknown0_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_trkwks_Unknown0_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _trkwks_Unknown0(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_trkwks_Unknown0_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_trkwks_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_trkwks_Unknown0_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_trkwks_Unknown0_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_trkwks_epv[] = {
+       .name = "_s3_compat_trkwks",
+       .table = &ndr_table_trkwks,
+       .num_fns = 1,
+       .fns = _s3_compat_trkwks_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_trkwks(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_trkwks.h b/bin/default/librpc/gen_ndr/s3compat_trkwks.h
new file mode 100644 (file)
index 0000000..4cad9a8
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_trkwks.h"
+#ifndef __S3COMPAT_TRKWKS__
+#define __S3COMPAT_TRKWKS__
+WERROR _trkwks_Unknown0(struct pipes_struct *p, struct trkwks_Unknown0 *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_trkwks(struct dcerpc_server *server);
+#endif /* __S3COMPAT_TRKWKS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_unixinfo.c b/bin/default/librpc/gen_ndr/s3compat_unixinfo.c
new file mode 100644 (file)
index 0000000..5fcbdb7
--- /dev/null
@@ -0,0 +1,299 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_unixinfo.h"
+
+struct _s3_compat_unixinfo_SidToUid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct unixinfo_SidToUid *r;
+};
+
+static struct tevent_req *_s3_compat_unixinfo_SidToUid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct unixinfo_SidToUid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_unixinfo_SidToUid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_unixinfo_SidToUid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.uid = talloc_zero(r, uint64_t);
+       if (tevent_req_nomem(r->out.uid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _unixinfo_SidToUid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_unixinfo_SidToUid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_unixinfo_UidToSid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct unixinfo_UidToSid *r;
+};
+
+static struct tevent_req *_s3_compat_unixinfo_UidToSid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct unixinfo_UidToSid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_unixinfo_UidToSid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_unixinfo_UidToSid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sid = talloc_zero(r, struct dom_sid);
+       if (tevent_req_nomem(r->out.sid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _unixinfo_UidToSid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_unixinfo_UidToSid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_unixinfo_SidToGid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct unixinfo_SidToGid *r;
+};
+
+static struct tevent_req *_s3_compat_unixinfo_SidToGid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct unixinfo_SidToGid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_unixinfo_SidToGid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_unixinfo_SidToGid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.gid = talloc_zero(r, uint64_t);
+       if (tevent_req_nomem(r->out.gid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _unixinfo_SidToGid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_unixinfo_SidToGid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_unixinfo_GidToSid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct unixinfo_GidToSid *r;
+};
+
+static struct tevent_req *_s3_compat_unixinfo_GidToSid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct unixinfo_GidToSid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_unixinfo_GidToSid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_unixinfo_GidToSid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sid = talloc_zero(r, struct dom_sid);
+       if (tevent_req_nomem(r->out.sid, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _unixinfo_GidToSid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_unixinfo_GidToSid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_unixinfo_GetPWUid_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct unixinfo_GetPWUid *r;
+};
+
+static struct tevent_req *_s3_compat_unixinfo_GetPWUid_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct unixinfo_GetPWUid *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_unixinfo_GetPWUid_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_unixinfo_GetPWUid_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.count = r->in.count;
+       r->out.infos = talloc_zero_array(r, struct unixinfo_GetPWUidInfo, *r->out.count);
+       if (tevent_req_nomem(r->out.infos, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _unixinfo_GetPWUid(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_unixinfo_GetPWUid_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_unixinfo_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_unixinfo_SidToUid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_unixinfo_SidToUid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_unixinfo_UidToSid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_unixinfo_UidToSid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_unixinfo_SidToGid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_unixinfo_SidToGid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_unixinfo_GidToSid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_unixinfo_GidToSid_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_unixinfo_GetPWUid_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_unixinfo_GetPWUid_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_unixinfo_epv[] = {
+       .name = "_s3_compat_unixinfo",
+       .table = &ndr_table_unixinfo,
+       .num_fns = 5,
+       .fns = _s3_compat_unixinfo_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_unixinfo(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_unixinfo.h b/bin/default/librpc/gen_ndr/s3compat_unixinfo.h
new file mode 100644 (file)
index 0000000..a0935d2
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_unixinfo.h"
+#ifndef __S3COMPAT_UNIXINFO__
+#define __S3COMPAT_UNIXINFO__
+NTSTATUS _unixinfo_SidToUid(struct pipes_struct *p, struct unixinfo_SidToUid *r);
+NTSTATUS _unixinfo_UidToSid(struct pipes_struct *p, struct unixinfo_UidToSid *r);
+NTSTATUS _unixinfo_SidToGid(struct pipes_struct *p, struct unixinfo_SidToGid *r);
+NTSTATUS _unixinfo_GidToSid(struct pipes_struct *p, struct unixinfo_GidToSid *r);
+NTSTATUS _unixinfo_GetPWUid(struct pipes_struct *p, struct unixinfo_GetPWUid *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_unixinfo(struct dcerpc_server *server);
+#endif /* __S3COMPAT_UNIXINFO__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_w32time.c b/bin/default/librpc/gen_ndr/s3compat_w32time.c
new file mode 100644 (file)
index 0000000..025ed2d
--- /dev/null
@@ -0,0 +1,170 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_w32time.h"
+
+struct _s3_compat_w32time_SyncTime_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct w32time_SyncTime *r;
+};
+
+static struct tevent_req *_s3_compat_w32time_SyncTime_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct w32time_SyncTime *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_w32time_SyncTime_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_w32time_SyncTime_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _w32time_SyncTime(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_w32time_SyncTime_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_w32time_GetNetLogonServiceBits_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct w32time_GetNetLogonServiceBits *r;
+};
+
+static struct tevent_req *_s3_compat_w32time_GetNetLogonServiceBits_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct w32time_GetNetLogonServiceBits *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_w32time_GetNetLogonServiceBits_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_w32time_GetNetLogonServiceBits_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _w32time_GetNetLogonServiceBits(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_w32time_GetNetLogonServiceBits_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_w32time_QueryProviderStatus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct w32time_QueryProviderStatus *r;
+};
+
+static struct tevent_req *_s3_compat_w32time_QueryProviderStatus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct w32time_QueryProviderStatus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_w32time_QueryProviderStatus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_w32time_QueryProviderStatus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _w32time_QueryProviderStatus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_w32time_QueryProviderStatus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_w32time_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_w32time_SyncTime_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_w32time_SyncTime_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_w32time_GetNetLogonServiceBits_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_w32time_GetNetLogonServiceBits_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_w32time_QueryProviderStatus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_w32time_QueryProviderStatus_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_w32time_epv[] = {
+       .name = "_s3_compat_w32time",
+       .table = &ndr_table_w32time,
+       .num_fns = 3,
+       .fns = _s3_compat_w32time_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_w32time(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_w32time.h b/bin/default/librpc/gen_ndr/s3compat_w32time.h
new file mode 100644 (file)
index 0000000..063215d
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_w32time.h"
+#ifndef __S3COMPAT_W32TIME__
+#define __S3COMPAT_W32TIME__
+WERROR _w32time_SyncTime(struct pipes_struct *p, struct w32time_SyncTime *r);
+WERROR _w32time_GetNetLogonServiceBits(struct pipes_struct *p, struct w32time_GetNetLogonServiceBits *r);
+WERROR _w32time_QueryProviderStatus(struct pipes_struct *p, struct w32time_QueryProviderStatus *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_w32time(struct dcerpc_server *server);
+#endif /* __S3COMPAT_W32TIME__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_winreg.c b/bin/default/librpc/gen_ndr/s3compat_winreg.c
new file mode 100644 (file)
index 0000000..00941e6
--- /dev/null
@@ -0,0 +1,1941 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_winreg.h"
+
+struct _s3_compat_winreg_OpenHKCR_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKCR *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKCR_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKCR *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKCR_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKCR_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKCR(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKCR_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKCU_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKCU *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKCU_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKCU *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKCU_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKCU_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKCU(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKCU_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKLM_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKLM *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKLM_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKLM *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKLM_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKLM_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKLM(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKLM_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKPD_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKPD *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKPD_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKPD *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKPD_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKPD_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKPD(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKPD_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKU_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKU *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKU_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKU *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKU_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKU_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKU(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKU_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_CloseKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_CloseKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_CloseKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_CloseKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_CloseKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_CloseKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = r->in.handle;
+       r->out.result = _winreg_CloseKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_CloseKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_CreateKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_CreateKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_CreateKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_CreateKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_CreateKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_CreateKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.action_taken = r->in.action_taken;
+       r->out.new_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.new_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_CreateKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_CreateKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_DeleteKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_DeleteKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_DeleteKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_DeleteKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_DeleteKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_DeleteKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_DeleteKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_DeleteKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_DeleteValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_DeleteValue *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_DeleteValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_DeleteValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_DeleteValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_DeleteValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_DeleteValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_DeleteValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_EnumKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_EnumKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_EnumKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_EnumKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_EnumKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_EnumKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.name = r->in.name;
+       r->out.keyclass = r->in.keyclass;
+       r->out.last_changed_time = r->in.last_changed_time;
+       r->out.result = _winreg_EnumKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_EnumKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_EnumValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_EnumValue *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_EnumValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_EnumValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_EnumValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_EnumValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.name = r->in.name;
+       r->out.type = r->in.type;
+       r->out.value = r->in.value;
+       r->out.size = r->in.size;
+       r->out.length = r->in.length;
+       r->out.result = _winreg_EnumValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_EnumValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_FlushKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_FlushKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_FlushKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_FlushKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_FlushKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_FlushKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_FlushKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_FlushKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_GetKeySecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_GetKeySecurity *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_GetKeySecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_GetKeySecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_GetKeySecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_GetKeySecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.sd = r->in.sd;
+       r->out.result = _winreg_GetKeySecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_GetKeySecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_LoadKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_LoadKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_LoadKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_LoadKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_LoadKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_LoadKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_LoadKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_LoadKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_NotifyChangeKeyValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_NotifyChangeKeyValue *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_NotifyChangeKeyValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_NotifyChangeKeyValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_NotifyChangeKeyValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_NotifyChangeKeyValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_NotifyChangeKeyValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_NotifyChangeKeyValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_QueryInfoKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_QueryInfoKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_QueryInfoKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_QueryInfoKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_QueryInfoKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_QueryInfoKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.classname = r->in.classname;
+       r->out.num_subkeys = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_subkeys, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.max_subkeylen = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.max_subkeylen, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.max_classlen = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.max_classlen, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.num_values = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.num_values, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.max_valnamelen = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.max_valnamelen, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.max_valbufsize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.max_valbufsize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.secdescsize = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.secdescsize, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.last_changed_time = talloc_zero(r, NTTIME);
+       if (tevent_req_nomem(r->out.last_changed_time, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_QueryInfoKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_QueryInfoKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_QueryValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_QueryValue *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_QueryValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_QueryValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_QueryValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_QueryValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.type = r->in.type;
+       r->out.data = r->in.data;
+       r->out.data_size = r->in.data_size;
+       r->out.data_length = r->in.data_length;
+       r->out.result = _winreg_QueryValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_QueryValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_ReplaceKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_ReplaceKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_ReplaceKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_ReplaceKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_ReplaceKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_ReplaceKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_ReplaceKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_ReplaceKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_RestoreKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_RestoreKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_RestoreKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_RestoreKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_RestoreKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_RestoreKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_RestoreKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_RestoreKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_SaveKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_SaveKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_SaveKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_SaveKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_SaveKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_SaveKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_SaveKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_SaveKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_SetKeySecurity_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_SetKeySecurity *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_SetKeySecurity_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_SetKeySecurity *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_SetKeySecurity_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_SetKeySecurity_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_SetKeySecurity(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_SetKeySecurity_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_SetValue_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_SetValue *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_SetValue_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_SetValue *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_SetValue_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_SetValue_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_SetValue(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_SetValue_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_UnLoadKey_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_UnLoadKey *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_UnLoadKey_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_UnLoadKey *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_UnLoadKey_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_UnLoadKey_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_UnLoadKey(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_UnLoadKey_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_InitiateSystemShutdown_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_InitiateSystemShutdown *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_InitiateSystemShutdown_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_InitiateSystemShutdown *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_InitiateSystemShutdown_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_InitiateSystemShutdown_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_InitiateSystemShutdown(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_InitiateSystemShutdown_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_AbortSystemShutdown_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_AbortSystemShutdown *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_AbortSystemShutdown_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_AbortSystemShutdown *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_AbortSystemShutdown_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_AbortSystemShutdown_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_AbortSystemShutdown(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_AbortSystemShutdown_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_GetVersion_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_GetVersion *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_GetVersion_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_GetVersion *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_GetVersion_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_GetVersion_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.version = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.version, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_GetVersion(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_GetVersion_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKCC_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKCC *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKCC_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKCC *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKCC_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKCC_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKCC(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKCC_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKDD_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKDD *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKDD_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKDD *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKDD_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKDD_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKDD(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKDD_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_QueryMultipleValues_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_QueryMultipleValues *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_QueryMultipleValues_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_QueryMultipleValues *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_QueryMultipleValues_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_QueryMultipleValues_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = r->in.buffer;
+       r->out.buffer_size = r->in.buffer_size;
+       r->out.values_out = talloc_zero_array(r, struct QueryMultipleValue, r->in.num_values);
+       if (tevent_req_nomem(r->out.values_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_QueryMultipleValues(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_QueryMultipleValues_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_InitiateSystemShutdownEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_InitiateSystemShutdownEx *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_InitiateSystemShutdownEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_InitiateSystemShutdownEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_InitiateSystemShutdownEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_InitiateSystemShutdownEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_InitiateSystemShutdownEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_InitiateSystemShutdownEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_SaveKeyEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_SaveKeyEx *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_SaveKeyEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_SaveKeyEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_SaveKeyEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_SaveKeyEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_SaveKeyEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_SaveKeyEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKPT_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKPT *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKPT_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKPT *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKPT_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKPT_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKPT(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKPT_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_OpenHKPN_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_OpenHKPN *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_OpenHKPN_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_OpenHKPN *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_OpenHKPN_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_OpenHKPN_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_OpenHKPN(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_OpenHKPN_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_QueryMultipleValues2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_QueryMultipleValues2 *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_QueryMultipleValues2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_QueryMultipleValues2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_QueryMultipleValues2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_QueryMultipleValues2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.buffer = r->in.buffer;
+       r->out.values_out = talloc_zero_array(r, struct QueryMultipleValue, r->in.num_values);
+       if (tevent_req_nomem(r->out.values_out, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.needed = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.needed, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _winreg_QueryMultipleValues2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_QueryMultipleValues2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_winreg_DeleteKeyEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct winreg_DeleteKeyEx *r;
+};
+
+static struct tevent_req *_s3_compat_winreg_DeleteKeyEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct winreg_DeleteKeyEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_winreg_DeleteKeyEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_winreg_DeleteKeyEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _winreg_DeleteKeyEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_winreg_DeleteKeyEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_winreg_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKCR_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKCR_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKCU_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKCU_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKLM_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKLM_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKPD_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKPD_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKU_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKU_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_CloseKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_CloseKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_CreateKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_CreateKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_DeleteKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_DeleteKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_DeleteValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_DeleteValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_EnumKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_EnumKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_EnumValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_EnumValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_FlushKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_FlushKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_GetKeySecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_GetKeySecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_LoadKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_LoadKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_NotifyChangeKeyValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_NotifyChangeKeyValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_QueryInfoKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_QueryInfoKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_QueryValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_QueryValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_ReplaceKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_ReplaceKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_RestoreKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_RestoreKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_SaveKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_SaveKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_SetKeySecurity_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_SetKeySecurity_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_SetValue_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_SetValue_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_UnLoadKey_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_UnLoadKey_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_InitiateSystemShutdown_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_InitiateSystemShutdown_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_AbortSystemShutdown_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_AbortSystemShutdown_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_GetVersion_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_GetVersion_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKCC_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKCC_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKDD_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKDD_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_QueryMultipleValues_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_QueryMultipleValues_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_InitiateSystemShutdownEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_InitiateSystemShutdownEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_SaveKeyEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_SaveKeyEx_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKPT_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKPT_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_OpenHKPN_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_OpenHKPN_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_QueryMultipleValues2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_QueryMultipleValues2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_winreg_DeleteKeyEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_winreg_DeleteKeyEx_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_winreg_epv[] = {
+       .name = "_s3_compat_winreg",
+       .table = &ndr_table_winreg,
+       .num_fns = 36,
+       .fns = _s3_compat_winreg_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_winreg(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_winreg.h b/bin/default/librpc/gen_ndr/s3compat_winreg.h
new file mode 100644 (file)
index 0000000..b4a1f18
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_winreg.h"
+#ifndef __S3COMPAT_WINREG__
+#define __S3COMPAT_WINREG__
+WERROR _winreg_OpenHKCR(struct pipes_struct *p, struct winreg_OpenHKCR *r);
+WERROR _winreg_OpenHKCU(struct pipes_struct *p, struct winreg_OpenHKCU *r);
+WERROR _winreg_OpenHKLM(struct pipes_struct *p, struct winreg_OpenHKLM *r);
+WERROR _winreg_OpenHKPD(struct pipes_struct *p, struct winreg_OpenHKPD *r);
+WERROR _winreg_OpenHKU(struct pipes_struct *p, struct winreg_OpenHKU *r);
+WERROR _winreg_CloseKey(struct pipes_struct *p, struct winreg_CloseKey *r);
+WERROR _winreg_CreateKey(struct pipes_struct *p, struct winreg_CreateKey *r);
+WERROR _winreg_DeleteKey(struct pipes_struct *p, struct winreg_DeleteKey *r);
+WERROR _winreg_DeleteValue(struct pipes_struct *p, struct winreg_DeleteValue *r);
+WERROR _winreg_EnumKey(struct pipes_struct *p, struct winreg_EnumKey *r);
+WERROR _winreg_EnumValue(struct pipes_struct *p, struct winreg_EnumValue *r);
+WERROR _winreg_FlushKey(struct pipes_struct *p, struct winreg_FlushKey *r);
+WERROR _winreg_GetKeySecurity(struct pipes_struct *p, struct winreg_GetKeySecurity *r);
+WERROR _winreg_LoadKey(struct pipes_struct *p, struct winreg_LoadKey *r);
+WERROR _winreg_NotifyChangeKeyValue(struct pipes_struct *p, struct winreg_NotifyChangeKeyValue *r);
+WERROR _winreg_OpenKey(struct pipes_struct *p, struct winreg_OpenKey *r);
+WERROR _winreg_QueryInfoKey(struct pipes_struct *p, struct winreg_QueryInfoKey *r);
+WERROR _winreg_QueryValue(struct pipes_struct *p, struct winreg_QueryValue *r);
+WERROR _winreg_ReplaceKey(struct pipes_struct *p, struct winreg_ReplaceKey *r);
+WERROR _winreg_RestoreKey(struct pipes_struct *p, struct winreg_RestoreKey *r);
+WERROR _winreg_SaveKey(struct pipes_struct *p, struct winreg_SaveKey *r);
+WERROR _winreg_SetKeySecurity(struct pipes_struct *p, struct winreg_SetKeySecurity *r);
+WERROR _winreg_SetValue(struct pipes_struct *p, struct winreg_SetValue *r);
+WERROR _winreg_UnLoadKey(struct pipes_struct *p, struct winreg_UnLoadKey *r);
+WERROR _winreg_InitiateSystemShutdown(struct pipes_struct *p, struct winreg_InitiateSystemShutdown *r);
+WERROR _winreg_AbortSystemShutdown(struct pipes_struct *p, struct winreg_AbortSystemShutdown *r);
+WERROR _winreg_GetVersion(struct pipes_struct *p, struct winreg_GetVersion *r);
+WERROR _winreg_OpenHKCC(struct pipes_struct *p, struct winreg_OpenHKCC *r);
+WERROR _winreg_OpenHKDD(struct pipes_struct *p, struct winreg_OpenHKDD *r);
+WERROR _winreg_QueryMultipleValues(struct pipes_struct *p, struct winreg_QueryMultipleValues *r);
+WERROR _winreg_InitiateSystemShutdownEx(struct pipes_struct *p, struct winreg_InitiateSystemShutdownEx *r);
+WERROR _winreg_SaveKeyEx(struct pipes_struct *p, struct winreg_SaveKeyEx *r);
+WERROR _winreg_OpenHKPT(struct pipes_struct *p, struct winreg_OpenHKPT *r);
+WERROR _winreg_OpenHKPN(struct pipes_struct *p, struct winreg_OpenHKPN *r);
+WERROR _winreg_QueryMultipleValues2(struct pipes_struct *p, struct winreg_QueryMultipleValues2 *r);
+WERROR _winreg_DeleteKeyEx(struct pipes_struct *p, struct winreg_DeleteKeyEx *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_winreg(struct dcerpc_server *server);
+#endif /* __S3COMPAT_WINREG__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_witness.c b/bin/default/librpc/gen_ndr/s3compat_witness.c
new file mode 100644 (file)
index 0000000..af57d8a
--- /dev/null
@@ -0,0 +1,292 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_witness.h"
+
+struct _s3_compat_witness_GetInterfaceList_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct witness_GetInterfaceList *r;
+};
+
+static struct tevent_req *_s3_compat_witness_GetInterfaceList_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct witness_GetInterfaceList *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_witness_GetInterfaceList_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_witness_GetInterfaceList_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.interface_list = talloc_zero(r, struct witness_interfaceList *);
+       if (tevent_req_nomem(r->out.interface_list, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _witness_GetInterfaceList(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_witness_GetInterfaceList_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_witness_Register_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct witness_Register *r;
+};
+
+static struct tevent_req *_s3_compat_witness_Register_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct witness_Register *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_witness_Register_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_witness_Register_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.context_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.context_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _witness_Register(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_witness_Register_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_witness_UnRegister_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct witness_UnRegister *r;
+};
+
+static struct tevent_req *_s3_compat_witness_UnRegister_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct witness_UnRegister *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_witness_UnRegister_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_witness_UnRegister_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _witness_UnRegister(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_witness_UnRegister_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_witness_AsyncNotify_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct witness_AsyncNotify *r;
+};
+
+static struct tevent_req *_s3_compat_witness_AsyncNotify_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct witness_AsyncNotify *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_witness_AsyncNotify_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_witness_AsyncNotify_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.response = talloc_zero(r, struct witness_notifyResponse *);
+       if (tevent_req_nomem(r->out.response, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _witness_AsyncNotify(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_witness_AsyncNotify_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_witness_RegisterEx_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct witness_RegisterEx *r;
+};
+
+static struct tevent_req *_s3_compat_witness_RegisterEx_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct witness_RegisterEx *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_witness_RegisterEx_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_witness_RegisterEx_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.context_handle = talloc_zero(r, struct policy_handle);
+       if (tevent_req_nomem(r->out.context_handle, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _witness_RegisterEx(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_witness_RegisterEx_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_witness_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_witness_GetInterfaceList_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_witness_GetInterfaceList_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_witness_Register_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_witness_Register_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_witness_UnRegister_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_witness_UnRegister_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_witness_AsyncNotify_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_witness_AsyncNotify_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_witness_RegisterEx_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_witness_RegisterEx_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_witness_epv[] = {
+       .name = "_s3_compat_witness",
+       .table = &ndr_table_witness,
+       .num_fns = 5,
+       .fns = _s3_compat_witness_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_witness(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_witness.h b/bin/default/librpc/gen_ndr/s3compat_witness.h
new file mode 100644 (file)
index 0000000..dbffd7d
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_witness.h"
+#ifndef __S3COMPAT_WITNESS__
+#define __S3COMPAT_WITNESS__
+WERROR _witness_GetInterfaceList(struct pipes_struct *p, struct witness_GetInterfaceList *r);
+WERROR _witness_Register(struct pipes_struct *p, struct witness_Register *r);
+WERROR _witness_UnRegister(struct pipes_struct *p, struct witness_UnRegister *r);
+WERROR _witness_AsyncNotify(struct pipes_struct *p, struct witness_AsyncNotify *r);
+WERROR _witness_RegisterEx(struct pipes_struct *p, struct witness_RegisterEx *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_witness(struct dcerpc_server *server);
+#endif /* __S3COMPAT_WITNESS__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_wkssvc.c b/bin/default/librpc/gen_ndr/s3compat_wkssvc.c
new file mode 100644 (file)
index 0000000..b10d18e
--- /dev/null
@@ -0,0 +1,1625 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_wkssvc.h"
+
+struct _s3_compat_wkssvc_NetWkstaGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetWkstaGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetWkstaGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetWkstaGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetWkstaGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetWkstaGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union wkssvc_NetWkstaInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetWkstaGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetWkstaGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetWkstaSetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetWkstaSetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetWkstaSetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetWkstaSetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetWkstaSetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetWkstaSetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_error = r->in.parm_error;
+       r->out.result = _wkssvc_NetWkstaSetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetWkstaSetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetWkstaEnumUsers_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetWkstaEnumUsers *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetWkstaEnumUsers_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetWkstaEnumUsers *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetWkstaEnumUsers_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetWkstaEnumUsers_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.entries_read = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.entries_read, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetWkstaEnumUsers(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetWkstaEnumUsers_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrWkstaUserGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrWkstaUserGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrWkstaUserGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrWkstaUserGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrWkstaUserGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrWkstaUserGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, union wkssvc_NetrWkstaUserInfo);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrWkstaUserGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrWkstaUserGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrWkstaUserSetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrWkstaUserSetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrWkstaUserSetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrWkstaUserSetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrWkstaUserSetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrWkstaUserSetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_err = r->in.parm_err;
+       r->out.result = _wkssvc_NetrWkstaUserSetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrWkstaUserSetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetWkstaTransportEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetWkstaTransportEnum *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetWkstaTransportEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetWkstaTransportEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetWkstaTransportEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetWkstaTransportEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.total_entries = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.total_entries, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetWkstaTransportEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetWkstaTransportEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrWkstaTransportAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrWkstaTransportAdd *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrWkstaTransportAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrWkstaTransportAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrWkstaTransportAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrWkstaTransportAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_err = r->in.parm_err;
+       r->out.result = _wkssvc_NetrWkstaTransportAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrWkstaTransportAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrWkstaTransportDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrWkstaTransportDel *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrWkstaTransportDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrWkstaTransportDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrWkstaTransportDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrWkstaTransportDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrWkstaTransportDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrWkstaTransportDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUseAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUseAdd *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUseAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUseAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUseAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUseAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.parm_err = r->in.parm_err;
+       r->out.result = _wkssvc_NetrUseAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUseAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUseGetInfo_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUseGetInfo *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUseGetInfo_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUseGetInfo *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUseGetInfo_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUseGetInfo_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = talloc_zero(r, union wkssvc_NetrUseGetInfoCtr);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrUseGetInfo(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUseGetInfo_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUseDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUseDel *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUseDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUseDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUseDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUseDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrUseDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUseDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUseEnum_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUseEnum *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUseEnum_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUseEnum *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUseEnum_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUseEnum_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = r->in.info;
+       r->out.resume_handle = r->in.resume_handle;
+       r->out.entries_read = talloc_zero(r, uint32_t);
+       if (tevent_req_nomem(r->out.entries_read, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrUseEnum(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUseEnum_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrMessageBufferSend_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrMessageBufferSend *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrMessageBufferSend_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrMessageBufferSend *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrMessageBufferSend_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrMessageBufferSend_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrMessageBufferSend(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrMessageBufferSend_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrWorkstationStatisticsGet_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrWorkstationStatisticsGet *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrWorkstationStatisticsGet_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrWorkstationStatisticsGet *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrWorkstationStatisticsGet_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrWorkstationStatisticsGet_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(r, struct wkssvc_NetrWorkstationStatistics *);
+       if (tevent_req_nomem(r->out.info, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrWorkstationStatisticsGet(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrWorkstationStatisticsGet_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrLogonDomainNameAdd_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrLogonDomainNameAdd *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrLogonDomainNameAdd_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrLogonDomainNameAdd *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrLogonDomainNameAdd_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrLogonDomainNameAdd_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrLogonDomainNameAdd(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrLogonDomainNameAdd_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrLogonDomainNameDel_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrLogonDomainNameDel *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrLogonDomainNameDel_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrLogonDomainNameDel *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrLogonDomainNameDel_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrLogonDomainNameDel_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrLogonDomainNameDel(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrLogonDomainNameDel_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrJoinDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrJoinDomain *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrJoinDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrJoinDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrJoinDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrJoinDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrJoinDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrJoinDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUnjoinDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUnjoinDomain *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUnjoinDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUnjoinDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUnjoinDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUnjoinDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrUnjoinDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUnjoinDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrRenameMachineInDomain_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrRenameMachineInDomain *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrRenameMachineInDomain_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrRenameMachineInDomain *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrRenameMachineInDomain_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrRenameMachineInDomain_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrRenameMachineInDomain(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrRenameMachineInDomain_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrValidateName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrValidateName *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrValidateName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrValidateName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrValidateName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrValidateName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrValidateName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrValidateName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrGetJoinInformation_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrGetJoinInformation *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrGetJoinInformation_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrGetJoinInformation *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrGetJoinInformation_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrGetJoinInformation_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.name_buffer = r->in.name_buffer;
+       r->out.name_type = talloc_zero(r, enum wkssvc_NetJoinStatus);
+       if (tevent_req_nomem(r->out.name_type, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrGetJoinInformation(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrGetJoinInformation_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrGetJoinableOus_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrGetJoinableOus *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrGetJoinableOus_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrGetJoinableOus *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrGetJoinableOus_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrGetJoinableOus_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.num_ous = r->in.num_ous;
+       r->out.ous = talloc_zero(r, const char **);
+       if (tevent_req_nomem(r->out.ous, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrGetJoinableOus(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrGetJoinableOus_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrJoinDomain2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrJoinDomain2 *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrJoinDomain2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrJoinDomain2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrJoinDomain2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrJoinDomain2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrJoinDomain2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrJoinDomain2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrUnjoinDomain2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrUnjoinDomain2 *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrUnjoinDomain2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrUnjoinDomain2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrUnjoinDomain2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrUnjoinDomain2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrUnjoinDomain2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrUnjoinDomain2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrRenameMachineInDomain2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrRenameMachineInDomain2 *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrRenameMachineInDomain2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrRenameMachineInDomain2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrRenameMachineInDomain2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrRenameMachineInDomain2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrRenameMachineInDomain2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrRenameMachineInDomain2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrValidateName2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrValidateName2 *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrValidateName2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrValidateName2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrValidateName2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrValidateName2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrValidateName2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrValidateName2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrGetJoinableOus2_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrGetJoinableOus2 *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrGetJoinableOus2_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrGetJoinableOus2 *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrGetJoinableOus2_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrGetJoinableOus2_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.num_ous = r->in.num_ous;
+       r->out.ous = talloc_zero(r, const char **);
+       if (tevent_req_nomem(r->out.ous, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrGetJoinableOus2(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrGetJoinableOus2_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrAddAlternateComputerName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrAddAlternateComputerName *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrAddAlternateComputerName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrAddAlternateComputerName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrAddAlternateComputerName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrAddAlternateComputerName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrAddAlternateComputerName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrAddAlternateComputerName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrRemoveAlternateComputerName_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrRemoveAlternateComputerName *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrRemoveAlternateComputerName_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrRemoveAlternateComputerName *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrRemoveAlternateComputerName_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrRemoveAlternateComputerName_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrRemoveAlternateComputerName(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrRemoveAlternateComputerName_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrSetPrimaryComputername_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrSetPrimaryComputername *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrSetPrimaryComputername_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrSetPrimaryComputername *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrSetPrimaryComputername_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrSetPrimaryComputername_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       r->out.result = _wkssvc_NetrSetPrimaryComputername(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrSetPrimaryComputername_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wkssvc_NetrEnumerateComputerNames_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wkssvc_NetrEnumerateComputerNames *r;
+};
+
+static struct tevent_req *_s3_compat_wkssvc_NetrEnumerateComputerNames_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wkssvc_NetrEnumerateComputerNames *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wkssvc_NetrEnumerateComputerNames_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wkssvc_NetrEnumerateComputerNames_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       ZERO_STRUCT(r->out);
+       r->out.ctr = talloc_zero(r, struct wkssvc_ComputerNamesCtr *);
+       if (tevent_req_nomem(r->out.ctr, req)) {
+               return tevent_req_post(req, ev);
+       }
+
+       r->out.result = _wkssvc_NetrEnumerateComputerNames(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wkssvc_NetrEnumerateComputerNames_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_wkssvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetWkstaGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetWkstaGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetWkstaSetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetWkstaSetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetWkstaEnumUsers_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetWkstaEnumUsers_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaUserGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaUserGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaUserSetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaUserSetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetWkstaTransportEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetWkstaTransportEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaTransportAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaTransportAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaTransportDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrWkstaTransportDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUseAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUseAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUseGetInfo_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUseGetInfo_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUseDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUseDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUseEnum_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUseEnum_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrMessageBufferSend_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrMessageBufferSend_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrWorkstationStatisticsGet_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrWorkstationStatisticsGet_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrLogonDomainNameAdd_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrLogonDomainNameAdd_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrLogonDomainNameDel_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrLogonDomainNameDel_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrJoinDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrJoinDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUnjoinDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUnjoinDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrRenameMachineInDomain_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrRenameMachineInDomain_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrValidateName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrValidateName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinInformation_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinInformation_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinableOus_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinableOus_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrJoinDomain2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrJoinDomain2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrUnjoinDomain2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrUnjoinDomain2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrRenameMachineInDomain2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrRenameMachineInDomain2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrValidateName2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrValidateName2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinableOus2_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrGetJoinableOus2_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrAddAlternateComputerName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrAddAlternateComputerName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrRemoveAlternateComputerName_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrRemoveAlternateComputerName_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrSetPrimaryComputername_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrSetPrimaryComputername_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wkssvc_NetrEnumerateComputerNames_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wkssvc_NetrEnumerateComputerNames_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_wkssvc_epv[] = {
+       .name = "_s3_compat_wkssvc",
+       .table = &ndr_table_wkssvc,
+       .num_fns = 31,
+       .fns = _s3_compat_wkssvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_wkssvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_wkssvc.h b/bin/default/librpc/gen_ndr/s3compat_wkssvc.h
new file mode 100644 (file)
index 0000000..98425bb
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_wkssvc.h"
+#ifndef __S3COMPAT_WKSSVC__
+#define __S3COMPAT_WKSSVC__
+WERROR _wkssvc_NetWkstaGetInfo(struct pipes_struct *p, struct wkssvc_NetWkstaGetInfo *r);
+WERROR _wkssvc_NetWkstaSetInfo(struct pipes_struct *p, struct wkssvc_NetWkstaSetInfo *r);
+WERROR _wkssvc_NetWkstaEnumUsers(struct pipes_struct *p, struct wkssvc_NetWkstaEnumUsers *r);
+WERROR _wkssvc_NetrWkstaUserGetInfo(struct pipes_struct *p, struct wkssvc_NetrWkstaUserGetInfo *r);
+WERROR _wkssvc_NetrWkstaUserSetInfo(struct pipes_struct *p, struct wkssvc_NetrWkstaUserSetInfo *r);
+WERROR _wkssvc_NetWkstaTransportEnum(struct pipes_struct *p, struct wkssvc_NetWkstaTransportEnum *r);
+WERROR _wkssvc_NetrWkstaTransportAdd(struct pipes_struct *p, struct wkssvc_NetrWkstaTransportAdd *r);
+WERROR _wkssvc_NetrWkstaTransportDel(struct pipes_struct *p, struct wkssvc_NetrWkstaTransportDel *r);
+WERROR _wkssvc_NetrUseAdd(struct pipes_struct *p, struct wkssvc_NetrUseAdd *r);
+WERROR _wkssvc_NetrUseGetInfo(struct pipes_struct *p, struct wkssvc_NetrUseGetInfo *r);
+WERROR _wkssvc_NetrUseDel(struct pipes_struct *p, struct wkssvc_NetrUseDel *r);
+WERROR _wkssvc_NetrUseEnum(struct pipes_struct *p, struct wkssvc_NetrUseEnum *r);
+WERROR _wkssvc_NetrMessageBufferSend(struct pipes_struct *p, struct wkssvc_NetrMessageBufferSend *r);
+WERROR _wkssvc_NetrWorkstationStatisticsGet(struct pipes_struct *p, struct wkssvc_NetrWorkstationStatisticsGet *r);
+WERROR _wkssvc_NetrLogonDomainNameAdd(struct pipes_struct *p, struct wkssvc_NetrLogonDomainNameAdd *r);
+WERROR _wkssvc_NetrLogonDomainNameDel(struct pipes_struct *p, struct wkssvc_NetrLogonDomainNameDel *r);
+WERROR _wkssvc_NetrJoinDomain(struct pipes_struct *p, struct wkssvc_NetrJoinDomain *r);
+WERROR _wkssvc_NetrUnjoinDomain(struct pipes_struct *p, struct wkssvc_NetrUnjoinDomain *r);
+WERROR _wkssvc_NetrRenameMachineInDomain(struct pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain *r);
+WERROR _wkssvc_NetrValidateName(struct pipes_struct *p, struct wkssvc_NetrValidateName *r);
+WERROR _wkssvc_NetrGetJoinInformation(struct pipes_struct *p, struct wkssvc_NetrGetJoinInformation *r);
+WERROR _wkssvc_NetrGetJoinableOus(struct pipes_struct *p, struct wkssvc_NetrGetJoinableOus *r);
+WERROR _wkssvc_NetrJoinDomain2(struct pipes_struct *p, struct wkssvc_NetrJoinDomain2 *r);
+WERROR _wkssvc_NetrUnjoinDomain2(struct pipes_struct *p, struct wkssvc_NetrUnjoinDomain2 *r);
+WERROR _wkssvc_NetrRenameMachineInDomain2(struct pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain2 *r);
+WERROR _wkssvc_NetrValidateName2(struct pipes_struct *p, struct wkssvc_NetrValidateName2 *r);
+WERROR _wkssvc_NetrGetJoinableOus2(struct pipes_struct *p, struct wkssvc_NetrGetJoinableOus2 *r);
+WERROR _wkssvc_NetrAddAlternateComputerName(struct pipes_struct *p, struct wkssvc_NetrAddAlternateComputerName *r);
+WERROR _wkssvc_NetrRemoveAlternateComputerName(struct pipes_struct *p, struct wkssvc_NetrRemoveAlternateComputerName *r);
+WERROR _wkssvc_NetrSetPrimaryComputername(struct pipes_struct *p, struct wkssvc_NetrSetPrimaryComputername *r);
+WERROR _wkssvc_NetrEnumerateComputerNames(struct pipes_struct *p, struct wkssvc_NetrEnumerateComputerNames *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_wkssvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_WKSSVC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_wzcsvc.c b/bin/default/librpc/gen_ndr/s3compat_wzcsvc.c
new file mode 100644 (file)
index 0000000..aeaa902
--- /dev/null
@@ -0,0 +1,905 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_wzcsvc.h"
+
+struct _s3_compat_wzcsvc_EnumInterfaces_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EnumInterfaces *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EnumInterfaces_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EnumInterfaces *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EnumInterfaces_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EnumInterfaces_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EnumInterfaces(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EnumInterfaces_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_QueryInterface_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_QueryInterface *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_QueryInterface_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_QueryInterface *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_QueryInterface_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_QueryInterface_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_QueryInterface(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_QueryInterface_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_SetInterface_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_SetInterface *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_SetInterface_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_SetInterface *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_SetInterface_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_SetInterface_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_SetInterface(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_SetInterface_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_RefreshInterface_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_RefreshInterface *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_RefreshInterface_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_RefreshInterface *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_RefreshInterface_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_RefreshInterface_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_RefreshInterface(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_RefreshInterface_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_QueryContext_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_QueryContext *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_QueryContext_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_QueryContext *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_QueryContext_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_QueryContext_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_QueryContext(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_QueryContext_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_SetContext_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_SetContext *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_SetContext_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_SetContext *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_SetContext_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_SetContext_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_SetContext(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_SetContext_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolUIResponse_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolUIResponse *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolUIResponse_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolUIResponse *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolUIResponse_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolUIResponse_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolUIResponse(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolUIResponse_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolGetCustomAuthData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolGetCustomAuthData *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolGetCustomAuthData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolGetCustomAuthData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolGetCustomAuthData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolGetCustomAuthData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolGetCustomAuthData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolGetCustomAuthData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolSetCustomAuthData_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolSetCustomAuthData *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolSetCustomAuthData_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolSetCustomAuthData *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolSetCustomAuthData_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolSetCustomAuthData_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolSetCustomAuthData(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolSetCustomAuthData_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolGetInterfaceParams_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolGetInterfaceParams *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolGetInterfaceParams_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolGetInterfaceParams *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolGetInterfaceParams_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolGetInterfaceParams_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolGetInterfaceParams(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolGetInterfaceParams_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolSetInterfaceParams_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolSetInterfaceParams *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolSetInterfaceParams_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolSetInterfaceParams *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolSetInterfaceParams_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolSetInterfaceParams_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolSetInterfaceParams(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolSetInterfaceParams_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolReAuthenticateInterface_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolReAuthenticateInterface *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolReAuthenticateInterface_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolReAuthenticateInterface *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolReAuthenticateInterface_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolReAuthenticateInterface_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolReAuthenticateInterface(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolReAuthenticateInterface_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EapolQueryInterfaceState_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EapolQueryInterfaceState *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EapolQueryInterfaceState_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EapolQueryInterfaceState *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EapolQueryInterfaceState_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EapolQueryInterfaceState_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EapolQueryInterfaceState(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EapolQueryInterfaceState_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_OpenWZCDbLogSession_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_OpenWZCDbLogSession *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_OpenWZCDbLogSession_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_OpenWZCDbLogSession *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_OpenWZCDbLogSession_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_OpenWZCDbLogSession_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_OpenWZCDbLogSession(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_OpenWZCDbLogSession_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_CloseWZCDbLogSession_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_CloseWZCDbLogSession *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_CloseWZCDbLogSession_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_CloseWZCDbLogSession *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_CloseWZCDbLogSession_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_CloseWZCDbLogSession_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_CloseWZCDbLogSession(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_CloseWZCDbLogSession_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_EnumWZCDbLogRecords_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_EnumWZCDbLogRecords *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_EnumWZCDbLogRecords_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_EnumWZCDbLogRecords *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_EnumWZCDbLogRecords_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_EnumWZCDbLogRecords_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_EnumWZCDbLogRecords(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_EnumWZCDbLogRecords_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_FlushWZCdbLog_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_FlushWZCdbLog *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_FlushWZCdbLog_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_FlushWZCdbLog *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_FlushWZCdbLog_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_FlushWZCdbLog_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_FlushWZCdbLog(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_FlushWZCdbLog_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+struct _s3_compat_wzcsvc_GetWZCDbLogRecord_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct wzcsvc_GetWZCDbLogRecord *r;
+};
+
+static struct tevent_req *_s3_compat_wzcsvc_GetWZCDbLogRecord_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct wzcsvc_GetWZCDbLogRecord *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_wzcsvc_GetWZCDbLogRecord_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_wzcsvc_GetWZCDbLogRecord_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _wzcsvc_GetWZCDbLogRecord(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_wzcsvc_GetWZCDbLogRecord_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_wzcsvc_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EnumInterfaces_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EnumInterfaces_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_QueryInterface_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_QueryInterface_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_SetInterface_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_SetInterface_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_RefreshInterface_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_RefreshInterface_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_QueryContext_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_QueryContext_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_SetContext_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_SetContext_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolUIResponse_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolUIResponse_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolGetCustomAuthData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolGetCustomAuthData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolSetCustomAuthData_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolSetCustomAuthData_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolGetInterfaceParams_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolGetInterfaceParams_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolSetInterfaceParams_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolSetInterfaceParams_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolReAuthenticateInterface_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolReAuthenticateInterface_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EapolQueryInterfaceState_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EapolQueryInterfaceState_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_OpenWZCDbLogSession_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_OpenWZCDbLogSession_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_CloseWZCDbLogSession_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_CloseWZCDbLogSession_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_EnumWZCDbLogRecords_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_EnumWZCDbLogRecords_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_FlushWZCdbLog_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_FlushWZCdbLog_recv,
+       },
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_wzcsvc_GetWZCDbLogRecord_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_wzcsvc_GetWZCDbLogRecord_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_wzcsvc_epv[] = {
+       .name = "_s3_compat_wzcsvc",
+       .table = &ndr_table_wzcsvc,
+       .num_fns = 18,
+       .fns = _s3_compat_wzcsvc_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_wzcsvc(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_wzcsvc.h b/bin/default/librpc/gen_ndr/s3compat_wzcsvc.h
new file mode 100644 (file)
index 0000000..d616c84
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_wzcsvc.h"
+#ifndef __S3COMPAT_WZCSVC__
+#define __S3COMPAT_WZCSVC__
+void _wzcsvc_EnumInterfaces(struct pipes_struct *p, struct wzcsvc_EnumInterfaces *r);
+void _wzcsvc_QueryInterface(struct pipes_struct *p, struct wzcsvc_QueryInterface *r);
+void _wzcsvc_SetInterface(struct pipes_struct *p, struct wzcsvc_SetInterface *r);
+void _wzcsvc_RefreshInterface(struct pipes_struct *p, struct wzcsvc_RefreshInterface *r);
+void _wzcsvc_QueryContext(struct pipes_struct *p, struct wzcsvc_QueryContext *r);
+void _wzcsvc_SetContext(struct pipes_struct *p, struct wzcsvc_SetContext *r);
+void _wzcsvc_EapolUIResponse(struct pipes_struct *p, struct wzcsvc_EapolUIResponse *r);
+void _wzcsvc_EapolGetCustomAuthData(struct pipes_struct *p, struct wzcsvc_EapolGetCustomAuthData *r);
+void _wzcsvc_EapolSetCustomAuthData(struct pipes_struct *p, struct wzcsvc_EapolSetCustomAuthData *r);
+void _wzcsvc_EapolGetInterfaceParams(struct pipes_struct *p, struct wzcsvc_EapolGetInterfaceParams *r);
+void _wzcsvc_EapolSetInterfaceParams(struct pipes_struct *p, struct wzcsvc_EapolSetInterfaceParams *r);
+void _wzcsvc_EapolReAuthenticateInterface(struct pipes_struct *p, struct wzcsvc_EapolReAuthenticateInterface *r);
+void _wzcsvc_EapolQueryInterfaceState(struct pipes_struct *p, struct wzcsvc_EapolQueryInterfaceState *r);
+void _wzcsvc_OpenWZCDbLogSession(struct pipes_struct *p, struct wzcsvc_OpenWZCDbLogSession *r);
+void _wzcsvc_CloseWZCDbLogSession(struct pipes_struct *p, struct wzcsvc_CloseWZCDbLogSession *r);
+void _wzcsvc_EnumWZCDbLogRecords(struct pipes_struct *p, struct wzcsvc_EnumWZCDbLogRecords *r);
+void _wzcsvc_FlushWZCdbLog(struct pipes_struct *p, struct wzcsvc_FlushWZCdbLog *r);
+void _wzcsvc_GetWZCDbLogRecord(struct pipes_struct *p, struct wzcsvc_GetWZCDbLogRecord *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_wzcsvc(struct dcerpc_server *server);
+#endif /* __S3COMPAT_WZCSVC__ */
diff --git a/bin/default/librpc/gen_ndr/s3compat_xattr.c b/bin/default/librpc/gen_ndr/s3compat_xattr.c
new file mode 100644 (file)
index 0000000..2afa129
--- /dev/null
@@ -0,0 +1,72 @@
+#include "includes.h"
+#include "ntdomain.h"
+#include "bin/default/librpc/gen_ndr/s3compat_xattr.h"
+
+struct _s3_compat_xattr_parse_DOSATTRIB_state {
+       struct tevent_context *ev;
+       struct dcerpc_call_handle *call;
+       struct xattr_parse_DOSATTRIB *r;
+};
+
+static struct tevent_req *_s3_compat_xattr_parse_DOSATTRIB_send(TALLOC_CTX *mem_ctx,
+                                       struct tevent_context *ev,
+                                       struct dcerpc_call_handle *call,
+                                       struct xattr_parse_DOSATTRIB *r)
+{
+       struct tevent_req *req
+       struct _s3_compat_xattr_parse_DOSATTRIB_state *state;
+       struct pipes_struct *p;
+
+       req = tevent_req_create(mem_ctx, &state,
+                               struct _s3_compat_xattr_parse_DOSATTRIB_state);
+       if (req == NULL) {
+               return NULL;
+       }
+       state->ev = ev;
+       state->call = call;
+       state->r = r;
+
+       p = dcerpc_call_handle_get_pipes_struct(call);
+
+       _xattr_parse_DOSATTRIB(p, r);
+
+       if (p->fault_state) {
+               NTSTATUS status = dcerpc_fault_to_nt_status(p->fault_state);
+               tevent_req_nterror(status);
+               return tevent_req_post(req, ev);
+       }
+
+       tevent_req_done(req);
+       return tevent_req_post(req, ev);
+}
+
+static NTSTATUS _s3_compat_xattr_parse_DOSATTRIB_recv(struct tevent_req *req)
+{
+       return tevent_req_simple_recv_ntstatus(req);
+}
+
+
+static const struct dcerpc_call_entry_point_fns struct _s3_compat_xattr_fns[] = {
+       {
+               .send_fn = (dcerpc_call_entry_point_send_fn_t)
+                       _s3_compat_xattr_parse_DOSATTRIB_send,
+               .recv_fn = (dcerpc_call_entry_point_recv_fn_t)
+                       _s3_compat_xattr_parse_DOSATTRIB_recv,
+       },
+       {
+               .send_fn = NULL,
+               .recv_fn = NULL,
+       },
+};
+
+static const struct dcerpc_call_entry_point_vector _s3_compat_xattr_epv[] = {
+       .name = "_s3_compat_xattr",
+       .table = &ndr_table_xattr,
+       .num_fns = 1,
+       .fns = _s3_compat_xattr_fns,
+};
+
+NTSTATUS dcerpc_server_setup_s3compat_xattr(struct dcerpc_server *server)
+{
+       return NT_STATUS_NOT_IMPLEMENTED;
+}
diff --git a/bin/default/librpc/gen_ndr/s3compat_xattr.h b/bin/default/librpc/gen_ndr/s3compat_xattr.h
new file mode 100644 (file)
index 0000000..88cbe1e
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * server auto-generated by pidl. DO NOT MODIFY!
+ */
+
+#include "bin/default/librpc/gen_ndr/ndr_xattr.h"
+#ifndef __S3COMPAT_XATTR__
+#define __S3COMPAT_XATTR__
+void _xattr_parse_DOSATTRIB(struct pipes_struct *p, struct xattr_parse_DOSATTRIB *r);
+struct dcerpc_server;
+NTSTATUS dcerpc_server_setup_s3compat_xattr(struct dcerpc_server *server);
+#endif /* __S3COMPAT_XATTR__ */