<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>