<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25168">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: add BSC_Tests_2.TC_imm_ass_pre_chan_ack<br><br>Add tests for the new early Imm Ass feature:<br>  'immediate-assignment (post-chan-ack|pre-chan-ack)'<br>as implemented in 0b44493d3de03d2750527e224df67b473fe39f93<br><br>In this patch I propose to open a new file for BSC tests, simply<br>BSC_Tests_2.ttcn. The reason is that modifying BSC_Tests.ttcn in tiny<br>ways causes many other files that import BSC_Tests to be recompiled<br>again and again for every dev cycle: for example the LCLS and CBSP test<br>suites. By placing my new test in a separate file, I reduced the waiting<br>time for titan compilation while developing the new tests. I will<br>definitely do so again for future test development, so I thought why not<br>see whether you guys also like this idea.<br><br>Alternatively I can move the new, now finished, tests into<br>BSC_Tests.ttcn, and just keep BSC_Tests_2.ttcn on my private branch.<br><br>(I previously argued that there is no problem with huge ttcn files, but<br>I see now that pespin was right to favor reducing the file size. The<br>most benefit probably comes from removed dependency builds.)<br><br>Related: SYS#5559<br>Change-Id: If71f4562d532b6c5faf55f5fd073449a8a137ebf<br>---<br>M bsc/BSC_Tests.cfg<br>M bsc/BSC_Tests.ttcn<br>A bsc/BSC_Tests_2.ttcn<br>M library/GSM_RR_Types.ttcn<br>4 files changed, 197 insertions(+), 2 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/68/25168/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.cfg b/bsc/BSC_Tests.cfg</span><br><span>index 610e0f7..b5ca989 100644</span><br><span>--- a/bsc/BSC_Tests.cfg</span><br><span>+++ b/bsc/BSC_Tests.cfg</span><br><span>@@ -16,6 +16,7 @@</span><br><span> </span><br><span> [EXECUTE]</span><br><span> BSC_Tests.control</span><br><span style="color: hsl(120, 100%, 40%);">+BSC_Tests_2.control</span><br><span> BSC_Tests_CBSP.control</span><br><span> #BSC_Tests.TC_chan_act_noreply</span><br><span> #BSC_Tests.TC_chan_act_ack_noest</span><br><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 0a11a48..f9900f7 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -21,6 +21,7 @@</span><br><span>  */</span><br><span> </span><br><span> friend module BSC_Tests_VAMOS;</span><br><span style="color: hsl(120, 100%, 40%);">+friend module BSC_Tests_2;</span><br><span> </span><br><span> import from Misc_Helpers all;</span><br><span> import from General_Types all;</span><br><span>diff --git a/bsc/BSC_Tests_2.ttcn b/bsc/BSC_Tests_2.ttcn</span><br><span>new file mode 100644</span><br><span>index 0000000..bbf869f</span><br><span>--- /dev/null</span><br><span>+++ b/bsc/BSC_Tests_2.ttcn</span><br><span>@@ -0,0 +1,192 @@</span><br><span style="color: hsl(120, 100%, 40%);">+module BSC_Tests_2 {</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSC_Tests all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from Misc_Helpers all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from General_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from GSM_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from IPL4asp_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSAP_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RAN_Adapter all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSAP_LE_Adapter all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSAP_LE_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSAP_LE_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSLAP_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSAP_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSMAP_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from IPA_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from IPA_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from IPA_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from IPA_Testing all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RSL_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RSL_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MGCP_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MGCP_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MGCP_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MGCP_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_CTRL_Functions all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_CTRL_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_CTRL_Adapter all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_CodecPort all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_CodecPort_CtrlFunct all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from StatsD_Checker all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from Osmocom_VTY_Functions all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from TELNETasp_PortType all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from MobileL3_CommonIE_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MobileL3_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from MobileL3_RRM_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from L3_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from GSM_RR_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from SCCP_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSMAP_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from BSSMAP_LE_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from SCCPasp_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import from GSM_SystemInformation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from GSM_RestOctets all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from TCCConversion_Functions all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+function f_exp_ipa_rx_nonfatal(integer bts_nr, template (present) RSL_Message t_rx, float t_secs := 2.0,</span><br><span style="color: hsl(120, 100%, 40%);">+                             IpaStreamId sid := IPAC_PROTO_RSL_TRX0, boolean ignore_other_rx := true)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT return template (omit) RSL_Message {</span><br><span style="color: hsl(120, 100%, 40%);">+ var ASP_RSL_Unitdata rx_rsl_ud;</span><br><span style="color: hsl(120, 100%, 40%);">+       timer T := t_secs;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  T.start;</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(t_rx, sid)) -> value rx_rsl_ud {</span><br><span style="color: hsl(120, 100%, 40%);">+          T.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     [ignore_other_rx] IPA_RSL[bts_nr].receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+ [not ignore_other_rx] IPA_RSL[bts_nr].receive {</span><br><span style="color: hsl(120, 100%, 40%);">+                       log("f_exp_ipa_rx_nonfatal(): Got different message than ", t_rx);</span><br><span style="color: hsl(120, 100%, 40%);">+                  T.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+                       return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] T.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+                        return omit;</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 rx_rsl_ud.rsl;</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%);">+private function f_vty_set_imm_ass(TELNETasp_PT pt, BtsNr bts_nr := 0, charstring imm_ass_setting := "post-chan-ack") {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_enter_cfg_bts(pt, bts_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_vty_transceive(pt, "immediate-assignment " & imm_ass_setting);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_vty_transceive(pt, "exit");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_transceive(pt, "exit");</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_transceive(pt, "exit");</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%);">+private function f_verify_imm_ass(RSL_Message imm_ass, template uint8_t ra := ?, template GsmFrameNumber fn := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                 template RslChannelNr chan_nr := ?)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      var RSL_IE_Body full_imm_ass_info;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (not f_rsl_find_ie(imm_ass, RSL_IE_FULL_IMM_ASS_INFO, full_imm_ass_info)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(fail, "RSL Full Immediate Assign Info IE is absent");</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%);">+   var GsmRrMessage rr_imm_ass := dec_GsmRrMessage(full_imm_ass_info.full_imm_ass_info.payload);</span><br><span style="color: hsl(120, 100%, 40%);">+ var template GsmRrMessage expect_imm_ass := tr_IMM_ASS(ra := ra,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                             fn := fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                             ch_desc := tr_ChanDescH0(chan_nr),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            page_mode := ?);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (not match(rr_imm_ass, expect_imm_ass)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          log("Error: expected ", expect_imm_ass, " got ", rr_imm_ass);</span><br><span style="color: hsl(120, 100%, 40%);">+             setverdict(fail, "Failed to match Immediate Assignment");</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%);">+testcase TC_imm_ass_post_chan_ack() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var RSL_Message chan_act;</span><br><span style="color: hsl(120, 100%, 40%);">+     var RSL_Message imm_ass;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init(1, false);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* (should be the default anyway, just to make things clear) */</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_set_imm_ass(BSCVTY, 0, "post-chan-ack");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* RA containing reason=LU */</span><br><span style="color: hsl(120, 100%, 40%);">+ var GsmFrameNumber fn := 2342;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint8_t ra := 2;</span><br><span style="color: hsl(120, 100%, 40%);">+  f_ipa_tx(0, ts_RSL_CHAN_RQD(int2oct(ra, 1), fn));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* First send the Chan Act ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+     var RslChannelNr chan_nr := chan_act.ies[0].body.chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn + 10));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Then expect the Immediate Assignment, after we ACKed the chan act */</span><br><span style="color: hsl(120, 100%, 40%);">+       imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_verify_imm_ass(imm_ass, ra, fn, chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Check that the lchan is working */</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring l3 := '00010203040506'O;</span><br><span style="color: hsl(120, 100%, 40%);">+      f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var BSSAP_N_CONNECT_ind rx_c_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_shutdown_helper();</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%);">+testcase TC_imm_ass_pre_chan_ack() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       var RSL_Message chan_act;</span><br><span style="color: hsl(120, 100%, 40%);">+     var RSL_Message imm_ass;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init(1, false);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_vty_set_imm_ass(BSCVTY, 0, "pre-chan-ack");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* RA containing reason=LU */</span><br><span style="color: hsl(120, 100%, 40%);">+ var GsmFrameNumber fn := 2342;</span><br><span style="color: hsl(120, 100%, 40%);">+        var uint8_t ra := 2;</span><br><span style="color: hsl(120, 100%, 40%);">+  f_ipa_tx(0, ts_RSL_CHAN_RQD(int2oct(ra, 1), fn));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* (set bts 0 cfg back to default) */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_set_imm_ass(BSCVTY);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));</span><br><span style="color: hsl(120, 100%, 40%);">+      var RslChannelNr chan_nr := chan_act.ies[0].body.chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* *FIRST* expect the Immediate Assignment, before we ACK the chan act */</span><br><span style="color: hsl(120, 100%, 40%);">+     imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));</span><br><span style="color: hsl(120, 100%, 40%);">+     f_verify_imm_ass(imm_ass, ra, fn, chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Only now send the Chan Act ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+  f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Check that the lchan is working */</span><br><span style="color: hsl(120, 100%, 40%);">+ var octetstring l3 := '00010203040506'O;</span><br><span style="color: hsl(120, 100%, 40%);">+      f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    var BSSAP_N_CONNECT_ind rx_c_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;</span><br><span style="color: hsl(120, 100%, 40%);">+        BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_shutdown_helper();</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%);">+control {</span><br><span style="color: hsl(120, 100%, 40%);">+  execute( TC_imm_ass_post_chan_ack() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_imm_ass_pre_chan_ack() );</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn</span><br><span>index 78db7a5..f7b00e1 100644</span><br><span>--- a/library/GSM_RR_Types.ttcn</span><br><span>+++ b/library/GSM_RR_Types.ttcn</span><br><span>@@ -1038,7 +1038,8 @@</span><br><span>         template GsmRrMessage tr_IMM_ASS(template uint8_t ra := ?, template GsmFrameNumber fn := ?,</span><br><span>                                   template TimingAdvance ta := ?,</span><br><span>                                      template ChannelDescription ch_desc := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       template MobileAllocationLV ma := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     template MobileAllocationLV ma := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                  template PageMode page_mode := PAGE_MODE_NORMAL) := {</span><br><span>               header := t_RrHeader(IMMEDIATE_ASSIGNMENT, ?),</span><br><span>               payload := {</span><br><span>                         imm_ass := {</span><br><span>@@ -1048,7 +1049,7 @@</span><br><span>                                         downlink := false,</span><br><span>                                   tbf := false</span><br><span>                                 },</span><br><span style="color: hsl(0, 100%, 40%);">-                              page_mode := PAGE_MODE_NORMAL,</span><br><span style="color: hsl(120, 100%, 40%);">+                                page_mode := page_mode,</span><br><span>                              chan_desc := ch_desc,</span><br><span>                                pkt_chan_desc := omit,</span><br><span>                               req_ref := tr_compute_ReqRef(ra, fn),</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25168">change 25168</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/+/25168"/><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: If71f4562d532b6c5faf55f5fd073449a8a137ebf </div>
<div style="display:none"> Gerrit-Change-Number: 25168 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>