#define REG_FULL_RESOURCE_DESCRIPTOR 9
#define REG_RESOURCE_REQUIREMENTS_LIST 10
-/* Shutdown options */
-#define REG_FORCE_SHUTDOWN 0x001
-#define REG_REBOOT_ON_SHUTDOWN 0x100
-
/* structure to contain registry values */
typedef struct {
UNIHDR hdr_msg; /* shutdown message */
UNISTR2 uni_msg; /* seconds */
uint32 timeout; /* seconds */
- uint16 flags;
+ uint8 force; /* boolean: force shutdown */
+ uint8 reboot; /* boolean: reboot on shutdown */
} REG_Q_SHUTDOWN;
/* Shutdown a server */
NTSTATUS cli_reg_shutdown(struct cli_state * cli, TALLOC_CTX *mem_ctx,
- const char *msg, uint32 timeout, uint16 flags)
+ const char *msg, uint32 timeout, BOOL reboot,
+ BOOL force)
{
prs_struct qbuf;
prs_struct rbuf;
/* Marshall data and send request */
- init_reg_q_shutdown(&q_s, msg, timeout, flags);
+ init_reg_q_shutdown(&q_s, msg, timeout, reboot, force);
if (!reg_io_q_shutdown("", &q_s, &qbuf, 0) ||
!rpc_api_pipe_req(cli, REG_SHUTDOWN, &qbuf, &rbuf))
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
fstring msg;
uint32 timeout = 20;
- uint16 flgs = 0;
+ BOOL force = False;
+ BOOL reboot = False;
int opt;
*msg = 0;
while ((opt = getopt(argc, argv, "m:t:rf")) != EOF)
{
- fprintf (stderr, "[%s]\n", argv[argc-1]);
+ /*fprintf (stderr, "[%s]\n", argv[argc-1]);*/
switch (opt)
{
case 'm':
- {
safe_strcpy(msg, optarg, sizeof(msg)-1);
- fprintf (stderr, "[%s|%s]\n", optarg, msg);
+ /*fprintf (stderr, "[%s|%s]\n", optarg, msg);*/
break;
- }
+
case 't':
- {
timeout = atoi(optarg);
- fprintf (stderr, "[%s|%d]\n", optarg, timeout);
- break;
- }
+ /*fprintf (stderr, "[%s|%d]\n", optarg, timeout);*/
+ break;
+
case 'r':
- {
- flgs |= 0x100;
- break;
- }
+ reboot = True;
+ break;
+
case 'f':
- {
- flgs |= 0x001;
+ force = True;
break;
- }
+
}
}
/* create an entry */
- result = cli_reg_shutdown(cli, mem_ctx, msg, timeout, flgs);
+ result = cli_reg_shutdown(cli, mem_ctx, msg, timeout, reboot, force);
if (NT_STATUS_IS_OK(result))
DEBUG(5,("cmd_reg_shutdown: query succeeded\n"));
{ "REG" },
{ "shutdown", cmd_reg_shutdown, PI_WINREG, "Remote Shutdown",
- "[-m message] [-t timeout] [-r] [-f] (-r == reboot, -f == force)" },
+ "syntax: shutdown [-m message] [-t timeout] [-r] [-h] [-f] (-r == reboot, -h == halt, -f == force)" },
{ "abortshutdown", cmd_reg_abort_shutdown, PI_WINREG, "Abort Shutdown",
- "" },
+ "syntax: abortshutdown" },
/*
{ "regenum", cmd_reg_enum, "Registry Enumeration",
"<keyname>" },
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
const char *msg = "This machine will be shutdown shortly";
uint32 timeout = 20;
- uint16 flgs = 0;
- BOOL reboot = opt_reboot;
- BOOL force = opt_force;
#if 0
poptContext pc;
int rc;
return NT_STATUS_INVALID_PARAMETER;
}
#endif
- if (reboot) {
- flgs |= REG_REBOOT_ON_SHUTDOWN;
- }
- if (force) {
- flgs |= REG_FORCE_SHUTDOWN;
- }
if (opt_comment) {
msg = opt_comment;
}
}
/* create an entry */
- result = cli_reg_shutdown(cli, mem_ctx, msg, timeout, flgs);
+ result = cli_reg_shutdown(cli, mem_ctx, msg, timeout, opt_reboot, opt_force);
if (NT_STATUS_IS_OK(result))
DEBUG(5,("Shutdown of remote machine succeeded\n"));