<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13760">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;">sgsn: Add TC_llc_null to test if SGSN survives a LLC NULL packet<br><br>This test case reproduces a bug in OsmoSGSN where it would crash<br>as a result to sending LLC NULL frames.<br><br>Change-Id: I38326f2ebaaff009d4357edad9511ce2ce7736fd<br>Related: OS#3952<br>---<br>M sgsn/SGSN_Tests.ttcn<br>1 file changed, 25 insertions(+), 2 deletions(-)<br><br></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 74cdece..78bee58 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -375,12 +375,16 @@</span><br><span>         f_sleep(20.0);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_send_llc(template (value) PDU_LLC llc_pdu, integer gb_index := 0) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        var octetstring llc_enc := enc_PDU_LLC(valueof(llc_pdu));</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP[gb_index].send(ts_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[gb_index], llc_enc));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> function f_send_l3_gmm_llc(template 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 style="color: hsl(0, 100%, 40%);">-        var octetstring llc_enc := enc_PDU_LLC(valueof(ts_LLC_UI(l3_enc, sapi, '0'B, n_u)));</span><br><span style="color: hsl(0, 100%, 40%);">-    BSSGP[gb_index].send(ts_BSSGP_UL_UD(g_pars.tlli, g_pars.bssgp_cell_id[gb_index], llc_enc));</span><br><span style="color: hsl(120, 100%, 40%);">+   f_send_llc(ts_LLC_UI(l3_enc, sapi, '0'B, n_u));</span><br><span> }</span><br><span> </span><br><span> altstep as_mm_identity() runs on BSSGP_ConnHdlr {</span><br><span>@@ -2153,6 +2157,23 @@</span><br><span>       vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Send LLC NULL to see if the SGSN survives it (OS#3952) */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_llc_null(charstring id) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_gmm_attach(false, false);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_send_llc(ts_LLC_NULL('0'B, c_LLC_SAPI_LLGMM, LLC_CR_UL_CMD));</span><br><span style="color: hsl(120, 100%, 40%);">+       /* try to detach to check if SGSN is still alive */</span><br><span style="color: hsl(120, 100%, 40%);">+   f_detach_mo(c_GMM_DTT_MO_GPRS, true, true);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_llc_null() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BSSGP_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ vc_conn := f_start_handler(refers(f_TC_llc_null), testcasename(), g_gb, 41);</span><br><span style="color: hsl(120, 100%, 40%);">+  vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> control {</span><br><span>      execute( TC_attach() );</span><br><span>      execute( TC_attach_mnc3() );</span><br><span>@@ -2197,6 +2218,8 @@</span><br><span>         execute( TC_attach_pdp_act_deact_mt_t3395_expire() );</span><br><span>        execute( TC_attach_pdp_act_user_error_ind_ggsn() );</span><br><span>  execute( TC_attach_gmm_attach_req_while_gmm_attach() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     execute( TC_llc_null() );</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/13760">change 13760</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/13760"/><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: I38326f2ebaaff009d4357edad9511ce2ce7736fd </div>
<div style="display:none"> Gerrit-Change-Number: 13760 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </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 (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Keith Whyte <keith@rhizomatica.org> </div>