diff --git a/CHANGES b/CHANGES index 2f47a04d971025950f3df71162e264607444ba0c..4c2aaaf48e0997412a34dd4376b018a3ceb538e9 100644 --- a/CHANGES +++ b/CHANGES @@ -560,6 +560,7 @@ CLI Changes manager.conf. * Added 'all' keyword to the CLI command "channel request hangup" so that you can send the channel hangup request to all channels. + * Added a "core reload" CLI command that executes a global reload of Asterisk. ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2 ------------- diff --git a/main/cli.c b/main/cli.c index 3c14879c038a342f321ac658c403006df669fe50..77e52b8636677c2eefb35f501855a74c7776429e 100644 --- a/main/cli.c +++ b/main/cli.c @@ -303,6 +303,28 @@ static char *handle_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args return CLI_SUCCESS; } +static char *handle_core_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) +{ + switch (cmd) { + case CLI_INIT: + e->command = "core reload"; + e->usage = + "Usage: core reload\n" + " Execute a global reload.\n"; + return NULL; + + case CLI_GENERATE: + return NULL; + } + + if (a->argc != e->args) { + return CLI_SHOWUSAGE; + } + + ast_module_reload(NULL); + + return CLI_SUCCESS; +} /*! * \brief Find the debug or verbose file setting * \arg debug 1 for debug, 0 for verbose @@ -1620,7 +1642,9 @@ static struct ast_cli_entry cli_cli[] = { AST_CLI_DEFINE(handle_load, "Load a module by name"), - AST_CLI_DEFINE(handle_reload, "Reload configuration"), + AST_CLI_DEFINE(handle_reload, "Reload configuration for a module"), + + AST_CLI_DEFINE(handle_core_reload, "Global reload"), AST_CLI_DEFINE(handle_unload, "Unload a module by name"),