<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13858">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">SGSN_Tests: Make f_gmm_attach() and f_gmm_auth() work on gb_idx != 0<br><br>Let's make sure the related functions can be used on other gb_idx,<br>i.e. via another Gb interface (and hence simulated RAN/PCU) than<br>the first one.<br><br>Change-Id: Ie88cbf0c70269cc3e2c2fd2a0c65c8f2130ec2b1<br>---<br>M sgsn/SGSN_Tests.ttcn<br>1 file changed, 32 insertions(+), 19 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/58/13858/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 c096905..a4934ae 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -454,28 +454,41 @@</span><br><span>     f_send_llc(ts_LLC_UI(l3_enc, sapi, '0'B, n_u));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-altstep as_mm_identity() runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+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[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[gb_idx].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%);">-              f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span>               repeat;</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [] BSSGP[gb_idx].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%);">-              f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));</span><br><span style="color: hsl(120, 100%, 40%);">+                f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);</span><br><span>               repeat;</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* receive a L3 (GMM/SM) message over whatever is the appropriate lower-layer bearer */</span><br><span style="color: hsl(120, 100%, 40%);">+function f_receive_l3(template PDU_L3_SGSN_MS rx_tpl := ?, integer gb_idx := 0)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on BSSGP_ConnHdlr return PDU_L3_SGSN_MS {</span><br><span style="color: hsl(120, 100%, 40%);">+  var BssgpDecoded bd;</span><br><span style="color: hsl(120, 100%, 40%);">+  var PDU_DTAP_PS_MT mt;</span><br><span style="color: hsl(120, 100%, 40%);">+        var PDU_L3_SGSN_MS l3_mt;</span><br><span style="color: hsl(120, 100%, 40%);">+     alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSGP[gb_idx].receive(tr_BD_L3_MT(rx_tpl)) -> value bd {</span><br><span style="color: hsl(120, 100%, 40%);">+                l3_mt := bd.l3_mt;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return l3_mt;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* perform GMM authentication (if expected).</span><br><span>  * Note, for umts_aka_challenge to work, the revisionLevelIndicatior needs to</span><br><span>  * be 1 to mark R99 capability, in the GMM Attach Request, see f_gmm_attach(). */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_gmm_auth (boolean umts_aka_challenge := false, boolean force_gsm_sres := false) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-     var BssgpDecoded bd;</span><br><span style="color: hsl(120, 100%, 40%);">+function f_gmm_auth (boolean umts_aka_challenge := false, boolean force_gsm_sres := false, integer gb_idx := 0) runs on BSSGP_ConnHdlr {</span><br><span>       var PDU_L3_MS_SGSN l3_mo;</span><br><span>    var PDU_L3_SGSN_MS l3_mt;</span><br><span style="color: hsl(0, 100%, 40%);">-       var default di := activate(as_mm_identity());</span><br><span style="color: hsl(120, 100%, 40%);">+ var default di := activate(as_mm_identity(gb_idx));</span><br><span>  if (g_pars.net.expect_auth) {</span><br><span>                var GSUP_IE auth_tuple;</span><br><span>              var template AuthenticationParameterAUTNTLV autn;</span><br><span>@@ -504,13 +517,13 @@</span><br><span>                                                                 g_pars.vec.kc));</span><br><span>                        log("GSUP sends only 2G auth tuple", auth_tuple);</span><br><span>          }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>          GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi));</span><br><span>          GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));</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[0].receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd;</span><br><span style="color: hsl(0, 100%, 40%);">-            l3_mt := bd.l3_mt;</span><br><span style="color: hsl(120, 100%, 40%);">+            l3_mt := f_receive_l3(auth_ciph_req, gb_idx);</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> </span><br><span>@@ -532,7 +545,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_gmm_llc(l3_mo, gb_idx);</span><br><span>    } else {</span><br><span>             /* wait for identity procedure */</span><br><span>            f_sleep(1.0);</span><br><span>@@ -626,10 +639,10 @@</span><br><span>        GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_gmm_attach(boolean umts_aka_challenge, boolean force_gsm_sres) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(0, 100%, 40%);">-      var BssgpDecoded bd;</span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_gmm_attach(boolean umts_aka_challenge, boolean force_gsm_sres, integer gb_idx := 0) runs on BSSGP_ConnHdlr {</span><br><span>         var RoutingAreaIdentificationV old_ra := f_random_RAI();</span><br><span>     var template PDU_L3_MS_SGSN attach_req := ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit);</span><br><span style="color: hsl(120, 100%, 40%);">+ var PDU_L3_SGSN_MS l3_mt;</span><br><span> </span><br><span>        /* indicate R99 capability of the MS to enable UMTS AKA in presence of</span><br><span>        * 3G auth vectors */</span><br><span>@@ -638,16 +651,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%);">-     f_send_l3_gmm_llc(attach_req);</span><br><span style="color: hsl(0, 100%, 40%);">-  f_gmm_auth(umts_aka_challenge, force_gsm_sres);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3_gmm_llc(attach_req, gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+        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> </span><br><span style="color: hsl(0, 100%, 40%);">-        BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {</span><br><span style="color: hsl(0, 100%, 40%);">-              f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(120, 100%, 40%);">+     l3_mt := f_receive_l3(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?), gb_idx);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);</span><br><span style="color: hsl(120, 100%, 40%);">+</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);</span><br><span style="color: hsl(120, 100%, 40%);">+       f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL, gb_idx);</span><br><span> }</span><br><span> </span><br><span> private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13858">change 13858</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/13858"/><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: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie88cbf0c70269cc3e2c2fd2a0c65c8f2130ec2b1 </div>
<div style="display:none"> Gerrit-Change-Number: 13858 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>