From 4d0e5e521b48b9fe67762c0df56147a4586a16a8 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Fri, 7 Jun 2019 19:38:28 +0200 Subject: lib/RAN: Introduce CTRL_CLIENT port to access CTRL muxed in RAN IPA conn This is the case for SCCPlite between BSC and MSC (or BSC-NAT). MGCP and CTRL can be multiplexed over the same underlaying IPA conn. Related: OS#2012 Change-Id: Id90c1609f0439b00379166fb9e4028d181fc023e --- library/RAN_Adapter.ttcnpp | 5 +++++ library/RAN_Emulation.ttcnpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/library/RAN_Adapter.ttcnpp b/library/RAN_Adapter.ttcnpp index 862921e6..40cf0fab 100644 --- a/library/RAN_Adapter.ttcnpp +++ b/library/RAN_Adapter.ttcnpp @@ -166,6 +166,11 @@ function f_ran_adapter_init(inout RAN_Adapter ba, in RAN_Configuration cfg, char /* connect IPA MGCP port with BSSMAP MGCP port */ log("Connecting MGCP RAN Emulation to IPA MGCP PORT"); connect(ba.vc_IPA:IPA_MGCP_PORT, ba.vc_RAN:MGCP); +#endif +#ifdef IPA_EMULATION_CTRL + /* connect IPA CTRL port with BSSMAP CTRL port */ + log("Connecting CTRL RAN Emulation to IPA CTRL PORT"); + connect(ba.vc_IPA:IPA_CTRL_PORT, ba.vc_RAN:CTRL); #endif } log("Starting RAN_Emulation"); diff --git a/library/RAN_Emulation.ttcnpp b/library/RAN_Emulation.ttcnpp index ba018b40..cd0c8674 100644 --- a/library/RAN_Emulation.ttcnpp +++ b/library/RAN_Emulation.ttcnpp @@ -36,6 +36,7 @@ import from SCCP_Emulation all; import from SCCPasp_Types all; import from IPA_Emulation all; import from MobileL3_Types all; +import from Misc_Helpers all; #ifdef RAN_EMULATION_BSSAP import from BSSAP_Types all; @@ -48,6 +49,11 @@ import from MGCP_Types all; import from MGCP_Templates all; #endif +#ifdef RAN_EMULATION_CTRL +import from Osmocom_CTRL_Types all; +import from Osmocom_CTRL_Adapter all; +#endif + #ifdef RAN_EMULATION_RANAP import from RANAP_CodecPort all; import from RANAP_PDU_Descriptions all; @@ -177,6 +183,11 @@ type component RAN_Emulation_CT { /* MGCP port */ port IPA_MGCP_PT MGCP; #endif +#ifdef RAN_EMULATION_CTRL + /* CTRL port */ + port IPA_CTRL_PT CTRL; + port IPA_CTRL_PT CTRL_CLIENT; +#endif /* use 16 as this is also the number of SCCP connections that SCCP_Emulation can handle */ var ConnectionData ConnectionTable[16]; @@ -1041,6 +1052,37 @@ private altstep as_main_mgcp() runs on RAN_Emulation_CT { #endif } +private altstep as_main_ctrl() runs on RAN_Emulation_CT { +#ifdef RAN_EMULATION_CTRL + var CtrlMessage ctrl; + var RAN_ConnHdlr vc_conn; + var ASP_IPA_Event evt; + + /* Handling of CTRL in IPA SCCPLite case. This predates 3GPP AoIP + * and uses a CTRL session in parallel to BSSAP. */ + + /* CTRL_CLIENT -> CTRL */ + [] CTRL_CLIENT.receive(CtrlMessage:?) -> value ctrl sender vc_conn { + CTRL.send(ctrl); + } + + /* CTRL -> CTRL_CLIENT */ + [] CTRL.receive(CtrlMessage:?) -> value ctrl { + CTRL_CLIENT.send(ctrl); + } + + [] CTRL.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_UP}) -> value evt { + CTRL_CLIENT.send(evt); + } + [] CTRL.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_DOWN}) { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Lost IPA connection!"); + } + [] CTRL.receive(ASP_IPA_Event:{up_down := ASP_IPA_EVENT_ID_ACK}) {} +#else + [false] CLIENT.receive {} +#endif +} + /* send a raw (encoded) L3 message over given SCCP connection */ private function f_xmit_raw_l3(integer sccp_conn_id, OCT1 dlci, octetstring l3_enc) runs on RAN_Emulation_CT { @@ -1123,6 +1165,7 @@ function main(RanOps ops, charstring id) runs on RAN_Emulation_CT { } [] as_main_mgcp(); + [] as_main_ctrl(); [] PROC.getcall(RAN_register:{?,?}) -> param(l3_info, vc_hdlr) { f_create_expect(l3_info, vc_hdlr); -- cgit v1.2.3