<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19980">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: Introduce test TC_assignment_aoip_tla_v6 and TC_ho_into_this_bsc_tla_v6<br><br>Change-Id: Iba24fae66c80b64bf81bbfd616294af757e5dca3<br>---<br>M bsc/BSC_Tests.ttcn<br>M bsc/MSC_ConnectionHandler.ttcn<br>2 files changed, 63 insertions(+), 12 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 f16fab4..d32f202 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -1397,12 +1397,12 @@</span><br><span> }</span><br><span> </span><br><span> /* generate an assignment request for either AoIP or SCCPlite */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0) return PDU_BSSAP {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP {</span><br><span>   var PDU_BSSAP ass_cmd;</span><br><span>       var BSSMAP_IE_Osmo_OsmuxCID osmux_cid := valueof(ts_OsmuxCID(0));</span><br><span>    if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {</span><br><span>             var BSSMAP_IE_AoIP_TransportLayerAddress tla :=</span><br><span style="color: hsl(0, 100%, 40%);">-                                         valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342));</span><br><span style="color: hsl(120, 100%, 40%);">+                   valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));</span><br><span>            if (osmux_enabled) {</span><br><span>                         ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla, osmux_cid));</span><br><span>           } else {</span><br><span>@@ -1415,11 +1415,11 @@</span><br><span>   return ass_cmd;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_gen_handover_req(integer bssap_idx := 0) return PDU_BSSAP {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_gen_handover_req(integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP {</span><br><span>   var PDU_BSSAP ho_req;</span><br><span>        if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {</span><br><span>             var BSSMAP_IE_AoIP_TransportLayerAddress tla :=</span><br><span style="color: hsl(0, 100%, 40%);">-                                         valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342));</span><br><span style="color: hsl(120, 100%, 40%);">+                   valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));</span><br><span>            ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla));</span><br><span>     } else {</span><br><span>             var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(0,1));</span><br><span>@@ -3093,6 +3093,25 @@</span><br><span>    vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* establish initial channel, enable ciphering followed by assignment to ciphered channel */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tc_assignment_aoip_tla_v6(charstring id) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+      var template PDU_BSSAP exp_compl := f_gen_exp_compl();</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_BSSAP ass_cmd := f_gen_ass_req(aoip_tla := "::3");</span><br><span style="color: hsl(120, 100%, 40%);">+  ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType);</span><br><span style="color: hsl(120, 100%, 40%);">+        ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_establish_fully(ass_cmd, exp_compl);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_assignment_aoip_tla_v6() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+     var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn := f_start_handler(refers(f_tc_assignment_aoip_tla_v6), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+        vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> /* establish initial channel, enable ciphering followed by assignment to ciphered channel */</span><br><span> private function f_tc_assignment_fr_a5(charstring id) runs on MSC_ConnHdlr {</span><br><span>@@ -4628,7 +4647,7 @@</span><br><span>       activate(as_Media());</span><br><span> </span><br><span>    BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_bsc, g_pars.sccp_addr_msc,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     f_gen_handover_req()));</span><br><span style="color: hsl(120, 100%, 40%);">+                               f_gen_handover_req(aoip_tla := g_pars.host_aoip_tla)));</span><br><span>         BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND);</span><br><span> </span><br><span>     /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */</span><br><span>@@ -4675,9 +4694,8 @@</span><br><span>  BSSAP.receive(tr_BSSMAP_HandoverComplete);</span><br><span>   setverdict(pass);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_ho_into_this_bsc() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_tc_ho_into_this_bsc_main(TestHdlrParams pars) runs on test_CT {</span><br><span>   var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(0, 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>@@ -4697,6 +4715,17 @@</span><br><span>       f_ctrs_bsc_and_bts_verify();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_ho_into_this_bsc() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+    f_tc_ho_into_this_bsc_main(pars);</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%);">+testcase TC_ho_into_this_bsc_tla_v6() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+    pars.host_aoip_tla := "::6";</span><br><span style="color: hsl(120, 100%, 40%);">+        f_tc_ho_into_this_bsc_main(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_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {</span><br><span>  var RslChannelNr new_chan_nr := valueof(t_RslChanNr0(1, RSL_CHAN_NR_Bm_ACCH));</span><br><span>       f_rslem_register(0, new_chan_nr);</span><br><span>@@ -7390,6 +7419,9 @@</span><br><span>    execute( TC_assignment_csd() );</span><br><span>      execute( TC_assignment_ctm() );</span><br><span>      execute( TC_assignment_sign() );</span><br><span style="color: hsl(120, 100%, 40%);">+      if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {</span><br><span style="color: hsl(120, 100%, 40%);">+              execute( TC_assignment_aoip_tla_v6() );</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span>    execute( TC_assignment_fr_a5_0() );</span><br><span>  execute( TC_assignment_fr_a5_1() );</span><br><span>  if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {</span><br><span>@@ -7498,6 +7530,9 @@</span><br><span>     execute( TC_ho_out_fail_no_result_after_ho_cmd() );</span><br><span> </span><br><span>      execute( TC_ho_into_this_bsc() );</span><br><span style="color: hsl(120, 100%, 40%);">+     if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {</span><br><span style="color: hsl(120, 100%, 40%);">+              execute( TC_ho_into_this_bsc_tla_v6() );</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span>    execute( TC_ho_in_fail_msc_clears() );</span><br><span>       execute( TC_ho_in_fail_msc_clears_after_ho_detect() );</span><br><span>       execute( TC_ho_in_fail_no_detect() );</span><br><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index bf96eff..76a56fc 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -279,6 +279,7 @@</span><br><span>     var MgcpOsmuxCID osmux_cid;</span><br><span>  var SDP_Message sdp;</span><br><span>         var integer cid := f_get_free_mgcp_conn();</span><br><span style="color: hsl(120, 100%, 40%);">+    var charstring local_rtp_addr := host_mgw_rtp_v6; /* Use IPv6 by default if no remote addr is provided by client */</span><br><span>  if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {</span><br><span>           if (cid != 0) {</span><br><span>                      Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MGCP wildcard EP only works in first CRCX");</span><br><span>@@ -292,9 +293,14 @@</span><br><span>            sdp := mgcp_cmd.sdp;</span><br><span>                 g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;</span><br><span>           g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;</span><br><span style="color: hsl(120, 100%, 40%);">+               if (sdp.connection.addr_type == "IP6") {</span><br><span style="color: hsl(120, 100%, 40%);">+                    local_rtp_addr := host_mgw_rtp_v6;</span><br><span style="color: hsl(120, 100%, 40%);">+            } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      local_rtp_addr := host_mgw_rtp_v4;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>    }</span><br><span>    var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];</span><br><span style="color: hsl(0, 100%, 40%);">-  sdp := valueof(ts_SDP(mgcp_conn.mgw.host, mgcp_conn.mgw.host, "foo", "21",</span><br><span style="color: hsl(120, 100%, 40%);">+        sdp := valueof(ts_SDP(mgcp_conn.mgw.host, local_rtp_addr, "foo", "21",</span><br><span>                           mgcp_conn.mgw.port_nr, { int2str(mgcp_conn.rtp_pt) },</span><br><span>                        {valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,</span><br><span>                                             mgcp_conn.mime_type & "/" &</span><br><span>@@ -316,15 +322,21 @@</span><br><span>        runs on MSC_ConnHdlr return template MgcpResponse {</span><br><span>  var SDP_Message sdp;</span><br><span>         var integer cid := f_get_mgcp_conn(f_MgcpCmd_extract_conn_id(mgcp_cmd));</span><br><span style="color: hsl(120, 100%, 40%);">+      var charstring local_rtp_addr;</span><br><span>       if (isvalue(mgcp_cmd.sdp)) {</span><br><span>                 sdp := mgcp_cmd.sdp;</span><br><span>                 g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;</span><br><span>           g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;</span><br><span style="color: hsl(120, 100%, 40%);">+               if (sdp.connection.addr_type == "IP6") {</span><br><span style="color: hsl(120, 100%, 40%);">+                    local_rtp_addr := host_mgw_rtp_v6;</span><br><span style="color: hsl(120, 100%, 40%);">+            } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      local_rtp_addr := host_mgw_rtp_v4;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>    } else {</span><br><span>             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MDCX has no [recognizable] SDP");</span><br><span>      }</span><br><span>    var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];</span><br><span style="color: hsl(0, 100%, 40%);">-  sdp := valueof(ts_SDP(mgcp_conn.peer.host, mgcp_conn.peer.host, "foo", "21",</span><br><span style="color: hsl(120, 100%, 40%);">+      sdp := valueof(ts_SDP(mgcp_conn.peer.host, local_rtp_addr, "foo", "21",</span><br><span>                          mgcp_conn.peer.port_nr, { int2str(mgcp_conn.rtp_pt) },</span><br><span>                       {valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,</span><br><span>                                             mgcp_conn.mime_type & "/" &</span><br><span>@@ -427,7 +439,9 @@</span><br><span>  var TestHdlrParams g_pars;</span><br><span> </span><br><span>       var charstring host_bts := "127.0.0.2";</span><br><span style="color: hsl(0, 100%, 40%);">-       var charstring host_mgw := "127.0.0.3";</span><br><span style="color: hsl(120, 100%, 40%);">+     var charstring host_mgw_mgcp := "127.0.0.3";</span><br><span style="color: hsl(120, 100%, 40%);">+        var charstring host_mgw_rtp_v4 := "127.0.0.5";</span><br><span style="color: hsl(120, 100%, 40%);">+      var charstring host_mgw_rtp_v6 := "::1";</span><br><span>   var charstring host_msc := "127.0.0.4";</span><br><span> </span><br><span>        var boolean g_vty_initialized := false;</span><br><span>@@ -538,6 +552,7 @@</span><br><span>        boolean         exp_ms_power_params,</span><br><span>         boolean         aoip,</span><br><span>        boolean         use_osmux,</span><br><span style="color: hsl(120, 100%, 40%);">+    charstring      host_aoip_tla,</span><br><span>       TestHdlrParamsMSCPool mscpool</span><br><span> };</span><br><span> </span><br><span>@@ -567,6 +582,7 @@</span><br><span>        exp_ms_power_params := false,</span><br><span>        aoip := true,</span><br><span>        use_osmux := false,</span><br><span style="color: hsl(120, 100%, 40%);">+   host_aoip_tla := "1.2.3.4",</span><br><span>        mscpool := {</span><br><span>                 bssap_idx := 0,</span><br><span>              rsl_idx := 0,</span><br><span>@@ -1015,7 +1031,7 @@</span><br><span>                codecType := FR_AMR;</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw, codecType);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, codecType);</span><br><span> </span><br><span>         /* patch in the LCLS related items, as needed */</span><br><span>     f_ass_patch_lcls(ass_tpl, exp_ass_cpl);</span><br><span>@@ -1184,7 +1200,7 @@</span><br><span>                      cmd := ts_CRCX(get_next_trans_id(), ep, "sendrecv", call_id);</span><br><span>                      resp := tr_CRCX_ACK;</span><br><span>                 }</span><br><span style="color: hsl(0, 100%, 40%);">-               cmd.sdp := ts_SDP(host_msc, host_mgw, "23", "42",</span><br><span style="color: hsl(120, 100%, 40%);">+         cmd.sdp := ts_SDP(host_msc, host_mgw_rtp_v4, "23", "42",</span><br><span>                              14000, { int2str(g_media.mgcp_conn[1].rtp_pt) },</span><br><span>                             { valueof(ts_SDP_ptime(20)) });</span><br><span>                 mgcp_transceive_mgw(cmd, resp);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19980">change 19980</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/+/19980"/><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: Iba24fae66c80b64bf81bbfd616294af757e5dca3 </div>
<div style="display:none"> Gerrit-Change-Number: 19980 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>