aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-03-27 16:25:02 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-03-27 16:25:02 +0000
commit4517c0a59ab50a14c2c7e5dff1d258e8b9fa9839 (patch)
treef0691f40406606dd66e9e369f7299a88d19d9a35 /channels/chan_sip.c
parenta0156d2b1ad4f05e8c48318ea7c61b97ab16ac89 (diff)
Merged revisions 59256 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r59256 | russell | 2007-03-27 11:20:53 -0500 (Tue, 27 Mar 2007) | 4 lines Convert the RTPQOS function to just be additional parameter of the CHANNEL function. This way, it will be possible for other RTP based channel drivers to expose this information in the future. ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@59257 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_sip.c')
-rw-r--r--channels/chan_sip.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 28ea517f5..d9639fb1d 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1428,6 +1428,7 @@ 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 int acf_channel_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen);
/*--- Debugging
Functions for enabling debug per IP or fully, or enabling history logging for
@@ -1593,6 +1594,7 @@ static const struct ast_channel_tech sip_tech = {
.bridge = ast_rtp_bridge,
.early_bridge = ast_rtp_early_bridge,
.send_text = sip_sendtext,
+ .func_channel_read = acf_channel_read,
};
/*! \brief This version of the sip channel tech has no send_digit_begin
@@ -14800,12 +14802,13 @@ static int handle_request_cancel(struct sip_pvt *p, struct sip_request *req)
}
}
-static int acf_rtpqos_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen)
+static int acf_channel_read(struct ast_channel *chan, const char *funcname, char *preparse, char *buf, size_t buflen)
{
struct ast_rtp_quality qos;
struct sip_pvt *p = chan->tech_pvt;
char *all = "", *parse = ast_strdupa(preparse);
AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(param);
AST_APP_ARG(type);
AST_APP_ARG(field);
);
@@ -14814,8 +14817,12 @@ static int acf_rtpqos_read(struct ast_channel *chan, const char *funcname, char
/* Sanity check */
if (chan->tech != &sip_tech && chan->tech != &sip_tech_info) {
ast_log(LOG_ERROR, "Cannot call %s on a non-SIP channel\n", funcname);
+ return 0;
}
+ if (!strcasecmp(args.param, "rtpqos"))
+ return 0;
+
memset(buf, 0, buflen);
memset(&qos, 0, sizeof(qos));
@@ -18135,27 +18142,6 @@ static struct ast_cli_entry cli_sip[] = {
sip_reload_usage },
};
-struct ast_custom_function acf_rtpqos = {
- .name = "RTPQOS",
- .synopsis = "Retrieve statistics about an RTP stream",
- .desc =
-"The following statistics may be retrieved:\n"
-" local_ssrc - Local SSRC (stream ID)\n"
-" local_lostpackets - Local lost packets\n"
-" local_jitter - Local calculated jitter\n"
-" local_count - Number of received packets\n"
-" remote_ssrc - Remote SSRC (stream ID)\n"
-" remote_lostpackets - Remote lost packets\n"
-" remote_jitter - Remote reported jitter\n"
-" remote_count - Number of transmitted packets\n"
-" rtt - Round trip time\n"
-" all - All statistics (in a form suited to logging, but not for parsing)\n"
-"\n"
-"Type may be specified as \"audio\", \"video\", or \"text\".\n",
- .syntax = "RTPQOS(<type>|<field>)",
- .read = acf_rtpqos_read,
-};
-
/*! \brief PBX load module - initialization */
static int load_module(void)
{
@@ -18205,7 +18191,6 @@ static int load_module(void)
ast_custom_function_register(&sippeer_function);
ast_custom_function_register(&sipchaninfo_function);
ast_custom_function_register(&checksipdomain_function);
- ast_custom_function_register(&acf_rtpqos);
/* Register manager commands */
ast_manager_register2("SIPpeers", EVENT_FLAG_SYSTEM, manager_sip_show_peers,
@@ -18235,7 +18220,6 @@ static int unload_module(void)
ast_custom_function_unregister(&sippeer_function);
ast_custom_function_unregister(&sip_header_function);
ast_custom_function_unregister(&checksipdomain_function);
- ast_custom_function_unregister(&acf_rtpqos);
/* Unregister dial plan applications */
ast_unregister_application(app_dtmfmode);