<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11289">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">MSC_ConnectionHandler: Use explicit AoIP flag<br><br>Most differences between sccplite and AoIP are visible during the<br>assignment. The current implementation checks for the presence of a CIC<br>in the ASSIGNMENT REQUEST in order to detect if the communication should<br>be modeled by AoIP or sccplite. This method is error prone and does not<br>work very well in situations where only signalling is used, because<br>there in sccplite and AoIP no CIC or AoIP trasp. identifier is present,<br>so there is nothing to check on. To resolve this we need an explicit way<br>to tell the MSC_ConnectionHandler that it has to behave like an AoIP MSC<br>or like an sccplite MSC.<br><br>- Add an aoip flag to TestHdlrParams<br>- Make sure BSC_Tests.ttcn sets the AoIP depending on mp_bssap_cfg.transport<br><br>Change-Id: I800249e783deb018d99e81d814843e0574a5c69b<br>Related: OS#3639<br>---<br>M bsc/BSC_Tests.ttcn<br>M bsc/MSC_ConnectionHandler.ttcn<br>2 files changed, 43 insertions(+), 33 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 9a85a1f..754f7b3 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -119,6 +119,18 @@</span><br><span>     };</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_gen_test_hdlr_pars() return TestHdlrParams {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_AoIP) {</span><br><span style="color: hsl(120, 100%, 40%);">+         pars.aoip := true;</span><br><span style="color: hsl(120, 100%, 40%);">+    } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              pars.aoip := false;</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%);">+   return pars;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_shutdown_helper() runs on test_CT {</span><br><span>  all component.stop;</span><br><span>  setverdict(pass);</span><br><span>@@ -1571,7 +1583,7 @@</span><br><span> }</span><br><span> testcase TC_ciph_mode_a5_0() runs on test_CT {</span><br><span>     var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('01'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1581,7 +1593,7 @@</span><br><span> }</span><br><span> testcase TC_ciph_mode_a5_1() runs on test_CT {</span><br><span>      var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('02'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1591,7 +1603,7 @@</span><br><span> }</span><br><span> testcase TC_ciph_mode_a5_3() runs on test_CT {</span><br><span>      var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('08'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1613,7 +1625,7 @@</span><br><span> }</span><br><span> testcase TC_assignment_fr_a5_0() runs on test_CT {</span><br><span>  var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('01'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1623,7 +1635,7 @@</span><br><span> }</span><br><span> testcase TC_assignment_fr_a5_1() runs on test_CT {</span><br><span>  var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('02'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1633,7 +1645,7 @@</span><br><span> }</span><br><span> testcase TC_assignment_fr_a5_3() runs on test_CT {</span><br><span>  var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   pars.encr := valueof(t_EncrParams('08'O, f_rnd_octstring(8)));</span><br><span> </span><br><span>   f_init(1, true);</span><br><span>@@ -1644,7 +1656,7 @@</span><br><span> </span><br><span> /* Expect ASSIGNMENT FAIL if mandatory IE is missing */</span><br><span> private function f_tc_assignment_fr_a5_1_codec_missing(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">- g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    var template PDU_BSSAP exp_fail := tr_BSSMAP_AssignmentFail;</span><br><span>         var PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span>    const OCT8 kc := '0001020304050607'O;</span><br><span>@@ -1665,7 +1677,7 @@</span><br><span> }</span><br><span> </span><br><span> private function f_tc_assignment_fr_a5_4(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-        g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    var template PDU_BSSAP exp_compl := f_gen_exp_compl();</span><br><span>       var PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span>    const OCT8 kc := '0001020304050607'O;</span><br><span>@@ -1689,10 +1701,9 @@</span><br><span> </span><br><span> </span><br><span> private function f_tc_assignment_sign(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-   g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    var template PDU_BSSAP exp_compl := tr_BSSMAP_AssignmentComplete(omit, omit);</span><br><span style="color: hsl(0, 100%, 40%);">-   var PDU_BSSAP ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, omit));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span>    ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelTypeSIGNAL);</span><br><span>         f_establish_fully(ass_cmd, exp_compl);</span><br><span> }</span><br><span>@@ -1886,7 +1897,7 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_codec_fr() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-     var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span> </span><br><span>        f_init(1, true);</span><br><span>@@ -1898,7 +1909,7 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_codec_hr() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-        var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span> </span><br><span>        f_init(1, true);</span><br><span>@@ -1910,7 +1921,7 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_codec_efr() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span> </span><br><span>        f_init(1, true);</span><br><span>@@ -1922,7 +1933,7 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_codec_amr_f() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-     var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span> </span><br><span>        /* Note: This setups the codec configuration. The parameter payload in</span><br><span>@@ -1948,7 +1959,7 @@</span><br><span> }</span><br><span> </span><br><span> testcase TC_assignment_codec_amr_h() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span> </span><br><span>        /* See note above */</span><br><span>@@ -1975,7 +1986,8 @@</span><br><span>  * a) BSSMAP Classmark Request should result in RR CLASSMARK ENQUIRY,</span><br><span>  * b) L3 RR CLASSMARK CHANGE should result in BSSMAP CLASSMARK UPDATE */</span><br><span> private function f_tc_classmark(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-      g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  f_create_chan_and_exp();</span><br><span>     /* we should now have a COMPL_L3 at the MSC */</span><br><span>       BSSAP.receive(tr_BSSMAP_ComplL3);</span><br><span>@@ -1996,7 +2008,7 @@</span><br><span> }</span><br><span> </span><br><span> private function f_est_single_l3(template PDU_ML3_MS_NW l3) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-        g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    f_create_chan_and_exp();</span><br><span>     /* we should now have a COMPL_L3 at the MSC */</span><br><span>       BSSAP.receive(tr_BSSMAP_ComplL3);</span><br><span>@@ -2064,7 +2076,7 @@</span><br><span> </span><br><span> /* short message from MS should be ignored */</span><br><span> private function f_tc_err_82_short_msg(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-  g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    f_create_chan_and_exp();</span><br><span>     /* we should now have a COMPL_L3 at the MSC */</span><br><span>       BSSAP.receive(tr_BSSMAP_ComplL3);</span><br><span>@@ -2146,7 +2158,7 @@</span><br><span> </span><br><span> /* intra-BSC hand-over between BTS0 and BTS1 */</span><br><span> private function f_tc_ho_int(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-  g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span>    var template PDU_BSSAP exp_compl := f_gen_exp_compl();</span><br><span>       var PDU_BSSAP ass_cmd := f_gen_ass_req();</span><br><span>    const OCT8 kc := '0001020304050607'O;</span><br><span>@@ -2189,7 +2201,7 @@</span><br><span> }</span><br><span> </span><br><span> private function f_tc_ho_out_of_this_bsc(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-        g_pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+        g_pars := f_gen_test_hdlr_pars();</span><br><span> </span><br><span>        var PDU_BSSAP ass_req := f_gen_ass_req();</span><br><span>    ass_req.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType);</span><br><span>@@ -2327,7 +2339,7 @@</span><br><span> }</span><br><span> testcase TC_ho_into_this_bsc() runs on test_CT {</span><br><span>      var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 100%, 40%);">-       var TestHdlrParams pars := valueof(t_def_TestHdlrPars);</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span> </span><br><span>       f_init(1, true);</span><br><span>     f_sleep(1.0);</span><br><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index 079cc74..dfdf10c 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -426,9 +426,13 @@</span><br><span>    RSL_IE_Body     expect_mr_conf_ie optional, /* typically present for AMR codecs */</span><br><span>   TestHdlrEncrParams encr optional,</span><br><span>    TestHdlrParamsLcls lcls,</span><br><span style="color: hsl(0, 100%, 40%);">-        TestHdlrParamsHandover handover optional</span><br><span style="color: hsl(120, 100%, 40%);">+      TestHdlrParamsHandover handover optional,</span><br><span style="color: hsl(120, 100%, 40%);">+     boolean         aoip</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Note: Do not use valueof() to get a value of this template, use</span><br><span style="color: hsl(120, 100%, 40%);">+ * f_gen_test_hdlr_pars() instead in order to get a configuration that is</span><br><span style="color: hsl(120, 100%, 40%);">+ * matched to the current test sitation (aoio vs. sccplite) */</span><br><span> template (value) TestHdlrParams t_def_TestHdlrPars := {</span><br><span>     ra := '23'O,</span><br><span>         fn := 23,</span><br><span>@@ -444,7 +448,8 @@</span><br><span>              csc := omit,</span><br><span>                 exp_sts := omit</span><br><span>      },</span><br><span style="color: hsl(0, 100%, 40%);">-      handover := omit</span><br><span style="color: hsl(120, 100%, 40%);">+      handover := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+     aoip := true</span><br><span> }</span><br><span> </span><br><span> function f_create_chan_and_exp() runs on MSC_ConnHdlr {</span><br><span>@@ -828,15 +833,8 @@</span><br><span> runs on MSC_ConnHdlr {</span><br><span> </span><br><span>        var BSSMAP_FIELD_CodecType codecType;</span><br><span style="color: hsl(0, 100%, 40%);">-   var boolean sccplite := false;</span><br><span>       timer T := 10.0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    /* Check if we run on SCCPLITE instead of SCCP by looking if a CIC is</span><br><span style="color: hsl(0, 100%, 40%);">-    * present or not. */</span><br><span style="color: hsl(0, 100%, 40%);">-   if (isvalue(ass_tpl.pdu.bssmap.assignmentRequest.circuitIdentityCode)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                sccplite := true;</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (isvalue(ass_tpl.pdu.bssmap.assignmentRequest.codecList)) {</span><br><span>               codecType := valueof(ass_tpl.pdu.bssmap.assignmentRequest.codecList.codecElements[0].codecType);</span><br><span>     } else {</span><br><span>@@ -855,7 +853,7 @@</span><br><span> </span><br><span>   var template PDU_BSSAP exp_l3_compl;</span><br><span>         exp_l3_compl := tr_BSSMAP_ComplL3()</span><br><span style="color: hsl(0, 100%, 40%);">-     if (sccplite) {</span><br><span style="color: hsl(120, 100%, 40%);">+       if (g_pars.aoip == false) {</span><br><span>          exp_l3_compl.pdu.bssmap.completeLayer3Information.codecList := omit;</span><br><span>         } else {</span><br><span>             exp_l3_compl.pdu.bssmap.completeLayer3Information.codecList := ?;</span><br><span>@@ -930,7 +928,7 @@</span><br><span>              g_media.mgcp_conn[1].mdcx_seen_exp := 0;</span><br><span>     } else if (st.voice_call) {</span><br><span>          /* For voice calls we expect the following MGCP activity */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (sccplite) {</span><br><span style="color: hsl(120, 100%, 40%);">+               if (g_pars.aoip == false) {</span><br><span>                  g_media.mgcp_conn[0].crcx_seen_exp := 1;</span><br><span>                     g_media.mgcp_conn[0].mdcx_seen_exp := 1;</span><br><span>                     g_media.mgcp_conn[1].crcx_seen_exp := 0;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11289">change 11289</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/11289"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I800249e783deb018d99e81d814843e0574a5c69b </div>
<div style="display:none"> Gerrit-Change-Number: 11289 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>