From 6811d10af7b47f7cca53d9461e4b4d0feea6dfc2 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 14 Apr 2019 22:23:14 +0200 Subject: [PATCH] Rename BSSMAP_Emulation -> RAN_Emulation So far, BSSMAP_Emulation supported only a transport over BSSMAP. However, we soon intend to merge support for RANAP in order to simulate RANAP/Iu connections as well as BSSMAP. Let's start by renaming some of the existing types/functions/ports/modules without introducing any functional changes just yet. Related: OS#2857, OS#2856 Change-Id: Iecbcb0c6c136baad9460eca40606bb4010d8882d --- bsc-nat/BSC_MS_ConnectionHandler.ttcn | 24 +-- bsc-nat/BSC_MS_Simulation.ttcn | 8 +- bsc-nat/MSC_ConnectionHandler.ttcn | 24 +-- bsc-nat/MSC_Simulation.ttcn | 8 +- bsc-nat/gen_links.sh | 2 +- bsc/BSC_Tests.ttcn | 28 +-- bsc/BSC_Tests_LCLS.ttcn | 18 +- bsc/MSC_ConnectionHandler.ttcn | 24 +-- bsc/gen_links.sh | 2 +- .../{BSSAP_Adapter.ttcn => RAN_Adapter.ttcn} | 42 ++-- ...SMAP_Emulation.ttcn => RAN_Emulation.ttcn} | 186 +++++++++--------- msc/BSC_ConnectionHandler.ttcn | 30 +-- msc/MSC_Tests.ttcn | 60 +++--- msc/gen_links.sh | 2 +- 14 files changed, 228 insertions(+), 230 deletions(-) rename library/{BSSAP_Adapter.ttcn => RAN_Adapter.ttcn} (77%) rename library/{BSSMAP_Emulation.ttcn => RAN_Emulation.ttcn} (82%) diff --git a/bsc-nat/BSC_MS_ConnectionHandler.ttcn b/bsc-nat/BSC_MS_ConnectionHandler.ttcn index 27e1b5818..63d0451c5 100644 --- a/bsc-nat/BSC_MS_ConnectionHandler.ttcn +++ b/bsc-nat/BSC_MS_ConnectionHandler.ttcn @@ -5,7 +5,7 @@ import from Osmocom_Types all; import from SCCPasp_Types all; import from BSSAP_Types all; import from BSSAP_CodecPort all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSSMAP_Templates all; import from MobileL3_Types all; @@ -17,9 +17,9 @@ import from MGCP_Templates all; import from SDP_Types all; /* this component represents a single subscriber connection at the MSC. - * There is a 1:1 mapping between SCCP connections and BSSAP_ConnHdlr components. - * We inherit all component variables, ports, functions, ... from BSSAP_ConnHdlr */ -type component BSC_MS_ConnHdlr extends BSSAP_ConnHdlr { + * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components. + * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */ +type component BSC_MS_ConnHdlr extends RAN_ConnHdlr { /* SCCP Connecction Identifier for the underlying SCCP connection */ var integer g_sccp_conn_id; var MgcpConnectionId g_mgcp_conn_id; @@ -27,18 +27,18 @@ type component BSC_MS_ConnHdlr extends BSSAP_ConnHdlr { var BSC_State g_state; } -/* Callback function from general BSSMAP_Emulation whenever a new incoming +/* Callback function from general RAN_Emulation whenever a new incoming * SCCP connection arrivces. Must create + start a new component */ private function CreateCallback(BSSAP_N_CONNECT_ind conn_ind, charstring id) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { log("Incoming SCCP Connection on BSC ?!?"); self.stop; } -/* Callback function from general BSSMAP_Emulation whenever a connectionless +/* Callback function from general RAN_Emulation whenever a connectionless * BSSMAP message arrives. Can retunr a PDU_BSSAP that should be sent in return */ private function UnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP { +runs on RAN_Emulation_CT return template PDU_BSSAP { var template PDU_BSSAP resp := omit; if (match(bssap, tr_BSSMAP_Reset)) { @@ -48,7 +48,7 @@ runs on BSSMAP_Emulation_CT return template PDU_BSSAP { return resp; } -const BssmapOps BSC_MS_BssmapOps := { +const RanOps BSC_MS_RanOps := { create_cb := refers(CreateCallback), unitdata_cb := refers(UnitdataCallback), decode_dtap := false, @@ -154,16 +154,16 @@ runs on BSC_MS_ConnHdlr { log("Unhandled DTAP ", l3); } - [g_state == BSC_STATE_WAIT_DISC_IND] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + [g_state == BSC_STATE_WAIT_DISC_IND] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { setverdict(pass); self.stop; } - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { } /* disconnect in invalid state */ - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { setverdict(fail); self.stop; } diff --git a/bsc-nat/BSC_MS_Simulation.ttcn b/bsc-nat/BSC_MS_Simulation.ttcn index 2f1961bff..c45b5aca4 100644 --- a/bsc-nat/BSC_MS_Simulation.ttcn +++ b/bsc-nat/BSC_MS_Simulation.ttcn @@ -9,7 +9,7 @@ import from SCCPasp_Types all; import from SCCP_Emulation all; import from BSSAP_CodecPort all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSC_MS_ConnectionHandler all; @@ -17,7 +17,7 @@ type component BSC_CT { /* component references */ var IPA_Emulation_CT vc_IPA; var SCCP_CT vc_SCCP; - var BSSMAP_Emulation_CT vc_BSSMAP; + var RAN_Emulation_CT vc_BSSMAP; /* test port to SCCP emulation */ port SCCPasp_PT SCCP; @@ -48,7 +48,7 @@ function main(charstring remote_ip, PortNumber remote_port, /* create components for IPA/SCCP/BSS[M]AP stack */ vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); vc_SCCP := SCCP_CT.create(id & "-SCCP"); - vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); + vc_BSSMAP := RAN_Emulation_CT.create(id & "-BSSMAP"); map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT); @@ -64,7 +64,7 @@ function main(charstring remote_ip, PortNumber remote_port, /* start components */ vc_IPA.start(IPA_Emulation.main_client(remote_ip, remote_port, local_ip, local_port, ccm_pars)); vc_SCCP.start(SCCPStart(sccp_pars)); - vc_BSSMAP.start(BSSMAP_Emulation.main(BSC_MS_ConnectionHandler.BSC_MS_BssmapOps, id)); + vc_BSSMAP.start(RAN_Emulation.main(BSC_MS_ConnectionHandler.BSC_MS_RanOps, id)); /* Initial delay to wait for IPA connection establishment */ T.start(2.0); diff --git a/bsc-nat/MSC_ConnectionHandler.ttcn b/bsc-nat/MSC_ConnectionHandler.ttcn index 27fbba732..383b67b12 100644 --- a/bsc-nat/MSC_ConnectionHandler.ttcn +++ b/bsc-nat/MSC_ConnectionHandler.ttcn @@ -5,7 +5,7 @@ import from Osmocom_Types all; import from SCCPasp_Types all; import from BSSAP_Types all; import from BSSAP_CodecPort all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSSMAP_Templates all; import from MGCP_Types all; @@ -13,9 +13,9 @@ import from MGCP_Templates all; import from SDP_Types all; /* this component represents a single subscriber connection at the MSC. - * There is a 1:1 mapping between SCCP connections and BSSAP_ConnHdlr components. - * We inherit all component variables, ports, functions, ... from BSSAP_ConnHdlr */ -type component MSC_ConnHdlr extends BSSAP_ConnHdlr { + * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components. + * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */ +type component MSC_ConnHdlr extends RAN_ConnHdlr { /* SCCP Connecction Identifier for the underlying SCCP connection */ var integer g_sccp_conn_id; @@ -28,10 +28,10 @@ type component MSC_ConnHdlr extends BSSAP_ConnHdlr { /* Callback function from general BSSMAP_Emulation whenever a new incoming * SCCP connection arrivces. Must create + start a new component */ private function CreateCallback(BSSAP_N_CONNECT_ind conn_ind, charstring id) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { var MSC_ConnHdlr vc_conn; - /* Create a new BSSAP_ConnHdlr component */ - vc_conn := MSC_ConnHdlr.create(g_bssmap_id & "-Conn-" & int2str(conn_ind.connectionId)); + /* Create a new RAN_ConnHdlr component */ + vc_conn := MSC_ConnHdlr.create(g_ran_id & "-Conn-" & int2str(conn_ind.connectionId)); /* connect it to the port */ connect(vc_conn:BSSAP, self:CLIENT); /* start it */ @@ -44,7 +44,7 @@ runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { /* Callback function from general BSSMAP_Emulation whenever a connectionless * BSSMAP message arrives. Can retunr a PDU_BSSAP that should be sent in return */ private function UnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP { +runs on RAN_Emulation_CT return template PDU_BSSAP { var template PDU_BSSAP resp := omit; if (match(bssap, tr_BSSMAP_Reset)) { @@ -54,7 +54,7 @@ runs on BSSMAP_Emulation_CT return template PDU_BSSAP { return resp; } -const BssmapOps MSC_BssmapOps := { +const RanOps MSC_RanOps := { create_cb := refers(CreateCallback), unitdata_cb := refers(UnitdataCallback), decode_dtap := false, @@ -129,14 +129,14 @@ function main(integer connection_id, integer e1_timeslot) runs on MSC_ConnHdlr { } [g_state == MSC_STATE_WAIT_DLCX_ACK] BSSAP.receive(tr_DLCX_ACK) { - BSSAP.send(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); + BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); setverdict(pass); self.stop; } /* TODO: CLEAR REQUEST from BSS */ - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { setverdict(fail); self.stop; } @@ -147,7 +147,7 @@ function main(integer connection_id, integer e1_timeslot) runs on MSC_ConnHdlr { /* Guard timer has expired, close connection */ [] T.timeout { - BSSAP.send(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); + BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); setverdict(fail, "Timeout of guard timer"); self.stop; } diff --git a/bsc-nat/MSC_Simulation.ttcn b/bsc-nat/MSC_Simulation.ttcn index 0a135091c..bc47f89f0 100755 --- a/bsc-nat/MSC_Simulation.ttcn +++ b/bsc-nat/MSC_Simulation.ttcn @@ -16,7 +16,7 @@ import from L3_Templates all; import from BSSAP_Types all; import from BSSMAP_Templates all; */ -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from MGCP_Adapter all; @@ -26,7 +26,7 @@ type component MSC_CT { /* component references */ var IPA_Emulation_CT vc_IPA; var SCCP_CT vc_SCCP; - var BSSMAP_Emulation_CT vc_BSSMAP; + var RAN_Emulation_CT vc_BSSMAP; var MGCP_Adapter_CT vc_MGCP_UDP; /* test port to SCCP emulation */ port SCCPasp_PT SCCP; @@ -43,7 +43,7 @@ function main(charstring local_ip, PortNumber local_port, /* create components */ vc_IPA := IPA_Emulation_CT.create(id & "-IPA"); vc_SCCP := SCCP_CT.create(id & "-SCCP"); - vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); + vc_BSSMAP := RAN_Emulation_CT.create(id & "-BSSMAP"); map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT); @@ -64,7 +64,7 @@ function main(charstring local_ip, PortNumber local_port, vc_IPA.start(IPA_Emulation.main_server(local_ip, local_port)); vc_SCCP.start(SCCPStart(sccp_pars)); - vc_BSSMAP.start(BSSMAP_Emulation.main(MSC_ConnectionHandler.MSC_BssmapOps, id & "-BSSMAP")); + vc_BSSMAP.start(RAN_Emulation.main(MSC_ConnectionHandler.MSC_RanOps, id & "-BSSMAP")); /* wait until termination of respective components */ vc_IPA.done; diff --git a/bsc-nat/gen_links.sh b/bsc-nat/gen_links.sh index 1ab54f15d..e54eec483 100755 --- a/bsc-nat/gen_links.sh +++ b/bsc-nat/gen_links.sh @@ -47,7 +47,7 @@ FILES="RTP_EncDec.cc RTP_Types.ttcn" gen_links $DIR $FILES DIR=../library -FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn BSSAP_CodecPort.ttcn" +FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn BSSAP_CodecPort.ttcn" gen_links $DIR $FILES ignore_pp_results diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 1e89cf362..720669b9a 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -24,7 +24,7 @@ import from GSM_Types all; import from IPL4asp_Types all; import from BSSAP_Types all; -import from BSSAP_Adapter all; +import from RAN_Adapter all; import from BSSAP_CodecPort all; import from BSSMAP_Templates all; import from IPA_Emulation all; @@ -82,7 +82,7 @@ type component test_CT extends CTRL_Adapter_CT { var MGCP_Emulation_CT vc_MGCP; port TELNETasp_PT BSCVTY; - var BSSAP_Adapter g_bssap; + var RAN_Adapter g_bssap; /* for old legacy-tests only */ port BSSAP_CODEC_PT BSSAP; @@ -106,7 +106,7 @@ modulepar { /* IP address at which the test binds */ charstring mp_test_ip := "127.0.0.1"; - BSSAP_Configuration mp_bssap_cfg := { + RAN_Configuration mp_bssap_cfg := { transport := BSSAP_TRANSPORT_AoIP, sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, @@ -313,10 +313,10 @@ function f_init(integer nr_bts := NUM_BTS, boolean handler_mode := false) runs o T_guard.start; activate(as_Tguard()); - /* Call a function of our 'parent component' BSSAP_Adapter_CT to start the + /* Call a function of our 'parent component' RAN_Adapter_CT to start the * MSC-side BSSAP emulation */ if (handler_mode) { - f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", MSC_BssmapOps); + f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", MSC_RanOps); f_bssap_start(g_bssap); } else { f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", omit); @@ -1625,10 +1625,10 @@ testcase TC_oml_unknown_unit_id() runs on test_CT { /*********************************************************************** - * "New world" test cases using RSL_Emulation + BSSMAP_Emulation + * "New world" test cases using RSL_Emulation + RAN_Emulation ***********************************************************************/ -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from RSL_Emulation all; import from MSC_ConnectionHandler all; @@ -1636,7 +1636,7 @@ type function void_fn(charstring id) runs on MSC_ConnHdlr; /* helper function to create and connect a MSC_ConnHdlr component */ private function f_connect_handler(inout MSC_ConnHdlr vc_conn) runs on test_CT { - connect(vc_conn:BSSMAPEM, g_bssap.vc_BSSMAP:PROC); + connect(vc_conn:RAN, g_bssap.vc_RAN:PROC); connect(vc_conn:MGCP_PROC, vc_MGCP:MGCP_PROC); connect(vc_conn:RSL, bts[0].rsl.vc_RSL:CLIENT_PT); connect(vc_conn:RSL_PROC, bts[0].rsl.vc_RSL:RSL_PROC); @@ -1644,7 +1644,7 @@ private function f_connect_handler(inout MSC_ConnHdlr vc_conn) runs on test_CT { connect(vc_conn:RSL1, bts[1].rsl.vc_RSL:CLIENT_PT); connect(vc_conn:RSL1_PROC, bts[1].rsl.vc_RSL:RSL_PROC); } - connect(vc_conn:BSSAP, g_bssap.vc_BSSMAP:CLIENT); + connect(vc_conn:BSSAP, g_bssap.vc_RAN:CLIENT); connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT); } @@ -3096,7 +3096,7 @@ private function f_tc_ho_into_this_bsc(charstring id) runs on MSC_ConnHdlr { BSSAP.send(ts_BSSAP_Conn_Req(g_pars.handover.sccp_addr_bsc, g_pars.handover.sccp_addr_msc, f_gen_handover_req())); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND); /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */ @@ -3168,7 +3168,7 @@ private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr BSSAP.send(ts_BSSAP_Conn_Req(g_pars.handover.sccp_addr_bsc, g_pars.handover.sccp_addr_msc, f_gen_handover_req())); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND); /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */ @@ -3253,7 +3253,7 @@ private function f_tc_ho_in_fail_msc_clears_after_ho_detect(charstring id) runs BSSAP.send(ts_BSSAP_Conn_Req(g_pars.handover.sccp_addr_bsc, g_pars.handover.sccp_addr_msc, f_gen_handover_req())); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND); /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */ @@ -3339,7 +3339,7 @@ private function f_tc_ho_in_fail_no_detect(charstring id) runs on MSC_ConnHdlr { BSSAP.send(ts_BSSAP_Conn_Req(g_pars.handover.sccp_addr_bsc, g_pars.handover.sccp_addr_msc, f_gen_handover_req())); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND); /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */ @@ -3430,7 +3430,7 @@ private function f_tc_ho_in_fail_no_detect2(charstring id) runs on MSC_ConnHdlr BSSAP.send(ts_BSSAP_Conn_Req(g_pars.handover.sccp_addr_bsc, g_pars.handover.sccp_addr_msc, f_gen_handover_req())); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND); /* The RSL Emulation magically accepts the Chan Activ behind the scenes. */ diff --git a/bsc/BSC_Tests_LCLS.ttcn b/bsc/BSC_Tests_LCLS.ttcn index 67ccecf8d..f2b9b5d7f 100644 --- a/bsc/BSC_Tests_LCLS.ttcn +++ b/bsc/BSC_Tests_LCLS.ttcn @@ -24,7 +24,7 @@ import from GSM_Types all; import from IPL4asp_Types all; import from BSSAP_Types all; -import from BSSAP_Adapter all; +import from RAN_Adapter all; import from BSSAP_CodecPort all; import from BSSMAP_Templates all; import from IPA_Emulation all; @@ -51,7 +51,7 @@ import from L3_Templates all; import from GSM_RR_Types all; import from BSSMAP_Templates all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from MSC_ConnectionHandler all; import from BSC_Tests all; @@ -84,7 +84,7 @@ type component LCLS_MSC_ConnHdlr extends MSC_ConnHdlr { /* port type between lcls_test_CT and LCLS_MSC_ConnHdlr */ type port LCLS_InterComp_PT message { /* BSSAP from BSSA_ConnHdlr */ - inout PDU_BSSAP, BSSAP_Conn_Prim, PDU_DTAP_MO, PDU_DTAP_MT, + inout PDU_BSSAP, RAN_Conn_Prim, PDU_DTAP_MO, PDU_DTAP_MT, /* RSL from RSL_DchanHdlr */ RSLDC_ChanRqd, RSL_Message, /* MGCP from MGCP_ConnHdlr */ @@ -101,7 +101,7 @@ type enumerated LclsCompSync { /* forward messages between the RSL/MGCP/BSSAP Emulation and the master component */ private altstep as_lcls_conn_hdlr_proxy() runs on LCLS_MSC_ConnHdlr { var PDU_BSSAP bssap; - var BSSAP_Conn_Prim bssap_p; + var RAN_Conn_Prim bssap_p; var PDU_DTAP_MO dtap_mo; var PDU_DTAP_MT dtap_mt; var MgcpCommand mgcp_cmd; @@ -109,7 +109,7 @@ private altstep as_lcls_conn_hdlr_proxy() runs on LCLS_MSC_ConnHdlr { var RSL_Message rsl_msg; /* from ConnHdlr to master process */ [] BSSAP.receive(PDU_BSSAP:?) -> value bssap { MASTER.send(bssap); } - [] BSSAP.receive(BSSAP_Conn_Prim:?) -> value bssap_p { MASTER.send(bssap_p); } + [] BSSAP.receive(RAN_Conn_Prim:?) -> value bssap_p { MASTER.send(bssap_p); } [] BSSAP.receive(PDU_DTAP_MO:?) -> value dtap_mo { MASTER.send(dtap_mo); } [] BSSAP.receive(PDU_DTAP_MT:?) -> value dtap_mt { MASTER.send(dtap_mt); } [] MGCP.receive(MgcpCommand:?) -> value mgcp_cmd { MASTER.send(mgcp_cmd); } @@ -117,7 +117,7 @@ private altstep as_lcls_conn_hdlr_proxy() runs on LCLS_MSC_ConnHdlr { [] RSL.receive(RSL_Message:?) -> value rsl_msg { MASTER.send(rsl_msg); } /* from master process to ConnHdlr */ [] MASTER.receive(PDU_BSSAP:?) -> value bssap { BSSAP.send(bssap); } - [] MASTER.receive(BSSAP_Conn_Prim:?) -> value bssap_p { BSSAP.send(bssap_p); } + [] MASTER.receive(RAN_Conn_Prim:?) -> value bssap_p { BSSAP.send(bssap_p); } [] MASTER.receive(PDU_DTAP_MO:?) -> value dtap_mo { BSSAP.send(dtap_mo); } [] MASTER.receive(PDU_DTAP_MT:?) -> value dtap_mt { BSSAP.send(dtap_mt); } [] MASTER.receive(MgcpCommand:?) -> value mgcp_cmd { MGCP.send(mgcp_cmd); } @@ -160,7 +160,7 @@ runs on LCLS_MSC_ConnHdlr { /* helper function to create and connect a MSC_ConnHdlr component */ /* FIXME: Why can't we use BSC_Tests.f_connect_andler() ?!? */ private function f_connect_handler(inout LCLS_MSC_ConnHdlr vc_conn) runs on lcls_test_CT { - connect(vc_conn:BSSMAPEM, g_bssap.vc_BSSMAP:PROC); + connect(vc_conn:RAN, g_bssap.vc_RAN:PROC); connect(vc_conn:MGCP_PROC, vc_MGCP:MGCP_PROC); connect(vc_conn:RSL, bts[0].rsl.vc_RSL:CLIENT_PT); connect(vc_conn:RSL_PROC, bts[0].rsl.vc_RSL:RSL_PROC); @@ -168,7 +168,7 @@ private function f_connect_handler(inout LCLS_MSC_ConnHdlr vc_conn) runs on lcls connect(vc_conn:RSL1, bts[1].rsl.vc_RSL:CLIENT_PT); connect(vc_conn:RSL1_PROC, bts[1].rsl.vc_RSL:RSL_PROC); } - connect(vc_conn:BSSAP, g_bssap.vc_BSSMAP:CLIENT); + connect(vc_conn:BSSAP, g_bssap.vc_RAN:CLIENT); connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT); } @@ -713,7 +713,7 @@ testcase TC_lcls_connect_clear() runs on lcls_test_CT { } } [] CONN_A.receive(tr_BSSMAP_ClearComplete) { - CONN_A.send(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); + CONN_A.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); } [] CONN_B.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_possible_ls)); } diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index 96797c947..36e554df6 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -6,7 +6,7 @@ import from Osmocom_Types all; import from GSM_Types all; import from SCCPasp_Types all; import from BSSAP_Types all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSSMAP_Templates all; import from IPL4asp_Types all; @@ -330,14 +330,14 @@ altstep as_Media() runs on MSC_ConnHdlr { } /* this component represents a single subscriber connection at the MSC. - * There is a 1:1 mapping between SCCP connections and BSSAP_ConnHdlr components. - * We inherit all component variables, ports, functions, ... from BSSAP_ConnHdlr */ -type component MSC_ConnHdlr extends BSSAP_ConnHdlr, RSL_DchanHdlr, MGCP_ConnHdlr { + * There is a 1:1 mapping between SCCP connections and RAN_ConnHdlr components. + * We inherit all component variables, ports, functions, ... from RAN_ConnHdlr */ +type component MSC_ConnHdlr extends RAN_ConnHdlr, RSL_DchanHdlr, MGCP_ConnHdlr { /* SCCP Connecction Identifier for the underlying SCCP connection */ var integer g_sccp_conn_id; - /* procedure port back to our parent (BSSMAP_Emulation_CT) for control */ - port BSSMAPEM_PROC_PT BSSMAPEM; + /* procedure port back to our parent (RAN_Emulation_CT) for control */ + port RAN_PROC_PT RAN; port TELNETasp_PT BSCVTY; var MediaState g_media; @@ -357,10 +357,10 @@ function f_MscConnHdlr_init(integer i, HostName bts, HostName mgw, BSSMAP_FIELD_ } } -/* Callback function from general BSSMAP_Emulation whenever a connectionless +/* Callback function from general RAN_Emulation whenever a connectionless * BSSMAP message arrives. Can retunr a PDU_BSSAP that should be sent in return */ private function UnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP { +runs on RAN_Emulation_CT return template PDU_BSSAP { var template PDU_BSSAP resp := omit; /* answer all RESET with a RESET ACK */ @@ -371,8 +371,8 @@ runs on BSSMAP_Emulation_CT return template PDU_BSSAP { return resp; } -const BssmapOps MSC_BssmapOps := { - create_cb := refers(BSSMAP_Emulation.ExpectedCreateCallback), +const RanOps MSC_RanOps := { + create_cb := refers(RAN_Emulation.ExpectedCreateCallback), unitdata_cb := refers(UnitdataCallback), decode_dtap := false, role_ms := false, @@ -387,8 +387,8 @@ const MGCPOps MSC_MGCPOps := { /* register an expect with the BSSMAP core */ private function f_create_bssmap_exp(octetstring l3_enc) runs on MSC_ConnHdlr { - BSSMAPEM.call(BSSMAPEM_register:{l3_enc, self}) { - [] BSSMAPEM.getreply(BSSMAPEM_register:{?, ?}) {}; + RAN.call(RAN_register:{l3_enc, self}) { + [] RAN.getreply(RAN_register:{?, ?}) {}; } } diff --git a/bsc/gen_links.sh b/bsc/gen_links.sh index bf10761f8..d8393c325 100755 --- a/bsc/gen_links.sh +++ b/bsc/gen_links.sh @@ -67,7 +67,7 @@ FILES="TELNETasp_PT.cc TELNETasp_PT.hh TELNETasp_PortType.ttcn" gen_links $DIR $FILES DIR=../library -FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn BSSMAP_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn BSSAP_Adapter.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn SCCP_Templates.ttcn IPA_Testing.ttcn" +FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn GSM_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp L3_Templates.ttcn BSSMAP_Templates.ttcn RAN_Emulation.ttcn RLCMAC_CSN1_Types.ttcn GSM_RR_Types.ttcn RSL_Types.ttcn RSL_Emulation.ttcn MGCP_Emulation.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_CodecPort_CtrlFunctDef.cc BSSAP_CodecPort.ttcn RAN_Adapter.ttcn Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunct.ttcn RTP_CodecPort_CtrlFunctDef.cc RTP_Emulation.ttcn IuUP_Types.ttcn IuUP_EncDec.cc IuUP_Emulation.ttcn SCCP_Templates.ttcn IPA_Testing.ttcn" gen_links $DIR $FILES ignore_pp_results diff --git a/library/BSSAP_Adapter.ttcn b/library/RAN_Adapter.ttcn similarity index 77% rename from library/BSSAP_Adapter.ttcn rename to library/RAN_Adapter.ttcn index cebdffef0..294f747bb 100644 --- a/library/BSSAP_Adapter.ttcn +++ b/library/RAN_Adapter.ttcn @@ -1,14 +1,13 @@ -module BSSAP_Adapter { +module RAN_Adapter { -/* This module implements a 'dumb' BSSAP adapter. It creates the M3UA and SCCP components and stacks a BSSAP - * codec port on top. As a result, it provides the ability to transceive SCCP-User-SAP primitives with - * deoded BSSAP payload. Use this if you want to have full control about what you transmit or receive, - * without any automatisms in place. Allows you to refuse connections or other abnormal behavior. */ +/* This module implements a 'dumb' RAN adapter. It creates the M3UA and SCCP components and stacks a + * BSSAP/RANAP codec port on top. As a result, it provides the ability to transceive SCCP-User-SAP primitives + * with deoded BSSAP/RANAP payload. Use this if you want to have full control about what you transmit or + * receive, without any automatisms in place. Allows you to refuse connections or other abnormal behavior. */ import from General_Types all; import from Osmocom_Types all; -import from M3UA_Types all; import from M3UA_Emulation all; import from MTP3asp_Types all; import from MTP3asp_PortType all; @@ -23,11 +22,10 @@ import from SCCP_Templates all; import from SCTPasp_Types all; import from SCTPasp_PortType all; -import from BSSAP_CodecPort all; import from BSSMAP_Templates all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; -type record BSSAP_Adapter { +type record RAN_Adapter { /* component references */ M3UA_CT vc_M3UA, /* only in 3GPP AoIP */ IPA_Emulation_CT vc_IPA, /* only in SCCPlite */ @@ -39,17 +37,17 @@ type record BSSAP_Adapter { SCCP_PAR_Address sccp_addr_peer, /* handler mode */ - BSSMAP_Emulation_CT vc_BSSMAP + RAN_Emulation_CT vc_RAN } -type enumerated BSSAP_Transport { +type enumerated RAN_Transport { BSSAP_TRANSPORT_AoIP, /* 3GPP AoIP: SCCP over M3UA over SCTP */ BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */ BSSAP_TRANSPORT_SCCPlite_CLIENT /* SCCPlite: SCCP over IPA over TCP */ }; -type record BSSAP_Configuration { - BSSAP_Transport transport, +type record RAN_Configuration { + RAN_Transport transport, charstring sccp_service_type, SCTP_Association_Address sctp_addr, integer own_pc, @@ -60,7 +58,7 @@ type record BSSAP_Configuration { integer rctx }; -private function init_pars(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg) { +private function init_pars(inout RAN_Adapter ba, in RAN_Configuration cfg) { ba.sccp_pars := { sio := { ni := substr(oct2bit(cfg.sio),0,2), @@ -78,8 +76,8 @@ private function init_pars(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg) { } -function f_bssap_init(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg, charstring id, - template BssmapOps ops) { +function f_bssap_init(inout RAN_Adapter ba, in RAN_Configuration cfg, charstring id, + template RanOps ops) { init_pars(ba, cfg); ops.sccp_addr_local := ba.sccp_addr_own; ops.sccp_addr_peer := ba.sccp_addr_peer; @@ -87,7 +85,7 @@ function f_bssap_init(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg, charst /* create components */ ba.vc_SCCP := SCCP_CT.create(id & "-SCCP"); if (isvalue(ops)) { - ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP"); + ba.vc_RAN := RAN_Emulation_CT.create(id & "-RAN"); } select (cfg.transport) { case (BSSAP_TRANSPORT_AoIP) { @@ -131,7 +129,7 @@ function f_bssap_init(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg, charst disconnect(ba.vc_IPA:IPA_SP_PORT, ba.vc_WAIT:IPA_SP_PORT); } case else { - setverdict(fail, "Unsuppored BSSAP_Transport"); + setverdict(fail, "Unsuppored RAN_Transport"); mtc.stop; } } @@ -142,20 +140,20 @@ function f_bssap_init(inout BSSAP_Adapter ba, in BSSAP_Configuration cfg, charst //T.timeout; log("Connecting BSSMAP Emulation to SCCP_SP_PORT and starting emulation"); /* connect BSSNAP component to upper side of SCCP */ - connect(ba.vc_BSSMAP:BSSAP, ba.vc_SCCP:SCCP_SP_PORT); + connect(ba.vc_RAN:BSSAP, ba.vc_SCCP:SCCP_SP_PORT); if (cfg.transport == BSSAP_TRANSPORT_SCCPlite_SERVER or cfg.transport == BSSAP_TRANSPORT_SCCPlite_CLIENT) { /* connect IPA MGCP port with BSSMAP MGCP port */ - connect(ba.vc_IPA:IPA_MGCP_PORT, ba.vc_BSSMAP:MGCP); + connect(ba.vc_IPA:IPA_MGCP_PORT, ba.vc_RAN:MGCP); } /* start the BSSMAP emulation */ - ba.vc_BSSMAP.start(BSSMAP_Emulation.main(valueof(ops), "")); + ba.vc_RAN.start(RAN_Emulation.main(valueof(ops), "")); } } -function f_bssap_start(inout BSSAP_Adapter ba) { +function f_bssap_start(inout RAN_Adapter ba) { ba.vc_SCCP.start(SCCPStart(ba.sccp_pars)); } diff --git a/library/BSSMAP_Emulation.ttcn b/library/RAN_Emulation.ttcn similarity index 82% rename from library/BSSMAP_Emulation.ttcn rename to library/RAN_Emulation.ttcn index 3816ed7ff..72e2733fc 100644 --- a/library/BSSMAP_Emulation.ttcn +++ b/library/RAN_Emulation.ttcn @@ -1,16 +1,16 @@ -module BSSMAP_Emulation { +module RAN_Emulation { -/* BSSMAP Emulation, runs on top of BSSAP_CodecPort. It multiplexes/demultiplexes +/* RAN Emulation, runs on top of BSSAP_CodecPort. It multiplexes/demultiplexes * the individual connections, so there can be separate TTCN-3 components handling * each of the connections. * - * The BSSMAP_Emulation.main() function processes SCCP primitives from the SCCP + * The RAN_Emulation.main() function processes SCCP primitives from the SCCP * stack via the BSSAP_CodecPort, and dispatches them to the per-connection components. * * Outbound BSSAP/SCCP connections are initiated by sending a BSSAP_Conn_Req primitive - * to the component running the BSSMAP_Emulation.main() function. + * to the component running the RAN_Emulation.main() function. * - * For each new inbound connections, the BssmapOps.create_cb() is called. It can create + * For each new inbound connections, the RanOps.create_cb() is called. It can create * or resolve a TTCN-3 component, and returns a component reference to which that inbound * connection is routed/dispatched. * @@ -19,7 +19,7 @@ module BSSMAP_Emulation { * if you are simulating BTS + MSC, and first trigger a connection from BTS/RSL side in a * component which then subsequently should also handle the MSC emulation. * - * Inbound Unit Data messages (such as are dispatched to the BssmapOps.unitdata_cb() callback, + * Inbound Unit Data messages (such as are dispatched to the RanOps.unitdata_cb() callback, * which is registered with an argument to the main() function below. * * (C) 2017-2018 by Harald Welte @@ -44,15 +44,15 @@ import from MobileL3_Types all; /* General "base class" component definition, of which specific implementations * derive themselves by means of the "extends" feature */ -type component BSSAP_ConnHdlr { +type component RAN_ConnHdlr { /* port towards MSC Emulator core / SCCP connection dispatchar */ - port BSSAP_Conn_PT BSSAP; + port RAN_Conn_PT BSSAP; /* procedure based port to register for incoming connections */ - port BSSMAPEM_PROC_PT BSSAP_PROC; + port RAN_PROC_PT BSSAP_PROC; } /* Auxiliary primitive that can happen on the port between per-connection client and this dispatcher */ -type enumerated BSSAP_Conn_Prim { +type enumerated RAN_Conn_Prim { /* SCCP tell us that connection was released */ MSC_CONN_PRIM_DISC_IND, /* we tell SCCP to release connection */ @@ -110,11 +110,11 @@ template BSSAP_Conn_Req ts_BSSAP_Conn_Req(SCCP_PAR_Address peer, SCCP_PAR_Addres /* port between individual per-connection components and this dispatcher */ -type port BSSAP_Conn_PT message { +type port RAN_Conn_PT message { /* BSSAP or direct DTAP messages from/to clients */ inout PDU_BSSAP, PDU_DTAP_MO, PDU_DTAP_MT, /* misc indications / requests between SCCP and client */ - BSSAP_Conn_Prim, + RAN_Conn_Prim, /* Client requests us to create SCCP Connection */ BSSAP_Conn_Req, /* MGCP, only used for IPA SCCPlite (MGCP in IPA mux) */ @@ -125,7 +125,7 @@ type port BSSAP_Conn_PT message { /* represents a single BSSAP connection over SCCP */ type record ConnectionData { /* reference to the instance of the per-connection component */ - BSSAP_ConnHdlr comp_ref, + RAN_ConnHdlr comp_ref, integer sccp_conn_id, /* most recent MGCP transaction ID (Used on MSC side) */ MgcpTransId mgcp_trans_id optional, @@ -136,16 +136,16 @@ type record ConnectionData { } type record ImsiMapping { - BSSAP_ConnHdlr comp_ref, + RAN_ConnHdlr comp_ref, hexstring imsi optional, OCT4 tmsi } -type component BSSMAP_Emulation_CT { +type component RAN_Emulation_CT { /* SCCP port on the bottom side, using ASP primitives */ port BSSAP_CODEC_PT BSSAP; /* BSSAP port to the per-connection clients */ - port BSSAP_Conn_PT CLIENT; + port RAN_Conn_PT CLIENT; /* MGCP port */ port IPA_MGCP_PT MGCP; @@ -159,15 +159,15 @@ type component BSSMAP_Emulation_CT { var ImsiMapping ImsiTable[16]; /* procedure based port to register for incoming connections */ - port BSSMAPEM_PROC_PT PROC; + port RAN_PROC_PT PROC; - var charstring g_bssmap_id; + var charstring g_ran_id; var integer g_next_e1_ts := 1; - var BssmapOps g_bssmap_ops; + var RanOps g_ran_ops; }; private function f_conn_id_known(integer sccp_conn_id) -runs on BSSMAP_Emulation_CT return boolean { +runs on RAN_Emulation_CT return boolean { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].sccp_conn_id == sccp_conn_id){ @@ -177,8 +177,8 @@ runs on BSSMAP_Emulation_CT return boolean { return false; } -private function f_comp_known(BSSAP_ConnHdlr client) -runs on BSSMAP_Emulation_CT return boolean { +private function f_comp_known(RAN_ConnHdlr client) +runs on RAN_Emulation_CT return boolean { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].comp_ref == client) { @@ -189,7 +189,7 @@ runs on BSSMAP_Emulation_CT return boolean { } private function f_cic_known(integer cic) -runs on BSSMAP_Emulation_CT return boolean { +runs on RAN_Emulation_CT return boolean { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].cic == cic) { @@ -201,32 +201,32 @@ runs on BSSMAP_Emulation_CT return boolean { /* resolve component reference by connection ID */ private function f_comp_by_conn_id(integer sccp_conn_id) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].sccp_conn_id == sccp_conn_id) { return ConnectionTable[i].comp_ref; } } - setverdict(fail, "BSSMAP Connection table not found by SCCP Connection ID ", sccp_conn_id); + setverdict(fail, "RAN Connection table not found by SCCP Connection ID ", sccp_conn_id); mtc.stop; } /* resolve component reference by CIC */ private function f_comp_by_mgcp_tid(MgcpTransId tid) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].mgcp_trans_id == tid) { return ConnectionTable[i].comp_ref; } } - setverdict(fail, "BSSMAP Connection table not found by MGCP Transaction ID ", tid); + setverdict(fail, "RAN Connection table not found by MGCP Transaction ID ", tid); mtc.stop; } -private function f_comp_store_mgcp_tid(BSSAP_ConnHdlr client, MgcpTransId tid) -runs on BSSMAP_Emulation_CT { +private function f_comp_store_mgcp_tid(RAN_ConnHdlr client, MgcpTransId tid) +runs on RAN_Emulation_CT { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].comp_ref == client) { @@ -234,24 +234,24 @@ runs on BSSMAP_Emulation_CT { return; } } - setverdict(fail, "BSSMAP Connection table not found by component ", client); + setverdict(fail, "RAN Connection table not found by component ", client); mtc.stop; } private function f_comp_by_cic(integer cic) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].cic == cic) { return ConnectionTable[i].comp_ref; } } - setverdict(fail, "BSSMAP Connection table not found by CIC ", cic); + setverdict(fail, "RAN Connection table not found by CIC ", cic); mtc.stop; } -private function f_comp_store_cic(BSSAP_ConnHdlr client, integer cic) -runs on BSSMAP_Emulation_CT { +private function f_comp_store_cic(RAN_ConnHdlr client, integer cic) +runs on RAN_Emulation_CT { var integer i; for (i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].comp_ref == client) { @@ -259,36 +259,36 @@ runs on BSSMAP_Emulation_CT { return; } } - setverdict(fail, "BSSMAP Connection table not found by component ", client); + setverdict(fail, "RAN Connection table not found by component ", client); mtc.stop; } /* resolve connection ID by component reference */ -private function f_conn_id_by_comp(BSSAP_ConnHdlr client) -runs on BSSMAP_Emulation_CT return integer { +private function f_conn_id_by_comp(RAN_ConnHdlr client) +runs on RAN_Emulation_CT return integer { for (var integer i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].comp_ref == client) { return ConnectionTable[i].sccp_conn_id; } } - setverdict(fail, "BSSMAP Connection table not found by component ", client); + setverdict(fail, "RAN Connection table not found by component ", client); mtc.stop; } /* resolve ConnectionTable index component reference */ -private function f_idx_by_comp(BSSAP_ConnHdlr client) -runs on BSSMAP_Emulation_CT return integer { +private function f_idx_by_comp(RAN_ConnHdlr client) +runs on RAN_Emulation_CT return integer { for (var integer i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].comp_ref == client) { return i; } } - setverdict(fail, "BSSMAP Connection table not found by component ", client); + setverdict(fail, "RAN Connection table not found by component ", client); mtc.stop; } private function f_gen_conn_id() -runs on BSSMAP_Emulation_CT return integer { +runs on RAN_Emulation_CT return integer { var integer conn_id; do { @@ -299,7 +299,7 @@ runs on BSSMAP_Emulation_CT return integer { } private function f_conn_table_init() -runs on BSSMAP_Emulation_CT { +runs on RAN_Emulation_CT { for (var integer i := 0; i < sizeof(ConnectionTable); i := i+1) { ConnectionTable[i].comp_ref := null; ConnectionTable[i].sccp_conn_id := -1; @@ -314,8 +314,8 @@ runs on BSSMAP_Emulation_CT { } } -private function f_conn_table_add(BSSAP_ConnHdlr comp_ref, integer sccp_conn_id) -runs on BSSMAP_Emulation_CT { +private function f_conn_table_add(RAN_ConnHdlr comp_ref, integer sccp_conn_id) +runs on RAN_Emulation_CT { for (var integer i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].sccp_conn_id == -1) { ConnectionTable[i].comp_ref := comp_ref; @@ -325,11 +325,11 @@ runs on BSSMAP_Emulation_CT { return; } } - testcase.stop("BSSMAP Connection table full!"); + testcase.stop("RAN Connection table full!"); } private function f_conn_table_del(integer sccp_conn_id) -runs on BSSMAP_Emulation_CT { +runs on RAN_Emulation_CT { for (var integer i := 0; i < sizeof(ConnectionTable); i := i+1) { if (ConnectionTable[i].sccp_conn_id == sccp_conn_id) { log("Deleted conn table entry ", i, @@ -339,12 +339,12 @@ runs on BSSMAP_Emulation_CT { return } } - setverdict(fail, "BSSMAP Connection table attempt to delete non-existant ", sccp_conn_id); + setverdict(fail, "RAN Connection table attempt to delete non-existant ", sccp_conn_id); mtc.stop; } private function f_imsi_table_find(hexstring imsi, template OCT4 tmsi) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { +runs on RAN_Emulation_CT return RAN_ConnHdlr { for (var integer i := 0; i < sizeof(ImsiTable); i := i+1) { if (ImsiTable[i].imsi == imsi or isvalue(tmsi) and match(ImsiTable[i].tmsi, tmsi)) { @@ -355,8 +355,8 @@ runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { } /* handle (optional) userData portion of various primitives and dispatch it to the client */ -private function f_handle_userData(BSSAP_ConnHdlr client, PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT { +private function f_handle_userData(RAN_ConnHdlr client, PDU_BSSAP bssap) +runs on RAN_Emulation_CT { /* decode + send decoded BSSAP to client */ if (ischosen(bssap.pdu.bssmap)) { @@ -370,8 +370,8 @@ runs on BSSMAP_Emulation_CT { } } - if (ischosen(bssap.pdu.dtap) and g_bssmap_ops.decode_dtap) { - if (g_bssmap_ops.role_ms) { + if (ischosen(bssap.pdu.dtap) and g_ran_ops.decode_dtap) { + if (g_ran_ops.role_ms) { /* we are the MS, so any message to us must be MT */ var PDU_DTAP_MT mt := { dlci := bssap.dlci, @@ -394,16 +394,16 @@ runs on BSSMAP_Emulation_CT { /* call-back type, to be provided by specific implementation; called when new SCCP connection * arrives */ type function BssmapCreateCallback(BSSAP_N_CONNECT_ind conn_ind, charstring id) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr; +runs on RAN_Emulation_CT return RAN_ConnHdlr; type function BssmapUnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP; +runs on RAN_Emulation_CT return template PDU_BSSAP; /* handle common Unitdata such as Paging */ private function CommonBssmapUnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP { +runs on RAN_Emulation_CT return template PDU_BSSAP { if (match(bssap, tr_BSSMAP_Paging)) { - var BSSAP_ConnHdlr client := null; + var RAN_ConnHdlr client := null; client := f_imsi_table_find(bssap.pdu.bssmap.paging.iMSI.digits, bssap.pdu.bssmap.paging.tMSI.tmsiOctets); if (client != null) { @@ -417,10 +417,10 @@ runs on BSSMAP_Emulation_CT return template PDU_BSSAP { log("CommonBssmapUnitdataCallback: Not a paging message"); } /* ELSE: handle in user callback */ - return g_bssmap_ops.unitdata_cb.apply(bssap); + return g_ran_ops.unitdata_cb.apply(bssap); } -type record BssmapOps { +type record RanOps { BssmapCreateCallback create_cb, BssmapUnitdataCallback unitdata_cb, boolean decode_dtap, @@ -472,7 +472,7 @@ private function f_bssap_l3_is_rr(PDU_BSSAP bssap) return boolean { return false; } -private altstep as_reset_ack() runs on BSSMAP_Emulation_CT { +private altstep as_reset_ack() runs on RAN_Emulation_CT { var BSSAP_N_UNITDATA_ind ud_ind; [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind { log("Respoding to inbound RESET with RESET-ACK"); @@ -483,7 +483,7 @@ private altstep as_reset_ack() runs on BSSMAP_Emulation_CT { } -private function f_bssap_wait_for_reset() runs on BSSMAP_Emulation_CT { +private function f_bssap_wait_for_reset() runs on RAN_Emulation_CT { var BSSAP_N_UNITDATA_ind ud_ind; timer T := 20.0; @@ -504,7 +504,7 @@ private function f_bssap_wait_for_reset() runs on BSSMAP_Emulation_CT { } } -function f_bssap_reset(SCCP_PAR_Address peer, SCCP_PAR_Address own) runs on BSSMAP_Emulation_CT { +function f_bssap_reset(SCCP_PAR_Address peer, SCCP_PAR_Address own) runs on RAN_Emulation_CT { timer T := 5.0; BSSAP.send(ts_BSSAP_UNITDATA_req(peer, own, ts_BSSMAP_Reset(0))); @@ -522,10 +522,10 @@ function f_bssap_reset(SCCP_PAR_Address peer, SCCP_PAR_Address own) runs on BSSM } } -function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { +function main(RanOps ops, charstring id) runs on RAN_Emulation_CT { - g_bssmap_id := id; - g_bssmap_ops := ops; + g_ran_id := id; + g_ran_ops := ops; f_conn_table_init(); f_expect_table_init(); @@ -541,13 +541,13 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { var BSSAP_N_DATA_ind data_ind; var BSSAP_N_DISCONNECT_ind disc_ind; var BSSAP_Conn_Req creq; - var BSSAP_ConnHdlr vc_conn; + var RAN_ConnHdlr vc_conn; var PDU_BSSAP bssap; var PDU_DTAP_MO dtap_mo; var PDU_DTAP_MT dtap_mt; var MgcpCommand mgcp_req; var MgcpResponse mgcp_resp; - var BSSAP_ConnHdlr vc_hdlr; + var RAN_ConnHdlr vc_hdlr; var octetstring l3_info; var hexstring imsi; var OCT4 tmsi; @@ -590,7 +590,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { f_handle_userData(vc_conn, disc_ind.userData); } /* notify client about termination */ - var BSSAP_Conn_Prim prim := MSC_CONN_PRIM_DISC_IND; + var RAN_Conn_Prim prim := MSC_CONN_PRIM_DISC_IND; CLIENT.send(prim) to vc_conn; f_conn_table_del(disc_ind.connectionId); /* TOOD: return confirm to other side? */ @@ -599,7 +599,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { /* SCCP -> Client: connection confirm for outbound connection */ [] BSSAP.receive(BSSAP_N_CONNECT_cfm:?) -> value conn_cfm { vc_conn := f_comp_by_conn_id(conn_cfm.connectionId); - var BSSAP_Conn_Prim prim := MSC_CONN_PRIM_CONF_IND; + var RAN_Conn_Prim prim := MSC_CONN_PRIM_CONF_IND; CLIENT.send(prim) to vc_conn; /* handle user payload */ if (ispresent(conn_cfm.userData)) { @@ -608,7 +608,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { } /* Disconnect request client -> SCCP */ - [] CLIENT.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ) -> sender vc_conn { + [] CLIENT.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ) -> sender vc_conn { var integer conn_id := f_conn_id_by_comp(vc_conn); BSSAP.send(ts_BSSAP_DISC_req(conn_id, 0)); f_conn_table_del(conn_id); @@ -636,7 +636,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { /* InitialL3 contains RR (PAG RESP) or MM (CM SRV REQ), we must increment * counter only on MM/CC/SS, but not on RR */ - if (g_bssmap_ops.role_ms and not f_bssap_l3_is_rr(creq.bssap)) { + if (g_ran_ops.role_ms and not f_bssap_l3_is_rr(creq.bssap)) { /* we have just sent the first MM message, increment the counter */ var integer idx := f_idx_by_comp(vc_conn); ConnectionTable[idx].n_sd[0] := 1; @@ -651,7 +651,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { BSSAP.send(ts_BSSAP_DATA_req(conn_id, bssap)); } - [g_bssmap_ops.role_ms] CLIENT.receive(PDU_DTAP_MO:?) -> value dtap_mo sender vc_conn { + [g_ran_ops.role_ms] CLIENT.receive(PDU_DTAP_MO:?) -> value dtap_mo sender vc_conn { var integer idx := f_idx_by_comp(vc_conn); /* convert from decoded DTAP to encoded DTAP */ var octetstring l3_enc := enc_PDU_ML3_MS_NW(dtap_mo.dtap); @@ -663,7 +663,7 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { BSSAP.send(ts_BSSAP_DATA_req(ConnectionTable[idx].sccp_conn_id, bssap)); } - [not g_bssmap_ops.role_ms] CLIENT.receive(PDU_DTAP_MT:?) -> value dtap_mt sender vc_conn { + [not g_ran_ops.role_ms] CLIENT.receive(PDU_DTAP_MT:?) -> value dtap_mt sender vc_conn { var integer conn_id := f_conn_id_by_comp(vc_conn); /* convert from decoded DTAP to encoded DTAP */ var octetstring l3_enc := enc_PDU_ML3_NW_MS(dtap_mt.dtap); @@ -712,14 +712,14 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { } - [] PROC.getcall(BSSMAPEM_register:{?,?}) -> param(l3_info, vc_hdlr) { + [] PROC.getcall(RAN_register:{?,?}) -> param(l3_info, vc_hdlr) { f_create_expect(l3_info, vc_hdlr); - PROC.reply(BSSMAPEM_register:{l3_info, vc_hdlr}) to vc_hdlr; + PROC.reply(RAN_register:{l3_info, vc_hdlr}) to vc_hdlr; } - [] PROC.getcall(BSSMAPEM_register_imsi:{?,?,?}) -> param(imsi, tmsi, vc_hdlr) { + [] PROC.getcall(RAN_register_imsi:{?,?,?}) -> param(imsi, tmsi, vc_hdlr) { f_create_imsi(imsi, tmsi, vc_hdlr); - PROC.reply(BSSMAPEM_register_imsi:{imsi, tmsi, vc_hdlr}) to vc_hdlr; + PROC.reply(RAN_register_imsi:{imsi, tmsi, vc_hdlr}) to vc_hdlr; } @@ -742,23 +742,23 @@ type record ExpectData { /* L3 payload based on which we can match it */ octetstring l3_payload optional, /* component reference for this connection */ - BSSAP_ConnHdlr vc_conn + RAN_ConnHdlr vc_conn } /* procedure based port to register for incoming connections */ -signature BSSMAPEM_register(in octetstring l3, in BSSAP_ConnHdlr hdlr); +signature RAN_register(in octetstring l3, in RAN_ConnHdlr hdlr); /* procedure based port to register for incoming IMSI/TMSI */ -signature BSSMAPEM_register_imsi(in hexstring imsi, in OCT4 tmsi, in BSSAP_ConnHdlr hdlr); +signature RAN_register_imsi(in hexstring imsi, in OCT4 tmsi, in RAN_ConnHdlr hdlr); -type port BSSMAPEM_PROC_PT procedure { - inout BSSMAPEM_register, BSSMAPEM_register_imsi; +type port RAN_PROC_PT procedure { + inout RAN_register, RAN_register_imsi; } with { extension "internal" }; /* CreateCallback that can be used as create_cb and will use the expectation table */ function ExpectedCreateCallback(BSSAP_N_CONNECT_ind conn_ind, charstring id) -runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { - var BSSAP_ConnHdlr ret := null; +runs on RAN_Emulation_CT return RAN_ConnHdlr { + var RAN_ConnHdlr ret := null; var octetstring l3_info; var integer i; @@ -788,8 +788,8 @@ runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { return ret; } -private function f_create_expect(octetstring l3, BSSAP_ConnHdlr hdlr) -runs on BSSMAP_Emulation_CT { +private function f_create_expect(octetstring l3, RAN_ConnHdlr hdlr) +runs on RAN_Emulation_CT { var integer i; for (i := 0; i < sizeof(ExpectTable); i := i+1) { if (not ispresent(ExpectTable[i].l3_payload)) { @@ -802,8 +802,8 @@ runs on BSSMAP_Emulation_CT { testcase.stop("No space left in ExpectTable"); } -private function f_create_imsi(hexstring imsi, OCT4 tmsi, BSSAP_ConnHdlr hdlr) -runs on BSSMAP_Emulation_CT { +private function f_create_imsi(hexstring imsi, OCT4 tmsi, RAN_ConnHdlr hdlr) +runs on RAN_Emulation_CT { for (var integer i := 0; i < sizeof(ImsiTable); i := i+1) { if (not ispresent(ImsiTable[i].imsi)) { ImsiTable[i].imsi := imsi; @@ -818,17 +818,17 @@ runs on BSSMAP_Emulation_CT { private function f_expect_table_init() -runs on BSSMAP_Emulation_CT { +runs on RAN_Emulation_CT { for (var integer i := 0; i < sizeof(ExpectTable); i := i+1) { ExpectTable[i].l3_payload := omit; } } /* helper function for clients to register their IMSI/TMSI */ -function f_bssmap_register_imsi(hexstring imsi, OCT4 tmsi) -runs on BSSAP_ConnHdlr { - BSSAP_PROC.call(BSSMAPEM_register_imsi:{imsi, tmsi, self}) { - [] BSSAP_PROC.getreply(BSSMAPEM_register_imsi:{?,?,?}) {}; +function f_ran_register_imsi(hexstring imsi, OCT4 tmsi) +runs on RAN_ConnHdlr { + BSSAP_PROC.call(RAN_register_imsi:{imsi, tmsi, self}) { + [] BSSAP_PROC.getreply(RAN_register_imsi:{?,?,?}) {}; } } diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 0b2344f16..0eace3681 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -7,7 +7,7 @@ import from GSM_Types all; import from IPL4asp_Types all; import from SCCPasp_Types all; import from BSSAP_Types all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSSMAP_Templates all; import from GSUP_Types all; @@ -42,7 +42,7 @@ import from Osmocom_VTY_Functions all; import from SGsAP_Emulation all; /* this component represents a single subscriber connection */ -type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr, CTRL_Adapter_CT, SGsAP_ConnHdlr { +type component BSC_ConnHdlr extends RAN_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr, SMPP_ConnHdlr, CTRL_Adapter_CT, SGsAP_ConnHdlr { var BSC_ConnHdlrPars g_pars; timer g_Tguard := 60.0; port TELNETasp_PT MSCVTY; @@ -155,10 +155,10 @@ function f_init_handler(BSC_ConnHdlrPars pars, float t_guard := 60.0) runs on BS } -/* Callback function from general BSSMAP_Emulation whenever a connectionless +/* Callback function from general RAN_Emulation whenever a connectionless * BSSMAP message arrives. Canreturn a PDU_BSSAPthat should be sent in return */ private function BscUnitdataCallback(PDU_BSSAP bssap) -runs on BSSMAP_Emulation_CT return template PDU_BSSAP { +runs on RAN_Emulation_CT return template PDU_BSSAP { var template PDU_BSSAP resp := omit; log("BSSMAP_BscUnitdataCallback"); @@ -172,9 +172,9 @@ runs on BSSMAP_Emulation_CT return template PDU_BSSAP { return resp; } -const BssmapOps BSC_BssmapOps := { +const RanOps BSC_RanOps := { /* Create call-back for inbound connections from MSC (hand-over) */ - create_cb := refers(BSSMAP_Emulation.ExpectedCreateCallback), + create_cb := refers(RAN_Emulation.ExpectedCreateCallback), unitdata_cb := refers(BscUnitdataCallback), decode_dtap := true, role_ms := true, @@ -196,7 +196,7 @@ const MnccOps BCC_MnccOps := { -/* Encode 'l3' and ask BSSMAP_Emulation to create new connection with COMPL L3 INFO */ +/* Encode 'l3' and ask RAN_Emulation to create new connection with COMPL L3 INFO */ function f_bssap_compl_l3(PDU_ML3_MS_NW l3) runs on BSC_ConnHdlr { log("Sending COMPL L3: ", l3); @@ -204,8 +204,8 @@ runs on BSC_ConnHdlr { BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, l3_enc)))); alt { - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {} - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {} + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { setverdict(fail, "DISC.ind from SCCP"); mtc.stop; } @@ -386,12 +386,12 @@ runs on BSC_ConnHdlr { /* FIXME: there could be pending SMS or other common procedures by the MSC, let's ignore them */ BSSAP.receive(tr_BSSMAP_ClearCommand); BSSAP.send(ts_BSSMAP_ClearComplete); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND); setverdict(pass); } function f_foo() runs on BSC_ConnHdlr{ - /* SCCP CC handled by BSSMAP_Emulation_CT.main() */ + /* SCCP CC handled by RAN_Emulation_CT.main() */ /* Expect auth, if enabled */ /* TODO: ISD */ @@ -484,7 +484,7 @@ runs on BSC_ConnHdlr { var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); f_establish_fully(EST_TYPE_PAG_RESP); @@ -560,7 +560,7 @@ runs on BSC_ConnHdlr { f_mt_call_initate(cpars); /* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */ - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); /* Complete the call via BSSAP */ @@ -690,7 +690,7 @@ runs on BSC_ConnHdlr { interleave { [] BSSAP.receive(t_clear) { BSSAP.send(ts_BSSMAP_ClearComplete); - BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND); + BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND); } [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd { if (respond_to_dlcx) { @@ -790,7 +790,7 @@ altstep as_clear_cmd_compl_disc(float t := 5.0) runs on BSC_ConnHdlr { [] BSSAP.receive(tr_BSSMAP_ClearCommand) { BSSAP.send(ts_BSSMAP_ClearComplete); alt { - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { setverdict(pass); } [] BSSAP.receive { diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index df088bccd..a9eb3168d 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -36,10 +36,10 @@ import from GSUP_Types all; import from IPA_Emulation all; import from BSSAP_Types all; -import from BSSAP_Adapter all; +import from RAN_Adapter all; import from BSSAP_CodecPort all; import from BSSMAP_Templates all; -import from BSSMAP_Emulation all; +import from RAN_Emulation all; import from BSC_ConnectionHandler all; import from SGsAP_Templates all; @@ -66,7 +66,7 @@ import from DNS_Helpers all; import from TCCConversion_Functions all; const integer NUM_BSC := 2; -type record of BSSAP_Configuration BSSAP_Configurations; +type record of RAN_Configuration RAN_Configurations; /* Needed for SGsAP SMS */ import from MobileL3_SMS_Types all; @@ -74,7 +74,7 @@ import from MobileL3_SMS_Types all; type component MTC_CT extends CTRL_Adapter_CT { var boolean g_initialized := false; - var BSSAP_Adapter g_bssap[NUM_BSC]; + var RAN_Adapter g_bssap[NUM_BSC]; /* no 'adapter_CT' for MNCC or GSUP */ var MNCC_Emulation_CT vc_MNCC; @@ -121,7 +121,7 @@ modulepar { charstring mp_mme_name := "mmec01.mmegi0001.mme.epc.mnc070.mcc901.3gppnetwork.org"; charstring mp_vlr_name := "vlr.example.net"; - BSSAP_Configurations mp_bssap_cfg := { + RAN_Configurations mp_bssap_cfg := { { sccp_service_type := "mtp3_itu", sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, @@ -277,7 +277,7 @@ function f_init(integer num_bsc := 1, boolean sgsap := false, boolean gsup := tr for (var integer i := 0; i < num_bsc; i := i + 1) { if (isbound(mp_bssap_cfg[i])) { - f_bssap_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_BssmapOps); + f_bssap_init(g_bssap[i], mp_bssap_cfg[i], "MSC_Test_" & int2str(i), BSC_RanOps); f_bssap_start(g_bssap[i]); } else { testcase.stop("missing BSSAP configuration"); @@ -522,8 +522,8 @@ function f_start_handler_with_pars(void_fn fn, BSC_ConnHdlrPars pars) runs on MT vc_conn := BSC_ConnHdlr.create(id); /* BSSMAP part / A interface */ - connect(vc_conn:BSSAP, g_bssap[0].vc_BSSMAP:CLIENT); - connect(vc_conn:BSSAP_PROC, g_bssap[0].vc_BSSMAP:PROC); + connect(vc_conn:BSSAP, g_bssap[0].vc_RAN:CLIENT); + connect(vc_conn:BSSAP_PROC, g_bssap[0].vc_RAN:PROC); /* MNCC part */ connect(vc_conn:MNCC, vc_MNCC:MNCC_CLIENT); connect(vc_conn:MNCC_PROC, vc_MNCC:MNCC_PROC); @@ -804,7 +804,7 @@ private function f_tc_lu_clear_request(charstring id, BSC_ConnHdlrPars pars) run mtc.stop; repeat; } - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); } @@ -834,7 +834,7 @@ private function f_tc_lu_disconnect(charstring id, BSC_ConnHdlrPars pars) runs o f_sleep(1.0); /* send clear request in the middle of the LU */ - BSSAP.send(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); + BSSAP.send(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ); setverdict(pass); f_sleep(1.0); } @@ -1197,10 +1197,10 @@ private function f_tc_cl3_no_payload(charstring id, BSC_ConnHdlrPars pars) runs timer T := 5.0; T.start; alt { - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} /* Expect LU REJECT with Cause == Illegal MS */ [] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; } - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; } + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; } [] as_clear_cmd_compl_disc(); [] T.timeout { setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release"); @@ -1236,9 +1236,9 @@ private function f_tc_cl3_rnd_payload(charstring id, BSC_ConnHdlrPars pars) runs T.start; alt { /* Immediate disconnect */ - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {} [] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; } - [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; } + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) { repeat; } [] as_clear_cmd_compl_disc(); [] T.timeout { setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release"); @@ -1435,7 +1435,7 @@ private function f_mt_call_start(inout CallParameters cpars) runs on BSC_ConnHdl } else { tmsi := 'FFFFFFFF'O; } - f_bssmap_register_imsi(g_pars.imsi, tmsi); + f_ran_register_imsi(g_pars.imsi, tmsi); /* Allocate call reference and send SETUP via MNCC to MSC */ cpars.mncc_callref := f_rnd_int(2147483648); @@ -2017,7 +2017,7 @@ private function f_tc_lu_and_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs o } else { tmsi := 'FFFFFFFF'O; } - f_bssmap_register_imsi(g_pars.imsi, tmsi); + f_ran_register_imsi(g_pars.imsi, tmsi); f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS"); @@ -2055,7 +2055,7 @@ private function f_tc_lu_and_mt_sms_paging_and_nothing(charstring id, BSC_ConnHd } else { tmsi := 'FFFFFFFF'O; } - f_bssmap_register_imsi(g_pars.imsi, tmsi); + f_ran_register_imsi(g_pars.imsi, tmsi); f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS"); @@ -2311,9 +2311,9 @@ runs on BSC_ConnHdlr { /* Register an 'expect' for given IMSI (+TMSI) */ if (isvalue(g_pars.tmsi)) { - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); } else { - f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O); + f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O); } var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES( @@ -2375,9 +2375,9 @@ runs on BSC_ConnHdlr { /* Register an 'expect' for given IMSI (+TMSI) */ if (isvalue(g_pars.tmsi)) { - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); } else { - f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O); + f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O); } var template GSUP_PDU mt_forwardSM_err := tr_GSUP_MT_FORWARD_SM_ERR( @@ -2441,9 +2441,9 @@ runs on BSC_ConnHdlr { /* Register an 'expect' for given IMSI (+TMSI) */ if (isvalue(g_pars.tmsi)) { - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); } else { - f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O); + f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O); } /* Submit the 1st MT SMS on GSUP */ @@ -2553,9 +2553,9 @@ runs on BSC_ConnHdlr { /* Register an 'expect' for given IMSI (+TMSI) */ if (isvalue(g_pars.tmsi)) { - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); } else { - f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O); + f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O); } /* Send CM Service Request for MO SMMA */ @@ -2656,9 +2656,9 @@ runs on BSC_ConnHdlr { /* Register an 'expect' for given IMSI (+TMSI) */ if (isvalue(g_pars.tmsi)) { - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); } else { - f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O); + f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O); } var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES( @@ -2813,7 +2813,7 @@ private function f_tc_smpp_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on } else { tmsi := 'FFFFFFFF'O; } - f_bssmap_register_imsi(g_pars.imsi, tmsi); + f_ran_register_imsi(g_pars.imsi, tmsi); var SmsParameters spars := valueof(t_SmsPars); /* TODO: test with more intelligent user data; test different coding schemes */ @@ -2964,7 +2964,7 @@ runs on BSC_ConnHdlr { /* Perform location update */ f_perform_lu(); - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); /* We need to inspect GSUP activity */ f_create_gsup_expect(hex2str(g_pars.imsi)); @@ -3577,7 +3577,7 @@ private function f_sgsap_bssmap_screening() runs on BSC_ConnHdlr { /* Trigger a paging request and expect the paging on BSSMAP, this is * to make sure that pagings are sent throught the A-Interface again * and not throught the SGs interface.*/ - f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi); + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); f_vty_transceive(MSCVTY, "subscriber imsi " & hex2str(g_pars.imsi) & " paging"); alt { diff --git a/msc/gen_links.sh b/msc/gen_links.sh index 117564e11..a29118a87 100755 --- a/msc/gen_links.sh +++ b/msc/gen_links.sh @@ -89,7 +89,7 @@ DIR=../library FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc " FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc GSUP_Types.ttcn GSUP_Emulation.ttcn " FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Common.ttcn " -FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " +FILES+="RAN_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn RAN_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn MGCP_CodecPort_CtrlFunct.ttcn MGCP_Emulation.ttcn " FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " FILES+="SMPP_CodecPort.ttcn SMPP_CodecPort_CtrlFunct.ttcn SMPP_CodecPort_CtrlFunctDef.cc SMPP_Emulation.ttcn SMPP_Templates.ttcn "