From 1ef94dffe6e0b86e0ff30f7d37dc81fc251f6d95 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 12 Jan 2011 12:51:07 +0100 Subject: s3-libnetapi: prefer dcerpc_srvsvc_X functions. Guenther Signed-off-by: Andreas Schneider --- source3/lib/netapi/share.c | 47 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) (limited to 'source3/lib/netapi/share.c') diff --git a/source3/lib/netapi/share.c b/source3/lib/netapi/share.c index 4232a9e7c0..c9c6d147e2 100644 --- a/source3/lib/netapi/share.c +++ b/source3/lib/netapi/share.c @@ -184,6 +184,7 @@ WERROR NetShareAdd_r(struct libnetapi_ctx *ctx, NTSTATUS status; struct rpc_pipe_client *pipe_cli = NULL; union srvsvc_NetShareInfo info; + struct dcerpc_binding_handle *b; if (!r->in.buffer) { return WERR_INVALID_PARAM; @@ -206,6 +207,8 @@ WERROR NetShareAdd_r(struct libnetapi_ctx *ctx, goto done; } + b = pipe_cli->binding_handle; + status = map_SHARE_INFO_buffer_to_srvsvc_share_info(ctx, r->in.buffer, r->in.level, @@ -215,12 +218,17 @@ WERROR NetShareAdd_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_srvsvc_NetShareAdd(pipe_cli, talloc_tos(), + status = dcerpc_srvsvc_NetShareAdd(b, talloc_tos(), r->in.server_name, r->in.level, &info, r->out.parm_err, &werr); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + if (!W_ERROR_IS_OK(werr)) { goto done; } @@ -247,6 +255,7 @@ WERROR NetShareDel_r(struct libnetapi_ctx *ctx, WERROR werr; NTSTATUS status; struct rpc_pipe_client *pipe_cli = NULL; + struct dcerpc_binding_handle *b; if (!r->in.net_name) { return WERR_INVALID_PARAM; @@ -259,7 +268,9 @@ WERROR NetShareDel_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_srvsvc_NetShareDel(pipe_cli, talloc_tos(), + b = pipe_cli->binding_handle; + + status = dcerpc_srvsvc_NetShareDel(b, talloc_tos(), r->in.server_name, r->in.net_name, r->in.reserved, @@ -296,6 +307,7 @@ WERROR NetShareEnum_r(struct libnetapi_ctx *ctx, struct srvsvc_NetShareCtr1 ctr1; struct srvsvc_NetShareCtr2 ctr2; uint32_t i; + struct dcerpc_binding_handle *b; if (!r->out.buffer) { return WERR_INVALID_PARAM; @@ -322,6 +334,8 @@ WERROR NetShareEnum_r(struct libnetapi_ctx *ctx, goto done; } + b = pipe_cli->binding_handle; + info_ctr.level = r->in.level; switch (r->in.level) { case 0: @@ -338,14 +352,19 @@ WERROR NetShareEnum_r(struct libnetapi_ctx *ctx, break; } - status = rpccli_srvsvc_NetShareEnumAll(pipe_cli, talloc_tos(), + status = dcerpc_srvsvc_NetShareEnumAll(b, talloc_tos(), r->in.server_name, &info_ctr, r->in.prefmaxlen, r->out.total_entries, r->out.resume_handle, &werr); - if (NT_STATUS_IS_ERR(status)) { + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + + if (!W_ERROR_IS_OK(werr) && !W_ERROR_EQUAL(werr, WERR_MORE_DATA)) { goto done; } @@ -370,6 +389,7 @@ WERROR NetShareEnum_r(struct libnetapi_ctx *ctx, r->out.entries_read); if (!NT_STATUS_IS_OK(status)) { werr = ntstatus_to_werror(status); + goto done; } } @@ -397,6 +417,7 @@ WERROR NetShareGetInfo_r(struct libnetapi_ctx *ctx, struct rpc_pipe_client *pipe_cli = NULL; union srvsvc_NetShareInfo info; uint32_t num_entries = 0; + struct dcerpc_binding_handle *b; if (!r->in.net_name || !r->out.buffer) { return WERR_INVALID_PARAM; @@ -423,12 +444,18 @@ WERROR NetShareGetInfo_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_srvsvc_NetShareGetInfo(pipe_cli, talloc_tos(), + b = pipe_cli->binding_handle; + + status = dcerpc_srvsvc_NetShareGetInfo(b, talloc_tos(), r->in.server_name, r->in.net_name, r->in.level, &info, &werr); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } if (!W_ERROR_IS_OK(werr)) { goto done; @@ -466,6 +493,7 @@ WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx, NTSTATUS status; struct rpc_pipe_client *pipe_cli = NULL; union srvsvc_NetShareInfo info; + struct dcerpc_binding_handle *b; if (!r->in.buffer) { return WERR_INVALID_PARAM; @@ -493,6 +521,8 @@ WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx, goto done; } + b = pipe_cli->binding_handle; + status = map_SHARE_INFO_buffer_to_srvsvc_share_info(ctx, r->in.buffer, r->in.level, @@ -502,13 +532,18 @@ WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx, goto done; } - status = rpccli_srvsvc_NetShareSetInfo(pipe_cli, talloc_tos(), + status = dcerpc_srvsvc_NetShareSetInfo(b, talloc_tos(), r->in.server_name, r->in.net_name, r->in.level, &info, r->out.parm_err, &werr); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + if (!W_ERROR_IS_OK(werr)) { goto done; } -- cgit