From 844759c7889c10bd1e0a97e3c2e55688f6a30b2a Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Thu, 4 Sep 2008 20:24:23 +0200 Subject: [PATCH] netapi: implement NetShareSetInfo_r. Guenther (cherry picked from commit ebcd45ed3ff79ce3b90872aa87a737ba6ee3401f) (cherry picked from commit 307aeb9b7418e191f40f042f820ed4cbc95ae128) --- source/lib/netapi/share.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/source/lib/netapi/share.c b/source/lib/netapi/share.c index 414900a11d0..c6af548225f 100644 --- a/source/lib/netapi/share.c +++ b/source/lib/netapi/share.c @@ -481,7 +481,65 @@ WERROR NetShareGetInfo_l(struct libnetapi_ctx *ctx, WERROR NetShareSetInfo_r(struct libnetapi_ctx *ctx, struct NetShareSetInfo *r) { - return WERR_NOT_SUPPORTED; + WERROR werr; + NTSTATUS status; + struct cli_state *cli = NULL; + struct rpc_pipe_client *pipe_cli = NULL; + union srvsvc_NetShareInfo info; + + if (!r->in.buffer) { + return WERR_INVALID_PARAM; + } + + switch (r->in.level) { + case 2: + case 1004: + break; + case 1: + case 502: + case 503: + case 1005: + case 1006: + case 1501: + return WERR_NOT_SUPPORTED; + default: + return WERR_UNKNOWN_LEVEL; + } + + werr = libnetapi_open_pipe(ctx, r->in.server_name, + &ndr_table_srvsvc.syntax_id, + &cli, + &pipe_cli); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } + + status = map_SHARE_INFO_buffer_to_srvsvc_share_info(ctx, + r->in.buffer, + r->in.level, + &info); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + + status = rpccli_srvsvc_NetShareSetInfo(pipe_cli, ctx, + r->in.server_name, + r->in.net_name, + r->in.level, + &info, + r->out.parm_err, + &werr); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } + + done: + if (!cli) { + return werr; + } + + return werr; } /**************************************************************** -- 2.11.4.GIT