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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Add LAPDm test for SABM with wrong C/R bit<br><br>Test that the BTS will take no action when it receives an SABM frame<br>with the C bit set wrong (R); Inspired by TS 51.010-1 25.2.5.2<br><br>Implemented as TC_sabm_incorrect_c().<br><br>Related: OS#4032<br>Change-Id: I4fbe7e708c9b1a2c04e5d24a205b5b5af20ff8c7<br>---<br>M bts/BTS_Tests_LAPDm.ttcn<br>1 file changed, 50 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests_LAPDm.ttcn b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>index 12f24eb..edbd37b 100644</span><br><span>--- a/bts/BTS_Tests_LAPDm.ttcn</span><br><span>+++ b/bts/BTS_Tests_LAPDm.ttcn</span><br><span>@@ -1052,6 +1052,55 @@</span><br><span>         var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));</span><br><span>   f_testmatrix_each_chan(pars, refers(f_TC_incorrect_cr));</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* test that the BTS will take no action when it receives an SABM frame with the C bit set wrong (R)</span><br><span style="color: hsl(120, 100%, 40%);">+   Inspired by TS 51.010-1 25.2.5.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_sabm_incorrect_c(charstring id) runs on ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+       var RslLinkId link_id := valueof(ts_RslLinkID_DCCH(0));</span><br><span style="color: hsl(120, 100%, 40%);">+       var integer sapi := link_id.sapi;</span><br><span style="color: hsl(120, 100%, 40%);">+     var boolean is_sacch := false;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (link_id.c == SACCH) {</span><br><span style="color: hsl(120, 100%, 40%);">+             is_sacch := true;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     timer T := 3.0;</span><br><span style="color: hsl(120, 100%, 40%);">+       var default d;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      fp_common_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* some common altstep for meas res and other background noise */</span><br><span style="color: hsl(120, 100%, 40%);">+     d := activate(as_ignore_background(true));</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+    LAPDM.clear;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_establish_mo(link_id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Send I-frame SAPI = 0, C = 1, P = 0, M = 0, L = 3, N(S) = 0, N(R) = 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+   var octetstring l3_mo := '010203'O;</span><br><span style="color: hsl(120, 100%, 40%);">+   LAPDM.send(t_PH_DATA(0, is_sacch, ts_LAPDm_I(sapi, c_r:=cr_MO_CMD, p:=false, nr:=0, ns:=0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                 l3:=l3_mo)));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Expect RR SAPI = 0, R = 1, F = 0, M = 0, L = 0, N(R) = 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+        LAPDM.receive(t_PH_DATA(0, is_sacch, tr_LAPDm_RR(sapi, c_r:=cr_MT_RSP, p:=false, nr:=1)));</span><br><span style="color: hsl(120, 100%, 40%);">+    RSL.receive(tr_RSL_DATA_IND(g_chan_nr, link_id, l3_mo));</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Send SABM SAPI = 0, C = 0, P = 1, M = 0, L = 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+  LAPDM.send(t_PH_DATA(0, is_sacch, ts_LAPDm_SABM(sapi, c_r:=cr_MO_RSP, p:=true, l3:=''O)));</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Expect RSL ERR IND */</span><br><span style="color: hsl(120, 100%, 40%);">+      RSL.receive(tr_RSL_ERROR_IND(g_chan_nr, link_id, '0C'O));</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Expect fill frame C = 0, P = 0, M = 0, L = 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    LAPDM.receive(t_PH_DATA(0, is_sacch, tr_LAPDm_UI(0, ?, ''O)));</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Send RR command (P=1) SAPI = 0, C = 1, P = 1, M = 0, L = 0, N(R) = 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+    LAPDM.send(t_PH_DATA(0, is_sacch, ts_LAPDm_RR(sapi, c_r:=cr_MO_CMD, p:=true, nr:=0)));</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Expect RR response (F=1) SAPI = 0, R = 1, F = 1, M = 0, L = 0, N(R) = 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ LAPDM.receive(t_PH_DATA(0, is_sacch, tr_LAPDm_RR(sapi, c_r:=cr_MT_RSP, p:=true, nr:=1)));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   deactivate(d);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      fp_common_fini();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_sabm_incorrect_c() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        var ConnHdlrPars pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode_SIGN));</span><br><span style="color: hsl(120, 100%, 40%);">+    f_testmatrix_each_chan(pars, refers(f_TC_sabm_incorrect_c));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span>       execute(TC_foo());</span><br><span>   execute(TC_sabm_ua_dcch_sapi0());</span><br><span>@@ -1071,6 +1120,7 @@</span><br><span>    execute(TC_t200_n200());</span><br><span>     execute(TC_rr_response_frame_loss());</span><br><span>        execute(TC_incorrect_cr());</span><br><span style="color: hsl(120, 100%, 40%);">+   execute(TC_sabm_incorrect_c());</span><br><span> }</span><br><span> </span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/14378">change 14378</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/+/14378"/><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: I4fbe7e708c9b1a2c04e5d24a205b5b5af20ff8c7 </div>
<div style="display:none"> Gerrit-Change-Number: 14378 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-MessageType: merged </div>