aboutsummaryrefslogtreecommitdiffstats
path: root/main/udptl.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-02-08 21:26:32 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2008-02-08 21:26:32 +0000
commite9d6c2ff9b22167c463b055b65e8351dc0a4cc0c (patch)
tree425b3dafd75451669e2311d091127fe03d3c9693 /main/udptl.c
parent381f0dce1439f8c5344300a846760ea930987ed3 (diff)
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
Diffstat (limited to 'main/udptl.c')
-rw-r--r--main/udptl.c147
1 files changed, 90 insertions, 57 deletions
diff --git a/main/udptl.c b/main/udptl.c
index 12de3fd53..6ce344328 100644
--- a/main/udptl.c
+++ b/main/udptl.c
@@ -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 != 4)
- return CLI_SHOWUSAGE;
- arg = a->argv[3];
- p = strstr(arg, ":");
- if (p) {
- *p = '\0';
- p++;
- port = atoi(p);
- }
- hp = ast_gethostbyname(arg, &ahp);
- if (hp == NULL)
+ if (a->argc < 2 || a->argc > 4)
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)
-{
- switch (cmd) {
- case CLI_INIT:
- e->command = "udptl debug";
- e->usage =
- "Usage: udptl debug\n"
- " Enable dumping of all UDPTL packets.\n";
- return NULL;
- case CLI_GENERATE:
- return NULL;
+ 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;
}
- if (a->argc != 2)
- 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)
+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 off";
- e->usage =
- "Usage: udptl debug off\n"
- " Disable 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 != 3)
+ if (a->argc < 4 || a->argc > 5)
return CLI_SHOWUSAGE;
- udptldebug = 0;
+ 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;
+ }
- 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)