dect
/
asterisk
Archived
13
0
Fork 0

Merge changes from team/mvanbaak/cli-command-audit

(closes issue #8925)

About a year ago, as Leif Madsen and Jim van Meggelen were going over the CLI
commands in Asterisk 1.4 for the next version of their book, they documented
a lot of inconsistencies.  This set of changes addresses all of these issues
and has been reviewed by Leif.

While this does introduce even more changes to the CLI command structure, it
makes everything consistent, which is the most important thing.

Thanks to all that helped with this one!


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103171 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
russell 2008-02-08 21:26:32 +00:00
parent 381f0dce14
commit e9d6c2ff9b
19 changed files with 892 additions and 376 deletions

View File

@ -2602,7 +2602,7 @@ static char *handle_minivm_show_zones(struct ast_cli_entry *e, int cmd, struct a
return NULL;
}
if (a->argc != 3)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
AST_LIST_LOCK(&minivm_zones);

View File

@ -374,7 +374,7 @@ static char *__say_cli_init(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
if (a->argc == 2) {
ast_cli(a->fd, "say mode is [%s]\n", old_mode);
return CLI_SUCCESS;
} else if (a->argc != 3)
} else if (a->argc != e->args)
return CLI_SHOWUSAGE;
mode = a->argv[2];
if (!strcmp(mode, old_mode))

View File

@ -1090,7 +1090,7 @@ static char *handle_cli_rpt_debug_level(struct ast_cli_entry *e, int cmd, struct
case CLI_GENERATE:
return NULL;
}
if (a->argc != 4)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
newlevel = myatoi(a->argv[3]);
if ((newlevel < 0) || (newlevel > 7))

View File

@ -7859,7 +7859,7 @@ static char *handle_voicemail_show_zones(struct ast_cli_entry *e, int cmd, struc
return NULL;
}
if (a->argc != 3)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
AST_LIST_LOCK(&zones);
@ -7891,7 +7891,7 @@ static char *handle_voicemail_reload(struct ast_cli_entry *e, int cmd, struct as
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
ast_cli(a->fd, "Reloading voicemail configuration...\n");

View File

@ -5262,41 +5262,80 @@ static char *handle_cli_iax2_show_netstats(struct ast_cli_entry *e, int cmd, str
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_iax2_set_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug";
e->command = "iax2 set debug [off]";
e->usage =
"Usage: iax2 set debug\n"
" Enables dumping of IAX packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 2 || a->argc > 3)
return CLI_SHOWUSAGE;
iaxdebug = 1;
ast_cli(a->fd, "IAX2 Debugging Enabled\n");
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug off";
e->usage =
"Usage: iax2 set debug off\n"
" Disables dumping of IAX packets for debugging purposes.\n";
"Usage: iax2 set debug [off]\n"
" Enables/Disables dumping of IAX packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 3 || a->argc > 4)
return CLI_SHOWUSAGE;
iaxdebug = 0;
ast_cli(a->fd, "IAX2 Debugging Disabled\n");
if (a->argc == 3) {
iaxdebug = 1;
ast_cli(a->fd, "IAX2 Debugging Enabled\n");
} else {
iaxdebug = 0;
ast_cli(a->fd, "IAX2 Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug {on|off}";
e->usage =
"Usage: iax2 set debug {on|off}\n"
" Enables/Disables dumping of IAX packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args -1], "on", 2)) {
iaxdebug = 1;
ast_cli(a->fd, "IAX2 Debugging Enabled\n");
} else {
iaxdebug = 0;
ast_cli(a->fd, "IAX2 Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug_trunk_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug trunk [off]";
e->usage =
"Usage: iax2 set debug trunk [off]\n"
" Enables/Disables debugging of IAX trunking\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 4 || a->argc > 5)
return CLI_SHOWUSAGE;
if (a->argc == 4) {
iaxtrunkdebug = 1;
ast_cli(a->fd, "IAX2 Trunk Debugging Enabled\n");
} else {
iaxtrunkdebug = 0;
ast_cli(a->fd, "IAX2 Trunk Debugging Disabled\n");
}
return CLI_SUCCESS;
}
@ -5304,37 +5343,51 @@ static char *handle_cli_iax2_set_debug_trunk(struct ast_cli_entry *e, int cmd, s
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug trunk";
e->command = "iax2 set debug trunk {on|off}";
e->usage =
"Usage: iax2 set debug trunk\n"
" Requests current status of IAX trunking\n";
"Usage: iax2 set debug trunk {on|off}\n"
" Enables/Disables debugging of IAX trunking\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 3 || a->argc > 4)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
iaxtrunkdebug = 1;
ast_cli(a->fd, "IAX2 Trunk Debugging Requested\n");
if (!strncasecmp(a->argv[e->args - 1], "on", 2)) {
iaxtrunkdebug = 1;
ast_cli(a->fd, "IAX2 Trunk Debugging Enabled\n");
} else {
iaxtrunkdebug = 0;
ast_cli(a->fd, "IAX2 Trunk Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug_trunk_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_iax2_set_debug_jb_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug trunk off";
e->command = "iax2 set debug jb [off]";
e->usage =
"Usage: iax2 set debug trunk off\n"
" Disables debugging of IAX trunking\n";
"Usage: iax2 set debug jb [off]\n"
" Enables/Disables jitterbuffer debugging information\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 4 || a->argc > 5)
return CLI_SHOWUSAGE;
iaxtrunkdebug = 0;
ast_cli(a->fd, "IAX2 Trunk Debugging Disabled\n");
if (a->argc == 4) {
jb_setoutput(jb_error_output, jb_warning_output, jb_debug_output);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Enabled\n");
} else {
jb_setoutput(jb_error_output, jb_warning_output, NULL);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Disabled\n");
}
return CLI_SUCCESS;
}
@ -5342,37 +5395,25 @@ static char *handle_cli_iax2_set_debug_jb(struct ast_cli_entry *e, int cmd, stru
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug jb";
e->command = "iax2 set debug jb {on|off}";
e->usage =
"Usage: iax2 set debug jb\n"
" Enables jitterbuffer debugging information\n";
"Usage: iax2 set debug jb {on|off}\n"
" Enables/Disables jitterbuffer debugging information\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 3 || a->argc > 4)
return CLI_SHOWUSAGE;
jb_setoutput(jb_error_output, jb_warning_output, jb_debug_output);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Enabled\n");
return CLI_SUCCESS;
}
static char *handle_cli_iax2_set_debug_jb_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "iax2 set debug jb off";
e->usage =
"Usage: iax2 set debug jb off\n"
" Disables jitterbuffer debugging information\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 4 || a->argc > 5)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
jb_setoutput(jb_error_output, jb_warning_output, NULL);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Disabled\n");
if (!strncasecmp(a->argv[e->args -1], "on", 2)) {
jb_setoutput(jb_error_output, jb_warning_output, jb_debug_output);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Enabled\n");
} else {
jb_setoutput(jb_error_output, jb_warning_output, NULL);
ast_cli(a->fd, "IAX2 Jitterbuffer Debugging Disabled\n");
}
return CLI_SUCCESS;
}
@ -11474,17 +11515,18 @@ static struct ast_switch iax2_switch =
#endif
*/
static struct ast_cli_entry cli_iax2_set_debug_deprecated = AST_CLI_DEFINE(handle_cli_iax2_set_debug_deprecated, "Enable/Disable IAX debugging");
static struct ast_cli_entry cli_iax2_set_debug_trunk_deprecated = AST_CLI_DEFINE(handle_cli_iax2_set_debug_trunk_deprecated, "Enable/Disable IAX debugging");
static struct ast_cli_entry cli_iax2_set_debug_jb_deprecated = AST_CLI_DEFINE(handle_cli_iax2_set_debug_jb_deprecated, "Enable/Disable IAX debugging");
static struct ast_cli_entry cli_iax2[] = {
AST_CLI_DEFINE(handle_cli_iax2_provision, "Provision an IAX device"),
AST_CLI_DEFINE(handle_cli_iax2_prune_realtime, "Prune a cached realtime lookup"),
AST_CLI_DEFINE(handle_cli_iax2_reload, "Reload IAX configuration"),
AST_CLI_DEFINE(handle_cli_iax2_set_mtu, "Set the IAX systemwide trunking MTU"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug, "Enable IAX debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_trunk, "Enable IAX trunk debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_jb, "Enable IAX jitterbuffer debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_off, "Disable IAX debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_trunk_off, "Disable IAX trunk debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_jb_off, "Disable IAX jitterbuffer debugging"),
AST_CLI_DEFINE(handle_cli_iax2_set_debug, "Enable/Disable IAX debugging", .deprecate_cmd = &cli_iax2_set_debug_deprecated),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_trunk, "Enable/Disable IAX trunk debugging", .deprecate_cmd = &cli_iax2_set_debug_trunk_deprecated),
AST_CLI_DEFINE(handle_cli_iax2_set_debug_jb, "Enable/Disable IAX jitterbuffer debugging", .deprecate_cmd = &cli_iax2_set_debug_jb_deprecated),
AST_CLI_DEFINE(handle_cli_iax2_show_cache, "Display IAX cached dialplan"),
AST_CLI_DEFINE(handle_cli_iax2_show_channels, "List active IAX channels"),
AST_CLI_DEFINE(handle_cli_iax2_show_firmware, "List available IAX firmware"),

View File

@ -1139,51 +1139,64 @@ static char *handle_mgcp_audit_endpoint(struct ast_cli_entry *e, int cmd, struct
return CLI_SUCCESS;
}
static char *handle_mgcp_set_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "mgcp set debug [off]";
e->usage =
"Usage: mgcp set debug [off]\n"
" Enables/Disables dumping of MGCP packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < 3 || a->argc > 4)
return CLI_SHOWUSAGE;
if (a->argc == 3) {
mgcpdebug = 1;
ast_cli(a->fd, "MGCP Debugging Enabled\n");
} else if (!strncasecmp(a->argv[3], "off", 3)) {
mgcpdebug = 0;
ast_cli(a->fd, "MGCP Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *handle_mgcp_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "mgcp set debug";
e->command = "mgcp set debug {on|off}";
e->usage =
"Usage: mgcp set debug\n"
" Enables dumping of MGCP packets for debugging purposes\n";
"Usage: mgcp set debug {on|off}\n"
" Enables/Disables dumping of MGCP packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
mgcpdebug = 1;
ast_cli(a->fd, "MGCP Debugging Enabled\n");
return CLI_SUCCESS;
}
static char *handle_mgcp_set_debug_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "mgcp set debug off";
e->usage =
"Usage: mgcp set debug off\n"
" Disables dumping of MGCP packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
if (!strncasecmp(a->argv[e->args - 1], "on", 2)) {
mgcpdebug = 1;
ast_cli(a->fd, "MGCP Debugging Enabled\n");
} else if (!strncasecmp(a->argv[3], "off", 3)) {
mgcpdebug = 0;
ast_cli(a->fd, "MGCP Debugging Disabled\n");
} else {
return CLI_SHOWUSAGE;
}
if (a->argc != 4)
return CLI_SHOWUSAGE;
mgcpdebug = 0;
ast_cli(a->fd, "MGCP Debugging Disabled\n");
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_mgcp_set_debug_deprecated = AST_CLI_DEFINE(handle_mgcp_set_debug_deprecated, "Enable/Disable MGCP debugging");
static struct ast_cli_entry cli_mgcp[] = {
AST_CLI_DEFINE(handle_mgcp_audit_endpoint, "Audit specified MGCP endpoint"),
AST_CLI_DEFINE(handle_mgcp_show_endpoints, "List defined MGCP endpoints"),
AST_CLI_DEFINE(handle_mgcp_set_debug, "Enable MGCP debugging"),
AST_CLI_DEFINE(handle_mgcp_set_debug_off, "Disable MGCP debugging"),
AST_CLI_DEFINE(handle_mgcp_set_debug, "Enable/Disable MGCP debugging", .deprecate_cmd = &cli_mgcp_set_debug_deprecated),
AST_CLI_DEFINE(mgcp_reload, "Reload MGCP configuration"),
};

View File

@ -1853,8 +1853,8 @@ static char *sip_do_debug_ip(int fd, char *arg);
static char *sip_do_debug_peer(int fd, char *arg);
static char *sip_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *sip_notify(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *sip_do_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *sip_no_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *sip_do_history_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *sip_set_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static int sip_dtmfmode(struct ast_channel *chan, void *data);
static int sip_addheader(struct ast_channel *chan, void *data);
static int sip_do_reload(enum channelreloadreason reason);
@ -13243,7 +13243,7 @@ static char *sip_show_history(struct ast_cli_entry *e, int cmd, struct ast_cli_a
if (a->argc != 4)
return CLI_SHOWUSAGE;
if (!recordhistory)
ast_cli(a->fd, "\n***Note: History recording is currently DISABLED. Use 'sip history' to ENABLE.\n");
ast_cli(a->fd, "\n***Note: History recording is currently DISABLED. Use 'sip set history on' to ENABLE.\n");
len = strlen(a->argv[3]);
dialoglist_lock();
for (cur = dialoglist; cur; cur = cur->next) {
@ -13652,49 +13652,63 @@ static char *sip_notify(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a
return CLI_SUCCESS;
}
/*! \brief Enable SIP History logging (CLI) */
static char *sip_do_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
/*! \brief Enable/Disable SIP History logging (CLI) - deprecated. use sip_set_history instead */
static char *sip_do_history_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "sip history";
e->command = "sip history [off]";
e->usage =
"Usage: sip history\n"
" Enables recording of SIP dialog history for debugging purposes.\n"
"Usage: sip history [off]\n"
" Enables/Disables recording of SIP dialog history for debugging purposes.\n"
" Use 'sip show history' to view the history of a call number.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 2) {
if (a->argc < 2 || a->argc > 3) {
return CLI_SHOWUSAGE;
}
recordhistory = TRUE;
ast_cli(a->fd, "SIP History Recording Enabled (use 'sip show history')\n");
if (a->argc == 2) {
recordhistory = TRUE;
ast_cli(a->fd, "SIP History Recording Enabled (use 'sip show history')\n");
} else {
if (strncasecmp(a->argv[2], "off", 3))
return CLI_SHOWUSAGE;
recordhistory = FALSE;
ast_cli(a->fd, "SIP History Recording Disabled\n");
}
return CLI_SUCCESS;
}
/*! \brief Disable SIP History logging (CLI) */
static char *sip_no_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
/*! \brief Enable/Disable SIP History logging (CLI) */
static char *sip_set_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "sip history off";
e->command = "sip set history {on|off}";
e->usage =
"Usage: sip history off\n"
" Disables recording of SIP dialog history for debugging purposes\n";
"Usage: sip history {on|off}\n"
" Enables/Disables recording of SIP dialog history for debugging purposes.\n"
" Use 'sip show history' to view the history of a call number.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3) {
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args - 1], "on", 2)) {
recordhistory = TRUE;
ast_cli(a->fd, "SIP History Recording Enabled (use 'sip show history')\n");
} else if (!strncasecmp(a->argv[e->args - 1], "off", 3)) {
recordhistory = FALSE;
ast_cli(a->fd, "SIP History Recording Disabled\n");
} else {
return CLI_SHOWUSAGE;
}
recordhistory = FALSE;
ast_cli(a->fd, "SIP History Recording Disabled\n");
return CLI_SUCCESS;
}
@ -21102,6 +21116,7 @@ static int reload(void)
return 1;
}
static struct ast_cli_entry cli_sip_do_history_deprecated = AST_CLI_DEFINE(sip_do_history_deprecated, "Enable/Disable SIP history");
/*! \brief SIP Cli commands definition */
static struct ast_cli_entry cli_sip[] = {
AST_CLI_DEFINE(sip_show_channels, "List active SIP channels/subscriptions"),
@ -21120,8 +21135,7 @@ static struct ast_cli_entry cli_sip[] = {
AST_CLI_DEFINE(sip_show_user, "Show details on specific SIP user"),
AST_CLI_DEFINE(sip_prune_realtime, "Prune cached Realtime users/peers"),
AST_CLI_DEFINE(sip_do_debug, "Enable/Disable SIP debugging"),
AST_CLI_DEFINE(sip_do_history, "Enable SIP history"),
AST_CLI_DEFINE(sip_no_history, "Disable SIP history"),
AST_CLI_DEFINE(sip_set_history, "Enable/Disable SIP history", .deprecate_cmd = &cli_sip_do_history_deprecated),
AST_CLI_DEFINE(sip_reload, "Reload SIP configuration"),
AST_CLI_DEFINE(sip_show_tcp, "List TCP Connections")
};

View File

@ -2371,46 +2371,62 @@ static struct ast_rtp_protocol skinny_rtp = {
.set_rtp_peer = skinny_set_rtp_peer,
};
static char *handle_skinny_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_skinny_set_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "skinny set debug";
e->command = "skinny set debug [off]";
e->usage =
"Usage: skinny set debug\n"
" Enables dumping of Skinny packets for debugging purposes\n";
"Usage: skinny set debug [off]\n"
" Enables/Disables dumping of Skinny packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
if (a->argc < 3 || a->argc > 4)
return CLI_SHOWUSAGE;
skinnydebug = 1;
ast_cli(a->fd, "Skinny Debugging Enabled\n");
return CLI_SUCCESS;
if (a->argc == 3) {
skinnydebug = 1;
ast_cli(a->fd, "Skinny Debugging Enabled\n");
return CLI_SUCCESS;
} else if (!strncasecmp(a->argv[3], "off", 3)) {
skinnydebug = 0;
ast_cli(a->fd, "Skinny Debugging Disabled\n");
return CLI_SUCCESS;
} else {
return CLI_SHOWUSAGE;
}
}
static char *handle_skinny_set_debug_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_skinny_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "skinny set debug off";
e->command = "skinny set debug {on|off}";
e->usage =
"Usage: skinny set debug off\n"
" Disables dumping of Skinny packets for debugging purposes\n";
"Usage: skinny set debug {on|off}\n"
" Enables/Disables dumping of Skinny packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 4)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
skinnydebug = 0;
ast_cli(a->fd, "Skinny Debugging Disabled\n");
return CLI_SUCCESS;
if (!strncasecmp(a->argv[e->args - 1], "on", 2)) {
skinnydebug = 1;
ast_cli(a->fd, "Skinny Debugging Enabled\n");
return CLI_SUCCESS;
} else if (!strncasecmp(a->argv[e->args - 1], "off", 3)) {
skinnydebug = 0;
ast_cli(a->fd, "Skinny Debugging Disabled\n");
return CLI_SUCCESS;
} else {
return CLI_SHOWUSAGE;
}
}
static char *complete_skinny_devices(const char *word, int state)
@ -2841,14 +2857,14 @@ static char *handle_skinny_show_settings(struct ast_cli_entry *e, int cmd, struc
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_skinny_set_debug_deprecated = AST_CLI_DEFINE(handle_skinny_set_debug_deprecated, "Enable/Disable Skinny debugging");
static struct ast_cli_entry cli_skinny[] = {
AST_CLI_DEFINE(handle_skinny_show_devices, "List defined Skinny devices"),
AST_CLI_DEFINE(handle_skinny_show_device, "List Skinny device information"),
AST_CLI_DEFINE(handle_skinny_show_lines, "List defined Skinny lines per device"),
AST_CLI_DEFINE(handle_skinny_show_line, "List Skinny line information"),
AST_CLI_DEFINE(handle_skinny_show_settings, "List global Skinny settings"),
AST_CLI_DEFINE(handle_skinny_set_debug, "Enable Skinny debugging"),
AST_CLI_DEFINE(handle_skinny_set_debug_off, "Disable Skinny debugging"),
AST_CLI_DEFINE(handle_skinny_set_debug, "Enable/Disable Skinny debugging", .deprecate_cmd = &cli_skinny_set_debug_deprecated),
AST_CLI_DEFINE(handle_skinny_reset, "Reset Skinny device(s)"),
};

View File

@ -1622,7 +1622,7 @@ static int set_txctcss_level(struct chan_usbradio_pvt *o)
/*
CLI debugging on and off
*/
static char *handle_cli_radio_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_radio_set_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct chan_usbradio_pvt *o = NULL;
@ -1652,11 +1652,43 @@ static char *handle_cli_radio_set_debug(struct ast_cli_entry *e, int cmd, struct
return CLI_SUCCESS;
}
static char *handle_cli_radio_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct chan_usbradio_pvt *o = NULL;
switch (cmd) {
case CLI_INIT:
e->command = "radio set debug {on|off}";
e->usage =
"Usage: radio set debug {on|off}\n"
" Enable/Disable radio debugging.\n";
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
o = find_desc(usbradio_active);
if (!strncasecmp(a->argv[e->args - 1], "on", 2))
o->debuglevel = 1;
else if (!strncasecmp(a->argv[e->args - 1], "off", 3))
o->debuglevel = 0;
else
return CLI_SHOWUSAGE;
ast_cli(a->fd, "USB Radio debugging %s.\n", o->debuglevel ? "enabled" : "disabled");
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_radio_set_debug_deprecated = AST_CLI_DEFINE(handle_cli_radio_set_debug_deprecated, "Enable/Disable Radio Debugging");
static struct ast_cli_entry cli_usbradio[] = {
AST_CLI_DEFINE(handle_cli_radio_key, "Simulate Rx Signal Present"),
AST_CLI_DEFINE(handle_cli_radio_unkey, "Simulate Rx Signal Lusb"),
AST_CLI_DEFINE(handle_cli_radio_tune, "Radio Tune"),
AST_CLI_DEFINE(handle_cli_radio_set_debug, "Enable/Disable Radio Debugging"),
AST_CLI_DEFINE(handle_cli_radio_set_debug, "Enable/Disable Radio Debugging", .deprecate_cmd = &cli_radio_set_debug_deprecated),
};
/*

View File

@ -127,7 +127,7 @@ static enum ast_device_state custom_devstate_callback(const char *data)
return ast_devstate_val(buf);
}
static char *cli_funcdevstate_list(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_funcdevstate_list(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct ast_db_entry *db_entry, *db_tree;
@ -171,8 +171,53 @@ static char *cli_funcdevstate_list(struct ast_cli_entry *e, int cmd, struct ast_
return CLI_SUCCESS;
}
static char *handle_cli_devstate_list(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct ast_db_entry *db_entry, *db_tree;
switch (cmd) {
case CLI_INIT:
e->command = "devstate list";
e->usage =
"Usage: devstate list\n"
" List all custom device states that have been set by using\n"
" the DEVICE_STATE dialplan function.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
ast_cli(a->fd, "\n"
"---------------------------------------------------------------------\n"
"--- Custom Device States --------------------------------------------\n"
"---------------------------------------------------------------------\n"
"---\n");
db_entry = db_tree = ast_db_gettree(astdb_family, NULL);
for (; db_entry; db_entry = db_entry->next) {
const char *dev_name = strrchr(db_entry->key, '/') + 1;
if (dev_name <= (const char *) 1)
continue;
ast_cli(a->fd, "--- Name: 'Custom:%s' State: '%s'\n"
"---\n", dev_name, db_entry->data);
}
ast_db_freetree(db_tree);
db_tree = NULL;
ast_cli(a->fd,
"---------------------------------------------------------------------\n"
"---------------------------------------------------------------------\n"
"\n");
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_funcdevstate_list_deprecated = AST_CLI_DEFINE(handle_cli_funcdevstate_list, "List currently known custom device states");
static struct ast_cli_entry cli_funcdevstate[] = {
AST_CLI_DEFINE(cli_funcdevstate_list, "List currently known custom device states"),
AST_CLI_DEFINE(handle_cli_devstate_list, "List currently known custom device states", .deprecate_cmd = &cli_funcdevstate_list_deprecated),
};
static struct ast_custom_function devstate_function = {

View File

@ -1535,28 +1535,36 @@ static char *handle_stop_now(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
{
switch (cmd) {
case CLI_INIT:
e->command = "stop now";
e->command = "core stop now";
e->usage =
"Usage: stop now\n"
"Usage: core stop now\n"
" Shuts down a running Asterisk immediately, hanging up all active calls .\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
quit_handler(0, 0 /* Not nice */, 1 /* safely */, 0 /* not restart */);
return CLI_SUCCESS;
}
static char *handle_stop_now_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_stop_now(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "stop now";
return res;
}
static char *handle_stop_gracefully(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "stop gracefully";
e->command = "core stop gracefully";
e->usage =
"Usage: stop gracefully\n"
"Usage: core stop gracefully\n"
" Causes Asterisk to not accept new calls, and exit when all\n"
" active calls have terminated normally.\n";
return NULL;
@ -1564,39 +1572,55 @@ static char *handle_stop_gracefully(struct ast_cli_entry *e, int cmd, struct ast
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
quit_handler(0, 1 /* nicely */, 1 /* safely */, 0 /* no restart */);
return CLI_SUCCESS;
}
static char *handle_stop_gracefully_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_stop_gracefully(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "stop gracefully";
return res;
}
static char *handle_stop_when_convenient(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "stop when convenient";
e->command = "core stop when convenient";
e->usage =
"Usage: stop when convenient\n"
"Usage: core stop when convenient\n"
" Causes Asterisk to perform a shutdown when all active calls have ended.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
ast_cli(a->fd, "Waiting for inactivity to perform halt\n");
quit_handler(0, 2 /* really nicely */, 1 /* safely */, 0 /* don't restart */);
return CLI_SUCCESS;
}
static char *handle_stop_when_convenient_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_stop_when_convenient(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "stop when convenient";
return res;
}
static char *handle_restart_now(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "restart now";
e->command = "core restart now";
e->usage =
"Usage: restart now\n"
"Usage: core restart now\n"
" Causes Asterisk to hangup all calls and exec() itself performing a cold\n"
" restart.\n";
return NULL;
@ -1604,19 +1628,27 @@ static char *handle_restart_now(struct ast_cli_entry *e, int cmd, struct ast_cli
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
quit_handler(0, 0 /* not nicely */, 1 /* safely */, 1 /* restart */);
return CLI_SUCCESS;
}
static char *handle_restart_now_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_restart_now(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "restart now";
return res;
}
static char *handle_restart_gracefully(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "restart gracefully";
e->command = "core restart gracefully";
e->usage =
"Usage: restart gracefully\n"
"Usage: core restart gracefully\n"
" Causes Asterisk to stop accepting new calls and exec() itself performing a cold\n"
" restart when all active calls have ended.\n";
return NULL;
@ -1624,39 +1656,55 @@ static char *handle_restart_gracefully(struct ast_cli_entry *e, int cmd, struct
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
quit_handler(0, 1 /* nicely */, 1 /* safely */, 1 /* restart */);
return CLI_SUCCESS;
}
static char *handle_restart_gracefully_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_restart_gracefully(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "restart gracefully";
return res;
}
static char *handle_restart_when_convenient(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "restart when convenient";
e->command = "core restart when convenient";
e->usage =
"Usage: restart when convenient\n"
"Usage: core restart when convenient\n"
" Causes Asterisk to perform a cold restart when all active calls have ended.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
ast_cli(a->fd, "Waiting for inactivity to perform restart\n");
quit_handler(0, 2 /* really nicely */, 1 /* safely */, 1 /* restart */);
return CLI_SUCCESS;
}
static char *handle_restart_when_convenient_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_restart_when_convenient(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "restart when convenient";
return res;
}
static char *handle_abort_shutdown(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "abort shutdown";
e->command = "core abort shutdown";
e->usage =
"Usage: abort shutdown\n"
"Usage: core abort shutdown\n"
" Causes Asterisk to abort an executing shutdown or restart, and resume normal\n"
" call operations.\n";
return NULL;
@ -1664,13 +1712,21 @@ static char *handle_abort_shutdown(struct ast_cli_entry *e, int cmd, struct ast_
return NULL;
}
if (a->argc != 2)
if (a->argc != e->args)
return CLI_SHOWUSAGE;
ast_cancel_shutdown();
shuttingdown = 0;
return CLI_SUCCESS;
}
static char *handle_abort_shutdown_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_abort_shutdown(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "abort shutdown";
return res;
}
static char *handle_bang(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
@ -1770,14 +1826,24 @@ static char *show_license(struct ast_cli_entry *e, int cmd, struct ast_cli_args
#define ASTERISK_PROMPT2 "%s*CLI> "
/* deprecated cli entries */
static struct ast_cli_entry cli_abort_shutdown_deprecated = AST_CLI_DEFINE(handle_abort_shutdown_deprecated, "Cancel a running shutdown.");
static struct ast_cli_entry cli_stop_now_deprecated = AST_CLI_DEFINE(handle_stop_now_deprecated, "Shut down Asterisk immediately.");
static struct ast_cli_entry cli_stop_gracefully_deprecated = AST_CLI_DEFINE(handle_stop_gracefully_deprecated, "Gracefully shut down Asterisk.");
static struct ast_cli_entry cli_stop_when_convenient_deprecated = AST_CLI_DEFINE(handle_stop_when_convenient_deprecated, "Shut down Asterisk at empty call volume.");
static struct ast_cli_entry cli_restart_now_deprecated = AST_CLI_DEFINE(handle_restart_now_deprecated, "Restart Asterisk immediately.");
static struct ast_cli_entry cli_restart_gracefully_deprecated = AST_CLI_DEFINE(handle_restart_gracefully_deprecated, "Restart Asterisk gracefully.");
static struct ast_cli_entry cli_restart_when_convenient_deprecated = AST_CLI_DEFINE(handle_restart_when_convenient_deprecated, "Restart Asterisk at empty call volume.");
/* end deprecated cli entries */
static struct ast_cli_entry cli_asterisk[] = {
AST_CLI_DEFINE(handle_abort_shutdown, "Cancel a running shutdown"),
AST_CLI_DEFINE(handle_stop_now, "Shut down Asterisk immediately"),
AST_CLI_DEFINE(handle_stop_gracefully, "Gracefully shut down Asterisk"),
AST_CLI_DEFINE(handle_stop_when_convenient, "Shut down Asterisk at empty call volume"),
AST_CLI_DEFINE(handle_restart_now, "Restart Asterisk immediately"),
AST_CLI_DEFINE(handle_restart_gracefully, "Restart Asterisk gracefully"),
AST_CLI_DEFINE(handle_restart_when_convenient, "Restart Asterisk at empty call volume"),
AST_CLI_DEFINE(handle_abort_shutdown, "Cancel a running shutdown", .deprecate_cmd = &cli_abort_shutdown_deprecated),
AST_CLI_DEFINE(handle_stop_now, "Shut down Asterisk immediately", .deprecate_cmd = &cli_stop_now_deprecated),
AST_CLI_DEFINE(handle_stop_gracefully, "Gracefully shut down Asterisk", .deprecate_cmd = &cli_stop_gracefully_deprecated),
AST_CLI_DEFINE(handle_stop_when_convenient, "Shut down Asterisk at empty call volume", .deprecate_cmd = &cli_stop_when_convenient_deprecated),
AST_CLI_DEFINE(handle_restart_now, "Restart Asterisk immediately", .deprecate_cmd = &cli_restart_now_deprecated),
AST_CLI_DEFINE(handle_restart_gracefully, "Restart Asterisk gracefully", .deprecate_cmd = &cli_restart_gracefully_deprecated),
AST_CLI_DEFINE(handle_restart_when_convenient, "Restart Asterisk at empty call volume", .deprecate_cmd = &cli_restart_when_convenient_deprecated),
AST_CLI_DEFINE(show_warranty, "Show the warranty (if any) for this copy of Asterisk"),
AST_CLI_DEFINE(show_license, "Show the license(s) for this copy of Asterisk"),
AST_CLI_DEFINE(handle_version, "Display version info"),

View File

@ -1236,16 +1236,16 @@ static char *handle_cli_status(struct ast_cli_entry *e, int cmd, struct ast_cli_
switch (cmd) {
case CLI_INIT:
e->command = "cdr status";
e->command = "cdr show status";
e->usage =
"Usage: cdr status\n"
"Usage: cdr show status\n"
" Displays the Call Detail Record engine system status.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc > 2)
if (a->argc > 3)
return CLI_SHOWUSAGE;
ast_cli(a->fd, "CDR logging: %s\n", enabled ? "enabled" : "disabled");
@ -1274,6 +1274,14 @@ static char *handle_cli_status(struct ast_cli_entry *e, int cmd, struct ast_cli_
return CLI_SUCCESS;
}
static char *handle_cli_status_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char *res = handle_cli_status(e, cmd, a);
if (cmd == CLI_INIT)
e->command = "cdr status";
return res;
}
static char *handle_cli_submit(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
@ -1296,7 +1304,8 @@ static char *handle_cli_submit(struct ast_cli_entry *e, int cmd, struct ast_cli_
}
static struct ast_cli_entry cli_submit = AST_CLI_DEFINE(handle_cli_submit, "Posts all pending batched CDR data");
static struct ast_cli_entry cli_status = AST_CLI_DEFINE(handle_cli_status, "Display the CDR status");
static struct ast_cli_entry cli_status_deprecated = AST_CLI_DEFINE(handle_cli_status_deprecated, "Display the CDR status");
static struct ast_cli_entry cli_status = AST_CLI_DEFINE(handle_cli_status, "Display the CDR status", .deprecate_cmd = &cli_status_deprecated);
static int do_reload(int reload)
{

View File

@ -4645,7 +4645,7 @@ static char *handle_show_dialplan(struct ast_cli_entry *e, int cmd, struct ast_c
case CLI_INIT:
e->command = "dialplan show";
e->usage =
"Usage: dialplan show [exten@][context]\n"
"Usage: dialplan show [[exten@]context]\n"
" Show dialplan\n";
return NULL;
case CLI_GENERATE:

View File

@ -3898,7 +3898,7 @@ static char *rtcp_do_debug_ip(struct ast_cli_args *a)
return CLI_SUCCESS;
}
static char *handle_cli_rtp_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_rtp_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
@ -3933,7 +3933,40 @@ static char *handle_cli_rtp_debug(struct ast_cli_entry *e, int cmd, struct ast_c
return CLI_SUCCESS;
}
static char *handle_cli_rtcp_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_rtp_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "rtp set debug {on|off|ip}";
e->usage =
"Usage: rtp set debug {on|off|ip host[:port]}\n"
" Enable/Disable dumping of all RTP packets. If 'ip' is\n"
" specified, limit the dumped packets to those to and from\n"
" the specified 'host' with optional port.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc == e->args) { /* set on or off */
if (!strncasecmp(a->argv[e->args-1], "on", 2)) {
rtpdebug = 1;
memset(&rtpdebugaddr, 0, sizeof(rtpdebugaddr));
ast_cli(a->fd, "RTP Debugging Enabled\n");
return CLI_SUCCESS;
} else if (!strncasecmp(a->argv[e->args-1], "off", 3)) {
rtpdebug = 0;
ast_cli(a->fd, "RTP Debugging Disabled\n");
return CLI_SUCCESS;
}
} else if (a->argc == e->args +1) { /* ip */
return rtp_do_debug_ip(a);
}
return CLI_SHOWUSAGE; /* default, failure */
}
static char *handle_cli_rtcp_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
@ -3968,7 +4001,40 @@ static char *handle_cli_rtcp_debug(struct ast_cli_entry *e, int cmd, struct ast_
return CLI_SUCCESS;
}
static char *handle_cli_rtcp_stats(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_rtcp_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "rtcp set debug {on|off|ip}";
e->usage =
"Usage: rtcp set debug {on|off|ip host[:port]}\n"
" Enable/Disable dumping of all RTCP packets. If 'ip' is\n"
" specified, limit the dumped packets to those to and from\n"
" the specified 'host' with optional port.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc == e->args) { /* set on or off */
if (!strncasecmp(a->argv[e->args-1], "on", 2)) {
rtcpdebug = 1;
memset(&rtcpdebugaddr, 0, sizeof(rtcpdebugaddr));
ast_cli(a->fd, "RTCP Debugging Enabled\n");
return CLI_SUCCESS;
} else if (!strncasecmp(a->argv[e->args-1], "off", 3)) {
rtcpdebug = 0;
ast_cli(a->fd, "RTCP Debugging Disabled\n");
return CLI_SUCCESS;
}
} else if (a->argc == e->args +1) { /* ip */
return rtcp_do_debug_ip(a);
}
return CLI_SHOWUSAGE; /* default, failure */
}
static char *handle_cli_rtcp_stats_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
@ -3991,7 +4057,34 @@ static char *handle_cli_rtcp_stats(struct ast_cli_entry *e, int cmd, struct ast_
return CLI_SUCCESS;
}
static char *handle_cli_stun_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_rtcp_set_stats(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "rtcp set stats {on|off}";
e->usage =
"Usage: rtcp set stats {on|off}\n"
" Enable/Disable dumping of RTCP stats.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args-1], "on", 2))
rtcpstats = 1;
else if (!strncasecmp(a->argv[e->args-1], "off", 3))
rtcpstats = 0;
else
return CLI_SHOWUSAGE;
ast_cli(a->fd, "RTCP Stats %s\n", rtcpstats ? "Enabled" : "Disabled");
return CLI_SUCCESS;
}
static char *handle_cli_stun_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
@ -4015,11 +4108,44 @@ static char *handle_cli_stun_debug(struct ast_cli_entry *e, int cmd, struct ast_
return CLI_SUCCESS;
}
static char *handle_cli_stun_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "stun set debug {on|off}";
e->usage =
"Usage: stun set debug {on|off}\n"
" Enable/Disable STUN (Simple Traversal of UDP through NATs)\n"
" debugging\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args-1], "on", 2))
stundebug = 1;
else if (!strncasecmp(a->argv[e->args-1], "off", 3))
stundebug = 0;
else
return CLI_SHOWUSAGE;
ast_cli(a->fd, "STUN Debugging %s\n", stundebug ? "Enabled" : "Disabled");
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_rtp_debug_deprecated = AST_CLI_DEFINE(handle_cli_rtp_debug_deprecated, "Enable/Disable RTP debugging");
static struct ast_cli_entry cli_rtcp_debug_deprecated = AST_CLI_DEFINE(handle_cli_rtcp_debug_deprecated, "Enable/Disable RTCP debugging");
static struct ast_cli_entry cli_rtcp_stats_deprecated = AST_CLI_DEFINE(handle_cli_rtcp_stats_deprecated, "Enable/Disable RTCP stats");
static struct ast_cli_entry cli_stun_debug_deprecated = AST_CLI_DEFINE(handle_cli_stun_debug_deprecated, "Enable/Disable STUN debugging");
static struct ast_cli_entry cli_rtp[] = {
AST_CLI_DEFINE(handle_cli_rtp_debug, "Enable/Disable RTP debugging"),
AST_CLI_DEFINE(handle_cli_rtcp_debug, "Enable/Disable RTCP debugging"),
AST_CLI_DEFINE(handle_cli_rtcp_stats, "Enable/Disable RTCP stats"),
AST_CLI_DEFINE(handle_cli_stun_debug, "Enable/Disable STUN debugging"),
AST_CLI_DEFINE(handle_cli_rtp_set_debug, "Enable/Disable RTP debugging", .deprecate_cmd = &cli_rtp_debug_deprecated),
AST_CLI_DEFINE(handle_cli_rtcp_set_debug, "Enable/Disable RTCP debugging", .deprecate_cmd = &cli_rtcp_debug_deprecated),
AST_CLI_DEFINE(handle_cli_rtcp_set_stats, "Enable/Disable RTCP stats", .deprecate_cmd = &cli_rtcp_stats_deprecated),
AST_CLI_DEFINE(handle_cli_stun_set_debug, "Enable/Disable STUN debugging", .deprecate_cmd = &cli_stun_debug_deprecated),
};
static int __ast_rtp_reload(int reload)

View File

@ -1087,7 +1087,7 @@ int ast_udptl_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags,
return -1;
}
static char *handle_cli_udptl_debug_ip(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_udptl_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct hostent *hp;
struct ast_hostent ahp;
@ -1097,89 +1097,122 @@ static char *handle_cli_udptl_debug_ip(struct ast_cli_entry *e, int cmd, struct
switch (cmd) {
case CLI_INIT:
e->command = "udptl debug ip";
e->usage =
"Usage: udptl debug [ip host[:port]]\n"
" Enable dumping of all UDPTL packets to and from host.\n";
e->command = "udptl debug [off|ip]";
e->usage =
"Usage: udptl debug [off]|[ip host[:port]]\n"
" Enable or disable dumping of UDPTL packets.\n"
" If ip is specified, limit the dumped packets to those to and from\n"
" the specified 'host' with optional port.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
port = 0;
if (a->argc < 2 || a->argc > 4)
return CLI_SHOWUSAGE;
if (a->argc != 4)
return CLI_SHOWUSAGE;
arg = a->argv[3];
p = strstr(arg, ":");
if (p) {
*p = '\0';
p++;
port = atoi(p);
if (a->argc == 2) {
udptldebug = 1;
memset(&udptldebugaddr, 0, sizeof(udptldebugaddr));
ast_cli(a->fd, "UDPTL Debugging Enabled\n");
} else if (a->argc == 3) {
if (strncasecmp(a->argv[2], "off", 3))
return CLI_SHOWUSAGE;
udptldebug = 0;
ast_cli(a->fd, "UDPTL Debugging Disabled\n");
} else {
if (strncasecmp(a->argv[2], "ip", 2))
return CLI_SHOWUSAGE;
port = 0;
arg = a->argv[3];
p = strstr(arg, ":");
if (p) {
*p = '\0';
p++;
port = atoi(p);
}
hp = ast_gethostbyname(arg, &ahp);
if (hp == NULL)
return CLI_SHOWUSAGE;
udptldebugaddr.sin_family = AF_INET;
memcpy(&udptldebugaddr.sin_addr, hp->h_addr, sizeof(udptldebugaddr.sin_addr));
udptldebugaddr.sin_port = htons(port);
if (port == 0)
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s\n", ast_inet_ntoa(udptldebugaddr.sin_addr));
else
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s:%d\n", ast_inet_ntoa(udptldebugaddr.sin_addr), port);
udptldebug = 1;
}
hp = ast_gethostbyname(arg, &ahp);
if (hp == NULL)
return CLI_SHOWUSAGE;
udptldebugaddr.sin_family = AF_INET;
memcpy(&udptldebugaddr.sin_addr, hp->h_addr, sizeof(udptldebugaddr.sin_addr));
udptldebugaddr.sin_port = htons(port);
if (port == 0)
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s\n", ast_inet_ntoa(udptldebugaddr.sin_addr));
else
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s:%d\n", ast_inet_ntoa(udptldebugaddr.sin_addr), port);
udptldebug = 1;
return CLI_SUCCESS;
}
static char *handle_cli_udptl_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_udptl_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct hostent *hp;
struct ast_hostent ahp;
int port;
char *p;
char *arg;
switch (cmd) {
case CLI_INIT:
e->command = "udptl debug";
e->usage =
"Usage: udptl debug\n"
" Enable dumping of all UDPTL packets.\n";
e->command = "udptl set debug {on|off|ip}";
e->usage =
"Usage: udptl set debug {on|off|ip host[:port]}\n"
" Enable or disable dumping of UDPTL packets.\n"
" If ip is specified, limit the dumped packets to those to and from\n"
" the specified 'host' with optional port.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 2)
if (a->argc < 4 || a->argc > 5)
return CLI_SHOWUSAGE;
udptldebug = 1;
memset(&udptldebugaddr, 0, sizeof(udptldebugaddr));
ast_cli(a->fd, "UDPTL Debugging Enabled\n");
return CLI_SUCCESS;
}
static char *handle_cli_udptl_debug_off(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "udptl debug off";
e->usage =
"Usage: udptl debug off\n"
" Disable dumping of all UDPTL packets.\n";
return NULL;
case CLI_GENERATE:
return NULL;
if (a->argc == 4) {
if (!strncasecmp(a->argv[3], "on", 2)) {
udptldebug = 1;
memset(&udptldebugaddr, 0, sizeof(udptldebugaddr));
ast_cli(a->fd, "UDPTL Debugging Enabled\n");
} else if (!strncasecmp(a->argv[3], "off", 3)) {
udptldebug = 0;
ast_cli(a->fd, "UDPTL Debugging Disabled\n");
} else {
return CLI_SHOWUSAGE;
}
} else {
if (strncasecmp(a->argv[3], "ip", 2))
return CLI_SHOWUSAGE;
port = 0;
arg = a->argv[4];
p = strstr(arg, ":");
if (p) {
*p = '\0';
p++;
port = atoi(p);
}
hp = ast_gethostbyname(arg, &ahp);
if (hp == NULL)
return CLI_SHOWUSAGE;
udptldebugaddr.sin_family = AF_INET;
memcpy(&udptldebugaddr.sin_addr, hp->h_addr, sizeof(udptldebugaddr.sin_addr));
udptldebugaddr.sin_port = htons(port);
if (port == 0)
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s\n", ast_inet_ntoa(udptldebugaddr.sin_addr));
else
ast_cli(a->fd, "UDPTL Debugging Enabled for IP: %s:%d\n", ast_inet_ntoa(udptldebugaddr.sin_addr), port);
udptldebug = 1;
}
if (a->argc != 3)
return CLI_SHOWUSAGE;
udptldebug = 0;
ast_cli(a->fd, "UDPTL Debugging Disabled\n");
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_handle_udptl_debug_deprecated = AST_CLI_DEFINE(handle_cli_udptl_debug_deprecated, "Enable/Disable UDPTL debugging");
static struct ast_cli_entry cli_udptl[] = {
AST_CLI_DEFINE(handle_cli_udptl_debug, "Enable UDPTL debugging"),
AST_CLI_DEFINE(handle_cli_udptl_debug_ip, "Enable UDPTL debugging on IP"),
AST_CLI_DEFINE(handle_cli_udptl_debug_off, "Disable UDPTL debugging")
AST_CLI_DEFINE(handle_cli_udptl_set_debug, "Enable/Disable UDPTL debugging", .deprecate_cmd = &cli_handle_udptl_debug_deprecated)
};
static void __ast_udptl_reload(int reload)

View File

@ -146,7 +146,7 @@ static int pbx_load_module(void)
}
/* CLI interface */
static char *handle_cli_ael_debug_multiple(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *handle_cli_ael_debug_multiple_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
@ -180,6 +180,40 @@ static char *handle_cli_ael_debug_multiple(struct ast_cli_entry *e, int cmd, str
return CLI_SUCCESS;
}
static char *handle_cli_ael_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "ael set debug {read|tokens|macros|contexts|off}";
e->usage =
"Usage: ael debug {read|tokens|macros|contexts|off}\n"
" Enable AEL read, token, macro, or context debugging,\n"
" or disable all AEL debugging messages. Note: this\n"
" currently does nothing.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strcasecmp(a->argv[3], "read"))
aeldebug |= DEBUG_READ;
else if (!strcasecmp(a->argv[3], "tokens"))
aeldebug |= DEBUG_TOKENS;
else if (!strcasecmp(a->argv[3], "macros"))
aeldebug |= DEBUG_MACROS;
else if (!strcasecmp(a->argv[3], "contexts"))
aeldebug |= DEBUG_CONTEXTS;
else if (!strcasecmp(a->argv[3], "off"))
aeldebug = 0;
else
return CLI_SHOWUSAGE;
return CLI_SUCCESS;
}
static char *handle_cli_ael_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
@ -199,9 +233,10 @@ static char *handle_cli_ael_reload(struct ast_cli_entry *e, int cmd, struct ast_
return (pbx_load_module() ? CLI_FAILURE : CLI_SUCCESS);
}
static struct ast_cli_entry cli_ael_debug_multiple_deprecated = AST_CLI_DEFINE(handle_cli_ael_debug_multiple_deprecated, "Enable AEL debugging flags");
static struct ast_cli_entry cli_ael[] = {
AST_CLI_DEFINE(handle_cli_ael_reload, "Reload AEL configuration"),
AST_CLI_DEFINE(handle_cli_ael_debug_multiple, "Enable AEL debugging flags")
AST_CLI_DEFINE(handle_cli_ael_reload, "Reload AEL configuration"),
AST_CLI_DEFINE(handle_cli_ael_set_debug, "Enable AEL debugging flags", .deprecate_cmd = &cli_ael_debug_multiple_deprecated)
};
static int unload_module(void)

View File

@ -2179,42 +2179,106 @@ static int start_network_thread(void)
return 0;
}
static char *dundi_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *dundi_do_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi debug";
e->command = "dundi [no] debug";
e->usage =
"Usage: dundi debug\n"
" Enables dumping of DUNDi packets for debugging purposes\n";
"Usage: dundi [no] debug\n"
" Enables/Disables dumping of DUNDi packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 2)
if (a->argc < 2 || a->argc > 3)
return CLI_SHOWUSAGE;
dundidebug = 1;
ast_cli(a->fd, "DUNDi Debugging Enabled\n");
if (a->argc == 2) {
dundidebug = 1;
ast_cli(a->fd, "DUNDi Debugging Enabled\n");
} else {
dundidebug = 0;
ast_cli(a->fd, "DUNDi Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *dundi_do_store_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *dundi_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi store history";
e->command = "dundi set debug {on|off}";
e->usage =
"Usage: dundi store history\n"
" Enables storing of DUNDi requests and times for debugging\n"
"Usage: dundi set debug {on|off}\n"
" Enables/Disables dumping of DUNDi packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args -1], "on", 2)) {
dundidebug = 1;
ast_cli(a->fd, "DUNDi Debugging Enabled\n");
} else {
dundidebug = 0;
ast_cli(a->fd, "DUNDi Debugging Disabled\n");
}
return CLI_SUCCESS;
}
static char *dundi_do_store_history_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi [no] store history";
e->usage =
"Usage: dundi [no] store history\n"
" Enables/Disables storing of DUNDi requests and times for debugging\n"
"purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
if (a->argc < 3 || a->argc > 4)
return CLI_SHOWUSAGE;
global_storehistory = 1;
ast_cli(a->fd, "DUNDi History Storage Enabled\n");
if (a->argc == 3) {
global_storehistory = 1;
ast_cli(a->fd, "DUNDi History Storage Enabled\n");
} else {
global_storehistory = 0;
ast_cli(a->fd, "DUNDi History Storage Disabled\n");
}
return CLI_SUCCESS;
}
static char *dundi_store_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi store history {on|off}";
e->usage =
"Usage: dundi store history {on|off}\n"
" Enables/Disables storing of DUNDi requests and times for debugging\n"
"purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args -1], "on", 2)) {
global_storehistory = 1;
ast_cli(a->fd, "DUNDi History Storage Enabled\n");
} else {
global_storehistory = 0;
ast_cli(a->fd, "DUNDi History Storage Disabled\n");
}
return CLI_SUCCESS;
}
@ -2263,45 +2327,6 @@ static char *dundi_flush(struct ast_cli_entry *e, int cmd, struct ast_cli_args *
return CLI_SUCCESS;
}
static char *dundi_no_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi no debug";
e->usage =
"Usage: dundi no debug\n"
" Disables dumping of DUNDi packets for debugging purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 3)
return CLI_SHOWUSAGE;
dundidebug = 0;
ast_cli(a->fd, "DUNDi Debugging Disabled\n");
return CLI_SUCCESS;
}
static char *dundi_no_store_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "dundi no store history";
e->usage =
"Usage: dundi no store history\n"
" Disables storing of DUNDi requests and times for debugging\n"
"purposes\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 4)
return CLI_SHOWUSAGE;
global_storehistory = 0;
ast_cli(a->fd, "DUNDi History Storage Disabled\n");
return CLI_SUCCESS;
}
static char *model2str(int model)
{
switch(model) {
@ -2817,11 +2842,11 @@ static char *dundi_show_precache(struct ast_cli_entry *e, int cmd, struct ast_cl
#undef FORMAT2
}
static struct ast_cli_entry cli_dundi_do_debug_deprecated = AST_CLI_DEFINE(dundi_do_debug_deprecated, "Enable/Disable DUNDi debugging");
static struct ast_cli_entry cli_dundi_do_store_history_deprecated = AST_CLI_DEFINE(dundi_do_store_history_deprecated, "Enable/Disable DUNDi historic records");
static struct ast_cli_entry cli_dundi[] = {
AST_CLI_DEFINE(dundi_do_debug, "Enable DUNDi debugging"),
AST_CLI_DEFINE(dundi_no_debug, "Disable DUNDi debugging"),
AST_CLI_DEFINE(dundi_do_store_history, "Enable DUNDi historic records"),
AST_CLI_DEFINE(dundi_no_store_history, "Disable DUNDi historic records"),
AST_CLI_DEFINE(dundi_set_debug, "Enable/Disable DUNDi debugging", .deprecate_cmd = &cli_dundi_do_debug_deprecated),
AST_CLI_DEFINE(dundi_store_history, "Enable/Disable DUNDi historic records", .deprecate_cmd = &cli_dundi_do_store_history_deprecated),
AST_CLI_DEFINE(dundi_flush, "Flush DUNDi cache"),
AST_CLI_DEFINE(dundi_show_peers, "Show defined DUNDi peers"),
AST_CLI_DEFINE(dundi_show_trans, "Show active DUNDi transactions"),

View File

@ -1655,9 +1655,9 @@ static char *handle_cli_agi_debug(struct ast_cli_entry *e, int cmd, struct ast_c
{
switch (cmd) {
case CLI_INIT:
e->command = "agi debug [off]";
e->command = "agi set debug [on|off]";
e->usage =
"Usage: agi debug [off]\n"
"Usage: agi set debug [on|off]\n"
" Enables/disables dumping of AGI transactions for\n"
" debugging purposes.\n";
return NULL;
@ -1665,16 +1665,16 @@ static char *handle_cli_agi_debug(struct ast_cli_entry *e, int cmd, struct ast_c
case CLI_GENERATE:
return NULL;
}
if (a->argc < e->args - 1 || a->argc > e->args )
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (a->argc == e->args - 1) {
if (strncasecmp(a->argv[3], "off", 3) == 0) {
agidebug = 0;
} else if (strncasecmp(a->argv[3], "on", 2) == 0) {
agidebug = 1;
} else {
if (strncasecmp(a->argv[e->args - 1], "off", 3) == 0) {
agidebug = 0;
} else {
return CLI_SHOWUSAGE;
}
return CLI_SHOWUSAGE;
}
ast_cli(a->fd, "AGI Debugging %sabled\n", agidebug ? "En" : "Dis");
return CLI_SUCCESS;
@ -2767,30 +2767,14 @@ static void write_html_escaped(FILE *htmlfile, char *str)
return;
}
static char *handle_cli_agi_dumphtml(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static int write_htmldump(char *filename)
{
struct agi_command *command;
char fullcmd[80];
FILE *htmlfile;
switch (cmd) {
case CLI_INIT:
e->command = "agi dumphtml";
e->usage =
"Usage: agi dumphtml <filename>\n"
" Dumps the AGI command list in HTML format to the given\n"
" file.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < e->args + 1)
return CLI_SHOWUSAGE;
if (!(htmlfile = fopen(a->argv[2], "wt"))) {
ast_cli(a->fd, "Could not create file '%s'\n", a->argv[2]);
return CLI_SHOWUSAGE;
}
if (!(htmlfile = fopen(filename, "wt")))
return -1;
fprintf(htmlfile, "<HTML>\n<HEAD>\n<TITLE>AGI Commands</TITLE>\n</HEAD>\n");
fprintf(htmlfile, "<BODY>\n<CENTER><B><H1>AGI Commands</H1></B></CENTER>\n\n");
@ -2828,10 +2812,57 @@ static char *handle_cli_agi_dumphtml(struct ast_cli_entry *e, int cmd, struct as
AST_RWLIST_UNLOCK(&agi_commands);
fprintf(htmlfile, "</TABLE>\n</BODY>\n</HTML>\n");
fclose(htmlfile);
return 0;
}
static char *handle_cli_agi_dumphtml_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "agi dumphtml";
e->usage =
"Usage: agi dumphtml <filename>\n"
" Dumps the AGI command list in HTML format to the given\n"
" file.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc < e->args + 1)
return CLI_SHOWUSAGE;
if (write_htmldump(a->argv[2]) < 0) {
ast_cli(a->fd, "Could not create file '%s'\n", a->argv[2]);
return CLI_SHOWUSAGE;
}
ast_cli(a->fd, "AGI HTML commands dumped to: %s\n", a->argv[2]);
return CLI_SUCCESS;
}
static char *handle_cli_agi_dump_html(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "agi dump html";
e->usage =
"Usage: agi dump html <filename>\n"
" Dumps the AGI command list in HTML format to the given\n"
" file.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != e->args + 1)
return CLI_SHOWUSAGE;
if (write_htmldump(a->argv[e->args]) < 0) {
ast_cli(a->fd, "Could not create file '%s'\n", a->argv[e->args]);
return CLI_SHOWUSAGE;
}
ast_cli(a->fd, "AGI HTML commands dumped to: %s\n", a->argv[e->args]);
return CLI_SUCCESS;
}
static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int dead)
{
enum agi_result res;
@ -2941,11 +2972,13 @@ static int deadagi_exec(struct ast_channel *chan, void *data)
return agi_exec(chan, data);
}
static struct ast_cli_entry cli_agi_dumphtml_deprecated = AST_CLI_DEFINE(handle_cli_agi_dumphtml_deprecated, "Dumps a list of AGI commands in HTML format");
static struct ast_cli_entry cli_agi[] = {
AST_CLI_DEFINE(handle_cli_agi_add_cmd, "Add AGI command to a channel in Async AGI"),
AST_CLI_DEFINE(handle_cli_agi_debug, "Enable/Disable AGI debugging"),
AST_CLI_DEFINE(handle_cli_agi_show, "List AGI commands or specific help"),
AST_CLI_DEFINE(handle_cli_agi_dumphtml, "Dumps a list of AGI commands in HTML format")
AST_CLI_DEFINE(handle_cli_agi_debug, "Enable/Disable AGI debugging"),
AST_CLI_DEFINE(handle_cli_agi_show, "List AGI commands or specific help"),
AST_CLI_DEFINE(handle_cli_agi_dump_html, "Dumps a list of AGI commands in HTML format", .deprecate_cmd = &cli_agi_dumphtml_deprecated)
};
static int unload_module(void)

View File

@ -87,9 +87,9 @@ static void *aji_recv_loop(void *data);
static int aji_initialize(struct aji_client *client);
static int aji_client_connect(void *data, ikspak *pak);
static void aji_set_presence(struct aji_client *client, char *to, char *from, int level, char *desc);
static char *aji_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_do_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_do_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_do_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_no_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_show_clients(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_show_buddies(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *aji_test(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
@ -114,9 +114,9 @@ static int aji_register_transport(void *data, ikspak *pak);
static int aji_register_transport2(void *data, ikspak *pak);
*/
static struct ast_cli_entry cli_aji_do_debug_deprecated = AST_CLI_DEFINE(aji_do_debug_deprecated, "Enable/disable jabber debugging");
static struct ast_cli_entry aji_cli[] = {
AST_CLI_DEFINE(aji_do_debug, "Enable jabber debugging"),
AST_CLI_DEFINE(aji_no_debug, "Disable Jabber debug"),
AST_CLI_DEFINE(aji_do_set_debug, "Enable/Disable Jabber debug", .deprecate_cmd = &cli_aji_do_debug_deprecated),
AST_CLI_DEFINE(aji_do_reload, "Reload Jabber configuration"),
AST_CLI_DEFINE(aji_show_clients, "Show state of clients and components"),
AST_CLI_DEFINE(aji_show_buddies, "Show buddy lists of our clients"),
@ -2330,30 +2330,83 @@ static void aji_set_presence(struct aji_client *client, char *to, char *from, in
}
/*!
* \brief Turn on console debugging.
* \brief Turn on/off console debugging.
* \return CLI_SUCCESS.
*/
static char *aji_do_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
static char *aji_do_set_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "jabber debug";
e->command = "jabber set debug {on|off}";
e->usage =
"Usage: jabber debug\n"
" Enables dumping of Jabber packets for debugging purposes.\n";
"Usage: jabber set debug {on|off}\n"
" Enables/disables dumping of Jabber packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 1;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Enabled.\n");
return CLI_SUCCESS;
if (a->argc != e->args)
return CLI_SHOWUSAGE;
if (!strncasecmp(a->argv[e->args - 1], "on", 2)) {
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 1;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Enabled.\n");
return CLI_SUCCESS;
} else if (!strncasecmp(a->argv[e->args - 1], "off", 3)) {
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 0;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Disabled.\n");
return CLI_SUCCESS;
}
return CLI_SHOWUSAGE; /* defaults to invalid */
}
/*!
* \brief Turn on/off console debugging (deprecated, use aji_do_set_debug).
* \return CLI_SUCCESS.
*/
static char *aji_do_debug_deprecated(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "jabber debug [off]";
e->usage =
"Usage: jabber debug [off]\n"
" Enables/disables dumping of Jabber packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc == 2) {
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 1;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Enabled.\n");
return CLI_SUCCESS;
} else if (a->argc == 3) {
if (!strncasecmp(a->argv[2], "off", 3)) {
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 0;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Disabled.\n");
return CLI_SUCCESS;
}
}
return CLI_SHOWUSAGE; /* defaults to invalid */
}
/*!
@ -2378,32 +2431,6 @@ static char *aji_do_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args
return CLI_SUCCESS;
}
/*!
* \brief Turn off console debugging.
* \return CLI_SUCCESS.
*/
static char *aji_no_debug(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
switch (cmd) {
case CLI_INIT:
e->command = "jabber debug off";
e->usage =
"Usage: jabber debug off\n"
" Disables dumping of Jabber packets for debugging purposes.\n";
return NULL;
case CLI_GENERATE:
return NULL;
}
ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
ASTOBJ_RDLOCK(iterator);
iterator->debug = 0;
ASTOBJ_UNLOCK(iterator);
});
ast_cli(a->fd, "Jabber Debugging Disabled.\n");
return CLI_SUCCESS;
}
/*!
* \brief Show client status.
* \return CLI_SUCCESS.