<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15939">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">msc: fix Iu mo call<br><br>Change-Id: I0ead36333ab665147b8d222070ea5cf8afc555ec<br>---<br>M library/ranap/RANAP_Templates.ttcn<br>M msc/BSC_ConnectionHandler.ttcn<br>2 files changed, 48 insertions(+), 31 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/39/15939/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/ranap/RANAP_Templates.ttcn b/library/ranap/RANAP_Templates.ttcn</span><br><span>index df4ea03..c616231 100644</span><br><span>--- a/library/ranap/RANAP_Templates.ttcn</span><br><span>+++ b/library/ranap/RANAP_Templates.ttcn</span><br><span>@@ -1305,7 +1305,7 @@</span><br><span>                           protocolIEs := {</span><br><span>                                     {</span><br><span>                                            id := id_RAB_SetupOrModifyList,</span><br><span style="color: hsl(0, 100%, 40%);">-                                         criticality := reject,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                criticality := ?,</span><br><span>                                            value_ := {</span><br><span>                                                  rAB_SetupOrModifyList := rab_sml</span><br><span>                                             }</span><br><span>diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn</span><br><span>index 23697da..b11d24b 100644</span><br><span>--- a/msc/BSC_ConnectionHandler.ttcn</span><br><span>+++ b/msc/BSC_ConnectionHandler.ttcn</span><br><span>@@ -1091,6 +1091,20 @@</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private altstep as_optional_mgcp_dlcx(CallParameters cpars) runs on BSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        var MgcpCommand mgcp_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+     var boolean respond_to_dlcx := not (isbound(cpars.mgw_drop_dlcx) and valueof(cpars.mgw_drop_dlcx));</span><br><span style="color: hsl(120, 100%, 40%);">+   [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd {</span><br><span style="color: hsl(120, 100%, 40%);">+            log("as_optional_mgcp_dlcx: rx MGCP DLCX");</span><br><span style="color: hsl(120, 100%, 40%);">+         if (respond_to_dlcx) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id));</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+             /* Without this 'repeat', currently active other interleave and alt series exit as soon as a</span><br><span style="color: hsl(120, 100%, 40%);">+           * DLCX is handled. */</span><br><span style="color: hsl(120, 100%, 40%);">+                repeat;</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%);">+</span><br><span> function f_mo_call_establish(inout CallParameters cpars)</span><br><span> runs on BSC_ConnHdlr {</span><br><span> </span><br><span>@@ -1099,6 +1113,7 @@</span><br><span>     var template MgcpResponse mgcp_resp;</span><br><span>         var boolean respond_to_dlcx;</span><br><span>         var PDU_BSSAP bssap;</span><br><span style="color: hsl(120, 100%, 40%);">+  var RANAP_PDU ranap;</span><br><span>         var MgcpOsmuxCID osmux_cid;</span><br><span> </span><br><span>      cpars.mo_call := true;</span><br><span>@@ -1193,11 +1208,29 @@</span><br><span>             }</span><br><span>            BSSAP.send(bssap);</span><br><span>           }</span><br><span style="color: hsl(0, 100%, 40%);">-       /*</span><br><span style="color: hsl(0, 100%, 40%);">-      [!g_pars.ran_is_geran] BSSAP.receive(tr_RANAP_RabAssReq(rab_sml)) {</span><br><span style="color: hsl(0, 100%, 40%);">-             //BSSAP.send(ts_RANAP_RabAssResp(rab_sml)); FIXME</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSAP.receive(tr_RANAP_RabAssReq(*)) -> value ranap {</span><br><span style="color: hsl(120, 100%, 40%);">+           log("f_mo_call_establish 4.iu: rx RANAP RAB Assignment Request");</span><br><span style="color: hsl(120, 100%, 40%);">+           var RAB_SetupOrModifiedList l := {</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%);">+                                     id := id_RAB_SetupOrModifiedItem,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     criticality := ignore,</span><br><span style="color: hsl(120, 100%, 40%);">+                                        value_ := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     rAB_SetupOrModifiedItem := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                rAB_ID := int2bit(23, 8),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             transportLayerAddress := hex2bit( '350001c0a8021500000000000000000000000000'H),</span><br><span style="color: hsl(120, 100%, 40%);">+                                               iuTransportAssociation := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   bindingID := '040c0000'O</span><br><span style="color: hsl(120, 100%, 40%);">+                                              },</span><br><span style="color: hsl(120, 100%, 40%);">+                                            dl_dataVolumes := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                                               iE_Extensions := omit</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%);">+                             }</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%);">+            BSSAP.send(ts_RANAP_RabAssResp(l));</span><br><span>          }</span><br><span style="color: hsl(0, 100%, 40%);">-       */</span><br><span> </span><br><span>       /* MDCX setting up the RAN side remote RTP address received from Assignment Complete */</span><br><span>      [] MGCP.receive(tr_MDCX) -> value mgcp_cmd {</span><br><span>@@ -1315,48 +1348,32 @@</span><br><span>    respond_to_dlcx := not (isbound(cpars.mgw_drop_dlcx) and valueof(cpars.mgw_drop_dlcx));</span><br><span> </span><br><span>  var default mdcx := activate(as_optional_mgcp_mdcx(cpars.mgw_conn_2.mgw_rtp_ip, cpars.mgw_conn_2.mgw_rtp_port));</span><br><span style="color: hsl(120, 100%, 40%);">+      var default dlcx := activate(as_optional_mgcp_dlcx(cpars));</span><br><span> </span><br><span>      /* clearing of radio channel */</span><br><span style="color: hsl(0, 100%, 40%);">- interleave {</span><br><span style="color: hsl(0, 100%, 40%);">-    //[g_pars.ran_is_geran] BSSAP.receive(t_clear) {</span><br><span style="color: hsl(0, 100%, 40%);">-        [] BSSAP.receive(t_clear) {</span><br><span style="color: hsl(120, 100%, 40%);">+   alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [g_pars.ran_is_geran] BSSAP.receive(t_clear) {</span><br><span>               log("f_call_hangup 5: rx BSSAP Clear Command");</span><br><span>            BSSAP.send(ts_BSSMAP_ClearComplete);</span><br><span>                 BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND);</span><br><span>                 log("f_call_hangup 6: rx SCCP DISC");</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       /*</span><br><span style="color: hsl(0, 100%, 40%);">-      [!g_pars.ran_is_geran] BSSAP.receive(t_iurel) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [not g_pars.ran_is_geran] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               log("f_call_hangup 5.iu: rx Iu Release Command");</span><br><span>          BSSAP.send(ts_RANAP_IuReleaseComplete);</span><br><span>              BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND);</span><br><span style="color: hsl(0, 100%, 40%);">-            }</span><br><span style="color: hsl(0, 100%, 40%);">-       */</span><br><span style="color: hsl(0, 100%, 40%);">-      [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd {</span><br><span style="color: hsl(0, 100%, 40%);">-                      log("f_call_hangup 7: rx MGCP DLCX");</span><br><span style="color: hsl(0, 100%, 40%);">-                 if (respond_to_dlcx) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id));</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-                       dlcx_contained_ci := f_MgcpCmd_contains_par(mgcp_cmd, "I");</span><br><span style="color: hsl(120, 100%, 40%);">+         log("f_call_hangup 6.iu: rx SCCP DISC");</span><br><span style="color: hsl(120, 100%, 40%);">+            setverdict(pass);</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Two DLCXes expected, one for RAN and one for CN side.</span><br><span style="color: hsl(0, 100%, 40%);">-         * Unless the first DLCX did not contain a CI, in which case it was a wildcard DLCX for both. */</span><br><span style="color: hsl(0, 100%, 40%);">-        if (dlcx_contained_ci) {</span><br><span style="color: hsl(0, 100%, 40%);">-                MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd {</span><br><span style="color: hsl(0, 100%, 40%);">-                 log("f_call_hangup 8: rx MGCP DLCX");</span><br><span style="color: hsl(0, 100%, 40%);">-                 if (respond_to_dlcx) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id));</span><br><span style="color: hsl(0, 100%, 40%);">-                        }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span>        f_create_mgcp_delete_ep(cpars.mgcp_ep);</span><br><span>      log("f_call_hangup 9: done");</span><br><span> </span><br><span>  deactivate(mdcx);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+     deactivate(dlcx);</span><br><span> }</span><br><span> </span><br><span> function f_mt_call(inout CallParameters cpars)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15939">change 15939</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/+/15939"/><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: I0ead36333ab665147b8d222070ea5cf8afc555ec </div>
<div style="display:none"> Gerrit-Change-Number: 15939 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>