From 3abe59cb2df9d2394d37f68c413d9098fa0a368f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 30 Jul 2009 18:56:42 +0200 Subject: librpc: rerun "make idl" metze --- librpc/gen_ndr/cli_srvsvc.c | 8467 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 7509 insertions(+), 958 deletions(-) (limited to 'librpc/gen_ndr/cli_srvsvc.c') diff --git a/librpc/gen_ndr/cli_srvsvc.c b/librpc/gen_ndr/cli_srvsvc.c index d372510135..652fd9e0ec 100644 --- a/librpc/gen_ndr/cli_srvsvc.c +++ b/librpc/gen_ndr/cli_srvsvc.c @@ -6,6 +6,139 @@ #include "includes.h" #include "../librpc/gen_ndr/cli_srvsvc.h" +struct rpccli_srvsvc_NetCharDevEnum_state { + struct srvsvc_NetCharDevEnum orig; + struct srvsvc_NetCharDevEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetCharDevInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevEnum, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetCharDevEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevEnum, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, @@ -61,6 +194,131 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } +struct rpccli_srvsvc_NetCharDevGetInfo_state { + struct srvsvc_NetCharDevGetInfo orig; + struct srvsvc_NetCharDevGetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevGetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevGetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_device_name /* [in] [charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetCharDevInfo *_info /* [out] [ref,switch_is(level)] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevGetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevGetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.device_name = _device_name; + state->orig.in.level = _level; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevGetInfo, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetCharDevGetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVGETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevGetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevGetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevGetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevGetInfo, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevGetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevGetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, @@ -110,6 +368,122 @@ NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } +struct rpccli_srvsvc_NetCharDevControl_state { + struct srvsvc_NetCharDevControl orig; + struct srvsvc_NetCharDevControl tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevControl_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevControl_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_device_name /* [in] [charset(UTF16)] */, + uint32_t _opcode /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevControl_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevControl_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.device_name = _device_name; + state->orig.in.opcode = _opcode; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevControl, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVCONTROL, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevControl_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevControl_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevControl_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevControl_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevControl, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevControl_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevControl_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevControl_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, @@ -157,6 +531,141 @@ NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } +struct rpccli_srvsvc_NetCharDevQEnum_state { + struct srvsvc_NetCharDevQEnum orig; + struct srvsvc_NetCharDevQEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevQEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevQEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_user /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetCharDevQInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevQEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevQEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.user = _user; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQEnum, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetCharDevQEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVQENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevQEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevQEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevQEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQEnum, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevQEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevQEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, @@ -214,84 +723,159 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *queue_name /* [in] [charset(UTF16)] */, - const char *user /* [in] [charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetCharDevQInfo *info /* [out] [ref,switch_is(level)] */, - WERROR *werror) +struct rpccli_srvsvc_NetCharDevQGetInfo_state { + struct srvsvc_NetCharDevQGetInfo orig; + struct srvsvc_NetCharDevQGetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevQGetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevQGetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_queue_name /* [in] [charset(UTF16)] */, + const char *_user /* [in] [charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetCharDevQInfo *_info /* [out] [ref,switch_is(level)] */) { - struct srvsvc_NetCharDevQGetInfo r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevQGetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevQGetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.queue_name = queue_name; - r.in.user = user; - r.in.level = level; + state->orig.in.server_unc = _server_unc; + state->orig.in.queue_name = _queue_name; + state->orig.in.user = _user; + state->orig.in.level = _level; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQGetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQGetInfo, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETCHARDEVQGETINFO, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetCharDevQGetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVQGETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevQGetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevQGetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevQGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQGetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevQGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQGetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *info = *r.out.info; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, +NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, const char *queue_name /* [in] [charset(UTF16)] */, + const char *user /* [in] [charset(UTF16)] */, uint32_t level /* [in] */, - union srvsvc_NetCharDevQInfo info /* [in] [switch_is(level)] */, - uint32_t *parm_error /* [in,out] [unique] */, + union srvsvc_NetCharDevQInfo *info /* [out] [ref,switch_is(level)] */, WERROR *werror) { - struct srvsvc_NetCharDevQSetInfo r; + struct srvsvc_NetCharDevQGetInfo r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; r.in.queue_name = queue_name; + r.in.user = user; r.in.level = level; - r.in.info = info; - r.in.parm_error = parm_error; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQGetInfo, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETCHARDEVQSETINFO, + NDR_SRVSVC_NETCHARDEVQGETINFO, &r); if (!NT_STATUS_IS_OK(status)) { @@ -299,7 +883,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -307,9 +891,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, } /* Return variables */ - if (parm_error && r.out.parm_error) { - *parm_error = *r.out.parm_error; - } + *info = *r.out.info; /* Return result */ if (werror) { @@ -319,74 +901,163 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *queue_name /* [in] [charset(UTF16)] */, - WERROR *werror) +struct rpccli_srvsvc_NetCharDevQSetInfo_state { + struct srvsvc_NetCharDevQSetInfo orig; + struct srvsvc_NetCharDevQSetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevQSetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevQSetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_queue_name /* [in] [charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetCharDevQInfo _info /* [in] [switch_is(level)] */, + uint32_t *_parm_error /* [in,out] [unique] */) { - struct srvsvc_NetCharDevQPurge r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevQSetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevQSetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.queue_name = queue_name; + state->orig.in.server_unc = _server_unc; + state->orig.in.queue_name = _queue_name; + state->orig.in.level = _level; + state->orig.in.info = _info; + state->orig.in.parm_error = _parm_error; + + /* Out parameters */ + state->orig.out.parm_error = _parm_error; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurge, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETCHARDEVQPURGE, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetCharDevQSetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVQSETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevQSetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevQSetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevQSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQSetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + if (state->orig.out.parm_error && state->tmp.out.parm_error) { + *state->orig.out.parm_error = *state->tmp.out.parm_error; } + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevQSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQSetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *queue_name /* [in] [charset(UTF16)] */, - const char *computer_name /* [in] [charset(UTF16)] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *queue_name /* [in] [charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetCharDevQInfo info /* [in] [switch_is(level)] */, + uint32_t *parm_error /* [in,out] [unique] */, + WERROR *werror) { - struct srvsvc_NetCharDevQPurgeSelf r; + struct srvsvc_NetCharDevQSetInfo r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; r.in.queue_name = queue_name; - r.in.computer_name = computer_name; + r.in.level = level; + r.in.info = info; + r.in.parm_error = parm_error; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETCHARDEVQPURGESELF, + NDR_SRVSVC_NETCHARDEVQSETINFO, &r); if (!NT_STATUS_IS_OK(status)) { @@ -394,7 +1065,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -402,6 +1073,9 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, } /* Return variables */ + if (parm_error && r.out.parm_error) { + *parm_error = *r.out.parm_error; + } /* Return result */ if (werror) { @@ -411,93 +1085,141 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *path /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetConnInfoCtr *info_ctr /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NetCharDevQPurge_state { + struct srvsvc_NetCharDevQPurge orig; + struct srvsvc_NetCharDevQPurge tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevQPurge_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevQPurge_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_queue_name /* [in] [charset(UTF16)] */) { - struct srvsvc_NetConnEnum r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevQPurge_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevQPurge_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.path = path; - r.in.info_ctr = info_ctr; - r.in.max_buffer = max_buffer; - r.in.resume_handle = resume_handle; + state->orig.in.server_unc = _server_unc; + state->orig.in.queue_name = _queue_name; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurge, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETCONNENUM, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVQPURGE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevQPurge_done, req); + return req; +} +static void rpccli_srvsvc_NetCharDevQPurge_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevQPurge_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQPurge_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevQPurge_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevQPurge_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQPurge_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *info_ctr = *r.out.info_ctr; - *totalentries = *r.out.totalentries; - if (resume_handle && r.out.resume_handle) { - *resume_handle = *r.out.resume_handle; - } + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *path /* [in] [unique,charset(UTF16)] */, - const char *user /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetFileInfoCtr *info_ctr /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *queue_name /* [in] [charset(UTF16)] */, + WERROR *werror) { - struct srvsvc_NetFileEnum r; + struct srvsvc_NetCharDevQPurge r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.path = path; - r.in.user = user; - r.in.info_ctr = info_ctr; - r.in.max_buffer = max_buffer; - r.in.resume_handle = resume_handle; + r.in.queue_name = queue_name; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurge, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETFILEENUM, + NDR_SRVSVC_NETCHARDEVQPURGE, &r); if (!NT_STATUS_IS_OK(status)) { @@ -505,7 +1227,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -513,11 +1235,6 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, } /* Return variables */ - *info_ctr = *r.out.info_ctr; - *totalentries = *r.out.totalentries; - if (resume_handle && r.out.resume_handle) { - *resume_handle = *r.out.resume_handle; - } /* Return result */ if (werror) { @@ -527,76 +1244,145 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t fid /* [in] */, - uint32_t level /* [in] */, - union srvsvc_NetFileInfo *info /* [out] [ref,switch_is(level)] */, - WERROR *werror) +struct rpccli_srvsvc_NetCharDevQPurgeSelf_state { + struct srvsvc_NetCharDevQPurgeSelf orig; + struct srvsvc_NetCharDevQPurgeSelf tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetCharDevQPurgeSelf_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetCharDevQPurgeSelf_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_queue_name /* [in] [charset(UTF16)] */, + const char *_computer_name /* [in] [charset(UTF16)] */) { - struct srvsvc_NetFileGetInfo r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetCharDevQPurgeSelf_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetCharDevQPurgeSelf_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.fid = fid; - r.in.level = level; + state->orig.in.server_unc = _server_unc; + state->orig.in.queue_name = _queue_name; + state->orig.in.computer_name = _computer_name; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetFileGetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurgeSelf, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETFILEGETINFO, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCHARDEVQPURGESELF, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetCharDevQPurgeSelf_done, req); + return req; +} + +static void rpccli_srvsvc_NetCharDevQPurgeSelf_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetCharDevQPurgeSelf_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQPurgeSelf_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetCharDevQPurgeSelf_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetCharDevQPurgeSelf_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *info = *r.out.info; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t fid /* [in] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *queue_name /* [in] [charset(UTF16)] */, + const char *computer_name /* [in] [charset(UTF16)] */, + WERROR *werror) { - struct srvsvc_NetFileClose r; + struct srvsvc_NetCharDevQPurgeSelf r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.fid = fid; + r.in.queue_name = queue_name; + r.in.computer_name = computer_name; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetFileClose, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETFILECLOSE, + NDR_SRVSVC_NETCHARDEVQPURGESELF, &r); if (!NT_STATUS_IS_OK(status)) { @@ -604,7 +1390,7 @@ NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -621,88 +1407,169 @@ NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *client /* [in] [unique,charset(UTF16)] */, - const char *user /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetSessInfoCtr *info_ctr /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NetConnEnum_state { + struct srvsvc_NetConnEnum orig; + struct srvsvc_NetConnEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetConnEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetConnEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_path /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetConnInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) { - struct srvsvc_NetSessEnum r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetConnEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetConnEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.client = client; - r.in.user = user; - r.in.info_ctr = info_ctr; - r.in.max_buffer = max_buffer; - r.in.resume_handle = resume_handle; + state->orig.in.server_unc = _server_unc; + state->orig.in.path = _path; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; - if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &r); + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSESSENUM, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetConnEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETCONNENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetConnEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetConnEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetConnEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetConnEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetConnEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetConnEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetConnEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *info_ctr = *r.out.info_ctr; - *totalentries = *r.out.totalentries; - if (resume_handle && r.out.resume_handle) { - *resume_handle = *r.out.resume_handle; - } + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *client /* [in] [unique,charset(UTF16)] */, - const char *user /* [in] [unique,charset(UTF16)] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *path /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetConnInfoCtr *info_ctr /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) { - struct srvsvc_NetSessDel r; + struct srvsvc_NetConnEnum r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.client = client; - r.in.user = user; + r.in.path = path; + r.in.info_ctr = info_ctr; + r.in.max_buffer = max_buffer; + r.in.resume_handle = resume_handle; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSessDel, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSESSDEL, + NDR_SRVSVC_NETCONNENUM, &r); if (!NT_STATUS_IS_OK(status)) { @@ -710,7 +1577,7 @@ NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -718,6 +1585,11 @@ NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, } /* Return variables */ + *info_ctr = *r.out.info_ctr; + *totalentries = *r.out.totalentries; + if (resume_handle && r.out.resume_handle) { + *resume_handle = *r.out.resume_handle; + } /* Return result */ if (werror) { @@ -727,84 +1599,173 @@ NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetShareInfo *info /* [in] [ref,switch_is(level)] */, - uint32_t *parm_error /* [in,out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NetFileEnum_state { + struct srvsvc_NetFileEnum orig; + struct srvsvc_NetFileEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetFileEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetFileEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_path /* [in] [unique,charset(UTF16)] */, + const char *_user /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetFileInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) { - struct srvsvc_NetShareAdd r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetFileEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetFileEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.level = level; - r.in.info = info; - r.in.parm_error = parm_error; + state->orig.in.server_unc = _server_unc; + state->orig.in.path = _path; + state->orig.in.user = _user; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREADD, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetFileEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETFILEENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetFileEnum_done, req); + return req; +} +static void rpccli_srvsvc_NetFileEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetFileEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; } + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetFileEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetFileEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - if (parm_error && r.out.parm_error) { - *parm_error = *r.out.parm_error; - } + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetShareInfoCtr *info_ctr /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *path /* [in] [unique,charset(UTF16)] */, + const char *user /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetFileInfoCtr *info_ctr /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) { - struct srvsvc_NetShareEnumAll r; + struct srvsvc_NetFileEnum r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; + r.in.path = path; + r.in.user = user; r.in.info_ctr = info_ctr; r.in.max_buffer = max_buffer; r.in.resume_handle = resume_handle; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREENUMALL, + NDR_SRVSVC_NETFILEENUM, &r); if (!NT_STATUS_IS_OK(status)) { @@ -812,7 +1773,7 @@ NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -834,82 +1795,155 @@ NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share_name /* [in] [charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetShareInfo *info /* [out] [ref,switch_is(level)] */, - WERROR *werror) +struct rpccli_srvsvc_NetFileGetInfo_state { + struct srvsvc_NetFileGetInfo orig; + struct srvsvc_NetFileGetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetFileGetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetFileGetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _fid /* [in] */, + uint32_t _level /* [in] */, + union srvsvc_NetFileInfo *_info /* [out] [ref,switch_is(level)] */) { - struct srvsvc_NetShareGetInfo r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetFileGetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetFileGetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.share_name = share_name; - r.in.level = level; + state->orig.in.server_unc = _server_unc; + state->orig.in.fid = _fid; + state->orig.in.level = _level; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareGetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileGetInfo, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREGETINFO, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetFileGetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETFILEGETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetFileGetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetFileGetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetFileGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileGetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetFileGetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetFileGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileGetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *info = *r.out.info; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share_name /* [in] [charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetShareInfo *info /* [in] [ref,switch_is(level)] */, - uint32_t *parm_error /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t fid /* [in] */, + uint32_t level /* [in] */, + union srvsvc_NetFileInfo *info /* [out] [ref,switch_is(level)] */, + WERROR *werror) { - struct srvsvc_NetShareSetInfo r; + struct srvsvc_NetFileGetInfo r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.share_name = share_name; + r.in.fid = fid; r.in.level = level; - r.in.info = info; - r.in.parm_error = parm_error; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileGetInfo, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSHARESETINFO, + NDR_SRVSVC_NETFILEGETINFO, &r); if (!NT_STATUS_IS_OK(status)) { @@ -917,7 +1951,7 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -925,9 +1959,7 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, } /* Return variables */ - if (parm_error && r.out.parm_error) { - *parm_error = *r.out.parm_error; - } + *info = *r.out.info; /* Return result */ if (werror) { @@ -937,76 +1969,141 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share_name /* [in] [charset(UTF16)] */, - uint32_t reserved /* [in] */, - WERROR *werror) +struct rpccli_srvsvc_NetFileClose_state { + struct srvsvc_NetFileClose orig; + struct srvsvc_NetFileClose tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetFileClose_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetFileClose_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _fid /* [in] */) { - struct srvsvc_NetShareDel r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetFileClose_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetFileClose_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.share_name = share_name; - r.in.reserved = reserved; + state->orig.in.server_unc = _server_unc; + state->orig.in.fid = _fid; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareDel, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileClose, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREDEL, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETFILECLOSE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetFileClose_done, req); + return req; +} + +static void rpccli_srvsvc_NetFileClose_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetFileClose_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileClose_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetFileClose_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetFileClose_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetFileClose_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share_name /* [in] [charset(UTF16)] */, - uint32_t reserved /* [in] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t fid /* [in] */, + WERROR *werror) { - struct srvsvc_NetShareDelSticky r; + struct srvsvc_NetFileClose r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.share_name = share_name; - r.in.reserved = reserved; + r.in.fid = fid; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelSticky, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetFileClose, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREDELSTICKY, + NDR_SRVSVC_NETFILECLOSE, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1014,7 +2111,7 @@ NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1031,75 +2128,173 @@ NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *device_name /* [in] [charset(UTF16)] */, - enum srvsvc_ShareType *type /* [out] [ref] */, - WERROR *werror) +struct rpccli_srvsvc_NetSessEnum_state { + struct srvsvc_NetSessEnum orig; + struct srvsvc_NetSessEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSessEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSessEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_client /* [in] [unique,charset(UTF16)] */, + const char *_user /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetSessInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) { - struct srvsvc_NetShareCheck r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetSessEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSessEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.device_name = device_name; + state->orig.in.server_unc = _server_unc; + state->orig.in.client = _client; + state->orig.in.user = _user; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareCheck, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSHARECHECK, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetSessEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSESSENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSessEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetSessEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSessEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSessEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSessEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSessEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSessEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *type = *r.out.type; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetSrvInfo *info /* [out] [ref,switch_is(level)] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *client /* [in] [unique,charset(UTF16)] */, + const char *user /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetSessInfoCtr *info_ctr /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) { - struct srvsvc_NetSrvGetInfo r; + struct srvsvc_NetSessEnum r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.level = level; + r.in.client = client; + r.in.user = user; + r.in.info_ctr = info_ctr; + r.in.max_buffer = max_buffer; + r.in.resume_handle = resume_handle; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSrvGetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSRVGETINFO, + NDR_SRVSVC_NETSESSENUM, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1107,7 +2302,7 @@ NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1115,7 +2310,11 @@ NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, } /* Return variables */ - *info = *r.out.info; + *info_ctr = *r.out.info_ctr; + *totalentries = *r.out.totalentries; + if (resume_handle && r.out.resume_handle) { + *resume_handle = *r.out.resume_handle; + } /* Return result */ if (werror) { @@ -1125,31 +2324,145 @@ NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetSrvInfo *info /* [in] [ref,switch_is(level)] */, - uint32_t *parm_error /* [in,out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NetSessDel_state { + struct srvsvc_NetSessDel orig; + struct srvsvc_NetSessDel tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSessDel_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSessDel_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_client /* [in] [unique,charset(UTF16)] */, + const char *_user /* [in] [unique,charset(UTF16)] */) { - struct srvsvc_NetSrvSetInfo r; + struct tevent_req *req; + struct rpccli_srvsvc_NetSessDel_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSessDel_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.client = _client; + state->orig.in.user = _user; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSessDel, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSESSDEL, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSessDel_done, req); + return req; +} + +static void rpccli_srvsvc_NetSessDel_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSessDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSessDel_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSessDel_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSessDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSessDel_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *client /* [in] [unique,charset(UTF16)] */, + const char *user /* [in] [unique,charset(UTF16)] */, + WERROR *werror) +{ + struct srvsvc_NetSessDel r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.level = level; - r.in.info = info; - r.in.parm_error = parm_error; + r.in.client = client; + r.in.user = user; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetSessDel, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSRVSETINFO, + NDR_SRVSVC_NETSESSDEL, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1157,7 +2470,7 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1165,9 +2478,6 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, } /* Return variables */ - if (parm_error && r.out.parm_error) { - *parm_error = *r.out.parm_error; - } /* Return result */ if (werror) { @@ -1177,89 +2487,4325 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - struct srvsvc_NetDiskInfo *info /* [in,out] [ref] */, - uint32_t maxlen /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NetShareAdd_state { + struct srvsvc_NetShareAdd orig; + struct srvsvc_NetShareAdd tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareAdd_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareAdd_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetShareInfo *_info /* [in] [ref,switch_is(level)] */, + uint32_t *_parm_error /* [in,out] [unique] */) { - struct srvsvc_NetDiskEnum r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetShareAdd_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareAdd_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.level = level; - r.in.info = info; - r.in.maxlen = maxlen; - r.in.resume_handle = resume_handle; + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info = _info; + state->orig.in.parm_error = _parm_error; + + /* Out parameters */ + state->orig.out.parm_error = _parm_error; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETDISKENUM, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareAdd_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREADD, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareAdd_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareAdd_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareAdd_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareAdd_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } - if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &r); + /* Copy out parameters */ + if (state->orig.out.parm_error && state->tmp.out.parm_error) { + *state->orig.out.parm_error = *state->tmp.out.parm_error; } - if (NT_STATUS_IS_ERR(status)) { - return status; + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &state->orig); } - /* Return variables */ - *info = *r.out.info; + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareAdd_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareAdd_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareAdd_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetShareInfo *info /* [in] [ref,switch_is(level)] */, + uint32_t *parm_error /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetShareAdd r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + r.in.info = info; + r.in.parm_error = parm_error; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREADD, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + if (parm_error && r.out.parm_error) { + *parm_error = *r.out.parm_error; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareEnumAll_state { + struct srvsvc_NetShareEnumAll orig; + struct srvsvc_NetShareEnumAll tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareEnumAll_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareEnumAll_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetShareInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareEnumAll_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareEnumAll_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareEnumAll_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREENUMALL, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareEnumAll_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareEnumAll_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareEnumAll_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareEnumAll_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareEnumAll_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareEnumAll_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareEnumAll_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetShareInfoCtr *info_ctr /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetShareEnumAll r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.info_ctr = info_ctr; + r.in.max_buffer = max_buffer; + r.in.resume_handle = resume_handle; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREENUMALL, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info_ctr = *r.out.info_ctr; + *totalentries = *r.out.totalentries; + if (resume_handle && r.out.resume_handle) { + *resume_handle = *r.out.resume_handle; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareGetInfo_state { + struct srvsvc_NetShareGetInfo orig; + struct srvsvc_NetShareGetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareGetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareGetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share_name /* [in] [charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetShareInfo *_info /* [out] [ref,switch_is(level)] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareGetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareGetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.share_name = _share_name; + state->orig.in.level = _level; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareGetInfo, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareGetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREGETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareGetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareGetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareGetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareGetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareGetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share_name /* [in] [charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetShareInfo *info /* [out] [ref,switch_is(level)] */, + WERROR *werror) +{ + struct srvsvc_NetShareGetInfo r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.share_name = share_name; + r.in.level = level; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareGetInfo, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREGETINFO, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info = *r.out.info; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareSetInfo_state { + struct srvsvc_NetShareSetInfo orig; + struct srvsvc_NetShareSetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareSetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareSetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share_name /* [in] [charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetShareInfo *_info /* [in] [ref,switch_is(level)] */, + uint32_t *_parm_error /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareSetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareSetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.share_name = _share_name; + state->orig.in.level = _level; + state->orig.in.info = _info; + state->orig.in.parm_error = _parm_error; + + /* Out parameters */ + state->orig.out.parm_error = _parm_error; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareSetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHARESETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareSetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareSetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareSetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + if (state->orig.out.parm_error && state->tmp.out.parm_error) { + *state->orig.out.parm_error = *state->tmp.out.parm_error; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareSetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareSetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share_name /* [in] [charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetShareInfo *info /* [in] [ref,switch_is(level)] */, + uint32_t *parm_error /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetShareSetInfo r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.share_name = share_name; + r.in.level = level; + r.in.info = info; + r.in.parm_error = parm_error; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHARESETINFO, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + if (parm_error && r.out.parm_error) { + *parm_error = *r.out.parm_error; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareDel_state { + struct srvsvc_NetShareDel orig; + struct srvsvc_NetShareDel tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareDel_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareDel_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share_name /* [in] [charset(UTF16)] */, + uint32_t _reserved /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareDel_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareDel_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.share_name = _share_name; + state->orig.in.reserved = _reserved; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDel, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDEL, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareDel_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareDel_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDel_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareDel_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDel_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share_name /* [in] [charset(UTF16)] */, + uint32_t reserved /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetShareDel r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.share_name = share_name; + r.in.reserved = reserved; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDel, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDEL, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareDelSticky_state { + struct srvsvc_NetShareDelSticky orig; + struct srvsvc_NetShareDelSticky tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareDelSticky_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareDelSticky_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share_name /* [in] [charset(UTF16)] */, + uint32_t _reserved /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareDelSticky_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareDelSticky_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.share_name = _share_name; + state->orig.in.reserved = _reserved; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelSticky, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDELSTICKY, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareDelSticky_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareDelSticky_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareDelSticky_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelSticky_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareDelSticky_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareDelSticky_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelSticky_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share_name /* [in] [charset(UTF16)] */, + uint32_t reserved /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetShareDelSticky r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.share_name = share_name; + r.in.reserved = reserved; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelSticky, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDELSTICKY, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareCheck_state { + struct srvsvc_NetShareCheck orig; + struct srvsvc_NetShareCheck tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareCheck_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareCheck_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_device_name /* [in] [charset(UTF16)] */, + enum srvsvc_ShareType *_type /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareCheck_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareCheck_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.device_name = _device_name; + + /* Out parameters */ + state->orig.out.type = _type; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareCheck, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareCheck_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHARECHECK, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareCheck_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareCheck_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareCheck_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareCheck_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.type = *state->tmp.out.type; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareCheck_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareCheck_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareCheck_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *device_name /* [in] [charset(UTF16)] */, + enum srvsvc_ShareType *type /* [out] [ref] */, + WERROR *werror) +{ + struct srvsvc_NetShareCheck r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.device_name = device_name; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareCheck, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHARECHECK, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *type = *r.out.type; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetSrvGetInfo_state { + struct srvsvc_NetSrvGetInfo orig; + struct srvsvc_NetSrvGetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSrvGetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSrvGetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetSrvInfo *_info /* [out] [ref,switch_is(level)] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetSrvGetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSrvGetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSrvGetInfo, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetSrvGetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSRVGETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSrvGetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetSrvGetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSrvGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSrvGetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSrvGetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSrvGetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSrvGetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetSrvInfo *info /* [out] [ref,switch_is(level)] */, + WERROR *werror) +{ + struct srvsvc_NetSrvGetInfo r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSrvGetInfo, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSRVGETINFO, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info = *r.out.info; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetSrvSetInfo_state { + struct srvsvc_NetSrvSetInfo orig; + struct srvsvc_NetSrvSetInfo tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSrvSetInfo_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSrvSetInfo_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetSrvInfo *_info /* [in] [ref,switch_is(level)] */, + uint32_t *_parm_error /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetSrvSetInfo_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSrvSetInfo_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info = _info; + state->orig.in.parm_error = _parm_error; + + /* Out parameters */ + state->orig.out.parm_error = _parm_error; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetSrvSetInfo_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSRVSETINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSrvSetInfo_done, req); + return req; +} + +static void rpccli_srvsvc_NetSrvSetInfo_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSrvSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSrvSetInfo_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + if (state->orig.out.parm_error && state->tmp.out.parm_error) { + *state->orig.out.parm_error = *state->tmp.out.parm_error; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSrvSetInfo_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSrvSetInfo_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSrvSetInfo_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetSrvInfo *info /* [in] [ref,switch_is(level)] */, + uint32_t *parm_error /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetSrvSetInfo r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + r.in.info = info; + r.in.parm_error = parm_error; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSRVSETINFO, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + if (parm_error && r.out.parm_error) { + *parm_error = *r.out.parm_error; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetDiskEnum_state { + struct srvsvc_NetDiskEnum orig; + struct srvsvc_NetDiskEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetDiskEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetDiskEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + struct srvsvc_NetDiskInfo *_info /* [in,out] [ref] */, + uint32_t _maxlen /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetDiskEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetDiskEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info = _info; + state->orig.in.maxlen = _maxlen; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info = _info; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetDiskEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETDISKENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetDiskEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetDiskEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetDiskEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetDiskEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetDiskEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetDiskEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetDiskEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + struct srvsvc_NetDiskInfo *info /* [in,out] [ref] */, + uint32_t maxlen /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetDiskEnum r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + r.in.info = info; + r.in.maxlen = maxlen; + r.in.resume_handle = resume_handle; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETDISKENUM, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info = *r.out.info; + *totalentries = *r.out.totalentries; + if (resume_handle && r.out.resume_handle) { + *resume_handle = *r.out.resume_handle; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetServerStatisticsGet_state { + struct srvsvc_NetServerStatisticsGet orig; + struct srvsvc_NetServerStatisticsGet tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetServerStatisticsGet_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetServerStatisticsGet_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_service /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + uint32_t _options /* [in] */, + struct srvsvc_Statistics **_stats /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetServerStatisticsGet_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetServerStatisticsGet_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.service = _service; + state->orig.in.level = _level; + state->orig.in.options = _options; + + /* Out parameters */ + state->orig.out.stats = _stats; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetServerStatisticsGet, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetServerStatisticsGet_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSERVERSTATISTICSGET, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetServerStatisticsGet_done, req); + return req; +} + +static void rpccli_srvsvc_NetServerStatisticsGet_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetServerStatisticsGet_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerStatisticsGet_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.stats = *state->tmp.out.stats; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetServerStatisticsGet_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetServerStatisticsGet_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerStatisticsGet_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *service /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + uint32_t options /* [in] */, + struct srvsvc_Statistics **stats /* [out] [ref] */, + WERROR *werror) +{ + struct srvsvc_NetServerStatisticsGet r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.service = service; + r.in.level = level; + r.in.options = options; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetServerStatisticsGet, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSERVERSTATISTICSGET, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *stats = *r.out.stats; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetTransportAdd_state { + struct srvsvc_NetTransportAdd orig; + struct srvsvc_NetTransportAdd tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetTransportAdd_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetTransportAdd_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetTransportInfo _info /* [in] [switch_is(level)] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetTransportAdd_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetTransportAdd_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info = _info; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportAdd, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTADD, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetTransportAdd_done, req); + return req; +} + +static void rpccli_srvsvc_NetTransportAdd_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetTransportAdd_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportAdd_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetTransportAdd_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetTransportAdd_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportAdd_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetTransportInfo info /* [in] [switch_is(level)] */, + WERROR *werror) +{ + struct srvsvc_NetTransportAdd r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + r.in.info = info; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportAdd, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTADD, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetTransportEnum_state { + struct srvsvc_NetTransportEnum orig; + struct srvsvc_NetTransportEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetTransportEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetTransportEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetTransportInfoCtr *_transports /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetTransportEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetTransportEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.transports = _transports; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.transports = _transports; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetTransportEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetTransportEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetTransportEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetTransportEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.transports = *state->tmp.out.transports; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetTransportEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetTransportEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetTransportInfoCtr *transports /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetTransportEnum r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.transports = transports; + r.in.max_buffer = max_buffer; + r.in.resume_handle = resume_handle; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTENUM, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *transports = *r.out.transports; + *totalentries = *r.out.totalentries; + if (resume_handle && r.out.resume_handle) { + *resume_handle = *r.out.resume_handle; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetTransportDel_state { + struct srvsvc_NetTransportDel orig; + struct srvsvc_NetTransportDel tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetTransportDel_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetTransportDel_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + struct srvsvc_NetTransportInfo0 *_info0 /* [in] [ref] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetTransportDel_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetTransportDel_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info0 = _info0; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTDEL, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetTransportDel_done, req); + return req; +} + +static void rpccli_srvsvc_NetTransportDel_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetTransportDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportDel_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetTransportDel_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetTransportDel_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetTransportDel_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + struct srvsvc_NetTransportInfo0 *info0 /* [in] [ref] */, + WERROR *werror) +{ + struct srvsvc_NetTransportDel r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.level = level; + r.in.info0 = info0; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETTRANSPORTDEL, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetRemoteTOD_state { + struct srvsvc_NetRemoteTOD orig; + struct srvsvc_NetRemoteTOD tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetRemoteTOD_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetRemoteTOD_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetRemoteTODInfo **_info /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetRemoteTOD_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetRemoteTOD_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + + /* Out parameters */ + state->orig.out.info = _info; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetRemoteTOD, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetRemoteTOD_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETREMOTETOD, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetRemoteTOD_done, req); + return req; +} + +static void rpccli_srvsvc_NetRemoteTOD_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetRemoteTOD_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetRemoteTOD_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info = *state->tmp.out.info; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetRemoteTOD_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetRemoteTOD_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetRemoteTOD_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetRemoteTODInfo **info /* [out] [ref] */, + WERROR *werror) +{ + struct srvsvc_NetRemoteTOD r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetRemoteTOD, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETREMOTETOD, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info = *r.out.info; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetSetServiceBits_state { + struct srvsvc_NetSetServiceBits orig; + struct srvsvc_NetSetServiceBits tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSetServiceBits_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSetServiceBits_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_transport /* [in] [unique,charset(UTF16)] */, + uint32_t _servicebits /* [in] */, + uint32_t _updateimmediately /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetSetServiceBits_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSetServiceBits_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.transport = _transport; + state->orig.in.servicebits = _servicebits; + state->orig.in.updateimmediately = _updateimmediately; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSetServiceBits, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSETSERVICEBITS, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSetServiceBits_done, req); + return req; +} + +static void rpccli_srvsvc_NetSetServiceBits_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSetServiceBits_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSetServiceBits_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSetServiceBits_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSetServiceBits_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSetServiceBits_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *transport /* [in] [unique,charset(UTF16)] */, + uint32_t servicebits /* [in] */, + uint32_t updateimmediately /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetSetServiceBits r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.transport = transport; + r.in.servicebits = servicebits; + r.in.updateimmediately = updateimmediately; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetSetServiceBits, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSETSERVICEBITS, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetPathType_state { + struct srvsvc_NetPathType orig; + struct srvsvc_NetPathType tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetPathType_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetPathType_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_path /* [in] [charset(UTF16)] */, + uint32_t _pathflags /* [in] */, + uint32_t *_pathtype /* [out] [ref] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetPathType_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetPathType_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.path = _path; + state->orig.in.pathflags = _pathflags; + + /* Out parameters */ + state->orig.out.pathtype = _pathtype; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathType, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetPathType_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHTYPE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetPathType_done, req); + return req; +} + +static void rpccli_srvsvc_NetPathType_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetPathType_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathType_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.pathtype = *state->tmp.out.pathtype; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetPathType_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetPathType_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathType_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *path /* [in] [charset(UTF16)] */, + uint32_t pathflags /* [in] */, + uint32_t *pathtype /* [out] [ref] */, + WERROR *werror) +{ + struct srvsvc_NetPathType r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.path = path; + r.in.pathflags = pathflags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathType, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHTYPE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *pathtype = *r.out.pathtype; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetPathCanonicalize_state { + struct srvsvc_NetPathCanonicalize orig; + struct srvsvc_NetPathCanonicalize tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetPathCanonicalize_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetPathCanonicalize_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_path /* [in] [charset(UTF16)] */, + uint8_t *_can_path /* [out] [size_is(maxbuf)] */, + uint32_t _maxbuf /* [in] */, + const char *_prefix /* [in] [charset(UTF16)] */, + uint32_t *_pathtype /* [in,out] [ref] */, + uint32_t _pathflags /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetPathCanonicalize_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetPathCanonicalize_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.path = _path; + state->orig.in.maxbuf = _maxbuf; + state->orig.in.prefix = _prefix; + state->orig.in.pathtype = _pathtype; + state->orig.in.pathflags = _pathflags; + + /* Out parameters */ + state->orig.out.can_path = _can_path; + state->orig.out.pathtype = _pathtype; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathCanonicalize, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetPathCanonicalize_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHCANONICALIZE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetPathCanonicalize_done, req); + return req; +} + +static void rpccli_srvsvc_NetPathCanonicalize_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetPathCanonicalize_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathCanonicalize_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + memcpy(state->orig.out.can_path, state->tmp.out.can_path, state->tmp.in.maxbuf * sizeof(*state->orig.out.can_path)); + *state->orig.out.pathtype = *state->tmp.out.pathtype; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetPathCanonicalize_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetPathCanonicalize_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathCanonicalize_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *path /* [in] [charset(UTF16)] */, + uint8_t *can_path /* [out] [size_is(maxbuf)] */, + uint32_t maxbuf /* [in] */, + const char *prefix /* [in] [charset(UTF16)] */, + uint32_t *pathtype /* [in,out] [ref] */, + uint32_t pathflags /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetPathCanonicalize r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.path = path; + r.in.maxbuf = maxbuf; + r.in.prefix = prefix; + r.in.pathtype = pathtype; + r.in.pathflags = pathflags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathCanonicalize, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHCANONICALIZE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + memcpy(can_path, r.out.can_path, r.in.maxbuf * sizeof(*can_path)); + *pathtype = *r.out.pathtype; + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetPathCompare_state { + struct srvsvc_NetPathCompare orig; + struct srvsvc_NetPathCompare tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetPathCompare_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetPathCompare_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_path1 /* [in] [charset(UTF16)] */, + const char *_path2 /* [in] [charset(UTF16)] */, + uint32_t _pathtype /* [in] */, + uint32_t _pathflags /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetPathCompare_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetPathCompare_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.path1 = _path1; + state->orig.in.path2 = _path2; + state->orig.in.pathtype = _pathtype; + state->orig.in.pathflags = _pathflags; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathCompare, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHCOMPARE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetPathCompare_done, req); + return req; +} + +static void rpccli_srvsvc_NetPathCompare_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetPathCompare_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathCompare_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetPathCompare_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetPathCompare_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPathCompare_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *path1 /* [in] [charset(UTF16)] */, + const char *path2 /* [in] [charset(UTF16)] */, + uint32_t pathtype /* [in] */, + uint32_t pathflags /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetPathCompare r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.path1 = path1; + r.in.path2 = path2; + r.in.pathtype = pathtype; + r.in.pathflags = pathflags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPathCompare, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPATHCOMPARE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetNameValidate_state { + struct srvsvc_NetNameValidate orig; + struct srvsvc_NetNameValidate tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetNameValidate_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetNameValidate_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_name /* [in] [charset(UTF16)] */, + uint32_t _name_type /* [in] */, + uint32_t _flags /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetNameValidate_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetNameValidate_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.name = _name; + state->orig.in.name_type = _name_type; + state->orig.in.flags = _flags; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetNameValidate, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETNAMEVALIDATE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetNameValidate_done, req); + return req; +} + +static void rpccli_srvsvc_NetNameValidate_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetNameValidate_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetNameValidate_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetNameValidate_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetNameValidate_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetNameValidate_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *name /* [in] [charset(UTF16)] */, + uint32_t name_type /* [in] */, + uint32_t flags /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetNameValidate r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.name = name; + r.in.name_type = name_type; + r.in.flags = flags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetNameValidate, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETNAMEVALIDATE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state { + struct srvsvc_NETRPRNAMECANONICALIZE orig; + struct srvsvc_NETRPRNAMECANONICALIZE tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRPRNAMECANONICALIZE_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRPRNAMECANONICALIZE_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRPRNAMECANONICALIZE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRPRNAMECANONICALIZE_done, req); + return req; +} + +static void rpccli_srvsvc_NETRPRNAMECANONICALIZE_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRPRNAMECANONICALIZE_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) +{ + struct srvsvc_NETRPRNAMECANONICALIZE r; + NTSTATUS status; + + /* In parameters */ + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRPRNAMECANONICALIZE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetPRNameCompare_state { + struct srvsvc_NetPRNameCompare orig; + struct srvsvc_NetPRNameCompare tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetPRNameCompare_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetPRNameCompare_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_name1 /* [in] [charset(UTF16)] */, + const char *_name2 /* [in] [charset(UTF16)] */, + uint32_t _name_type /* [in] */, + uint32_t _flags /* [in] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetPRNameCompare_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetPRNameCompare_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.name1 = _name1; + state->orig.in.name2 = _name2; + state->orig.in.name_type = _name_type; + state->orig.in.flags = _flags; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPRNameCompare, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPRNAMECOMPARE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetPRNameCompare_done, req); + return req; +} + +static void rpccli_srvsvc_NetPRNameCompare_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetPRNameCompare_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPRNameCompare_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetPRNameCompare_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetPRNameCompare_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetPRNameCompare_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *name1 /* [in] [charset(UTF16)] */, + const char *name2 /* [in] [charset(UTF16)] */, + uint32_t name_type /* [in] */, + uint32_t flags /* [in] */, + WERROR *werror) +{ + struct srvsvc_NetPRNameCompare r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.name1 = name1; + r.in.name2 = name2; + r.in.name_type = name_type; + r.in.flags = flags; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetPRNameCompare, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETPRNAMECOMPARE, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareEnum_state { + struct srvsvc_NetShareEnum orig; + struct srvsvc_NetShareEnum tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareEnum_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareEnum_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetShareInfoCtr *_info_ctr /* [in,out] [ref] */, + uint32_t _max_buffer /* [in] */, + uint32_t *_totalentries /* [out] [ref] */, + uint32_t *_resume_handle /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareEnum_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareEnum_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.info_ctr = _info_ctr; + state->orig.in.max_buffer = _max_buffer; + state->orig.in.resume_handle = _resume_handle; + + /* Out parameters */ + state->orig.out.info_ctr = _info_ctr; + state->orig.out.totalentries = _totalentries; + state->orig.out.resume_handle = _resume_handle; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareEnum_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREENUM, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareEnum_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareEnum_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareEnum_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + *state->orig.out.info_ctr = *state->tmp.out.info_ctr; + *state->orig.out.totalentries = *state->tmp.out.totalentries; + if (state->orig.out.resume_handle && state->tmp.out.resume_handle) { + *state->orig.out.resume_handle = *state->tmp.out.resume_handle; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareEnum_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareEnum_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareEnum_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + struct srvsvc_NetShareInfoCtr *info_ctr /* [in,out] [ref] */, + uint32_t max_buffer /* [in] */, + uint32_t *totalentries /* [out] [ref] */, + uint32_t *resume_handle /* [in,out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetShareEnum r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.info_ctr = info_ctr; + r.in.max_buffer = max_buffer; + r.in.resume_handle = resume_handle; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREENUM, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + *info_ctr = *r.out.info_ctr; *totalentries = *r.out.totalentries; if (resume_handle && r.out.resume_handle) { *resume_handle = *r.out.resume_handle; } /* Return result */ - if (werror) { - *werror = r.out.result; - } + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareDelStart_state { + struct srvsvc_NetShareDelStart orig; + struct srvsvc_NetShareDelStart tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareDelStart_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareDelStart_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share /* [in] [charset(UTF16)] */, + uint32_t _reserved /* [in] */, + struct policy_handle *_hnd /* [out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareDelStart_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareDelStart_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.server_unc = _server_unc; + state->orig.in.share = _share; + state->orig.in.reserved = _reserved; + + /* Out parameters */ + state->orig.out.hnd = _hnd; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelStart, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareDelStart_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDELSTART, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareDelStart_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareDelStart_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareDelStart_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelStart_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + if (state->orig.out.hnd && state->tmp.out.hnd) { + *state->orig.out.hnd = *state->tmp.out.hnd; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareDelStart_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareDelStart_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelStart_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + +NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share /* [in] [charset(UTF16)] */, + uint32_t reserved /* [in] */, + struct policy_handle *hnd /* [out] [unique] */, + WERROR *werror) +{ + struct srvsvc_NetShareDelStart r; + NTSTATUS status; + + /* In parameters */ + r.in.server_unc = server_unc; + r.in.share = share; + r.in.reserved = reserved; + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelStart, &r); + } + + status = cli->dispatch(cli, + mem_ctx, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDELSTART, + &r); + + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &r); + } + + if (NT_STATUS_IS_ERR(status)) { + return status; + } + + /* Return variables */ + if (hnd && r.out.hnd) { + *hnd = *r.out.hnd; + } + + /* Return result */ + if (werror) { + *werror = r.out.result; + } + + return werror_to_ntstatus(r.out.result); +} + +struct rpccli_srvsvc_NetShareDelCommit_state { + struct srvsvc_NetShareDelCommit orig; + struct srvsvc_NetShareDelCommit tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetShareDelCommit_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetShareDelCommit_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + struct policy_handle *_hnd /* [in,out] [unique] */) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NetShareDelCommit_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetShareDelCommit_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + state->orig.in.hnd = _hnd; + + /* Out parameters */ + state->orig.out.hnd = _hnd; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &state->orig); + } + + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetShareDelCommit_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSHAREDELCOMMIT, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetShareDelCommit_done, req); + return req; +} + +static void rpccli_srvsvc_NetShareDelCommit_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetShareDelCommit_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelCommit_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + if (state->orig.out.hnd && state->tmp.out.hnd) { + *state->orig.out.hnd = *state->tmp.out.hnd; + } + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetShareDelCommit_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetShareDelCommit_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetShareDelCommit_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *service /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - uint32_t options /* [in] */, - struct srvsvc_Statistics **stats /* [out] [ref] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *hnd /* [in,out] [unique] */, + WERROR *werror) { - struct srvsvc_NetServerStatisticsGet r; + struct srvsvc_NetShareDelCommit r; NTSTATUS status; /* In parameters */ - r.in.server_unc = server_unc; - r.in.service = service; - r.in.level = level; - r.in.options = options; + r.in.hnd = hnd; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetServerStatisticsGet, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSERVERSTATISTICSGET, + NDR_SRVSVC_NETSHAREDELCOMMIT, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1267,7 +6813,7 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1275,7 +6821,9 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, } /* Return variables */ - *stats = *r.out.stats; + if (hnd && r.out.hnd) { + *hnd = *r.out.hnd; + } /* Return result */ if (werror) { @@ -1285,79 +6833,159 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetTransportInfo info /* [in] [switch_is(level)] */, - WERROR *werror) +struct rpccli_srvsvc_NetGetFileSecurity_state { + struct srvsvc_NetGetFileSecurity orig; + struct srvsvc_NetGetFileSecurity tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetGetFileSecurity_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetGetFileSecurity_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share /* [in] [unique,charset(UTF16)] */, + const char *_file /* [in] [charset(UTF16)] */, + uint32_t _securityinformation /* [in] */, + struct sec_desc_buf **_sd_buf /* [out] [ref] */) { - struct srvsvc_NetTransportAdd r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetGetFileSecurity_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetGetFileSecurity_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.level = level; - r.in.info = info; + state->orig.in.server_unc = _server_unc; + state->orig.in.share = _share; + state->orig.in.file = _file; + state->orig.in.securityinformation = _securityinformation; + + /* Out parameters */ + state->orig.out.sd_buf = _sd_buf; + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetTransportAdd, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetGetFileSecurity, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETTRANSPORTADD, - &r); + state->out_mem_ctx = talloc_named_const(state, 0, + "rpccli_srvsvc_NetGetFileSecurity_out_memory"); + if (tevent_req_nomem(state->out_mem_ctx, req)) { + return tevent_req_post(req, ev); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETGETFILESECURITY, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetGetFileSecurity_done, req); + return req; +} + +static void rpccli_srvsvc_NetGetFileSecurity_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetGetFileSecurity_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetGetFileSecurity_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + *state->orig.out.sd_buf = *state->tmp.out.sd_buf; + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetGetFileSecurity_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetGetFileSecurity_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetGetFileSecurity_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetTransportInfoCtr *transports /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share /* [in] [unique,charset(UTF16)] */, + const char *file /* [in] [charset(UTF16)] */, + uint32_t securityinformation /* [in] */, + struct sec_desc_buf **sd_buf /* [out] [ref] */, + WERROR *werror) { - struct srvsvc_NetTransportEnum r; + struct srvsvc_NetGetFileSecurity r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.transports = transports; - r.in.max_buffer = max_buffer; - r.in.resume_handle = resume_handle; + r.in.share = share; + r.in.file = file; + r.in.securityinformation = securityinformation; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetGetFileSecurity, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETTRANSPORTENUM, + NDR_SRVSVC_NETGETFILESECURITY, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1365,7 +6993,7 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1373,11 +7001,7 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, } /* Return variables */ - *transports = *r.out.transports; - *totalentries = *r.out.totalentries; - if (resume_handle && r.out.resume_handle) { - *resume_handle = *r.out.resume_handle; - } + *sd_buf = *r.out.sd_buf; /* Return result */ if (werror) { @@ -1387,73 +7011,153 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - struct srvsvc_NetTransportInfo0 *info0 /* [in] [ref] */, - WERROR *werror) +struct rpccli_srvsvc_NetSetFileSecurity_state { + struct srvsvc_NetSetFileSecurity orig; + struct srvsvc_NetSetFileSecurity tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetSetFileSecurity_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetSetFileSecurity_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_share /* [in] [unique,charset(UTF16)] */, + const char *_file /* [in] [charset(UTF16)] */, + uint32_t _securityinformation /* [in] */, + struct sec_desc_buf *_sd_buf /* [in] [ref] */) { - struct srvsvc_NetTransportDel r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetSetFileSecurity_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetSetFileSecurity_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.level = level; - r.in.info0 = info0; + state->orig.in.server_unc = _server_unc; + state->orig.in.share = _share; + state->orig.in.file = _file; + state->orig.in.securityinformation = _securityinformation; + state->orig.in.sd_buf = _sd_buf; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetSetFileSecurity, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETTRANSPORTDEL, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSETFILESECURITY, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetSetFileSecurity_done, req); + return req; +} + +static void rpccli_srvsvc_NetSetFileSecurity_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetSetFileSecurity_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSetFileSecurity_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetSetFileSecurity_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetSetFileSecurity_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetSetFileSecurity_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetRemoteTODInfo **info /* [out] [ref] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *share /* [in] [unique,charset(UTF16)] */, + const char *file /* [in] [charset(UTF16)] */, + uint32_t securityinformation /* [in] */, + struct sec_desc_buf *sd_buf /* [in] [ref] */, + WERROR *werror) { - struct srvsvc_NetRemoteTOD r; + struct srvsvc_NetSetFileSecurity r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; + r.in.share = share; + r.in.file = file; + r.in.securityinformation = securityinformation; + r.in.sd_buf = sd_buf; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetRemoteTOD, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetSetFileSecurity, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETREMOTETOD, + NDR_SRVSVC_NETSETFILESECURITY, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1461,7 +7165,7 @@ NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1469,7 +7173,6 @@ NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, } /* Return variables */ - *info = *r.out.info; /* Return result */ if (werror) { @@ -1479,79 +7182,145 @@ NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *transport /* [in] [unique,charset(UTF16)] */, - uint32_t servicebits /* [in] */, - uint32_t updateimmediately /* [in] */, - WERROR *werror) +struct rpccli_srvsvc_NetServerTransportAddEx_state { + struct srvsvc_NetServerTransportAddEx orig; + struct srvsvc_NetServerTransportAddEx tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetServerTransportAddEx_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetServerTransportAddEx_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t _level /* [in] */, + union srvsvc_NetTransportInfo _info /* [in] [switch_is(level)] */) { - struct srvsvc_NetSetServiceBits r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetServerTransportAddEx_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetServerTransportAddEx_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.transport = transport; - r.in.servicebits = servicebits; - r.in.updateimmediately = updateimmediately; + state->orig.in.server_unc = _server_unc; + state->orig.in.level = _level; + state->orig.in.info = _info; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSetServiceBits, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetServerTransportAddEx, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSETSERVICEBITS, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSERVERTRANSPORTADDEX, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetServerTransportAddEx_done, req); + return req; +} + +static void rpccli_srvsvc_NetServerTransportAddEx_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetServerTransportAddEx_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerTransportAddEx_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetServerTransportAddEx_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetServerTransportAddEx_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerTransportAddEx_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *path /* [in] [charset(UTF16)] */, - uint32_t pathflags /* [in] */, - uint32_t *pathtype /* [out] [ref] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + uint32_t level /* [in] */, + union srvsvc_NetTransportInfo info /* [in] [switch_is(level)] */, + WERROR *werror) { - struct srvsvc_NetPathType r; + struct srvsvc_NetServerTransportAddEx r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.path = path; - r.in.pathflags = pathflags; + r.in.level = level; + r.in.info = info; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetPathType, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetServerTransportAddEx, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETPATHTYPE, + NDR_SRVSVC_NETSERVERTRANSPORTADDEX, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1559,7 +7328,7 @@ NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1567,7 +7336,6 @@ NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, } /* Return variables */ - *pathtype = *r.out.pathtype; /* Return result */ if (werror) { @@ -1577,89 +7345,157 @@ NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *path /* [in] [charset(UTF16)] */, - uint8_t *can_path /* [out] [size_is(maxbuf)] */, - uint32_t maxbuf /* [in] */, - const char *prefix /* [in] [charset(UTF16)] */, - uint32_t *pathtype /* [in,out] [ref] */, - uint32_t pathflags /* [in] */, - WERROR *werror) +struct rpccli_srvsvc_NetServerSetServiceBitsEx_state { + struct srvsvc_NetServerSetServiceBitsEx orig; + struct srvsvc_NetServerSetServiceBitsEx tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NetServerSetServiceBitsEx_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NetServerSetServiceBitsEx_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli, + const char *_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_emulated_server_unc /* [in] [unique,charset(UTF16)] */, + const char *_transport /* [in] [unique,charset(UTF16)] */, + uint32_t _servicebitsofinterest /* [in] */, + uint32_t _servicebits /* [in] */, + uint32_t _updateimmediately /* [in] */) { - struct srvsvc_NetPathCanonicalize r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NetServerSetServiceBitsEx_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NetServerSetServiceBitsEx_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.path = path; - r.in.maxbuf = maxbuf; - r.in.prefix = prefix; - r.in.pathtype = pathtype; - r.in.pathflags = pathflags; + state->orig.in.server_unc = _server_unc; + state->orig.in.emulated_server_unc = _emulated_server_unc; + state->orig.in.transport = _transport; + state->orig.in.servicebitsofinterest = _servicebitsofinterest; + state->orig.in.servicebits = _servicebits; + state->orig.in.updateimmediately = _updateimmediately; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetPathCanonicalize, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetServerSetServiceBitsEx, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETPATHCANONICALIZE, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETSERVERSETSERVICEBITSEX, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NetServerSetServiceBitsEx_done, req); + return req; +} +static void rpccli_srvsvc_NetServerSetServiceBitsEx_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NetServerSetServiceBitsEx_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerSetServiceBitsEx_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NetServerSetServiceBitsEx_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NetServerSetServiceBitsEx_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - memcpy(can_path, r.out.can_path, r.in.maxbuf * sizeof(*can_path)); - *pathtype = *r.out.pathtype; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *path1 /* [in] [charset(UTF16)] */, - const char *path2 /* [in] [charset(UTF16)] */, - uint32_t pathtype /* [in] */, - uint32_t pathflags /* [in] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + const char *server_unc /* [in] [unique,charset(UTF16)] */, + const char *emulated_server_unc /* [in] [unique,charset(UTF16)] */, + const char *transport /* [in] [unique,charset(UTF16)] */, + uint32_t servicebitsofinterest /* [in] */, + uint32_t servicebits /* [in] */, + uint32_t updateimmediately /* [in] */, + WERROR *werror) { - struct srvsvc_NetPathCompare r; + struct srvsvc_NetServerSetServiceBitsEx r; NTSTATUS status; /* In parameters */ r.in.server_unc = server_unc; - r.in.path1 = path1; - r.in.path2 = path2; - r.in.pathtype = pathtype; - r.in.pathflags = pathflags; + r.in.emulated_server_unc = emulated_server_unc; + r.in.transport = transport; + r.in.servicebitsofinterest = servicebitsofinterest; + r.in.servicebits = servicebits; + r.in.updateimmediately = updateimmediately; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetPathCompare, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETPATHCOMPARE, + NDR_SRVSVC_NETSERVERSETSERVICEBITSEX, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1667,7 +7503,7 @@ NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1684,72 +7520,133 @@ NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *name /* [in] [charset(UTF16)] */, - uint32_t name_type /* [in] */, - uint32_t flags /* [in] */, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSGETVERSION_state { + struct srvsvc_NETRDFSGETVERSION orig; + struct srvsvc_NETRDFSGETVERSION tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSGETVERSION_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSGETVERSION_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NetNameValidate r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSGETVERSION_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSGETVERSION_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.name = name; - r.in.name_type = name_type; - r.in.flags = flags; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetNameValidate, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSGETVERSION, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETNAMEVALIDATE, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSGETVERSION, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSGETVERSION_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSGETVERSION_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSGETVERSION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSGETVERSION_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSGETVERSION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSGETVERSION_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NETRPRNAMECANONICALIZE r; + struct srvsvc_NETRDFSGETVERSION r; NTSTATUS status; /* In parameters */ if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSGETVERSION, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETRPRNAMECANONICALIZE, + NDR_SRVSVC_NETRDFSGETVERSION, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1757,7 +7654,7 @@ NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1774,83 +7671,133 @@ NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *name1 /* [in] [charset(UTF16)] */, - const char *name2 /* [in] [charset(UTF16)] */, - uint32_t name_type /* [in] */, - uint32_t flags /* [in] */, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state { + struct srvsvc_NETRDFSCREATELOCALPARTITION orig; + struct srvsvc_NETRDFSCREATELOCALPARTITION tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NetPRNameCompare r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.name1 = name1; - r.in.name2 = name2; - r.in.name_type = name_type; - r.in.flags = flags; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetPRNameCompare, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETPRNAMECOMPARE, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSCREATELOCALPARTITION, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSCREATELOCALPARTITION_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - struct srvsvc_NetShareInfoCtr *info_ctr /* [in,out] [ref] */, - uint32_t max_buffer /* [in] */, - uint32_t *totalentries /* [out] [ref] */, - uint32_t *resume_handle /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NetShareEnum r; + struct srvsvc_NETRDFSCREATELOCALPARTITION r; NTSTATUS status; /* In parameters */ - r.in.server_unc = server_unc; - r.in.info_ctr = info_ctr; - r.in.max_buffer = max_buffer; - r.in.resume_handle = resume_handle; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREENUM, + NDR_SRVSVC_NETRDFSCREATELOCALPARTITION, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1858,7 +7805,7 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1866,11 +7813,6 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, } /* Return variables */ - *info_ctr = *r.out.info_ctr; - *totalentries = *r.out.totalentries; - if (resume_handle && r.out.resume_handle) { - *resume_handle = *r.out.resume_handle; - } /* Return result */ if (werror) { @@ -1880,76 +7822,133 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share /* [in] [charset(UTF16)] */, - uint32_t reserved /* [in] */, - struct policy_handle *hnd /* [out] [unique] */, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state { + struct srvsvc_NETRDFSDELETELOCALPARTITION orig; + struct srvsvc_NETRDFSDELETELOCALPARTITION tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NetShareDelStart r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.share = share; - r.in.reserved = reserved; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelStart, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREDELSTART, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSDELETELOCALPARTITION, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSDELETELOCALPARTITION_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - if (hnd && r.out.hnd) { - *hnd = *r.out.hnd; - } + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - struct policy_handle *hnd /* [in,out] [unique] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NetShareDelCommit r; + struct srvsvc_NETRDFSDELETELOCALPARTITION r; NTSTATUS status; /* In parameters */ - r.in.hnd = hnd; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSHAREDELCOMMIT, + NDR_SRVSVC_NETRDFSDELETELOCALPARTITION, &r); if (!NT_STATUS_IS_OK(status)) { @@ -1957,7 +7956,7 @@ NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -1965,9 +7964,6 @@ NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, } /* Return variables */ - if (hnd && r.out.hnd) { - *hnd = *r.out.hnd; - } /* Return result */ if (werror) { @@ -1977,84 +7973,133 @@ NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share /* [in] [unique,charset(UTF16)] */, - const char *file /* [in] [charset(UTF16)] */, - uint32_t securityinformation /* [in] */, - struct sec_desc_buf **sd_buf /* [out] [ref] */, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state { + struct srvsvc_NETRDFSSETLOCALVOLUMESTATE orig; + struct srvsvc_NETRDFSSETLOCALVOLUMESTATE tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NetGetFileSecurity r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.share = share; - r.in.file = file; - r.in.securityinformation = securityinformation; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetGetFileSecurity, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETGETFILESECURITY, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ - *sd_buf = *r.out.sd_buf; + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *share /* [in] [unique,charset(UTF16)] */, - const char *file /* [in] [charset(UTF16)] */, - uint32_t securityinformation /* [in] */, - struct sec_desc_buf *sd_buf /* [in] [ref] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NetSetFileSecurity r; + struct srvsvc_NETRDFSSETLOCALVOLUMESTATE r; NTSTATUS status; /* In parameters */ - r.in.server_unc = server_unc; - r.in.share = share; - r.in.file = file; - r.in.securityinformation = securityinformation; - r.in.sd_buf = sd_buf; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetSetFileSecurity, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSETFILESECURITY, + NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2062,7 +8107,7 @@ NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2079,82 +8124,133 @@ NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t level /* [in] */, - union srvsvc_NetTransportInfo info /* [in] [switch_is(level)] */, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state { + struct srvsvc_NETRDFSSETSERVERINFO orig; + struct srvsvc_NETRDFSSETSERVERINFO tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSSETSERVERINFO_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSSETSERVERINFO_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NetServerTransportAddEx r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ - r.in.server_unc = server_unc; - r.in.level = level; - r.in.info = info; + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetServerTransportAddEx, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETSERVERTRANSPORTADDEX, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSSETSERVERINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSSETSERVERINFO_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSSETSERVERINFO_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSSETSERVERINFO_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - const char *server_unc /* [in] [unique,charset(UTF16)] */, - const char *emulated_server_unc /* [in] [unique,charset(UTF16)] */, - const char *transport /* [in] [unique,charset(UTF16)] */, - uint32_t servicebitsofinterest /* [in] */, - uint32_t servicebits /* [in] */, - uint32_t updateimmediately /* [in] */, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NetServerSetServiceBitsEx r; + struct srvsvc_NETRDFSSETSERVERINFO r; NTSTATUS status; /* In parameters */ - r.in.server_unc = server_unc; - r.in.emulated_server_unc = emulated_server_unc; - r.in.transport = transport; - r.in.servicebitsofinterest = servicebitsofinterest; - r.in.servicebits = servicebits; - r.in.updateimmediately = updateimmediately; if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETSERVERSETSERVICEBITSEX, + NDR_SRVSVC_NETRDFSSETSERVERINFO, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2162,7 +8258,7 @@ NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2179,64 +8275,133 @@ NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state { + struct srvsvc_NETRDFSCREATEEXITPOINT orig; + struct srvsvc_NETRDFSCREATEEXITPOINT tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSCREATEEXITPOINT_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSCREATEEXITPOINT_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NETRDFSGETVERSION r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSGETVERSION, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSGETVERSION, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSCREATEEXITPOINT, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSCREATEEXITPOINT_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSCREATEEXITPOINT_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSCREATEEXITPOINT_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NETRDFSCREATELOCALPARTITION r; + struct srvsvc_NETRDFSCREATEEXITPOINT r; NTSTATUS status; /* In parameters */ if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSCREATELOCALPARTITION, + NDR_SRVSVC_NETRDFSCREATEEXITPOINT, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2244,7 +8409,7 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2261,64 +8426,133 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state { + struct srvsvc_NETRDFSDELETEEXITPOINT orig; + struct srvsvc_NETRDFSDELETEEXITPOINT tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSDELETEEXITPOINT_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSDELETEEXITPOINT_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NETRDFSDELETELOCALPARTITION r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSDELETELOCALPARTITION, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSDELETEEXITPOINT, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSDELETEEXITPOINT_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSDELETEEXITPOINT_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSDELETEEXITPOINT_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NETRDFSSETLOCALVOLUMESTATE r; + struct srvsvc_NETRDFSDELETEEXITPOINT r; NTSTATUS status; /* In parameters */ if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, + NDR_SRVSVC_NETRDFSDELETEEXITPOINT, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2326,7 +8560,7 @@ NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2343,64 +8577,133 @@ NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state { + struct srvsvc_NETRDFSMODIFYPREFIX orig; + struct srvsvc_NETRDFSMODIFYPREFIX tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSMODIFYPREFIX_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSMODIFYPREFIX_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NETRDFSSETSERVERINFO r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSSETSERVERINFO, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSMODIFYPREFIX, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSMODIFYPREFIX_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSMODIFYPREFIX_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSMODIFYPREFIX_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NETRDFSCREATEEXITPOINT r; + struct srvsvc_NETRDFSMODIFYPREFIX r; NTSTATUS status; /* In parameters */ if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSCREATEEXITPOINT, + NDR_SRVSVC_NETRDFSMODIFYPREFIX, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2408,7 +8711,7 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2425,64 +8728,133 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state { + struct srvsvc_NETRDFSFIXLOCALVOLUME orig; + struct srvsvc_NETRDFSFIXLOCALVOLUME tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NETRDFSDELETEEXITPOINT r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSDELETEEXITPOINT, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSFIXLOCALVOLUME, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSFIXLOCALVOLUME_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } -NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + WERROR *werror) { - struct srvsvc_NETRDFSMODIFYPREFIX r; + struct srvsvc_NETRDFSFIXLOCALVOLUME r; NTSTATUS status; /* In parameters */ if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r); } status = cli->dispatch(cli, mem_ctx, &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSMODIFYPREFIX, + NDR_SRVSVC_NETRDFSFIXLOCALVOLUME, &r); if (!NT_STATUS_IS_OK(status)) { @@ -2490,7 +8862,7 @@ NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, } if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r); } if (NT_STATUS_IS_ERR(status)) { @@ -2507,45 +8879,114 @@ NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } -NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME(struct rpc_pipe_client *cli, - TALLOC_CTX *mem_ctx, - WERROR *werror) +struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state { + struct srvsvc_NETRDFSMANAGERREPORTSITEINFO orig; + struct srvsvc_NETRDFSMANAGERREPORTSITEINFO tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) { - struct srvsvc_NETRDFSFIXLOCALVOLUME r; - NTSTATUS status; + struct tevent_req *req; + struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; /* In parameters */ + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r); + NDR_PRINT_IN_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &state->orig); } - status = cli->dispatch(cli, - mem_ctx, - &ndr_table_srvsvc, - NDR_SRVSVC_NETRDFSFIXLOCALVOLUME, - &r); + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRDFSMANAGERREPORTSITEINFO, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_done, req); + return req; +} + +static void rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); if (!NT_STATUS_IS_OK(status)) { - return status; + tevent_req_nterror(req, status); + return; } + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + if (DEBUGLEVEL >= 10) { - NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r); + NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &state->orig); } - if (NT_STATUS_IS_ERR(status)) { + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); return status; } - /* Return variables */ + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); /* Return result */ - if (werror) { - *werror = r.out.result; - } + *result = state->orig.out.result; - return werror_to_ntstatus(r.out.result); + tevent_req_received(req); + return NT_STATUS_OK; } NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct rpc_pipe_client *cli, @@ -2589,6 +9030,116 @@ NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct rpc_pipe_client *cli, return werror_to_ntstatus(r.out.result); } +struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state { + struct srvsvc_NETRSERVERTRANSPORTDELEX orig; + struct srvsvc_NETRSERVERTRANSPORTDELEX tmp; + TALLOC_CTX *out_mem_ctx; + NTSTATUS (*dispatch_recv)(struct tevent_req *req, TALLOC_CTX *mem_ctx); +}; + +static void rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_done(struct tevent_req *subreq); + +struct tevent_req *rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct rpc_pipe_client *cli) +{ + struct tevent_req *req; + struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state *state; + struct tevent_req *subreq; + + req = tevent_req_create(mem_ctx, &state, + struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state); + if (req == NULL) { + return NULL; + } + state->out_mem_ctx = NULL; + state->dispatch_recv = cli->dispatch_recv; + + /* In parameters */ + + /* Out parameters */ + + /* Result */ + ZERO_STRUCT(state->orig.out.result); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_IN_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &state->orig); + } + + /* make a temporary copy, that we pass to the dispatch function */ + state->tmp = state->orig; + + subreq = cli->dispatch_send(state, ev, cli, + &ndr_table_srvsvc, + NDR_SRVSVC_NETRSERVERTRANSPORTDELEX, + &state->tmp); + if (tevent_req_nomem(subreq, req)) { + return tevent_req_post(req, ev); + } + tevent_req_set_callback(subreq, rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_done, req); + return req; +} + +static void rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_done(struct tevent_req *subreq) +{ + struct tevent_req *req = tevent_req_callback_data( + subreq, struct tevent_req); + struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state); + NTSTATUS status; + TALLOC_CTX *mem_ctx; + + if (state->out_mem_ctx) { + mem_ctx = state->out_mem_ctx; + } else { + mem_ctx = state; + } + + status = state->dispatch_recv(subreq, mem_ctx); + TALLOC_FREE(subreq); + if (!NT_STATUS_IS_OK(status)) { + tevent_req_nterror(req, status); + return; + } + + /* Copy out parameters */ + + /* Copy result */ + state->orig.out.result = state->tmp.out.result; + + /* Reset temporary structure */ + ZERO_STRUCT(state->tmp); + + if (DEBUGLEVEL >= 10) { + NDR_PRINT_OUT_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &state->orig); + } + + tevent_req_done(req); +} + +NTSTATUS rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + WERROR *result) +{ + struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state *state = tevent_req_data( + req, struct rpccli_srvsvc_NETRSERVERTRANSPORTDELEX_state); + NTSTATUS status; + + if (tevent_req_is_nterror(req, &status)) { + tevent_req_received(req); + return status; + } + + /* Steal possbile out parameters to the callers context */ + talloc_steal(mem_ctx, state->out_mem_ctx); + + /* Return result */ + *result = state->orig.out.result; + + tevent_req_received(req); + return NT_STATUS_OK; +} + NTSTATUS rpccli_srvsvc_NETRSERVERTRANSPORTDELEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, WERROR *werror) -- cgit