summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2019-03-07 10:48:45 +0100
committerHarald Welte <laforge@gnumonks.org>2019-03-19 13:29:31 +0000
commitc8c0b40e1bb0452340654a6042a1bfd3f506fa06 (patch)
tree62b32c545e4888340ec39c32b15b22bd330e8064
parentbb825c91bba429d9062331e5212d770a2c6f8c4e (diff)
MGCP_Test: allow setting of fmtp parameters
When creating an RTP flow, there is currently no way to set SDP fmtp parameters. Lets add a template and a parameter in order to be able to set those parameters. Change-Id: Ic1840d5023cb3888a17980f4ed08c19175864896 Related: SYS#4470
-rw-r--r--library/MGCP_Templates.ttcn5
-rw-r--r--mgw/MGCP_Test.ttcn24
2 files changed, 22 insertions, 7 deletions
diff --git a/library/MGCP_Templates.ttcn b/library/MGCP_Templates.ttcn
index afdc33d..f720553 100644
--- a/library/MGCP_Templates.ttcn
+++ b/library/MGCP_Templates.ttcn
@@ -280,6 +280,11 @@ module MGCP_Templates {
attr_value := int2str(p)
}
}
+ template SDP_attribute ts_SDP_fmtp(integer fmt, charstring val) := {
+ fmtp := {
+ attr_value := int2str(fmt) & " " & val
+ }
+ }
function f_mgcp_extract_par(MgcpMessage msg, MgcpInfoCode code) return charstring {
var MgcpParameterList pars;
diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn
index 4969a3f..a0a836b 100644
--- a/mgw/MGCP_Test.ttcn
+++ b/mgw/MGCP_Test.ttcn
@@ -268,7 +268,8 @@ module MGCP_Test {
uint7_t pt,
charstring codec,
MgcpConnectionId mgcp_conn_id optional,
- RtpemConfig rtp_cfg optional
+ RtpemConfig rtp_cfg optional,
+ charstring fmtp optional
}
/* Create an RTP flow (bidirectional, or receive-only) */
@@ -277,6 +278,12 @@ module MGCP_Test {
runs on dummy_CT {
var template MgcpCommand cmd;
var MgcpResponse resp;
+ var SDP_attribute_list attributes;
+
+ attributes := { valueof(ts_SDP_rtpmap(flow.pt, flow.codec)), valueof(ts_SDP_ptime(20)) };
+ if (isvalue(flow.fmtp)) {
+ attributes := attributes & { valueof(ts_SDP_fmtp(flow.pt, flow.fmtp)) };
+ }
/* bind local RTP emulation socket */
f_rtpem_bind(pt, flow.em.hostname, flow.em.portnr);
@@ -298,9 +305,8 @@ module MGCP_Test {
cmd := ts_CRCX(get_next_trans_id(), ep, mode, call_id);
cmd.sdp := ts_SDP(flow.em.hostname, flow.em.hostname, "23", "42",
- flow.em.portnr, { int2str(flow.pt) },
- { valueof(ts_SDP_rtpmap(flow.pt, flow.codec)),
- valueof(ts_SDP_ptime(20)) });
+ flow.em.portnr, { int2str(flow.pt) }, attributes);
+
resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);
flow.mgcp_conn_id := extract_conn_id(resp);
/* extract port number from response */
@@ -329,6 +335,12 @@ module MGCP_Test {
runs on dummy_CT {
var template MgcpCommand cmd;
var MgcpResponse resp;
+ var SDP_attribute_list attributes;
+
+ attributes := { valueof(ts_SDP_rtpmap(flow.pt, flow.codec)), valueof(ts_SDP_ptime(20)) };
+ if (isvalue(flow.fmtp)) {
+ attributes := attributes & { valueof(ts_SDP_fmtp(flow.pt, flow.fmtp)) };
+ }
/* rebind local RTP emulation socket to the new address */
f_rtpem_bind(pt, flow.em.hostname, flow.em.portnr);
@@ -345,9 +357,7 @@ module MGCP_Test {
/* connect MGW side RTP socket to the emulation-side RTP socket using SDP */
cmd := ts_MDCX(get_next_trans_id(), ep, mode, call_id, flow.mgcp_conn_id);
cmd.sdp := ts_SDP(flow.em.hostname, flow.em.hostname, "23", "42",
- flow.em.portnr, { int2str(flow.pt) },
- { valueof(ts_SDP_rtpmap(flow.pt, flow.codec)),
- valueof(ts_SDP_ptime(20)) });
+ flow.em.portnr, { int2str(flow.pt) }, attributes);
resp := mgcp_transceive_mgw(cmd, tr_MDCX_ACK);
/* extract MGW-side port number from response. (usually this