2003-10-24 13:38:13 +00:00
/*
Unix SMB / CIFS implementation .
RPC Pipe client
Copyright ( C ) Andrew Tridgell 1992 - 1998 ,
2005-09-30 17:13:37 +00:00
Largely rewritten by Jeremy Allison ( C ) 2005.
2003-10-24 13:38:13 +00:00
Copyright ( C ) Jim McDonough ( jmcd @ us . ibm . com ) 2003.
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# include "includes.h"
/* Shutdown a server */
2005-09-30 17:13:37 +00:00
NTSTATUS rpccli_shutdown_init ( struct rpc_pipe_client * cli , TALLOC_CTX * mem_ctx ,
2003-10-24 13:38:13 +00:00
const char * msg , uint32 timeout , BOOL do_reboot ,
BOOL force )
{
prs_struct qbuf ;
prs_struct rbuf ;
2005-09-30 17:13:37 +00:00
SHUTDOWN_Q_INIT q ;
SHUTDOWN_R_INIT r ;
2005-03-23 23:26:33 +00:00
WERROR result = WERR_GENERAL_FAILURE ;
2003-10-24 13:38:13 +00:00
2005-03-23 23:26:33 +00:00
if ( msg = = NULL )
return NT_STATUS_INVALID_PARAMETER ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
ZERO_STRUCT ( q ) ;
ZERO_STRUCT ( r ) ;
2003-10-24 13:38:13 +00:00
/* Marshall data and send request */
2005-09-30 17:13:37 +00:00
init_shutdown_q_init ( & q , msg , timeout , do_reboot , force ) ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
CLI_DO_RPC ( cli , mem_ctx , PI_SHUTDOWN , SHUTDOWN_INIT ,
q , r ,
qbuf , rbuf ,
shutdown_io_q_init ,
shutdown_io_r_init ,
NT_STATUS_UNSUCCESSFUL ) ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
result = r . status ;
2005-03-23 23:26:33 +00:00
return werror_to_ntstatus ( result ) ;
}
/* Shutdown a server */
2005-09-30 17:13:37 +00:00
NTSTATUS rpccli_shutdown_init_ex ( struct rpc_pipe_client * cli , TALLOC_CTX * mem_ctx ,
2005-03-23 23:26:33 +00:00
const char * msg , uint32 timeout , BOOL do_reboot ,
BOOL force , uint32 reason )
{
prs_struct qbuf ;
prs_struct rbuf ;
2005-09-30 17:13:37 +00:00
SHUTDOWN_Q_INIT_EX q ;
SHUTDOWN_R_INIT_EX r ;
2005-03-23 23:26:33 +00:00
WERROR result = WERR_GENERAL_FAILURE ;
if ( msg = = NULL )
return NT_STATUS_INVALID_PARAMETER ;
2005-09-30 17:13:37 +00:00
ZERO_STRUCT ( q ) ;
ZERO_STRUCT ( r ) ;
2005-03-23 23:26:33 +00:00
/* Marshall data and send request */
2005-09-30 17:13:37 +00:00
init_shutdown_q_init_ex ( & q , msg , timeout , do_reboot , force , reason ) ;
2005-03-23 23:26:33 +00:00
2005-09-30 17:13:37 +00:00
CLI_DO_RPC ( cli , mem_ctx , PI_SHUTDOWN , SHUTDOWN_INIT_EX ,
q , r ,
qbuf , rbuf ,
shutdown_io_q_init_ex ,
shutdown_io_r_init_ex ,
NT_STATUS_UNSUCCESSFUL ) ;
2005-03-23 23:26:33 +00:00
2005-09-30 17:13:37 +00:00
result = r . status ;
2005-03-23 23:26:33 +00:00
return werror_to_ntstatus ( result ) ;
2003-10-24 13:38:13 +00:00
}
/* Abort a server shutdown */
2005-09-30 17:13:37 +00:00
NTSTATUS rpccli_shutdown_abort ( struct rpc_pipe_client * cli , TALLOC_CTX * mem_ctx )
2003-10-24 13:38:13 +00:00
{
prs_struct rbuf ;
prs_struct qbuf ;
2005-09-30 17:13:37 +00:00
SHUTDOWN_Q_ABORT q ;
SHUTDOWN_R_ABORT r ;
2005-03-23 23:26:33 +00:00
WERROR result = WERR_GENERAL_FAILURE ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
ZERO_STRUCT ( q ) ;
ZERO_STRUCT ( r ) ;
2003-10-24 13:38:13 +00:00
/* Marshall data and send request */
2005-09-30 17:13:37 +00:00
init_shutdown_q_abort ( & q ) ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
CLI_DO_RPC ( cli , mem_ctx , PI_SHUTDOWN , SHUTDOWN_ABORT ,
q , r ,
qbuf , rbuf ,
shutdown_io_q_abort ,
shutdown_io_r_abort ,
NT_STATUS_UNSUCCESSFUL ) ;
2003-10-24 13:38:13 +00:00
2005-09-30 17:13:37 +00:00
result = r . status ;
2005-03-23 23:26:33 +00:00
return werror_to_ntstatus ( result ) ;
2003-10-24 13:38:13 +00:00
}