[asterisk-commits] russell: branch bbryant/sip-tcptls r82960 - in /team/bbryant/sip-tcptls: ./ c...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Sep 18 18:15:28 CDT 2007
Author: russell
Date: Tue Sep 18 18:15:27 2007
New Revision: 82960
URL: http://svn.digium.com/view/asterisk?view=rev&rev=82960
Log:
resolve, reset
Modified:
team/bbryant/sip-tcptls/ (props changed)
team/bbryant/sip-tcptls/channels/chan_agent.c
team/bbryant/sip-tcptls/channels/chan_alsa.c
team/bbryant/sip-tcptls/channels/chan_features.c
team/bbryant/sip-tcptls/channels/chan_local.c
team/bbryant/sip-tcptls/channels/chan_sip.c
team/bbryant/sip-tcptls/include/asterisk/agi.h
team/bbryant/sip-tcptls/main/dnsmgr.c
team/bbryant/sip-tcptls/main/frame.c
team/bbryant/sip-tcptls/main/http.c
team/bbryant/sip-tcptls/main/logger.c
team/bbryant/sip-tcptls/main/manager.c
team/bbryant/sip-tcptls/main/pbx.c
team/bbryant/sip-tcptls/res/res_agi.c
team/bbryant/sip-tcptls/res/res_features.c
team/bbryant/sip-tcptls/res/res_jabber.c
team/bbryant/sip-tcptls/res/res_musiconhold.c
team/bbryant/sip-tcptls/res/res_odbc.c
team/bbryant/sip-tcptls/res/res_realtime.c
Propchange: team/bbryant/sip-tcptls/
------------------------------------------------------------------------------
automerge = *
Propchange: team/bbryant/sip-tcptls/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/bbryant/sip-tcptls/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Sep 18 18:15:27 2007
@@ -1,1 +1,1 @@
-/trunk:1-82900
+/trunk:1-82959
Modified: team/bbryant/sip-tcptls/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_agent.c?view=diff&rev=82960&r1=82959&r2=82960
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_agent.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_agent.c Tue Sep 18 18:15:27 2007
@@ -230,6 +230,7 @@
static int agent_fixup(struct ast_channel *oldchan, struct ast_channel *newchan);
static struct ast_channel *agent_bridgedchannel(struct ast_channel *chan, struct ast_channel *bridge);
static void set_agentbycallerid(const char *callerid, const char *agent);
+static char *complete_agent_logoff_cmd(const char *line, const char *word, int pos, int state);
/*! \brief Channel interface description for PBX integration */
static const struct ast_channel_tech agent_tech = {
@@ -1496,22 +1497,34 @@
return ret;
}
-static int agent_logoff_cmd(int fd, int argc, char **argv)
+static char *agent_logoff_cmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int ret;
char *agent;
- if (argc < 3 || argc > 4)
- return RESULT_SHOWUSAGE;
- if (argc == 4 && strcasecmp(argv[3], "soft"))
- return RESULT_SHOWUSAGE;
-
- agent = argv[2] + 6;
- ret = agent_logoff(agent, argc == 4);
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "agent logoff";
+ e->usage =
+ "Usage: agent logoff <channel> [soft]\n"
+ " Sets an agent as no longer logged in.\n"
+ " If 'soft' is specified, do not hangup existing calls.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return complete_agent_logoff_cmd(a->line, a->word, a->pos, a->n);
+ }
+
+ if (a->argc < 3 || a->argc > 4)
+ return CLI_SHOWUSAGE;
+ if (a->argc == 4 && strcasecmp(a->argv[3], "soft"))
+ return CLI_SHOWUSAGE;
+
+ agent = a->argv[2] + 6;
+ ret = agent_logoff(agent, a->argc == 4);
if (ret == 0)
- ast_cli(fd, "Logging out %s\n", agent);
-
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "Logging out %s\n", agent);
+
+ return CLI_SUCCESS;
}
/*!
@@ -1565,7 +1578,7 @@
/*!
* Show agents in cli.
*/
-static int agents_show(int fd, int argc, char **argv)
+static char *agents_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct agent_pvt *p;
char username[AST_MAX_BUF];
@@ -1575,16 +1588,29 @@
int count_agents = 0; /*!< Number of agents configured */
int online_agents = 0; /*!< Number of online agents */
int offline_agents = 0; /*!< Number of offline agents */
- if (argc != 2)
- return RESULT_SHOWUSAGE;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "agent show";
+ e->usage =
+ "Usage: agent show\n"
+ " Provides summary information on agents.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 2)
+ return CLI_SHOWUSAGE;
+
AST_LIST_LOCK(&agents);
AST_LIST_TRAVERSE(&agents, p, list) {
ast_mutex_lock(&p->lock);
if (p->pending) {
if (p->group)
- ast_cli(fd, "-- Pending call to group %d\n", powerof(p->group));
+ ast_cli(a->fd, "-- Pending call to group %d\n", powerof(p->group));
else
- ast_cli(fd, "-- Pending call to agent %s\n", p->agent);
+ ast_cli(a->fd, "-- Pending call to agent %s\n", p->agent);
} else {
if (!ast_strlen_zero(p->name))
snprintf(username, sizeof(username), "(%s) ", p->name);
@@ -1613,7 +1639,7 @@
}
if (!ast_strlen_zero(p->moh))
snprintf(moh, sizeof(moh), " (musiconhold is '%s')", p->moh);
- ast_cli(fd, "%-12.12s %s%s%s%s\n", p->agent,
+ ast_cli(a->fd, "%-12.12s %s%s%s%s\n", p->agent,
username, location, talkingto, moh);
count_agents++;
}
@@ -1621,16 +1647,16 @@
}
AST_LIST_UNLOCK(&agents);
if ( !count_agents )
- ast_cli(fd, "No Agents are configured in %s\n",config);
+ ast_cli(a->fd, "No Agents are configured in %s\n",config);
else
- ast_cli(fd, "%d agents configured [%d online , %d offline]\n",count_agents, online_agents, offline_agents);
- ast_cli(fd, "\n");
+ ast_cli(a->fd, "%d agents configured [%d online , %d offline]\n",count_agents, online_agents, offline_agents);
+ ast_cli(a->fd, "\n");
- return RESULT_SUCCESS;
-}
-
-
-static int agents_show_online(int fd, int argc, char **argv)
+ return CLI_SUCCESS;
+}
+
+
+static char *agents_show_online(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct agent_pvt *p;
char username[AST_MAX_BUF];
@@ -1640,8 +1666,21 @@
int count_agents = 0; /* Number of agents configured */
int online_agents = 0; /* Number of online agents */
int agent_status = 0; /* 0 means offline, 1 means online */
- if (argc != 3)
- return RESULT_SHOWUSAGE;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "agent show online";
+ e->usage =
+ "Usage: agent show online\n"
+ " Provides a list of all online agents.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 3)
+ return CLI_SHOWUSAGE;
+
AST_LIST_LOCK(&agents);
AST_LIST_TRAVERSE(&agents, p, list) {
agent_status = 0; /* reset it to offline */
@@ -1669,28 +1708,18 @@
if (!ast_strlen_zero(p->moh))
snprintf(moh, sizeof(moh), " (musiconhold is '%s')", p->moh);
if (agent_status)
- ast_cli(fd, "%-12.12s %s%s%s%s\n", p->agent, username, location, talkingto, moh);
+ ast_cli(a->fd, "%-12.12s %s%s%s%s\n", p->agent, username, location, talkingto, moh);
count_agents++;
ast_mutex_unlock(&p->lock);
}
AST_LIST_UNLOCK(&agents);
if (!count_agents)
- ast_cli(fd, "No Agents are configured in %s\n", config);
+ ast_cli(a->fd, "No Agents are configured in %s\n", config);
else
- ast_cli(fd, "%d agents online\n", online_agents);
- ast_cli(fd, "\n");
- return RESULT_SUCCESS;
-}
-
-
-
-static const char show_agents_usage[] =
-"Usage: agent show\n"
-" Provides summary information on agents.\n";
-
-static const char show_agents_online_usage[] =
-"Usage: agent show online\n"
-" Provides a list of all online agents.\n";
+ ast_cli(a->fd, "%d agents online\n", online_agents);
+ ast_cli(a->fd, "\n");
+ return CLI_SUCCESS;
+}
static const char agent_logoff_usage[] =
"Usage: agent logoff <channel> [soft]\n"
@@ -1698,17 +1727,9 @@
" If 'soft' is specified, do not hangup existing calls.\n";
static struct ast_cli_entry cli_agents[] = {
- { { "agent", "show", NULL },
- agents_show, "Show status of agents",
- show_agents_usage },
-
- { { "agent", "show", "online" },
- agents_show_online, "Show all online agents",
- show_agents_online_usage },
-
- { { "agent", "logoff", NULL },
- agent_logoff_cmd, "Sets an agent offline",
- agent_logoff_usage, complete_agent_logoff_cmd },
+ NEW_CLI(agents_show, "Show status of agents"),
+ NEW_CLI(agents_show_online, "Show all online agents"),
+ NEW_CLI(agent_logoff_cmd, "Sets an agent offline"),
};
/*!
Modified: team/bbryant/sip-tcptls/channels/chan_alsa.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_alsa.c?view=diff&rev=82960&r1=82959&r2=82960
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_alsa.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_alsa.c Tue Sep 18 18:15:27 2007
@@ -838,26 +838,6 @@
return tmp;
}
-static int console_autoanswer(int fd, int argc, char *argv[])
-{
- int res = RESULT_SUCCESS;;
- if ((argc != 2) && (argc != 3))
- return RESULT_SHOWUSAGE;
- ast_mutex_lock(&alsalock);
- if (argc == 2) {
- ast_cli(fd, "Auto answer is %s.\n", autoanswer ? "on" : "off");
- } else {
- if (!strcasecmp(argv[2], "on"))
- autoanswer = -1;
- else if (!strcasecmp(argv[2], "off"))
- autoanswer = 0;
- else
- res = RESULT_SHOWUSAGE;
- }
- ast_mutex_unlock(&alsalock);
- return res;
-}
-
static char *autoanswer_complete(const char *line, const char *word, int pos, int state)
{
#ifndef MIN
@@ -876,24 +856,65 @@
return NULL;
}
-static const char autoanswer_usage[] =
- "Usage: console autoanswer [on|off]\n"
- " Enables or disables autoanswer feature. If used without\n"
- " argument, displays the current on/off status of autoanswer.\n"
- " The default value of autoanswer is in 'alsa.conf'.\n";
-
-static int console_answer(int fd, int argc, char *argv[])
-{
- int res = RESULT_SUCCESS;
-
- if (argc != 2)
- return RESULT_SHOWUSAGE;
+static char *console_autoanswer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ char *res = CLI_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "console autoanswer";
+ e->usage =
+ "Usage: console autoanswer [on|off]\n"
+ " Enables or disables autoanswer feature. If used without\n"
+ " argument, displays the current on/off status of autoanswer.\n"
+ " The default value of autoanswer is in 'alsa.conf'.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return autoanswer_complete(a->line, a->word, a->pos, a->n);
+ }
+
+ if ((a->argc != 2) && (a->argc != 3))
+ return CLI_SHOWUSAGE;
+ ast_mutex_lock(&alsalock);
+ if (a->argc == 2) {
+ ast_cli(a->fd, "Auto answer is %s.\n", autoanswer ? "on" : "off");
+ } else {
+ if (!strcasecmp(a->argv[2], "on"))
+ autoanswer = -1;
+ else if (!strcasecmp(a->argv[2], "off"))
+ autoanswer = 0;
+ else
+ res = CLI_SHOWUSAGE;
+ }
+ ast_mutex_unlock(&alsalock);
+ return res;
+}
+
+static char *console_answer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ char *res = CLI_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "console answer";
+ e->usage =
+ "Usage: console answer\n"
+ " Answers an incoming call on the console (ALSA) channel.\n";
+
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+
+ if (a->argc != 2)
+ return CLI_SHOWUSAGE;
ast_mutex_lock(&alsalock);
if (!alsa.owner) {
- ast_cli(fd, "No one is calling us\n");
- res = RESULT_FAILURE;
+ ast_cli(a->fd, "No one is calling us\n");
+ res = CLI_FAILURE;
} else {
hookstate = 1;
cursound = -1;
@@ -911,32 +932,39 @@
ast_mutex_unlock(&alsalock);
- return RESULT_SUCCESS;
-}
-
-static const char sendtext_usage[] =
- "Usage: console send text <message>\n"
- " Sends a text message for display on the remote terminal.\n";
-
-static int console_sendtext(int fd, int argc, char *argv[])
+ return res;
+}
+
+static char *console_sendtext(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
int tmparg = 3;
- int res = RESULT_SUCCESS;
-
- if (argc < 3)
- return RESULT_SHOWUSAGE;
+ char *res = CLI_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "console send text";
+ e->usage =
+ "Usage: console send text <message>\n"
+ " Sends a text message for display on the remote terminal.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc < 3)
+ return CLI_SHOWUSAGE;
ast_mutex_lock(&alsalock);
if (!alsa.owner) {
- ast_cli(fd, "No one is calling us\n");
- res = RESULT_FAILURE;
+ ast_cli(a->fd, "No one is calling us\n");
+ res = CLI_FAILURE;
} else {
struct ast_frame f = { AST_FRAME_TEXT, 0 };
char text2send[256] = "";
text2send[0] = '\0';
- while (tmparg < argc) {
- strncat(text2send, argv[tmparg++], sizeof(text2send) - strlen(text2send) - 1);
+ while (tmparg < a->argc) {
+ strncat(text2send, a->argv[tmparg++], sizeof(text2send) - strlen(text2send) - 1);
strncat(text2send, " ", sizeof(text2send) - strlen(text2send) - 1);
}
text2send[strlen(text2send) - 1] = '\n';
@@ -959,24 +987,32 @@
return res;
}
-static const char answer_usage[] =
- "Usage: console answer\n"
- " Answers an incoming call on the console (ALSA) channel.\n";
-
-static int console_hangup(int fd, int argc, char *argv[])
-{
- int res = RESULT_SUCCESS;
-
- if (argc != 2)
- return RESULT_SHOWUSAGE;
+static char *console_hangup(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ char *res = CLI_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "console hangup";
+ e->usage =
+ "Usage: console hangup\n"
+ " Hangs up any call currently placed on the console.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+
+ if (a->argc != 2)
+ return CLI_SHOWUSAGE;
cursound = -1;
ast_mutex_lock(&alsalock);
if (!alsa.owner && !hookstate) {
- ast_cli(fd, "No call to hangup up\n");
- res = RESULT_FAILURE;
+ ast_cli(a->fd, "No call to hangup up\n");
+ res = CLI_FAILURE;
} else {
hookstate = 0;
grab_owner();
@@ -991,25 +1027,32 @@
return res;
}
-static const char hangup_usage[] =
- "Usage: console hangup\n"
- " Hangs up any call currently placed on the console.\n";
-
-static int console_dial(int fd, int argc, char *argv[])
+static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char tmp[256], *tmp2;
char *mye, *myc;
char *d;
- int res = RESULT_SUCCESS;
-
- if ((argc != 2) && (argc != 3))
- return RESULT_SHOWUSAGE;
+ char *res = CLI_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "console dial";
+ e->usage =
+ "Usage: console dial [extension[@context]]\n"
+ " Dials a given extension (and context if specified)\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if ((a->argc != 2) && (a->argc != 3))
+ return CLI_SHOWUSAGE;
ast_mutex_lock(&alsalock);
if (alsa.owner) {
- if (argc == 3) {
- d = argv[2];
+ if (a->argc == 3) {
+ d = a->argv[2];
if (alsa.owner) {
struct ast_frame f = { AST_FRAME_DTMF };
while (*d) {
@@ -1019,15 +1062,15 @@
}
}
} else {
- ast_cli(fd, "You're already in a call. You can use this only to dial digits until you hangup\n");
- res = RESULT_FAILURE;
+ ast_cli(a->fd, "You're already in a call. You can use this only to dial digits until you hangup\n");
+ res = CLI_FAILURE;
}
} else {
mye = exten;
myc = context;
- if (argc == 3) {
+ if (a->argc == 3) {
char *stringp = NULL;
- ast_copy_string(tmp, argv[2], sizeof(tmp));
+ ast_copy_string(tmp, a->argv[2], sizeof(tmp));
stringp = tmp;
strsep(&stringp, "@");
tmp2 = strsep(&stringp, "@");
@@ -1042,7 +1085,7 @@
hookstate = 1;
alsa_new(&alsa, AST_STATE_RINGING);
} else
- ast_cli(fd, "No such extension '%s' in context '%s'\n", mye, myc);
+ ast_cli(a->fd, "No such extension '%s' in context '%s'\n", mye, myc);
}
ast_mutex_unlock(&alsalock);
@@ -1050,30 +1093,12 @@
return res;
}
-static const char dial_usage[] =
- "Usage: console dial [extension[@context]]\n"
- " Dials a given extension (and context if specified)\n";
-
static struct ast_cli_entry cli_alsa[] = {
- { { "console", "answer", NULL },
- console_answer, "Answer an incoming console call",
- answer_usage },
-
- { { "console", "hangup", NULL },
- console_hangup, "Hangup a call on the console",
- hangup_usage },
-
- { { "console", "dial", NULL },
- console_dial, "Dial an extension on the console",
- dial_usage },
-
- { { "console", "send", "text", NULL },
- console_sendtext, "Send text to the remote device",
- sendtext_usage },
-
- { { "console", "autoanswer", NULL },
- console_autoanswer, "Sets/displays autoanswer",
- autoanswer_usage, autoanswer_complete },
+ NEW_CLI(console_answer, "Answer an incoming console call"),
+ NEW_CLI(console_hangup, "Hangup a call on the console"),
+ NEW_CLI(console_dial, "Dial an extension on the console"),
+ NEW_CLI(console_sendtext, "Send text to the remote device"),
+ NEW_CLI(console_autoanswer, "Sets/displays autoanswer"),
};
static int load_module(void)
Modified: team/bbryant/sip-tcptls/channels/chan_features.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_features.c?view=diff&rev=82960&r1=82959&r2=82960
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_features.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_features.c Tue Sep 18 18:15:27 2007
@@ -509,36 +509,41 @@
return chan;
}
-static int features_show(int fd, int argc, char **argv)
+static char *features_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct feature_pvt *p;
- if (argc != 3)
- return RESULT_SHOWUSAGE;
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "feature show channels";
+ e->usage =
+ "Usage: feature show channels\n"
+ " Provides summary information on feature channels.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 3)
+ return CLI_SHOWUSAGE;
if (AST_LIST_EMPTY(&features)) {
- ast_cli(fd, "No feature channels in use\n");
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "No feature channels in use\n");
+ return CLI_SUCCESS;
}
AST_LIST_LOCK(&features);
AST_LIST_TRAVERSE(&features, p, list) {
ast_mutex_lock(&p->lock);
- ast_cli(fd, "%s -- %s/%s\n", p->owner ? p->owner->name : "<unowned>", p->tech, p->dest);
+ ast_cli(a->fd, "%s -- %s/%s\n", p->owner ? p->owner->name : "<unowned>", p->tech, p->dest);
ast_mutex_unlock(&p->lock);
}
AST_LIST_UNLOCK(&features);
- return RESULT_SUCCESS;
-}
-
-static const char show_features_usage[] =
-"Usage: feature show channels\n"
-" Provides summary information on feature channels.\n";
+ return CLI_SUCCESS;
+}
static struct ast_cli_entry cli_features[] = {
- { { "feature", "show", "channels", NULL },
- features_show, "List status of feature channels",
- show_features_usage },
+ NEW_CLI(features_show, "List status of feature channels"),
};
static int load_module(void)
Modified: team/bbryant/sip-tcptls/channels/chan_local.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_local.c?view=diff&rev=82960&r1=82959&r2=82960
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_local.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_local.c Tue Sep 18 18:15:27 2007
@@ -670,35 +670,40 @@
}
/*! \brief CLI command "local show channels" */
-static int locals_show(int fd, int argc, char **argv)
+static char *locals_show(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct local_pvt *p = NULL;
- if (argc != 3)
- return RESULT_SHOWUSAGE;
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "local show channels";
+ e->usage =
+ "Usage: local show channels\n"
+ " Provides summary information on active local proxy channels.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 3)
+ return CLI_SHOWUSAGE;
AST_LIST_LOCK(&locals);
if (!AST_LIST_EMPTY(&locals)) {
AST_LIST_TRAVERSE(&locals, p, list) {
ast_mutex_lock(&p->lock);
- ast_cli(fd, "%s -- %s@%s\n", p->owner ? p->owner->name : "<unowned>", p->exten, p->context);
+ ast_cli(a->fd, "%s -- %s@%s\n", p->owner ? p->owner->name : "<unowned>", p->exten, p->context);
ast_mutex_unlock(&p->lock);
}
} else
- ast_cli(fd, "No local channels in use\n");
+ ast_cli(a->fd, "No local channels in use\n");
AST_LIST_UNLOCK(&locals);
- return RESULT_SUCCESS;
-}
-
-static const char show_locals_usage[] =
-"Usage: local show channels\n"
-" Provides summary information on active local proxy channels.\n";
+ return CLI_SUCCESS;
+}
static struct ast_cli_entry cli_local[] = {
- { { "local", "show", "channels", NULL },
- locals_show, "List status of local channels",
- show_locals_usage },
+ NEW_CLI(locals_show, "List status of local channels"),
};
/*! \brief Load module into PBX, register channel */
Modified: team/bbryant/sip-tcptls/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/bbryant/sip-tcptls/channels/chan_sip.c?view=diff&rev=82960&r1=82959&r2=82960
==============================================================================
--- team/bbryant/sip-tcptls/channels/chan_sip.c (original)
+++ team/bbryant/sip-tcptls/channels/chan_sip.c Tue Sep 18 18:15:27 2007
@@ -1635,14 +1635,14 @@
/*--- Applications, functions, CLI and manager command helpers */
static const char *sip_nat_mode(const struct sip_pvt *p);
-static int sip_show_inuse(int fd, int argc, char *argv[]);
+static char *sip_show_inuse(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static char *transfermode2str(enum transfermodes mode) attribute_const;
static const char *nat2str(int nat) attribute_const;
static int peer_status(struct sip_peer *peer, char *status, int statuslen);
-static int sip_show_users(int fd, int argc, char *argv[]);
-static int _sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[]);
-static int sip_show_peers(int fd, int argc, char *argv[]);
-static int sip_show_objects(int fd, int argc, char *argv[]);
+static char *sip_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char * _sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[]);
+static char *sip_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_show_objects(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static void print_group(int fd, ast_group_t group, int crlf);
static const char *dtmfmode2str(int mode) attribute_const;
static int str2dtmfmode(const char *str) attribute_unused;
@@ -1650,13 +1650,13 @@
static void cleanup_stale_contexts(char *new, char *old);
static void print_codec_to_cli(int fd, struct ast_codec_pref *pref);
static const char *domain_mode_to_text(const enum domain_mode mode);
-static int sip_show_domains(int fd, int argc, char *argv[]);
-static int _sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[]);
-static int sip_show_peer(int fd, int argc, char *argv[]);
-static int sip_show_user(int fd, int argc, char *argv[]);
-static int sip_show_registry(int fd, int argc, char *argv[]);
-static int sip_unregister(int fd, int argc, char *argv[]);
-static int sip_show_settings(int fd, int argc, char *argv[]);
+static char *sip_show_domains(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[]);
+static char *sip_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_show_user(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_show_registry(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_unregister(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static const char *subscription_type2str(enum subscriptiontype subtype) attribute_pure;
static const struct cfsubscription_types *find_subscription_type(enum subscriptiontype subtype);
static char *complete_sip_peer(const char *word, int state, int flags2);
@@ -1667,18 +1667,18 @@
static char *complete_sip_user(const char *word, int state, int flags2);
static char *complete_sip_show_user(const char *line, const char *word, int pos, int state);
static char *complete_sipnotify(const char *line, const char *word, int pos, int state);
-static int sip_show_channel(int fd, int argc, char *argv[]);
-static int sip_show_history(int fd, int argc, char *argv[]);
+static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
+static char *sip_show_history(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
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 int sip_notify(int fd, int argc, char *argv[]);
-static int sip_do_history(int fd, int argc, char *argv[]);
-static int sip_no_history(int fd, int argc, char *argv[]);
+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 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);
-static int sip_reload(int fd, int argc, char *argv[]);
+static char *sip_reload(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a);
static int acf_channel_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen);
/*--- Debugging
@@ -10767,7 +10767,7 @@
}
/*! \brief CLI Command to show calls within limits set by call_limit */
-static int sip_show_inuse(int fd, int argc, char *argv[])
+static char *sip_show_inuse(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
#define FORMAT "%-25.25s %-15.15s %-15.15s \n"
#define FORMAT2 "%-25.25s %-15.15s %-15.15s \n"
@@ -10775,13 +10775,25 @@
char iused[40];
int showall = FALSE;
- if (argc < 3)
- return RESULT_SHOWUSAGE;
-
- if (argc == 4 && !strcmp(argv[3],"all"))
- showall = TRUE;
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show inuse";
+ e->usage =
+ "Usage: sip show inuse [all]\n"
+ " List all SIP users and peers usage counters and limits.\n"
+ " Add option \"all\" to show all devices, not only those with a limit.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc < 3)
+ return CLI_SHOWUSAGE;
+
+ if (a->argc == 4 && !strcmp(a->argv[3],"all"))
+ showall = TRUE;
- ast_cli(fd, FORMAT, "* User name", "In use", "Limit");
+ ast_cli(a->fd, FORMAT, "* User name", "In use", "Limit");
ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
ASTOBJ_RDLOCK(iterator);
if (iterator->call_limit)
@@ -10790,11 +10802,11 @@
ast_copy_string(ilimits, "N/A", sizeof(ilimits));
snprintf(iused, sizeof(iused), "%d", iterator->inUse);
if (showall || iterator->call_limit)
- ast_cli(fd, FORMAT2, iterator->name, iused, ilimits);
+ ast_cli(a->fd, FORMAT2, iterator->name, iused, ilimits);
ASTOBJ_UNLOCK(iterator);
} while (0) );
- ast_cli(fd, FORMAT, "* Peer name", "In use", "Limit");
+ ast_cli(a->fd, FORMAT, "* Peer name", "In use", "Limit");
ASTOBJ_CONTAINER_TRAVERSE(&peerl, 1, do {
ASTOBJ_RDLOCK(iterator);
@@ -10804,11 +10816,11 @@
ast_copy_string(ilimits, "N/A", sizeof(ilimits));
snprintf(iused, sizeof(iused), "%d/%d/%d", iterator->inUse, iterator->inRinging, iterator->onHold);
if (showall || iterator->call_limit)
- ast_cli(fd, FORMAT2, iterator->name, iused, ilimits);
+ ast_cli(a->fd, FORMAT2, iterator->name, iused, ilimits);
ASTOBJ_UNLOCK(iterator);
} while (0) );
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
#undef FORMAT
#undef FORMAT2
}
@@ -10875,28 +10887,40 @@
}
/*! \brief CLI Command 'SIP Show Users' */
-static int sip_show_users(int fd, int argc, char *argv[])
+static char *sip_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
regex_t regexbuf;
int havepattern = FALSE;
#define FORMAT "%-25.25s %-15.15s %-15.15s %-15.15s %-5.5s%-10.10s\n"
- switch (argc) {
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show users";
+ e->usage =
+ "Usage: sip show users [like <pattern>]\n"
+ " Lists all known SIP users.\n"
+ " Optional regular expression pattern is used to filter the user list.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ switch (a->argc) {
case 5:
- if (!strcasecmp(argv[3], "like")) {
- if (regcomp(®exbuf, argv[4], REG_EXTENDED | REG_NOSUB))
- return RESULT_SHOWUSAGE;
+ if (!strcasecmp(a->argv[3], "like")) {
+ if (regcomp(®exbuf, a->argv[4], REG_EXTENDED | REG_NOSUB))
+ return CLI_SHOWUSAGE;
havepattern = TRUE;
} else
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
case 3:
break;
default:
- return RESULT_SHOWUSAGE;
- }
-
- ast_cli(fd, FORMAT, "Username", "Secret", "Accountcode", "Def.Context", "ACL", "NAT");
+ return CLI_SHOWUSAGE;
+ }
+
+ ast_cli(a->fd, FORMAT, "Username", "Secret", "Accountcode", "Def.Context", "ACL", "NAT");
ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
ASTOBJ_RDLOCK(iterator);
@@ -10905,7 +10929,7 @@
continue;
}
- ast_cli(fd, FORMAT, iterator->name,
+ ast_cli(a->fd, FORMAT, iterator->name,
iterator->secret,
iterator->accountcode,
iterator->context,
@@ -10918,7 +10942,7 @@
if (havepattern)
regfree(®exbuf);
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
#undef FORMAT
}
@@ -10955,13 +10979,25 @@
}
/*! \brief CLI Show Peers command */
-static int sip_show_peers(int fd, int argc, char *argv[])
-{
- return _sip_show_peers(fd, NULL, NULL, NULL, argc, (const char **) argv);
+static char *sip_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show peers";
+ e->usage =
+ "Usage: sip show peers [like <pattern>]\n"
+ " Lists all known SIP peers.\n"
+ " Optional regular expression pattern is used to filter the peer list.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ return _sip_show_peers(a->fd, NULL, NULL, NULL, a->argc, (const char **) a->argv);
}
/*! \brief _sip_show_peers: Execute sip show peers command */
-static int _sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[])
+static char *_sip_show_peers(int fd, int *total, struct mansession *s, const struct message *m, int argc, const char *argv[])
{
regex_t regexbuf;
int havepattern = FALSE;
@@ -10992,14 +11028,14 @@
case 5:
if (!strcasecmp(argv[3], "like")) {
if (regcomp(®exbuf, argv[4], REG_EXTENDED | REG_NOSUB))
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
havepattern = TRUE;
} else
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
case 3:
break;
default:
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
}
if (!s) /* Normal list */
@@ -11096,24 +11132,36 @@
*total = total_peers;
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
#undef FORMAT
#undef FORMAT2
}
/*! \brief List all allocated SIP Objects (realtime or static) */
-static int sip_show_objects(int fd, int argc, char *argv[])
+static char *sip_show_objects(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char tmp[256];
- if (argc != 3)
- return RESULT_SHOWUSAGE;
- ast_cli(fd, "-= User objects: %d static, %d realtime =-\n\n", suserobjs, ruserobjs);
- ASTOBJ_CONTAINER_DUMP(fd, tmp, sizeof(tmp), &userl);
- ast_cli(fd, "-= Peer objects: %d static, %d realtime, %d autocreate =-\n\n", speerobjs, rpeerobjs, apeerobjs);
- ASTOBJ_CONTAINER_DUMP(fd, tmp, sizeof(tmp), &peerl);
- ast_cli(fd, "-= Registry objects: %d =-\n\n", regobjs);
- ASTOBJ_CONTAINER_DUMP(fd, tmp, sizeof(tmp), ®l);
- return RESULT_SUCCESS;
+
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show objects";
+ e->usage =
+ "Usage: sip show objects\n"
+ " Lists status of known SIP objects\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
+ if (a->argc != 3)
+ return CLI_SHOWUSAGE;
+ ast_cli(a->fd, "-= User objects: %d static, %d realtime =-\n\n", suserobjs, ruserobjs);
+ ASTOBJ_CONTAINER_DUMP(a->fd, tmp, sizeof(tmp), &userl);
+ ast_cli(a->fd, "-= Peer objects: %d static, %d realtime, %d autocreate =-\n\n", speerobjs, rpeerobjs, apeerobjs);
+ ASTOBJ_CONTAINER_DUMP(a->fd, tmp, sizeof(tmp), &peerl);
+ ast_cli(a->fd, "-= Registry objects: %d =-\n\n", regobjs);
+ ASTOBJ_CONTAINER_DUMP(a->fd, tmp, sizeof(tmp), ®l);
+ return CLI_SUCCESS;
}
/*! \brief Print call group and pickup group */
static void print_group(int fd, ast_group_t group, int crlf)
@@ -11372,23 +11420,35 @@
}
/*! \brief CLI command to list local domains */
-static int sip_show_domains(int fd, int argc, char *argv[])
+static char *sip_show_domains(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct domain *d;
#define FORMAT "%-40.40s %-20.20s %-16.16s\n"
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show domains";
+ e->usage =
+ "Usage: sip show domains\n"
+ " Lists all configured SIP local domains.\n"
+ " Asterisk only responds to SIP messages to local domains.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return NULL;
+ }
+
if (AST_LIST_EMPTY(&domain_list)) {
- ast_cli(fd, "SIP Domain support not enabled.\n\n");
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "SIP Domain support not enabled.\n\n");
+ return CLI_SUCCESS;
} else {
- ast_cli(fd, FORMAT, "Our local SIP domains:", "Context", "Set by");
+ ast_cli(a->fd, FORMAT, "Our local SIP domains:", "Context", "Set by");
AST_LIST_LOCK(&domain_list);
AST_LIST_TRAVERSE(&domain_list, d, list)
- ast_cli(fd, FORMAT, d->domain, S_OR(d->context, "(default)"),
+ ast_cli(a->fd, FORMAT, d->domain, S_OR(d->context, "(default)"),
domain_mode_to_text(d->mode));
AST_LIST_UNLOCK(&domain_list);
- ast_cli(fd, "\n");
- return RESULT_SUCCESS;
+ ast_cli(a->fd, "\n");
+ return CLI_SUCCESS;
}
}
#undef FORMAT
@@ -11404,7 +11464,6 @@
{
const char *a[4];
const char *peer;
- int ret;
peer = astman_get_header(m,"Peer");
if (ast_strlen_zero(peer)) {
@@ -11416,17 +11475,28 @@
a[2] = "peer";
a[3] = peer;
- ret = _sip_show_peer(1, -1, s, m, 4, a);
+ _sip_show_peer(1, -1, s, m, 4, a);
astman_append(s, "\r\n\r\n" );
- return ret;
+ return 0;
}
/*! \brief Show one peer in detail */
-static int sip_show_peer(int fd, int argc, char *argv[])
-{
- return _sip_show_peer(0, fd, NULL, NULL, argc, (const char **) argv);
+static char *sip_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
+{
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show peer";
+ e->usage =
+ "Usage: sip show peer <name> [load]\n"
+ " Shows all details on one SIP peer and the current status.\n"
+ " Option \"load\" forces lookup of peer in realtime storage.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return complete_sip_show_peer(a->line, a->word, a->pos, a->n);
+ }
+ return _sip_show_peer(0, a->fd, NULL, NULL, a->argc, (const char **) a->argv);
}
static void peer_mailboxes_to_str(struct ast_str **mailbox_str, struct sip_peer *peer)
@@ -11443,7 +11513,7 @@
}
/*! \brief Show one peer in detail (main function) */
-static int _sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[])
+static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct message *m, int argc, const char *argv[])
{
char status[30] = "";
char cbuf[256];
@@ -11458,7 +11528,7 @@
realtimepeers = ast_check_realtime("sippeers");
if (argc < 4)
- return RESULT_SHOWUSAGE;
+ return CLI_SHOWUSAGE;
load_realtime = (argc == 5 && !strcmp(argv[4], "load")) ? TRUE : FALSE;
peer = find_peer(argv[3], NULL, load_realtime);
@@ -11472,7 +11542,7 @@
} else {
snprintf (cbuf, sizeof(cbuf), "Peer %s not found.\n", argv[3]);
astman_send_error(s, m, cbuf);
- return 0;
+ return CLI_SUCCESS;
}
}
if (peer && type==0 ) { /* Normal listing */
@@ -11662,66 +11732,78 @@
ast_cli(fd,"\n");
}
- return RESULT_SUCCESS;
+ return CLI_SUCCESS;
}
/*! \brief Show one user in detail */
-static int sip_show_user(int fd, int argc, char *argv[])
+static char *sip_show_user(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char cbuf[256];
struct sip_user *user;
struct ast_variable *v;
int load_realtime;
- if (argc < 4)
- return RESULT_SHOWUSAGE;
+ switch (cmd) {
+ case CLI_INIT:
+ e->command = "sip show user";
+ e->usage =
+ "Usage: sip show user <name> [load]\n"
+ " Shows all details on one SIP user and the current status.\n"
+ " Option \"load\" forces lookup of peer in realtime storage.\n";
+ return NULL;
+ case CLI_GENERATE:
+ return complete_sip_show_user(a->line, a->word, a->pos, a->n);
+ }
+
+ if (a->argc < 4)
+ return CLI_SHOWUSAGE;
/* Load from realtime storage? */
- load_realtime = (argc == 5 && !strcmp(argv[4], "load")) ? TRUE : FALSE;
-
- user = find_user(argv[3], load_realtime);
+ load_realtime = (a->argc == 5 && !strcmp(a->argv[4], "load")) ? TRUE : FALSE;
+
+ user = find_user(a->argv[3], load_realtime);
if (user) {
- ast_cli(fd,"\n\n");
- ast_cli(fd, " * Name : %s\n", user->name);
- ast_cli(fd, " Secret : %s\n", ast_strlen_zero(user->secret)?"<Not set>":"<Set>");
- ast_cli(fd, " MD5Secret : %s\n", ast_strlen_zero(user->md5secret)?"<Not set>":"<Set>");
- ast_cli(fd, " Context : %s\n", user->context);
- ast_cli(fd, " Language : %s\n", user->language);
+ ast_cli(a->fd,"\n\n");
+ ast_cli(a->fd, " * Name : %s\n", user->name);
+ ast_cli(a->fd, " Secret : %s\n", ast_strlen_zero(user->secret)?"<Not set>":"<Set>");
+ ast_cli(a->fd, " MD5Secret : %s\n", ast_strlen_zero(user->md5secret)?"<Not set>":"<Set>");
+ ast_cli(a->fd, " Context : %s\n", user->context);
+ ast_cli(a->fd, " Language : %s\n", user->language);
if (!ast_strlen_zero(user->accountcode))
- ast_cli(fd, " Accountcode : %s\n", user->accountcode);
- ast_cli(fd, " AMA flags : %s\n", ast_cdr_flags2str(user->amaflags));
- ast_cli(fd, " Transfer mode: %s\n", transfermode2str(user->allowtransfer));
- ast_cli(fd, " MaxCallBR : %d kbps\n", user->maxcallbitrate);
- ast_cli(fd, " CallingPres : %s\n", ast_describe_caller_presentation(user->callingpres));
- ast_cli(fd, " Call limit : %d\n", user->call_limit);
- ast_cli(fd, " Callgroup : ");
- print_group(fd, user->callgroup, 0);
- ast_cli(fd, " Pickupgroup : ");
- print_group(fd, user->pickupgroup, 0);
- ast_cli(fd, " Callerid : %s\n", ast_callerid_merge(cbuf, sizeof(cbuf), user->cid_name, user->cid_num, "<unspecified>"));
- ast_cli(fd, " ACL : %s\n", cli_yesno(user->ha != NULL));
- ast_cli(fd, " Codec Order : (");
- print_codec_to_cli(fd, &user->prefs);
- ast_cli(fd, ")\n");
-
- ast_cli(fd, " Auto-Framing: %s \n", cli_yesno(user->autoframing));
+ ast_cli(a->fd, " Accountcode : %s\n", user->accountcode);
+ ast_cli(a->fd, " AMA flags : %s\n", ast_cdr_flags2str(user->amaflags));
+ ast_cli(a->fd, " Transfer mode: %s\n", transfermode2str(user->allowtransfer));
+ ast_cli(a->fd, " MaxCallBR : %d kbps\n", user->maxcallbitrate);
+ ast_cli(a->fd, " CallingPres : %s\n", ast_describe_caller_presentation(user->callingpres));
[... 3964 lines stripped ...]
More information about the asterisk-commits
mailing list