RSL_Emulation: allow RSL_DchanHdlr sandbox escape for both roles
This feature was initially added in 1470fc668 for the RSL_Emulation_CT
operating in the BTS role. In a subsequent patch I also need to escape
the sandbox, but in my case the RSL_Emulation_CT is playing the BSC role.
Change-Id: I42557f85d3e5e7ef7147a87293f5dd1716884534
Related: 1470fc668 "allow ASP_RSL_UD on MSC_ConnHdlr RSL"
Related: SYS#6655
diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index effe83b..891e565 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -651,15 +651,22 @@
cid := f_cid_by_comp_ref(vc_conn);
IPA_PT.send(ts_ASP_RSL_UD(rx_rsl_msg, ConnectionTable[cid].stream_id));
}
- [bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
- IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));
- }
[not bts_role] CLIENT_PT.receive(tr_RSL_MsgType(?)) -> value rx_rsl_msg sender vc_conn {
cid := f_cid_by_comp_ref(vc_conn);
conn_id := f_trx_conn_map_resolve(ConnectionTable[cid].stream_id);
IPA_PT.send(ts_ASP_RSL_UD(rx_rsl_msg, ConnectionTable[cid].stream_id, conn_id));
}
+ /* allow the RSL_DchanHdlr components to "escape the sandbox" by sending RSL messages
+ * to other transceivers than they're bound to (determined by rx_rsl.streamId) */
+ [bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
+ IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));
+ }
+ [not bts_role] CLIENT_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
+ conn_id := f_trx_conn_map_resolve(rx_rsl.streamId);
+ IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId, conn_id));
+ }
+
/* RSL message from MTC */
[bts_role] CCHAN_PT.receive(tr_ASP_RSL_UD(?, sid := ?)) -> value rx_rsl {
IPA_PT.send(ts_ASP_RSL_UD(rx_rsl.rsl, rx_rsl.streamId));