<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10377">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;">BSSGP_Emulation.ttcn: extend BSSGP_Client_CT to hold 3 instances of BSSGP<br><br>Change-Id: Ibd7abba826a08b582361e9c255e9c44185e14067<br>---<br>M library/BSSGP_Emulation.ttcn<br>M pcu/PCU_Tests.ttcn<br>M sgsn/SGSN_Tests.ttcn<br>3 files changed, 112 insertions(+), 112 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/BSSGP_Emulation.ttcn b/library/BSSGP_Emulation.ttcn</span><br><span>index 8b3b9eb..a9d2a25 100644</span><br><span>--- a/library/BSSGP_Emulation.ttcn</span><br><span>+++ b/library/BSSGP_Emulation.ttcn</span><br><span>@@ -79,9 +79,9 @@</span><br><span>  ***********************************************************************/</span><br><span> </span><br><span> type component BSSGP_Client_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-       port BSSGP_PT BSSGP;</span><br><span style="color: hsl(0, 100%, 40%);">-    port BSSGP_PT BSSGP_SIG;</span><br><span style="color: hsl(0, 100%, 40%);">-        port BSSGP_PROC_PT BSSGP_PROC;</span><br><span style="color: hsl(120, 100%, 40%);">+        port BSSGP_PT BSSGP[3];</span><br><span style="color: hsl(120, 100%, 40%);">+       port BSSGP_PT BSSGP_SIG[3];</span><br><span style="color: hsl(120, 100%, 40%);">+   port BSSGP_PROC_PT BSSGP_PROC[3];</span><br><span> };</span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -660,14 +660,14 @@</span><br><span>      return dec;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_bssgp_client_register(hexstring imsi, OCT4 tlli, BssgpCellId cell_id, BSSGP_PROC_PT PT := BSSGP_PROC)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_bssgp_client_register(hexstring imsi, OCT4 tlli, BssgpCellId cell_id, BSSGP_PROC_PT PT := BSSGP_PROC[0])</span><br><span> runs on BSSGP_Client_CT {</span><br><span>       PT.call(BSSGP_register_client:{imsi, tlli, cell_id}) {</span><br><span>               [] PT.getreply(BSSGP_register_client:{imsi, tlli, cell_id}) {};</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_bssgp_client_unregister(hexstring imsi, BSSGP_PROC_PT PT := BSSGP_PROC)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_bssgp_client_unregister(hexstring imsi, BSSGP_PROC_PT PT := BSSGP_PROC[0])</span><br><span> runs on BSSGP_Client_CT {</span><br><span>     PT.call(BSSGP_unregister_client:{imsi}) {</span><br><span>            [] PT.getreply(BSSGP_unregister_client:{imsi}) {};</span><br><span>@@ -675,7 +675,7 @@</span><br><span> }</span><br><span> </span><br><span> /* TS 44.064 7.2.1.1 LLGMM-ASSIGN */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_bssgp_client_llgmm_assign(OCT4 tlli_old, OCT4 tlli_new, BSSGP_PROC_PT PT := BSSGP_PROC)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_bssgp_client_llgmm_assign(OCT4 tlli_old, OCT4 tlli_new, BSSGP_PROC_PT PT := BSSGP_PROC[0])</span><br><span> runs on BSSGP_Client_CT {</span><br><span>      PT.call(BSSGP_llgmm_assign:{tlli_old, tlli_new}) {</span><br><span>           [] PT.getreply(BSSGP_llgmm_assign:{tlli_old, tlli_new}) {};</span><br><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index d59ac11..a63ca1d 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -68,9 +68,9 @@</span><br><span>                 ns_component := NS_CT.create;</span><br><span>                bssgp_component := BSSGP_CT.create;</span><br><span>          /* connect our BSSGP port to the BSSGP Emulation */</span><br><span style="color: hsl(0, 100%, 40%);">-             connect(self:BSSGP, bssgp_component:BSSGP_SP);</span><br><span style="color: hsl(0, 100%, 40%);">-          connect(self:BSSGP_SIG, bssgp_component:BSSGP_SP_SIG);</span><br><span style="color: hsl(0, 100%, 40%);">-          connect(self:BSSGP_PROC, bssgp_component:BSSGP_PROC);</span><br><span style="color: hsl(120, 100%, 40%);">+         connect(self:BSSGP[0], bssgp_component:BSSGP_SP);</span><br><span style="color: hsl(120, 100%, 40%);">+             connect(self:BSSGP_SIG[0], bssgp_component:BSSGP_SP_SIG);</span><br><span style="color: hsl(120, 100%, 40%);">+             connect(self:BSSGP_PROC[0], bssgp_component:BSSGP_PROC);</span><br><span>             /* connect lower-end of BSSGP with BSSGP_CODEC_PORT (maps to NS_PT*/</span><br><span>                 connect(bssgp_component:BSCP, ns_component:NS_SP);</span><br><span>           /* connect lower-end of NS emulation to NS_CODEC_PORT (on top of IPl4) */</span><br><span>@@ -186,7 +186,7 @@</span><br><span> </span><br><span>          log(ts_BSSGP_DL_UD(g_mmctx.tlli, enc_PDU_LLC(llc)));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                BSSGP.send(ts_BSSGP_DL_UD(g_mmctx.tlli, enc_PDU_LLC(llc)));</span><br><span style="color: hsl(120, 100%, 40%);">+           BSSGP[0].send(ts_BSSGP_DL_UD(g_mmctx.tlli, enc_PDU_LLC(llc)));</span><br><span>       }</span><br><span> </span><br><span>        /* Establish BSSGP connection to PCU */</span><br><span>@@ -196,8 +196,8 @@</span><br><span>                f_init();</span><br><span>            T.start</span><br><span>              alt {</span><br><span style="color: hsl(0, 100%, 40%);">-                   [] BSSGP.receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { }</span><br><span style="color: hsl(0, 100%, 40%);">-                      [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+                  [] BSSGP[0].receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { }</span><br><span style="color: hsl(120, 100%, 40%);">+                 [] BSSGP[0].receive { repeat; }</span><br><span>                      [] T.timeout {</span><br><span>                               setverdict(fail, "Timeout establishing BSSGP connection");</span><br><span>                                 mtc.stop;</span><br><span>@@ -215,17 +215,17 @@</span><br><span>            f_init();</span><br><span> </span><br><span>                /* Send paging on signalling BVCI 0 since osmo-pcu does not support paging on PTP yet. */</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP_SIG.send(ts_BSSGP_PS_PAGING_IMSI(0, g_mmctx.imsi));</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP_SIG.send(ts_BSSGP_PS_PAGING_PTMSI(0, g_mmctx.imsi, tmsi));</span><br><span style="color: hsl(120, 100%, 40%);">+              BSSGP_SIG[0].send(ts_BSSGP_PS_PAGING_IMSI(0, g_mmctx.imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+          BSSGP_SIG[0].send(ts_BSSGP_PS_PAGING_PTMSI(0, g_mmctx.imsi, tmsi));</span><br><span> </span><br><span>              while (true) {</span><br><span>                       var BssgpDecoded bd;</span><br><span>                         alt {</span><br><span style="color: hsl(0, 100%, 40%);">-                           [] BSSGP.receive(tr_BD_L3_MT(?)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+                             [] BSSGP[0].receive(tr_BD_L3_MT(?)) -> value bd {</span><br><span>                                         log("BSSGP Rx: ", bd);</span><br><span>                             }</span><br><span style="color: hsl(0, 100%, 40%);">-                               [] BSSGP.receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { repeat; }</span><br><span style="color: hsl(0, 100%, 40%);">-                              [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+                          [] BSSGP[0].receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+                         [] BSSGP[0].receive { repeat; }</span><br><span>                      }</span><br><span>            }</span><br><span>    }</span><br><span>@@ -283,7 +283,7 @@</span><br><span>      timer T := 5.0;</span><br><span>      T.start;</span><br><span>     alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(bd_exp) {</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[0].receive(bd_exp) {</span><br><span>                log("found matching BSSGP UL-UNITDATA PDU");</span><br><span>               }</span><br><span>    [] T.timeout {</span><br><span>@@ -355,14 +355,14 @@</span><br><span>               while (true) {</span><br><span>                       var BssgpDecoded bd;</span><br><span>                         alt {</span><br><span style="color: hsl(0, 100%, 40%);">-                           [] BSSGP.receive(tr_BD_BSSGP(?)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+                             [] BSSGP[0].receive(tr_BD_BSSGP(?)) -> value bd {</span><br><span>                                         log("BSSGP Rx: ", bd);</span><br><span>                                     //log("GMM Rx: ", dec_PDU_L3_MS_SGSN(pdu.payload));</span><br><span>                                        g_mmctx.tlli := bd.bssgp.pDU_BSSGP_UL_UNITDATA.tLLI;</span><br><span>                                         tx_gmm(LLC_CR_DL_CMD, gmm_auth_req);</span><br><span>                                 }</span><br><span style="color: hsl(0, 100%, 40%);">-                               [] BSSGP.receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { repeat; }</span><br><span style="color: hsl(0, 100%, 40%);">-                              [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+                          [] BSSGP[0].receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+                         [] BSSGP[0].receive { repeat; }</span><br><span>                      }</span><br><span>            }</span><br><span>    }</span><br><span>diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn</span><br><span>index d2db909..6bf2d60 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -259,8 +259,8 @@</span><br><span>         };</span><br><span> </span><br><span>       vc_conn := BSSGP_ConnHdlr.create(id);</span><br><span style="color: hsl(0, 100%, 40%);">-   connect(vc_conn:BSSGP, gb.vc_BSSGP:BSSGP_SP);</span><br><span style="color: hsl(0, 100%, 40%);">-   connect(vc_conn:BSSGP_PROC, gb.vc_BSSGP:BSSGP_PROC);</span><br><span style="color: hsl(120, 100%, 40%);">+  connect(vc_conn:BSSGP[0], gb.vc_BSSGP:BSSGP_SP);</span><br><span style="color: hsl(120, 100%, 40%);">+      connect(vc_conn:BSSGP_PROC[0], gb.vc_BSSGP:BSSGP_PROC);</span><br><span> </span><br><span>  connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT);</span><br><span>  connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC);</span><br><span>@@ -321,14 +321,14 @@</span><br><span> </span><br><span> altstep as_mm_identity() runs on BSSGP_ConnHdlr {</span><br><span>      var MobileL3_CommonIE_Types.MobileIdentityLV mi;</span><br><span style="color: hsl(0, 100%, 40%);">-        [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+        [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span>            mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));</span><br><span style="color: hsl(0, 100%, 40%);">-              BSSGP.send(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+               BSSGP[0].send(ts_GMM_ID_RESP(mi));</span><br><span>           repeat;</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+        [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span>            mi := valueof(ts_MI_IMEI_LV(g_pars.imei));</span><br><span style="color: hsl(0, 100%, 40%);">-              BSSGP.send(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+               BSSGP[0].send(ts_GMM_ID_RESP(mi));</span><br><span>           repeat;</span><br><span>      }</span><br><span> }</span><br><span>@@ -374,7 +374,7 @@</span><br><span> </span><br><span>             var template PDU_L3_SGSN_MS auth_ciph_req := tr_GMM_AUTH_REQ(g_pars.vec.rand);</span><br><span>               auth_ciph_req.msgs.gprs_mm.authenticationAndCipheringRequest.authenticationParameterAUTN := autn;</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP.receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd;</span><br><span style="color: hsl(120, 100%, 40%);">+             BSSGP[0].receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd;</span><br><span>                 l3_mt := bd.l3_mt;</span><br><span>           var BIT4 ac_ref := l3_mt.msgs.gprs_mm.authenticationAndCipheringRequest.acReferenceNumber.valueField;</span><br><span>                var template PDU_L3_MS_SGSN auth_ciph_resp := ts_GMM_AUTH_RESP_2G(ac_ref, g_pars.vec.sres);</span><br><span>@@ -397,7 +397,7 @@</span><br><span>                    l3_mo.msgs.gprs_mm.authenticationAndCipheringResponse.imeisv :=</span><br><span>                                              valueof(ts_MI_IMEISV_TLV(g_pars.imei & '0'H));</span><br><span>           }</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP.send(l3_mo);</span><br><span style="color: hsl(120, 100%, 40%);">+            BSSGP[0].send(l3_mo);</span><br><span>        } else {</span><br><span>             /* wait for identity procedure */</span><br><span>            f_sleep(1.0);</span><br><span>@@ -503,16 +503,16 @@</span><br><span>         * revisionLevelIndicatior is at the wrong place! */</span><br><span>         attach_req.msgs.gprs_mm.attachRequest.msNetworkCapability.msNetworkCapabilityV.solSACapability := '0'B;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     BSSGP.send(attach_req);</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(attach_req);</span><br><span>   f_gmm_auth(umts_aka_challenge, force_gsm_sres);</span><br><span>      /* Expect SGSN to perform LU with HLR */</span><br><span>     f_gmm_gsup_lu_isd();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span>           f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>         }</span><br><span>    /* FIXME: Extract P-TMSI, if any. Only send Complete if necessary */</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+      BSSGP[0].send(ts_GMM_ATTACH_COMPL);</span><br><span> }</span><br><span> </span><br><span> private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>@@ -564,16 +564,16 @@</span><br><span> private function f_TC_attach_auth_id_timeout(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>         var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ(?))) {</span><br><span>                 /* don't send ID Response */</span><br><span>             repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('09'O))) {</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('09'O))) {</span><br><span>              setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>          setverdict(fail, "Wrong Attach Reject Cause");</span><br><span>             mtc.stop;</span><br><span>            }</span><br><span>@@ -590,13 +590,13 @@</span><br><span> private function f_TC_attach_auth_sai_timeout(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>   var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   alt {</span><br><span>        [] as_mm_identity();</span><br><span>         [] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); { }</span><br><span>   }</span><br><span>    /* don't send SAI-response from HLR */</span><br><span style="color: hsl(0, 100%, 40%);">-      BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));</span><br><span>      setverdict(pass);</span><br><span> }</span><br><span> testcase TC_attach_auth_sai_timeout() runs on test_CT {</span><br><span>@@ -610,14 +610,14 @@</span><br><span> private function f_TC_attach_auth_sai_reject(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>    var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   alt {</span><br><span>        [] as_mm_identity();</span><br><span>         [] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); {</span><br><span>             GSUP.send(ts_GSUP_SAI_ERR(g_pars.imsi, 23));</span><br><span>                 }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));</span><br><span>      setverdict(pass);</span><br><span> }</span><br><span> testcase TC_attach_auth_sai_reject() runs on test_CT {</span><br><span>@@ -632,16 +632,16 @@</span><br><span>     var BssgpDecoded bd;</span><br><span>         var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   f_gmm_auth();</span><br><span>        /* Expect MSC to perform LU with HLR */</span><br><span>      GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi));</span><br><span>   /* Never follow-up with ISD_REQ or UL_RES */</span><br><span>         alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>          setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span>                f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>                 setverdict(fail);</span><br><span>            mtc.stop;</span><br><span>@@ -661,17 +661,17 @@</span><br><span>    var BssgpDecoded bd;</span><br><span>         var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   f_gmm_auth();</span><br><span>        /* Expect MSC to perform LU with HLR */</span><br><span>      GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)) {</span><br><span>          GSUP.send(ts_GSUP_UL_ERR(g_pars.imsi, 0));</span><br><span>   }</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>          setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span>                f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>                 setverdict(fail);</span><br><span>            mtc.stop;</span><br><span>@@ -692,15 +692,15 @@</span><br><span>    var BssgpDecoded bd;</span><br><span>         var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, true, false, omit, omit));</span><br><span>    f_gmm_auth();</span><br><span>        /* Expect MSC to perform LU with HLR */</span><br><span>      f_gmm_gsup_lu_isd();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span>           f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSGP.send(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+      BSSGP[0].send(ts_GMM_ATTACH_COMPL);</span><br><span>  setverdict(pass);</span><br><span> }</span><br><span> testcase TC_attach_combined() runs on test_CT {</span><br><span>@@ -718,12 +718,12 @@</span><br><span> </span><br><span>        g_pars.net.expect_auth := false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   f_gmm_auth();</span><br><span style="color: hsl(0, 100%, 40%);">-   BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span>           f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       BSSGP.send(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+      BSSGP[0].send(ts_GMM_ATTACH_COMPL);</span><br><span>  setverdict(pass);</span><br><span> }</span><br><span> testcase TC_attach_accept_all() runs on test_CT {</span><br><span>@@ -745,16 +745,16 @@</span><br><span> </span><br><span>      g_pars.net.expect_auth := false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   alt {</span><br><span>        [] as_mm_identity();</span><br><span style="color: hsl(0, 100%, 40%);">-    [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('07'O))) {</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('07'O))) {</span><br><span>              setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>          setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {</span><br><span style="color: hsl(120, 100%, 40%);">+        [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {</span><br><span>            setverdict(fail);</span><br><span>            mtc.stop;</span><br><span>            }</span><br><span>@@ -777,13 +777,13 @@</span><br><span> private function f_TC_rau_unknown(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>       var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, old_ra, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSGP[0].send(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, old_ra, false, omit, omit));</span><br><span>      alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT('0a'O))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT('0a'O))) {</span><br><span>                 setverdict(pass);</span><br><span>            }</span><br><span>    /* FIXME: Expect XID RESET? */</span><br><span style="color: hsl(0, 100%, 40%);">-  [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive { repeat; }</span><br><span>      }</span><br><span> }</span><br><span> testcase TC_rau_unknown() runs on test_CT {</span><br><span>@@ -801,18 +801,18 @@</span><br><span>        f_TC_attach(id);</span><br><span> </span><br><span>         /* then send RAU */</span><br><span style="color: hsl(0, 100%, 40%);">-     BSSGP.send(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit));</span><br><span>   alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_RAU_ACCEPT)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_RAU_ACCEPT)) -> value bd {</span><br><span>                 f_process_rau_accept(bd.l3_mt.msgs.gprs_mm.routingAreaUpdateAccept);</span><br><span style="color: hsl(0, 100%, 40%);">-            BSSGP.send(ts_GMM_RAU_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+         BSSGP[0].send(ts_GMM_RAU_COMPL);</span><br><span>             setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT)) {</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT)) {</span><br><span>                setverdict(fail, "Unexpected RAU Reject");</span><br><span>                 mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive { repeat; }</span><br><span>      }</span><br><span> }</span><br><span> testcase TC_attach_rau() runs on test_CT {</span><br><span>@@ -827,7 +827,7 @@</span><br><span> function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge) runs on BSSGP_ConnHdlr {</span><br><span>       var BssgpDecoded bd;</span><br><span>         timer T := 5.0;</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP.send(ts_GMM_DET_REQ_MO(detach_type, power_off));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_GMM_DET_REQ_MO(detach_type, power_off));</span><br><span>    if (expect_purge) {</span><br><span>          GSUP.receive(tr_GSUP_PURGE_MS_REQ(g_pars.imsi, OSMO_GSUP_CN_DOMAIN_PS));</span><br><span>             GSUP.send(ts_GSUP_PURGE_MS_RES(g_pars.imsi));</span><br><span>@@ -838,7 +838,7 @@</span><br><span>          setverdict(fail, "Unexpected GSUP PURGE MS for unregistered TLLI");</span><br><span>                mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [power_off] BSSGP.receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+ [power_off] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {</span><br><span>             g_pars.ra := omit;</span><br><span>           setverdict(fail, "Unexpected ATTACH ACCEPT in no-power-off DETACH");</span><br><span>               mtc.stop;</span><br><span>@@ -847,12 +847,12 @@</span><br><span>    [power_off] T.timeout {</span><br><span>              setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [not power_off] BSSGP.receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+     [not power_off] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {</span><br><span>                 g_pars.ra := omit;</span><br><span>           setverdict(pass);</span><br><span>            /* TODO: check if any PDP contexts are deactivated on network side? */</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive { repeat; }</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span>@@ -954,7 +954,7 @@</span><br><span>             recovery := ts_Recovery(apars.ggsn_restart_ctr);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   BSSGP.send(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span>                                apars.apn, apars.pco));</span><br><span>         GTP.receive(tr_GTPC_MsgType(?, createPDPContextRequest, ?)) -> value g_ud {</span><br><span>               f_process_gtp_ctx_act_req(apars, g_ud.gtpc);</span><br><span>@@ -967,18 +967,18 @@</span><br><span>                                                 omit, recovery));</span><br><span>    }</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [exp_rej] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) {</span><br><span>                 setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [exp_rej] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {</span><br><span style="color: hsl(120, 100%, 40%);">+  [exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {</span><br><span>              setverdict(fail, "Unexpected PDP CTX ACT ACC");</span><br><span>            mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [not exp_rej] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+   [not exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {</span><br><span>               setverdict(fail, "Unexpected PDP CTX ACT FAIL");</span><br><span>           mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [not exp_rej] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [not exp_rej] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) {</span><br><span>           setverdict(pass);</span><br><span>            }</span><br><span>    [] as_xid(apars);</span><br><span>@@ -989,14 +989,14 @@</span><br><span>    var boolean exp_rej := ispresent(apars.exp_rej_cause);</span><br><span>       var Gtp1cUnitdata g_ud;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     BSSGP.send(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+    BSSGP[0].send(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit));</span><br><span>        GTP.receive(tr_GTPC_MsgType(?, deletePDPContextRequest, apars.ggsn_tei_c)) -> value g_ud {</span><br><span>                var integer seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber);</span><br><span style="color: hsl(0, 100%, 40%);">-               BSSGP.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+          BSSGP[0].clear;</span><br><span>              GTP.send(ts_GTPC_DeletePdpResp(g_ud.peer, seq_nr, apars.sgsn_tei_c, '7F'O));</span><br><span>         }</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {</span><br><span>             setverdict(pass);</span><br><span>            }</span><br><span>    [] as_xid(apars);</span><br><span>@@ -1008,7 +1008,7 @@</span><br><span>    var integer seq_nr := 23;</span><br><span>    var GtpPeer peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  BSSGP.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSGP[0].clear;</span><br><span>      if (error_ind) {</span><br><span>             GTP.send(ts_GTPU_ErrorIndication(peer, 0 /* seq */, apars.ggsn_tei_u, apars.ggsn_ip_u));</span><br><span>     } else {</span><br><span>@@ -1019,8 +1019,8 @@</span><br><span>     T.start;</span><br><span> </span><br><span>         alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {</span><br><span style="color: hsl(0, 100%, 40%);">-             BSSGP.send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                BSSGP[0].send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span>                 }</span><br><span>    [not error_ind] GTP.receive(tr_GTPC_MsgType(?, deletePDPContextResponse, apars.ggsn_tei_c)) {</span><br><span>                repeat;</span><br><span>@@ -1124,7 +1124,7 @@</span><br><span> }</span><br><span> </span><br><span> private altstep as_xid(PdpActPars apars) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_LLC(tr_LLC_XID(?, apars.sapi))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_LLC(tr_LLC_XID(?, apars.sapi))) {</span><br><span>          repeat;</span><br><span>      }</span><br><span> }</span><br><span>@@ -1169,7 +1169,7 @@</span><br><span>       /* Expect PDU via BSSGP/LLC on simulated PCU from SGSN */</span><br><span>    alt {</span><br><span>        [] as_xid(apars);</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));</span><br><span style="color: hsl(120, 100%, 40%);">+    [] BSSGP[0].receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span>@@ -1178,7 +1178,7 @@</span><br><span>   /* Send PDU via SNDCP/LLC/BSSGP/NS via simulated MS/PCU to the SGSN */</span><br><span>       var GtpPeer peer := valueof(ts_GtpPeerU(apars.sgsn_ip_u));</span><br><span>   var PDU_SN sndcp := valueof(ts_SN_UD(apars.nsapi, payload));</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_LLC_UI(enc_PDU_SN(sndcp), apars.sapi, '0'B, 0));</span><br><span>    /* Expect PDU via GTP from SGSN on simulated GGSN */</span><br><span>         alt {</span><br><span>        [] GTP.receive(tr_GTPU_GPDU(peer, apars.ggsn_tei_u, payload));</span><br><span>@@ -1203,22 +1203,22 @@</span><br><span> /* PDP Context activation for not-attached subscriber; expect fail */</span><br><span> private function f_TC_pdp_act_unattached(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>        var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip));</span><br><span style="color: hsl(0, 100%, 40%);">-      BSSGP.send(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span>                                apars.apn, apars.pco));</span><br><span>         alt {</span><br><span>        /* We might want toalso actually expect a PDPC CTX ACT REJ? */</span><br><span style="color: hsl(0, 100%, 40%);">-  [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(?, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+      [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(?, ?))) {</span><br><span>          setverdict(pass);</span><br><span>            }</span><br><span>    [] GTP.receive(tr_GTPC_MsgType(?, createPDPContextRequest, ?)) {</span><br><span>             setverdict(fail, "Unexpected GTP PDP CTX ACT");</span><br><span>            mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(?, ?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+   [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(?, ?))) {</span><br><span>               setverdict(fail, "Unexpected SM PDP CTX ACT ACK");</span><br><span>                 mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+  [] BSSGP[0].receive { repeat; }</span><br><span>      }</span><br><span> }</span><br><span> testcase TC_pdp_act_unattached() runs on test_CT {</span><br><span>@@ -1350,8 +1350,8 @@</span><br><span>         }</span><br><span>    var OCT1 cause_network_failure := int2oct(38, 1)</span><br><span>     alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP.receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true))) {</span><br><span style="color: hsl(0, 100%, 40%);">-         BSSGP.send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true))) {</span><br><span style="color: hsl(120, 100%, 40%);">+            BSSGP[0].send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span>                 setverdict(pass);</span><br><span>            }</span><br><span>    [] as_xid(apars);</span><br><span>@@ -1419,20 +1419,20 @@</span><br><span>  /* then activate PDP context */</span><br><span>      f_pdp_ctx_act(apars);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       BSSGP.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSGP[0].clear;</span><br><span>      peer := valueof(ts_GtpPeerC(apars.sgsn_ip_c));</span><br><span>       GTP.send(ts_GTPC_DeletePDP(peer, seq_nr, apars.sgsn_tei_c, apars.nsapi, '1'B));</span><br><span> </span><br><span>  for (i := 0; i < 5; i := i+1) {</span><br><span>           alt {</span><br><span style="color: hsl(0, 100%, 40%);">-                   [] BSSGP.receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {}</span><br><span style="color: hsl(120, 100%, 40%);">+                  [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {}</span><br><span>                      [] as_xid(apars);</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>        GTP.receive(tr_GTPC_MsgType(?, deletePDPContextResponse, apars.ggsn_tei_c)) {}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      BSSGP.send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[0].send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span>         setverdict(pass);</span><br><span> }</span><br><span> testcase TC_attach_pdp_act_deact_mt_t3395_expire() runs on test_CT {</span><br><span>@@ -1455,7 +1455,7 @@</span><br><span>       timer T := 5.0;</span><br><span>      T.start;</span><br><span>     alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(*, *, *))) {</span><br><span style="color: hsl(120, 100%, 40%);">+           [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(*, *, *))) {</span><br><span>                       T.stop;</span><br><span>                      setverdict(fail, "Unexpected GMM Detach Request");</span><br><span>                         mtc.stop;</span><br><span>@@ -1464,7 +1464,7 @@</span><br><span>                    setverdict(pass);</span><br><span>                    mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+            [] BSSGP[0].receive {</span><br><span>                        repeat;</span><br><span>              }</span><br><span>    }</span><br><span>@@ -1514,8 +1514,8 @@</span><br><span>    GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));</span><br><span> </span><br><span>  /* MS: receive a Detach Request */</span><br><span style="color: hsl(0, 100%, 40%);">-      BSSGP.receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(c_GMM_DTT_MT_IMSI_DETACH, ?, ?)));</span><br><span style="color: hsl(0, 100%, 40%);">-  BSSGP.send(ts_GMM_DET_ACCEPT_MO);</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(c_GMM_DTT_MT_IMSI_DETACH, ?, ?)));</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[0].send(ts_GMM_DET_ACCEPT_MO);</span><br><span> </span><br><span>     setverdict(pass);</span><br><span> }</span><br><span>@@ -1606,18 +1606,18 @@</span><br><span>     var integer count_req := 0;</span><br><span>  var MobileL3_CommonIE_Types.MobileIdentityLV mi;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span> </span><br><span>        alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>                  /* break */</span><br><span>          }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span>                    mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));</span><br><span style="color: hsl(0, 100%, 40%);">-                      BSSGP.send(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                       BSSGP[0].send(ts_GMM_ID_RESP(mi));</span><br><span>                   repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span>                    /* ignore ID REQ IMEI */</span><br><span>                     count_req := count_req + 1;</span><br><span>                  repeat;</span><br><span>@@ -1654,20 +1654,20 @@</span><br><span>    /* set p_tmsi to use it in Attach Req via f_mi_get_lv() */</span><br><span>   g_pars.p_tmsi := 'c0000035'O;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span> </span><br><span>        alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>                  /* break */</span><br><span>          }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span>                    /* ignore ID REQ IMSI */</span><br><span>                     count_req := count_req + 1;</span><br><span>                  repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span>                    mi := valueof(ts_MI_IMEI_LV(g_pars.imei));</span><br><span style="color: hsl(0, 100%, 40%);">-                      BSSGP.send(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                       BSSGP[0].send(ts_GMM_ID_RESP(mi));</span><br><span>                   repeat;</span><br><span>              }</span><br><span>    }</span><br><span>@@ -1728,16 +1728,16 @@</span><br><span>  /* there is no auth */</span><br><span>       g_pars.net.expect_auth := false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>   f_gmm_auth();</span><br><span>        alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>                  setverdict(fail, "Received unexpected GMM Attach REJECT");</span><br><span>                         mtc.stop;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+         [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) -> value bd {</span><br><span>                     f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span style="color: hsl(0, 100%, 40%);">-                    BSSGP.send(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+                      BSSGP[0].send(ts_GMM_ATTACH_COMPL);</span><br><span>                  setverdict(pass);</span><br><span>            }</span><br><span>    }</span><br><span>@@ -1774,14 +1774,14 @@</span><br><span> private function f_TC_attach_check_complete_resend(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>    var integer count_req := 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP.send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSGP[0].send(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span>    f_gmm_auth();</span><br><span> </span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {</span><br><span>                  /* break */</span><br><span>          }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] BSSGP.receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {</span><br><span>                    /* ignore */</span><br><span>                         count_req := count_req + 1;</span><br><span>                  repeat;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10377">change 10377</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/10377"/><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: Ibd7abba826a08b582361e9c255e9c44185e14067 </div>
<div style="display:none"> Gerrit-Change-Number: 10377 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>