From 8fdb499497f8d4f4a1ca93ffc94de8b57c2c1568 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 13 May 2009 16:38:26 +0200 Subject: s3-netapi: implement NetShutdownInit_r and NetShutdownAbort_r. Guenther --- source3/lib/netapi/shutdown.c | 51 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'source3/lib') diff --git a/source3/lib/netapi/shutdown.c b/source3/lib/netapi/shutdown.c index 70c0980a44..f9eb93b125 100644 --- a/source3/lib/netapi/shutdown.c +++ b/source3/lib/netapi/shutdown.c @@ -30,7 +30,34 @@ WERROR NetShutdownInit_r(struct libnetapi_ctx *ctx, struct NetShutdownInit *r) { - return WERR_NOT_SUPPORTED; + WERROR werr; + NTSTATUS status; + struct rpc_pipe_client *pipe_cli = NULL; + struct lsa_StringLarge message; + + werr = libnetapi_open_pipe(ctx, r->in.server_name, + &ndr_table_initshutdown.syntax_id, + &pipe_cli); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } + + init_lsa_StringLarge(&message, r->in.message); + + status = rpccli_initshutdown_Init(pipe_cli, ctx, + NULL, + &message, + r->in.timeout, + r->in.force_apps, + r->in.do_reboot, + &werr); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + + done: + return werr; } /**************************************************************** @@ -48,7 +75,27 @@ WERROR NetShutdownInit_l(struct libnetapi_ctx *ctx, WERROR NetShutdownAbort_r(struct libnetapi_ctx *ctx, struct NetShutdownAbort *r) { - return WERR_NOT_SUPPORTED; + WERROR werr; + NTSTATUS status; + struct rpc_pipe_client *pipe_cli = NULL; + + werr = libnetapi_open_pipe(ctx, r->in.server_name, + &ndr_table_initshutdown.syntax_id, + &pipe_cli); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } + + status = rpccli_initshutdown_Abort(pipe_cli, ctx, + NULL, + &werr); + if (!NT_STATUS_IS_OK(status)) { + werr = ntstatus_to_werror(status); + goto done; + } + + done: + return werr; } /**************************************************************** -- cgit