<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15171">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">SGSN: introduce f_send_l3() to allow one function for Gb & Iu<br><br>f_send_l3() replaces f_send_l3_gmm_llc() to have one function<br>which sends L3 messages for Iu and Gb at the same time.<br>This allows to share most of the tests between Iu & Gb.<br><br>Change-Id: If47ad2be459ca7b87d9071d9ff020a51821e4433<br>---<br>M sgsn/SGSN_Tests.ttcn<br>1 file changed, 122 insertions(+), 48 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/71/15171/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn</span><br><span>index a7cc57f..36297c5 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -461,23 +461,79 @@</span><br><span>       BSSGP[gb_index].send(ts_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[gb_index], llc_enc));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_send_l3_gmm_llc(template PDU_L3_MS_SGSN l3_mo, integer gb_index := 0) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_send_l3_gmm_llc(template (value) PDU_L3_MS_SGSN l3_mo, integer gb_index := 0) runs on BSSGP_ConnHdlr {</span><br><span>     var octetstring l3_enc := enc_PDU_L3_MS_SGSN(valueof(l3_mo));</span><br><span>        var BIT4 sapi := f_llc_sapi_by_l3_mo(valueof(l3_mo));</span><br><span>        var integer n_u := f_llc_get_n_u_tx(llc[bit2int(sapi)]);</span><br><span>     f_send_llc(ts_LLC_UI(l3_enc, sapi, '0'B, n_u), gb_index);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* trigger sending of a RANAP InitialUE and wait for SCCP connection confirmation */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_send_l3_initial_ue(template (value) PDU_L3_MS_SGSN l3_mo) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+       log("Sending InitialUE: ", l3_mo);</span><br><span style="color: hsl(120, 100%, 40%);">+  var octetstring l3_enc := enc_PDU_L3_MS_SGSN(valueof(l3_mo));</span><br><span style="color: hsl(120, 100%, 40%);">+ var RANAP_PDU ranap;</span><br><span style="color: hsl(120, 100%, 40%);">+  var LAI lai := {</span><br><span style="color: hsl(120, 100%, 40%);">+              pLMNidentity := '62F224'O,</span><br><span style="color: hsl(120, 100%, 40%);">+            lAC := '1234'O,</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%);">+    var SAI sai := {</span><br><span style="color: hsl(120, 100%, 40%);">+              pLMNidentity := lai.pLMNidentity,</span><br><span style="color: hsl(120, 100%, 40%);">+             lAC := lai.lAC,</span><br><span style="color: hsl(120, 100%, 40%);">+               sAC := '0000'O, /* FIXME */</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%);">+    var IuSignallingConnectionIdentifier sigc_id := int2bit(23, 24); /* FIXME */</span><br><span style="color: hsl(120, 100%, 40%);">+  var GlobalRNC_ID grnc_id := {</span><br><span style="color: hsl(120, 100%, 40%);">+         pLMNidentity := lai.pLMNidentity,</span><br><span style="color: hsl(120, 100%, 40%);">+             rNC_ID := 2342 /* FIXME */</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%);">+  ranap := valueof(ts_RANAP_initialUE_CS(lai, sai, l3_enc, sigc_id, grnc_id));</span><br><span style="color: hsl(120, 100%, 40%);">+  BSSAP.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_local, ranap));</span><br><span style="color: hsl(120, 100%, 40%);">+  alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {}</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {</span><br><span style="color: hsl(120, 100%, 40%);">+              setverdict(fail, "DISC.ind from SCCP");</span><br><span style="color: hsl(120, 100%, 40%);">+             mtc.stop;</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%);">+/* send a L3 (GMM/SM) message over whatever is the appropriate lower-layer bearer */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_send_l3(template (value) PDU_L3_MS_SGSN l3_mo, integer gb_index := 0, boolean initial := false) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+     if (gb_index >= NUM_GB) {</span><br><span style="color: hsl(120, 100%, 40%);">+          if (initial) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3_initial_ue(l3_mo);</span><br><span style="color: hsl(120, 100%, 40%);">+          } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      BSSAP.send(ts_PDU_DTAP_PS_MO(l3_mo));</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+     } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_send_l3_gmm_llc(l3_mo, gb_index);</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> altstep as_mm_identity(integer gb_idx := 0) runs on BSSGP_ConnHdlr {</span><br><span>       var MobileL3_CommonIE_Types.MobileIdentityLV mi;</span><br><span style="color: hsl(0, 100%, 40%);">-        [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('001'B)) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [gb_idx < NUM_GB] BSSGP[gb_idx].receive(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%);">-              f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+                f_send_l3(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span>               repeat;</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('010'B)) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));</span><br><span style="color: hsl(120, 100%, 40%);">+            f_send_l3(ts_GMM_ID_RESP(mi), gb_idx);</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%);">+     [gb_idx < NUM_GB] BSSGP[gb_idx].receive(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%);">-              f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+                f_send_l3(ts_GMM_ID_RESP(mi), gb_idx);</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%);">+     [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               mi := valueof(ts_MI_IMEI_LV(g_pars.imei));</span><br><span style="color: hsl(120, 100%, 40%);">+            f_send_l3(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span>               repeat;</span><br><span>      }</span><br><span> }</span><br><span>@@ -485,9 +541,13 @@</span><br><span> /* receive a L3 (GMM/SM) message over whatever is the appropriate lower-layer bearer */</span><br><span> function f_receive_l3(template PDU_L3_SGSN_MS rx_tpl := ?, integer gb_idx := 0)</span><br><span> runs on BSSGP_ConnHdlr return PDU_L3_SGSN_MS {</span><br><span style="color: hsl(120, 100%, 40%);">+ var PDU_DTAP_PS_MT mt;</span><br><span>       var PDU_L3_SGSN_MS l3_mt;</span><br><span>    alt {</span><br><span style="color: hsl(0, 100%, 40%);">-   [] BSSGP[gb_idx].receive(rx_tpl) -> value l3_mt { }</span><br><span style="color: hsl(120, 100%, 40%);">+        [gb_idx < NUM_GB] BSSGP[gb_idx].receive(rx_tpl) -> value l3_mt { }</span><br><span style="color: hsl(120, 100%, 40%);">+      [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(rx_tpl)) -> value mt {</span><br><span style="color: hsl(120, 100%, 40%);">+               l3_mt := mt.dtap;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span>    return l3_mt;</span><br><span> }</span><br><span>@@ -555,7 +615,17 @@</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%);">-               f_send_l3_gmm_llc(l3_mo, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+             f_send_l3(l3_mo, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Security Mode Command + Complete on Iu case */</span><br><span style="color: hsl(120, 100%, 40%);">+             if (gb_idx >= NUM_GB) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                              key_sts := ?)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/</span><br><span style="color: hsl(120, 100%, 40%);">+                         BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen));</span><br><span style="color: hsl(120, 100%, 40%);">+                                //BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi)));</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    } else {</span><br><span>             /* wait for identity procedure */</span><br><span>            f_sleep(1.0);</span><br><span>@@ -661,7 +731,7 @@</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%);">-     f_send_l3_gmm_llc(attach_req, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(attach_req, gb_idx, initial := true);</span><br><span>      f_gmm_auth(umts_aka_challenge, force_gsm_sres, gb_idx);</span><br><span>      /* Expect SGSN to perform LU with HLR */</span><br><span>     f_gmm_gsup_lu_isd();</span><br><span>@@ -670,7 +740,12 @@</span><br><span>  f_process_attach_accept(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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3(ts_GMM_ATTACH_COMPL, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* IuPS case: Expect Iu Release */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (gb_idx >= NUM_GB) {</span><br><span style="color: hsl(120, 100%, 40%);">+            as_iu_release_compl_disc();</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span> }</span><br><span> </span><br><span> private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>@@ -722,7 +797,7 @@</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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>       alt {</span><br><span>        [] BSSGP[0].receive(tr_GMM_ID_REQ(?)) {</span><br><span>              /* don't send ID Response */</span><br><span>@@ -748,7 +823,7 @@</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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>@@ -768,7 +843,7 @@</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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>@@ -790,7 +865,7 @@</span><br><span>       var PDU_L3_SGSN_MS l3_mt;</span><br><span>    var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>@@ -819,7 +894,7 @@</span><br><span>     var PDU_L3_SGSN_MS l3_mt;</span><br><span>    var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>@@ -850,7 +925,7 @@</span><br><span>    var PDU_L3_SGSN_MS l3_mt;</span><br><span>    var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(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>@@ -858,7 +933,7 @@</span><br><span>   BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {</span><br><span>             f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3(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>@@ -876,12 +951,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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span>       f_gmm_auth();</span><br><span>        BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {</span><br><span>             f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3(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>@@ -903,7 +978,7 @@</span><br><span> </span><br><span>        g_pars.net.expect_auth := false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>         [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT('07'O)) {</span><br><span>@@ -935,7 +1010,7 @@</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%);">-    f_send_l3_gmm_llc(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%);">+   f_send_l3(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, old_ra, false, omit, omit));</span><br><span>  alt {</span><br><span>        [] BSSGP[0].receive(tr_GMM_RAU_REJECT('0a'O)) {</span><br><span>              setverdict(pass);</span><br><span>@@ -971,7 +1046,7 @@</span><br><span> function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge, integer bssgp_index := 0) runs on BSSGP_ConnHdlr {</span><br><span>       var PDU_L3_SGSN_MS l3_mt;</span><br><span>    timer T := 5.0;</span><br><span style="color: hsl(0, 100%, 40%);">- f_send_l3_gmm_llc(ts_GMM_DET_REQ_MO(detach_type, power_off), bssgp_index);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_send_l3(ts_GMM_DET_REQ_MO(detach_type, power_off), bssgp_index);</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>@@ -1107,7 +1182,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%);">-   f_send_l3_gmm_llc(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span>                                    apars.apn, apars.pco), gb_idx);</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>@@ -1147,7 +1222,7 @@</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%);">-     f_send_l3_gmm_llc(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit), gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_send_l3(ts_SM_DEACT_PDP_REQ_MO(apars.tid, cause, false, omit), gb_idx);</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>            BSSGP[gb_idx].clear;</span><br><span>@@ -1179,7 +1254,7 @@</span><br><span> </span><br><span>     alt {</span><br><span>        [] BSSGP[gb_idx].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) {</span><br><span style="color: hsl(0, 100%, 40%);">-          f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+              f_send_l3(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), gb_idx);</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>@@ -1365,7 +1440,7 @@</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%);">-      f_send_l3_gmm_llc(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr,</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>@@ -1513,7 +1588,7 @@</span><br><span>       var OCT1 cause_network_failure := int2oct(38, 1)</span><br><span>     alt {</span><br><span>        [] BSSGP[0].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+              f_send_l3(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>@@ -1594,7 +1669,7 @@</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%);">-      f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+      f_send_l3(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>@@ -1794,7 +1869,7 @@</span><br><span> </span><br><span>   /* MS: receive a Detach Request */</span><br><span>   BSSGP[0].receive(tr_GMM_DET_REQ_MT(c_GMM_DTT_MT_IMSI_DETACH, ?, ?));</span><br><span style="color: hsl(0, 100%, 40%);">-    f_send_l3_gmm_llc(ts_GMM_DET_ACCEPT_MO);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_send_l3(ts_GMM_DET_ACCEPT_MO);</span><br><span> </span><br><span>         setverdict(pass);</span><br><span> }</span><br><span>@@ -1885,7 +1960,7 @@</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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(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>                [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {</span><br><span>@@ -1893,7 +1968,7 @@</span><br><span>               }</span><br><span>            [] BSSGP[0].receive(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%);">-                      f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3(ts_GMM_ID_RESP(mi));</span><br><span>                       repeat;</span><br><span>              }</span><br><span>            [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {</span><br><span>@@ -1933,7 +2008,7 @@</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%);">-       f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(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>                [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {</span><br><span>@@ -1946,7 +2021,7 @@</span><br><span>               }</span><br><span>            [] BSSGP[0].receive(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%);">-                      f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3(ts_GMM_ID_RESP(mi));</span><br><span>                       repeat;</span><br><span>              }</span><br><span>    }</span><br><span>@@ -2007,7 +2082,7 @@</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%);">-    f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(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>                [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {</span><br><span>@@ -2016,7 +2091,7 @@</span><br><span>               }</span><br><span>            [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT(*, *, *)) -> value l3_mt {</span><br><span>                       f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span style="color: hsl(0, 100%, 40%);">-                       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_send_l3(ts_GMM_ATTACH_COMPL);</span><br><span>                      setverdict(pass);</span><br><span>            }</span><br><span>    }</span><br><span>@@ -2060,7 +2135,7 @@</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%);">- f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(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>    timer T := 10.0;</span><br><span>@@ -2100,11 +2175,11 @@</span><br><span>   var PDU_L3_SGSN_MS l3_mt;</span><br><span> </span><br><span>        /* then send RAU */</span><br><span style="color: hsl(0, 100%, 40%);">-     f_send_l3_gmm_llc(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit), bssgp);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit), bssgp);</span><br><span>        alt {</span><br><span>        [] BSSGP[bssgp].receive(tr_GMM_RAU_ACCEPT) -> value l3_mt {</span><br><span>               f_process_rau_accept(l3_mt.msgs.gprs_mm.routingAreaUpdateAccept, bssgp);</span><br><span style="color: hsl(0, 100%, 40%);">-                f_send_l3_gmm_llc(ts_GMM_RAU_COMPL, bssgp);</span><br><span style="color: hsl(120, 100%, 40%);">+           f_send_l3(ts_GMM_RAU_COMPL, bssgp);</span><br><span>          setverdict(pass);</span><br><span>            }</span><br><span>    [] BSSGP[bssgp].receive(tr_GMM_RAU_REJECT) {</span><br><span>@@ -2180,7 +2255,7 @@</span><br><span>         var RoutingAreaIdentificationV rand_rai := f_random_RAI();</span><br><span>   var PDU_L3_SGSN_MS l3_mt;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), rand_rai, true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3(ts_GMM_ATTACH_REQ(f_mi_get_lv(), rand_rai, true, false, omit, omit));</span><br><span> </span><br><span>  alt {</span><br><span>                [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {</span><br><span>@@ -2189,16 +2264,16 @@</span><br><span>             }</span><br><span>            [] BSSGP[0].receive(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%);">-                      f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3(ts_GMM_ID_RESP(mi));</span><br><span>                       repeat;</span><br><span>              }</span><br><span>            [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {</span><br><span>                         /* send out a second GMM_Attach Request.</span><br><span>                      * If the SGSN follows the rules, this 2nd ATTACH REQ should be ignored, because</span><br><span>                      * of the same content */</span><br><span style="color: hsl(0, 100%, 40%);">-                       f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), rand_rai, true, false, omit, omit));</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_send_l3(ts_GMM_ATTACH_REQ(f_mi_get_lv(), rand_rai, true, false, omit, omit));</span><br><span>                      mi := valueof(ts_MI_IMEI_LV(g_pars.imei));</span><br><span style="color: hsl(0, 100%, 40%);">-                      f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3(ts_GMM_ID_RESP(mi));</span><br><span>               }</span><br><span>    }</span><br><span>    f_sleep(1.0);</span><br><span>@@ -2207,7 +2282,7 @@</span><br><span>        alt {</span><br><span>                [] BSSGP[0].receive(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%);">-                      f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                        f_send_l3(ts_GMM_ID_RESP(mi));</span><br><span>                       repeat;</span><br><span>              }</span><br><span>            [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {</span><br><span>@@ -2220,7 +2295,7 @@</span><br><span>                 }</span><br><span>            [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {</span><br><span>                  f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span style="color: hsl(0, 100%, 40%);">-                       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_send_l3(ts_GMM_ATTACH_COMPL);</span><br><span>                      setverdict(pass);</span><br><span>                    /* FIXME: Extract P-TMSI, if any. Only send Complete if necessary */</span><br><span>                 }</span><br><span>@@ -2258,7 +2333,7 @@</span><br><span>    /* The thing is, if the solSACapability is 'omit', then the</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 style="color: hsl(0, 100%, 40%);">- f_send_l3_gmm_llc(attach_req);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_send_l3(attach_req);</span><br><span> </span><br><span>   /* do the auth */</span><br><span>    var PDU_L3_MS_SGSN l3_mo;</span><br><span>@@ -2290,7 +2365,7 @@</span><br><span>    BSSGP[0].receive(auth_ciph_req) -> value l3_mt;</span><br><span> </span><br><span>       /* send the gmm auth failure with resync IE */</span><br><span style="color: hsl(0, 100%, 40%);">-  f_send_l3_gmm_llc(ts_GMM_AUTH_FAIL_UMTS_AKA_RESYNC(g_pars.vec.auts));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_l3(ts_GMM_AUTH_FAIL_UMTS_AKA_RESYNC(g_pars.vec.auts));</span><br><span> </span><br><span>    /* wait for the GSUP resync request */</span><br><span>       GSUP.receive(tr_GSUP_SAI_REQ_UMTS_AKA_RESYNC(</span><br><span>@@ -2337,7 +2412,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%);">-       f_send_l3_gmm_llc(l3_mo);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_send_l3(l3_mo);</span><br><span>    deactivate(di);</span><br><span> </span><br><span>  /* Expect SGSN to perform LU with HLR */</span><br><span>@@ -2346,7 +2421,7 @@</span><br><span>     BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {</span><br><span>             f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3(ts_GMM_ATTACH_COMPL);</span><br><span>      setverdict(pass);</span><br><span> }</span><br><span> </span><br><span>@@ -2506,7 +2581,6 @@</span><br><span>   vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> control {</span><br><span>  execute( TC_attach() );</span><br><span>      execute( TC_attach_mnc3() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15171">change 15171</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/+/15171"/><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: If47ad2be459ca7b87d9071d9ff020a51821e4433 </div>
<div style="display:none"> Gerrit-Change-Number: 15171 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>