<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25016">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: add RSL port args in MSC_ConnHdlr, RSLEM<br><br>Add explicit RSL_DCHAN_PT and RSLEM_PROC_PT args to functions and<br>altsteps related to channel establishment and assignment. This allows<br>establishing and assigning a channel on cells other than bts 0.<br><br>This is required for upcoming BSC_Tests.TC_cm_reestablishment().<br><br>Related: SYS#5130<br>Change-Id: Ic3206b7125ee22bf98330080d9b136cefe7da03f<br>---<br>M bsc/MSC_ConnectionHandler.ttcn<br>M library/RSL_Emulation.ttcn<br>2 files changed, 37 insertions(+), 36 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/16/25016/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>index fc12307..af93343 100644</span><br><span>--- a/bsc/MSC_ConnectionHandler.ttcn</span><br><span>+++ b/bsc/MSC_ConnectionHandler.ttcn</span><br><span>@@ -187,11 +187,11 @@</span><br><span> </span><br><span> /* altstep for handling of IPACC media related commands. Activated by as_Media() to test</span><br><span>  * RSL level media handling */</span><br><span style="color: hsl(0, 100%, 40%);">-altstep as_Media_ipacc() runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+altstep as_Media_ipacc(RSL_DCHAN_PT rsl_pt := RSL, RSL_DCHAN_PT rsl_pt_ho_target := RSL1) runs on MSC_ConnHdlr {</span><br><span>  var RSL_Message rsl;</span><br><span>         var RSL_IE_Body ie;</span><br><span>  var boolean b_unused;</span><br><span style="color: hsl(0, 100%, 40%);">-   [not g_media.bts.ipa_crcx_seen] RSL.receive(tr_RSL_IPA_CRCX(g_chan_nr)) -> value rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+     [not g_media.bts.ipa_crcx_seen] rsl_pt.receive(tr_RSL_IPA_CRCX(g_chan_nr)) -> value rsl {</span><br><span>                 /* Extract parameters from request + use in response */</span><br><span>              if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD, ie)) {</span><br><span>                       g_media.bts.rtp_pt := ie.ipa_rtp_pt;</span><br><span>@@ -199,14 +199,14 @@</span><br><span>                 if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD2, ie)) {</span><br><span>                      g_media.bts.rtp_pt := ie.ipa_rtp_pt2;</span><br><span>                }</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL.send(ts_RSL_IPA_CRCX_ACK(g_chan_nr, g_media.bts.conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+          rsl_pt.send(ts_RSL_IPA_CRCX_ACK(g_chan_nr, g_media.bts.conn_id,</span><br><span>                                              f_inet_addr(g_media.bts.bts.host),</span><br><span>                                           g_media.bts.bts.port_nr,</span><br><span>                                             g_media.bts.rtp_pt));</span><br><span>                g_media.bts.ipa_crcx_seen := true;</span><br><span>           repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [g_media.bts.ipa_crcx_seen] RSL.receive(tr_RSL_IPA_MDCX(g_chan_nr, ?)) -> value rsl{</span><br><span style="color: hsl(120, 100%, 40%);">+       [g_media.bts.ipa_crcx_seen] rsl_pt.receive(tr_RSL_IPA_MDCX(g_chan_nr, ?)) -> value rsl{</span><br><span>           /* Extract conn_id, ip, port, rtp_pt2 from request + use in response */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);</span><br><span>             if (g_media.bts.conn_id != ie.ipa_conn_id) {</span><br><span>@@ -224,7 +224,7 @@</span><br><span>           if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD2, ie)) {</span><br><span>                      g_media.bts.rtp_pt := ie.ipa_rtp_pt2;</span><br><span>                }</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL.send(ts_RSL_IPA_MDCX_ACK(g_chan_nr, g_media.bts.conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+          rsl_pt.send(ts_RSL_IPA_MDCX_ACK(g_chan_nr, g_media.bts.conn_id,</span><br><span>                                              f_inet_addr(g_media.bts.peer.host),</span><br><span>                                          g_media.bts.peer.port_nr,</span><br><span>                                            g_media.bts.rtp_pt));</span><br><span>@@ -233,7 +233,7 @@</span><br><span>          }</span><br><span> </span><br><span>        /* on second (new) BTS during hand-over */</span><br><span style="color: hsl(0, 100%, 40%);">-      [not g_media.bts1.ipa_crcx_seen] RSL1.receive(tr_RSL_IPA_CRCX(g_chan_nr)) -> value rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+   [not g_media.bts1.ipa_crcx_seen] rsl_pt_ho_target.receive(tr_RSL_IPA_CRCX(g_chan_nr)) -> value rsl {</span><br><span>              /* Extract parameters from request + use in response */</span><br><span>              if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD, ie)) {</span><br><span>                       g_media.bts1.rtp_pt := ie.ipa_rtp_pt;</span><br><span>@@ -241,7 +241,7 @@</span><br><span>          if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD2, ie)) {</span><br><span>                      g_media.bts1.rtp_pt := ie.ipa_rtp_pt2;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL1.send(ts_RSL_IPA_CRCX_ACK(g_chan_nr, g_media.bts1.conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                rsl_pt_ho_target.send(ts_RSL_IPA_CRCX_ACK(g_chan_nr, g_media.bts1.conn_id,</span><br><span>                                           f_inet_addr(g_media.bts1.bts.host),</span><br><span>                                          g_media.bts1.bts.port_nr,</span><br><span>                                            g_media.bts1.rtp_pt));</span><br><span>@@ -249,7 +249,7 @@</span><br><span>                 repeat;</span><br><span>              }</span><br><span>    /* on second (new) BTS during hand-over */</span><br><span style="color: hsl(0, 100%, 40%);">-      [g_media.bts1.ipa_crcx_seen] RSL1.receive(tr_RSL_IPA_MDCX(g_chan_nr, ?)) -> value rsl{</span><br><span style="color: hsl(120, 100%, 40%);">+     [g_media.bts1.ipa_crcx_seen] rsl_pt_ho_target.receive(tr_RSL_IPA_MDCX(g_chan_nr, ?)) -> value rsl{</span><br><span>                /* Extract conn_id, ip, port, rtp_pt2 from request + use in response */</span><br><span>              b_unused := f_rsl_find_ie(rsl, RSL_IE_IPAC_CONN_ID, ie);</span><br><span>             if (g_media.bts1.conn_id != ie.ipa_conn_id) {</span><br><span>@@ -267,7 +267,7 @@</span><br><span>          if (f_rsl_find_ie(rsl, RSL_IE_IPAC_RTP_PAYLOAD2, ie)) {</span><br><span>                      g_media.bts1.rtp_pt := ie.ipa_rtp_pt2;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-               RSL1.send(ts_RSL_IPA_MDCX_ACK(g_chan_nr, g_media.bts1.conn_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                rsl_pt_ho_target.send(ts_RSL_IPA_MDCX_ACK(g_chan_nr, g_media.bts1.conn_id,</span><br><span>                                           f_inet_addr(g_media.bts1.peer.host),</span><br><span>                                                 g_media.bts1.peer.port_nr,</span><br><span>                                           g_media.bts1.rtp_pt));</span><br><span>@@ -654,17 +654,17 @@</span><br><span> }</span><br><span> </span><br><span> function f_rsl_send_l3(template PDU_ML3_MS_NW l3, template (omit) RslLinkId link_id := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-                 template (omit) RslChannelNr chan_nr := omit) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+                  template (omit) RslChannelNr chan_nr := omit, RSL_DCHAN_PT rsl_pt := RSL) runs on MSC_ConnHdlr {</span><br><span>     if (not isvalue(link_id)) {</span><br><span>          link_id := ts_RslLinkID_DCCH(0);</span><br><span>     }</span><br><span>    if (not isvalue(chan_nr)) {</span><br><span>          chan_nr := g_chan_nr;</span><br><span>        }</span><br><span style="color: hsl(0, 100%, 40%);">-       RSL.send(ts_RSL_DATA_IND(valueof(chan_nr), valueof(link_id), enc_PDU_ML3_MS_NW(valueof(l3))));</span><br><span style="color: hsl(120, 100%, 40%);">+        rsl_pt.send(ts_RSL_DATA_IND(valueof(chan_nr), valueof(link_id), enc_PDU_ML3_MS_NW(valueof(l3))));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_rsl_reply(template PDU_ML3_MS_NW l3, RSL_Message orig) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+function f_rsl_reply(template PDU_ML3_MS_NW l3, RSL_Message orig, RSL_DCHAN_PT rsl_pt := RSL) runs on MSC_ConnHdlr {</span><br><span>     var RslChannelNr chan_nr := orig.ies[0].body.chan_nr;</span><br><span>        var RslLinkId link_id;</span><br><span>       if (orig.msg_type == RSL_MT_ENCR_CMD) {</span><br><span>@@ -672,7 +672,7 @@</span><br><span>        } else {</span><br><span>             link_id := orig.ies[1].body.link_id;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       f_rsl_send_l3(l3, link_id, chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+  f_rsl_send_l3(l3, link_id, chan_nr, rsl_pt := rsl_pt);</span><br><span> }</span><br><span> </span><br><span> /* Convert the cipher representation on BSSMAP to the representation used on RSL */</span><br><span>@@ -783,7 +783,8 @@</span><br><span>         setverdict(pass);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_cipher_mode(TestHdlrEncrParams enc, boolean exp_fail := false)</span><br><span style="color: hsl(120, 100%, 40%);">+function f_cipher_mode(TestHdlrEncrParams enc, boolean exp_fail := false,</span><br><span style="color: hsl(120, 100%, 40%);">+                       RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC)</span><br><span> runs on MSC_ConnHdlr {</span><br><span>  var PDU_BSSAP bssap;</span><br><span>         var RSL_Message rsl;</span><br><span>@@ -796,14 +797,14 @@</span><br><span> </span><br><span>     alt {</span><br><span>        /* RSL/UE Side */</span><br><span style="color: hsl(0, 100%, 40%);">-       [] RSL.receive(tr_RSL_ENCR_CMD(g_chan_nr)) -> value rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+  [] rsl_pt.receive(tr_RSL_ENCR_CMD(g_chan_nr)) -> value rsl {</span><br><span>              var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[3].body.l3_info.payload);</span><br><span>          log("Rx L3 from net: ", l3);</span><br><span> </span><br><span>           f_verify_encr_info(rsl);</span><br><span> </span><br><span>                 if (ischosen(l3.msgs.rrm.cipheringModeCommand)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       f_rsl_reply(ts_RRM_CiphModeCompl, rsl);</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_rsl_reply(ts_RRM_CiphModeCompl, rsl, rsl_pt := rsl_pt);</span><br><span>            }</span><br><span>            repeat;</span><br><span>              }</span><br><span>@@ -956,9 +957,9 @@</span><br><span>      return tsc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-altstep as_assignment(inout AssignmentState st) runs on MSC_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+altstep as_assignment(inout AssignmentState st, RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC) runs on MSC_ConnHdlr {</span><br><span>        var RSL_Message rsl;</span><br><span style="color: hsl(0, 100%, 40%);">-    [not st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+   [not st.rr_ass_cmpl_seen] rsl_pt.receive(tr_RSL_DATA_REQ(g_chan_nr)) -> value rsl {</span><br><span>               var PDU_ML3_NW_MS l3 := dec_PDU_ML3_NW_MS(rsl.ies[2].body.l3_info.payload);</span><br><span>          log("Rx L3 from net: ", l3);</span><br><span>               if (ischosen(l3.msgs.rrm.assignmentCommand)) {</span><br><span>@@ -979,20 +980,20 @@</span><br><span>                       /* FIXME: Determine TRX NR by ARFCN, instead of hard-coded TRX0! */</span><br><span> </span><br><span>                      /* register our component for this channel number at the RSL Emulation */</span><br><span style="color: hsl(0, 100%, 40%);">-                       f_rslem_register(0, new_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+                     f_rslem_register(0, new_chan_nr, PT := rsl_proc_pt);</span><br><span>                         /* dispatch queued messages for this channel (if any) */</span><br><span style="color: hsl(0, 100%, 40%);">-                        f_rslem_dchan_queue_dispatch();</span><br><span style="color: hsl(120, 100%, 40%);">+                       f_rslem_dchan_queue_dispatch(PT := rsl_proc_pt);</span><br><span> </span><br><span>                         var PDU_ML3_MS_NW l3_tx := valueof(ts_RRM_AssignmentComplete('00'O));</span><br><span>                        /* send assignment complete over the new channel */</span><br><span style="color: hsl(0, 100%, 40%);">-                     RSL.send(ts_RSL_EST_IND(new_chan_nr, valueof(ts_RslLinkID_DCCH(0)),</span><br><span style="color: hsl(120, 100%, 40%);">+                   rsl_pt.send(ts_RSL_EST_IND(new_chan_nr, valueof(ts_RslLinkID_DCCH(0)),</span><br><span>                                                enc_PDU_ML3_MS_NW(l3_tx)));</span><br><span>                         /* by default, send via the new channel from now */</span><br><span>                  st.old_chan_nr := g_chan_nr;</span><br><span>                         g_chan_nr := new_chan_nr;</span><br><span>                    st.rr_ass_cmpl_seen := true;</span><br><span>                         /* obtain channel activation from RSL_Emulation for new channel */</span><br><span style="color: hsl(0, 100%, 40%);">-                      var RSL_Message chan_act := f_rslem_get_last_act(RSL_PROC, 0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+                     var RSL_Message chan_act := f_rslem_get_last_act(rsl_proc_pt, 0, g_chan_nr);</span><br><span>                         /* check it (e.g. for correct ciphering parameters) */</span><br><span>                       f_check_chan_act(st, chan_act);</span><br><span>                      repeat;</span><br><span>@@ -1000,20 +1001,20 @@</span><br><span>                    Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Unexpected L3 received", l3));</span><br><span>                 }</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-       [st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_DEACT_SACCH(st.old_chan_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       [st.rr_ass_cmpl_seen] rsl_pt.receive(tr_RSL_DEACT_SACCH(st.old_chan_nr)) {</span><br><span>           st.old_lchan_deact_sacch_seen := true;</span><br><span>               repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_REL_REQ(st.old_chan_nr, tr_RslLinkID_DCCH(0))) {</span><br><span style="color: hsl(120, 100%, 40%);">+     [st.rr_ass_cmpl_seen] rsl_pt.receive(tr_RSL_REL_REQ(st.old_chan_nr, tr_RslLinkID_DCCH(0))) {</span><br><span>                 st.old_lchan_rll_rel_req_seen := true;</span><br><span style="color: hsl(0, 100%, 40%);">-          RSL.send(ts_RSL_REL_CONF(st.old_chan_nr, valueof(ts_RslLinkID_DCCH(0))));</span><br><span style="color: hsl(120, 100%, 40%);">+             rsl_pt.send(ts_RSL_REL_CONF(st.old_chan_nr, valueof(ts_RslLinkID_DCCH(0))));</span><br><span>                 repeat;</span><br><span>              }</span><br><span style="color: hsl(0, 100%, 40%);">-       [st.rr_ass_cmpl_seen] RSL.receive(tr_RSL_RF_CHAN_REL(st.old_chan_nr)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         RSL.send(ts_RSL_RF_CHAN_REL_ACK(st.old_chan_nr));</span><br><span style="color: hsl(120, 100%, 40%);">+     [st.rr_ass_cmpl_seen] rsl_pt.receive(tr_RSL_RF_CHAN_REL(st.old_chan_nr)) {</span><br><span style="color: hsl(120, 100%, 40%);">+            rsl_pt.send(ts_RSL_RF_CHAN_REL_ACK(st.old_chan_nr));</span><br><span>                 /* unregister for old channel number in RSL emulation */</span><br><span>             /* FIXME: Determine TRX NR by ARFCN, instead of hard-coded TRX0! */</span><br><span style="color: hsl(0, 100%, 40%);">-             f_rslem_unregister(0, st.old_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+                f_rslem_unregister(0, st.old_chan_nr, PT := rsl_proc_pt);</span><br><span>            st.assignment_done := true;</span><br><span>          repeat;</span><br><span>              }</span><br><span>diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn</span><br><span>index f64329a..969dbce 100644</span><br><span>--- a/library/RSL_Emulation.ttcn</span><br><span>+++ b/library/RSL_Emulation.ttcn</span><br><span>@@ -109,7 +109,7 @@</span><br><span>  * Client Component for a single dedicated channel</span><br><span>  ***********************************************************************/</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_rx_or_fail(template RSL_Message exp_rx) runs on RSL_DchanHdlr return RSL_Message</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_rx_or_fail(template RSL_Message exp_rx, RSL_DCHAN_PT rsl_pt := RSL) runs on RSL_DchanHdlr return RSL_Message</span><br><span> {</span><br><span>         var RSL_Message rx_rsl;</span><br><span>      timer T := 10.0;</span><br><span>@@ -117,11 +117,11 @@</span><br><span>     /* request a channel to be established */</span><br><span>    T.start;</span><br><span>     alt {</span><br><span style="color: hsl(0, 100%, 40%);">-           [] RSL.receive(exp_rx) -> value rx_rsl {</span><br><span style="color: hsl(120, 100%, 40%);">+           [] rsl_pt.receive(exp_rx) -> value rx_rsl {</span><br><span>                       T.stop;</span><br><span>                      return rx_rsl;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-               [] RSL.receive {</span><br><span style="color: hsl(120, 100%, 40%);">+              [] rsl_pt.receive {</span><br><span>                  setverdict(fail, "Unexpected RSL message on DCHAN");</span><br><span>                       mtc.stop;</span><br><span>            }</span><br><span>@@ -136,16 +136,16 @@</span><br><span> </span><br><span> /* establish a dedicated channel using 'ra' */</span><br><span> function f_chan_est(OCT1 ra, octetstring est_l3, template RslLinkId link_id, GsmFrameNumber fn := 23,</span><br><span style="color: hsl(0, 100%, 40%);">-                    template uint3_t tsc := ?)</span><br><span style="color: hsl(120, 100%, 40%);">+                    template uint3_t tsc := ?, RSL_DCHAN_PT rsl_pt := RSL, RSLEM_PROC_PT rsl_proc_pt := RSL_PROC)</span><br><span> runs on RSL_DchanHdlr {</span><br><span>         var RSL_Message rx_rsl;</span><br><span>      var GsmRrMessage rr;</span><br><span> </span><br><span>     /* request a channel to be established */</span><br><span style="color: hsl(0, 100%, 40%);">-       RSL.send(ts_RSLDC_ChanRqd(ra, fn));</span><br><span style="color: hsl(120, 100%, 40%);">+   rsl_pt.send(ts_RSLDC_ChanRqd(ra, fn));</span><br><span>       /* At this point the BSC sends a CHAN ACTIV which we always ACK. Checking it below. */</span><br><span>       /* expect immediate assignment */</span><br><span style="color: hsl(0, 100%, 40%);">-       rx_rsl := f_rx_or_fail(tr_RSL_IMM_ASSIGN);</span><br><span style="color: hsl(120, 100%, 40%);">+    rx_rsl := f_rx_or_fail(tr_RSL_IMM_ASSIGN, rsl_pt := rsl_pt);</span><br><span>         rr := dec_GsmRrMessage(rx_rsl.ies[1].body.full_imm_ass_info.payload);</span><br><span>        if (not match(rr.payload.imm_ass.chan_desc.tsc, tsc)) {</span><br><span>              setverdict(fail, "Immediate Assignment: unexpected TSC in Channel Description: expected ", tsc, " got ",</span><br><span>@@ -153,10 +153,10 @@</span><br><span>                 mtc.stop;</span><br><span>    }</span><br><span>    g_chan_nr := rr.payload.imm_ass.chan_desc.chan_nr;</span><br><span style="color: hsl(0, 100%, 40%);">-      RSL.send(ts_RSL_EST_IND(g_chan_nr, valueof(link_id), est_l3));</span><br><span style="color: hsl(120, 100%, 40%);">+        rsl_pt.send(ts_RSL_EST_IND(g_chan_nr, valueof(link_id), est_l3));</span><br><span> </span><br><span>        /* Check above CHAN ACTIV */</span><br><span style="color: hsl(0, 100%, 40%);">-    var RSL_Message chan_act := f_rslem_get_last_act(RSL_PROC, 0, g_chan_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+     var RSL_Message chan_act := f_rslem_get_last_act(rsl_proc_pt, 0, g_chan_nr);</span><br><span>         var RSL_IE_Body ie;</span><br><span>  if (f_rsl_find_ie(chan_act, RSL_IE_CHAN_IDENT, ie)) {</span><br><span>                var uint3_t got_tsc := ie.chan_ident.ch_desc.v.tsc;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/25016">change 25016</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/+/25016"/><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: Ic3206b7125ee22bf98330080d9b136cefe7da03f </div>
<div style="display:none"> Gerrit-Change-Number: 25016 </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>