<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20038">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mgw: Test IPv6 addresses in MGCP messages<br><br>These tests verify that osmo-mgw handles requests no matter of IP<br>version used in the remote address.<br><br>Change-Id: Ib134dda5a8f7c8f50968b6ce330f9986ae72575d<br>---<br>M mgw/MGCP_Test.ttcn<br>M mgw/osmo-mgw.cfg<br>2 files changed, 69 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/38/20038/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn</span><br><span>index c41466a..b767dd4 100644</span><br><span>--- a/mgw/MGCP_Test.ttcn</span><br><span>+++ b/mgw/MGCP_Test.ttcn</span><br><span>@@ -2230,6 +2230,72 @@</span><br><span> setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* test valid CRCX then MDCX with IPv4 address, MGW provides a local IPv4 too */</span><br><span style="color: hsl(120, 100%, 40%);">+ testcase TC_crcx_mdcx_ip4() runs on dummy_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "2@" & c_mgw_domain;</span><br><span style="color: hsl(120, 100%, 40%);">+ var template MgcpCommand cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpResponse resp;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpCallId call_id := '1234'H;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpConnectionId conn_id;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init(ep);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* create the connection on the MGW */</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+ conn_id := extract_conn_id(resp);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd := ts_MDCX(get_next_trans_id(), ep, "sendrecv", call_id, conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd.sdp := ts_SDP("127.0.0.2", "127.0.0.1", "23", "42", 2344, { "98" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { valueof(ts_SDP_rtpmap(98, "AMR/8000")),</span><br><span style="color: hsl(120, 100%, 40%);">+ valueof(ts_SDP_ptime(20)) });</span><br><span style="color: hsl(120, 100%, 40%);">+ resp := mgcp_transceive_mgw(cmd, tr_MDCX_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not ispresent(resp.sdp) or not ispresent(resp.sdp.connection)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "No RemoteConnection info found in MDCX ACK!");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not match(resp.sdp.connection, ts_SDP_connection_IP("127.0.0.1", "IP4"))) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "Wrong RemoteConnection in MDCX ACK!", resp.sdp.connection);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* clean-up */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_dlcx_ok(ep, call_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* test valid CRCX then MDCX with IPv6 address, MGW provides a local IPv6 too */</span><br><span style="color: hsl(120, 100%, 40%);">+ testcase TC_crcx_mdcx_ip6() runs on dummy_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpEndpoint ep := c_mgw_ep_rtpbridge & "2@" & c_mgw_domain;</span><br><span style="color: hsl(120, 100%, 40%);">+ var template MgcpCommand cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpResponse resp;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpCallId call_id := '1234'H;</span><br><span style="color: hsl(120, 100%, 40%);">+ var MgcpConnectionId conn_id;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_init(ep);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* create the connection on the MGW */</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ resp := mgcp_transceive_mgw(cmd, tr_CRCX_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+ conn_id := extract_conn_id(resp);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd := ts_MDCX(get_next_trans_id(), ep, "sendrecv", call_id, conn_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd.sdp := ts_SDP("::2", "::1", "23", "42", 2344, { "98" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { valueof(ts_SDP_rtpmap(98, "AMR/8000")),</span><br><span style="color: hsl(120, 100%, 40%);">+ valueof(ts_SDP_ptime(20)) });</span><br><span style="color: hsl(120, 100%, 40%);">+ resp := mgcp_transceive_mgw(cmd, tr_MDCX_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not ispresent(resp.sdp) or not ispresent(resp.sdp.connection)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "No RemoteConnection info found in MDCX ACK!");</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ if (not match(resp.sdp.connection, ts_SDP_connection_IP("::1", "IP6"))) {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "Wrong RemoteConnection in MDCX ACK!", resp.sdp.connection);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* clean-up */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_dlcx_ok(ep, call_id);</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span> execute(TC_selftest());</span><br><span> execute(TC_crcx());</span><br><span>@@ -2290,5 +2356,7 @@</span><br><span> execute(TC_e1_crcx_with_overlap());</span><br><span> execute(TC_e1_crcx_loopback());</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ execute(TC_crcx_mdcx_ip4());</span><br><span style="color: hsl(120, 100%, 40%);">+ execute(TC_crcx_mdcx_ip6());</span><br><span> }</span><br><span> }</span><br><span>diff --git a/mgw/osmo-mgw.cfg b/mgw/osmo-mgw.cfg</span><br><span>index edc8190..beb6fdf 100644</span><br><span>--- a/mgw/osmo-mgw.cfg</span><br><span>+++ b/mgw/osmo-mgw.cfg</span><br><span>@@ -22,6 +22,7 @@</span><br><span> bind port 2427</span><br><span> rtp port-range 4002 16000</span><br><span> rtp bind-ip 127.0.0.1</span><br><span style="color: hsl(120, 100%, 40%);">+ rtp bind-ip-v6 ::1</span><br><span> rtp ip-probing</span><br><span> rtp ip-dscp 184</span><br><span> no rtp keep-alive</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20038">change 20038</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20038"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib134dda5a8f7c8f50968b6ce330f9986ae72575d </div>
<div style="display:none"> Gerrit-Change-Number: 20038 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>