pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41488?usp=email )
Change subject: RAN_Emulation: Rename RAN_ConnHdlr.BSSAP* ports to RAN_CONN ......................................................................
RAN_Emulation: Rename RAN_ConnHdlr.BSSAP* ports to RAN_CONN
That port handles a lot more than BSSAP. Naming it BSSAP makes it really confusing for instance when using it to handle RANAP in the Iu stack.
Change-Id: I75dc5b8b6db912b2eb69311612dbbb0a454374c3 --- M bsc-nat/BSC_MS_ConnectionHandler.ttcn M bsc-nat/BSC_MS_Simulation.ttcn M bsc-nat/MSC_ConnectionHandler.ttcn M bsc-nat/MSC_Simulation.ttcn M hnbgw/ConnHdlr.ttcn M hnbgw/HNBGW_Tests.ttcn M library/RAN_Emulation.ttcnpp M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.ttcn M msc/MSC_Tests_ASCI.ttcn M msc/MSC_Tests_Iu.ttcn M sgsn/BSSGP_ConnHdlr.ttcn M sgsn/SGSN_Tests.ttcn M sgsn/SGSN_Tests_Iu.ttcn 14 files changed, 461 insertions(+), 461 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/88/41488/1
diff --git a/bsc-nat/BSC_MS_ConnectionHandler.ttcn b/bsc-nat/BSC_MS_ConnectionHandler.ttcn index 882caf8..96e4ab6 100644 --- a/bsc-nat/BSC_MS_ConnectionHandler.ttcn +++ b/bsc-nat/BSC_MS_ConnectionHandler.ttcn @@ -120,20 +120,20 @@ bssap := bssap } g_state := BSC_STATE_WAIT_ASS_REQ; - BSSAP.send(creq); + RAN_CONN.send(creq);
while (true) { alt { /* new SCCP-level connection indication from BSC */ - [g_state == BSC_STATE_WAIT_ASS_REQ] BSSAP.receive(tr_BSSMAP_AssignmentReq) -> value bssap { + [g_state == BSC_STATE_WAIT_ASS_REQ] RAN_CONN.receive(tr_BSSMAP_AssignmentReq) -> value bssap { /* FIXME: Read CIC */ /* respond with ASSIGNMENT COMPL */ g_state := BSC_STATE_WAIT_CRCX; - BSSAP.send(ts_BSSMAP_AssignmentComplete(bssap.pdu.bssmap.assignmentRequest.circuitIdentityCode)); + RAN_CONN.send(ts_BSSMAP_AssignmentComplete(bssap.pdu.bssmap.assignmentRequest.circuitIdentityCode)); }
/* CRCX -> OK */ - [g_state == BSC_STATE_WAIT_CRCX] BSSAP.receive(tr_CRCX) -> value mgcp_cmd { + [g_state == BSC_STATE_WAIT_CRCX] RAN_CONN.receive(tr_CRCX) -> value mgcp_cmd { /* FIXME: proper SDP parameters */ g_sdp := valueof(ts_SDP("127.0.0.1", "127.0.0.1", "foo", "21", 1000, { "98" }, { valueof(ts_SDP_rtpmap(98, "AMR/8000")), @@ -152,60 +152,60 @@ } else { mgcp_resp := ts_CRCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp); } - BSSAP.send(valueof(mgcp_resp)); + RAN_CONN.send(valueof(mgcp_resp)); }
/* MDCX -> OK */ - [g_state == BSC_STATE_WAIT_MDCX] BSSAP.receive(tr_MDCX) -> value mgcp_cmd { + [g_state == BSC_STATE_WAIT_MDCX] RAN_CONN.receive(tr_MDCX) -> value mgcp_cmd { /* FIXME: verify if local part of endpoint name matches CIC */ /* respond with MDCX_ACK */ g_state := BSC_STATE_WAIT_MDCX2; - BSSAP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp)); + RAN_CONN.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp)); }
/* MDCX -> OK */ - [g_state == BSC_STATE_WAIT_MDCX2] BSSAP.receive(tr_MDCX) -> value mgcp_cmd { + [g_state == BSC_STATE_WAIT_MDCX2] RAN_CONN.receive(tr_MDCX) -> value mgcp_cmd { /* FIXME: verify if local part of endpoint name matches CIC */ /* respond with MDCX_ACK */ g_state := BSC_STATE_WAIT_CLEAR_CMD; - BSSAP.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp)); + RAN_CONN.send(ts_MDCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id, g_sdp)); }
/* CLEAR COMMAND from MSC; respond with CLEAR COMPLETE) */ - [g_state == BSC_STATE_WAIT_CLEAR_CMD] BSSAP.receive(tr_BSSMAP_ClearCommand) -> value bssap { + [g_state == BSC_STATE_WAIT_CLEAR_CMD] RAN_CONN.receive(tr_BSSMAP_ClearCommand) -> value bssap { g_state := BSC_STATE_WAIT_DLCX; - BSSAP.send(ts_BSSMAP_ClearComplete); + RAN_CONN.send(ts_BSSMAP_ClearComplete); }
/* DLCX -> OK */ - [g_state == BSC_STATE_WAIT_DLCX] BSSAP.receive(tr_DLCX) -> value mgcp_cmd { + [g_state == BSC_STATE_WAIT_DLCX] RAN_CONN.receive(tr_DLCX) -> value mgcp_cmd { /* FIXME: verify if local part of endpoint name matches CIC */ g_state := BSC_STATE_WAIT_DISC_IND; - BSSAP.send(ts_DLCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id)); + RAN_CONN.send(ts_DLCX_ACK(mgcp_cmd.line.trans_id, g_mgcp_conn_id)); }
- [] BSSAP.receive(tr_BSSAP_DTAP) -> value bssap { + [] RAN_CONN.receive(tr_BSSAP_DTAP) -> value bssap { /* FIXME: verify if local part of endpoint name matches CIC */ var PDU_ML3_MS_NW l3 := dec_PDU_ML3_MS_NW(bssap.pdu.dtap); log("Unhandled DTAP ", l3); }
- [g_state == BSC_STATE_WAIT_DISC_IND] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [g_state == BSC_STATE_WAIT_DISC_IND] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(pass); self.stop; }
- [] BSSAP.receive(tr_MSC_CONN_PRIM_CONF_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) { }
/* disconnect in invalid state */ - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(fail); self.stop; }
- [] BSSAP.receive(PDU_BSSAP:?) -> value bssap { + [] RAN_CONN.receive(PDU_BSSAP:?) -> value bssap { log("Received unhandled SCCP-CO: ", bssap); } } diff --git a/bsc-nat/BSC_MS_Simulation.ttcn b/bsc-nat/BSC_MS_Simulation.ttcn index 0a057a3..7ff3257 100644 --- a/bsc-nat/BSC_MS_Simulation.ttcn +++ b/bsc-nat/BSC_MS_Simulation.ttcn @@ -52,7 +52,7 @@ /* helper function to create and connect a BSC_MS_ConnHdlr component */ private function f_connect_handler(inout BSC_MS_ConnHdlr vc_conn) runs on BSC_CT { /* connect client BSSAP port to BSSAP dispatcher */ - connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT); + connect(vc_conn:RAN_CONN, vc_BSSMAP:CLIENT); }
private function f_start_handler(void_fn_bsc_ms fn, charstring id, template (omit) BSC_MS_TestHdlrParams pars := omit) diff --git a/bsc-nat/MSC_ConnectionHandler.ttcn b/bsc-nat/MSC_ConnectionHandler.ttcn index 0fe7c23..8b3b04a 100644 --- a/bsc-nat/MSC_ConnectionHandler.ttcn +++ b/bsc-nat/MSC_ConnectionHandler.ttcn @@ -45,7 +45,7 @@ /* helper function to create and connect a MSC_ConnHdlr component */ private function f_connect_handler(inout MSC_ConnHdlr vc_conn) runs on RAN_Emulation_CT { /* connect client BSSAP port to BSSAP dispatcher */ - connect(vc_conn:BSSAP, self:CLIENT); + connect(vc_conn:RAN_CONN, self:CLIENT); }
private function f_msc_start_handler(void_fn_msc fn, charstring id, template (omit) MSC_TestHdlrParams pars := omit) @@ -140,66 +140,66 @@ var PDU_BSSAP bssap; alt { /* new SCCP-level connection indication from BSC */ - [g_state == MSC_STATE_NONE] BSSAP.receive(tr_BSSMAP_ComplL3) -> value bssap { + [g_state == MSC_STATE_NONE] RAN_CONN.receive(tr_BSSMAP_ComplL3) -> value bssap { /* respond with ASSIGNMENT CMD */ g_state := MSC_STATE_WAIT_ASS_COMPL; - BSSAP.send(ts_BSSMAP_AssignmentReq(ts_BSSMAP_IE_CIC(0, g_pars.e1_timeslot))); + RAN_CONN.send(ts_BSSMAP_AssignmentReq(ts_BSSMAP_IE_CIC(0, g_pars.e1_timeslot))); } - [g_state == MSC_STATE_WAIT_ASS_COMPL] BSSAP.receive(tr_BSSMAP_AssignmentComplete(?,*)) { + [g_state == MSC_STATE_WAIT_ASS_COMPL] RAN_CONN.receive(tr_BSSMAP_AssignmentComplete(?,*)) { /* FIXME: Send MGCP CRCX */ g_state := MSC_STATE_WAIT_CRCX_ACK; var MgcpTransId trans_id := f_mgcp_alloc_tid(); //template SDP_Message sdp := omit; - BSSAP.send(ts_CRCX(trans_id, g_ep_name, "recvonly", g_call_id)); //, sdp)); + RAN_CONN.send(ts_CRCX(trans_id, g_ep_name, "recvonly", g_call_id)); //, sdp)); } /* - [] BSSAP.receive(tr_BSSMAP_AssignmentFail) { + [] RAN_CONN.receive(tr_BSSMAP_AssignmentFail) { } */
/* receive CRCX ACK: transmit MDCX */ - [g_state == MSC_STATE_WAIT_CRCX_ACK] BSSAP.receive(tr_CRCX_ACK) -> value mgcp_rsp { + [g_state == MSC_STATE_WAIT_CRCX_ACK] RAN_CONN.receive(tr_CRCX_ACK) -> value mgcp_rsp { /* extract connection ID */ g_mgcp_conn_id := f_MgcpResp_extract_conn_id(mgcp_rsp); g_state := MSC_STATE_WAIT_MDCX_ACK; var MgcpTransId trans_id := f_mgcp_alloc_tid(); - BSSAP.send(ts_MDCX(trans_id, g_ep_name, "sendrecv", g_call_id, g_mgcp_conn_id)); + RAN_CONN.send(ts_MDCX(trans_id, g_ep_name, "sendrecv", g_call_id, g_mgcp_conn_id)); }
/* receive MDCX ACK: wait + transmit CLEAR COMMAND */ - [g_state == MSC_STATE_WAIT_MDCX_ACK] BSSAP.receive(tr_CRCX_ACK) -> value mgcp_rsp { + [g_state == MSC_STATE_WAIT_MDCX_ACK] RAN_CONN.receive(tr_CRCX_ACK) -> value mgcp_rsp { g_state := MSC_STATE_WAIT_CLEAR_COMPL - BSSAP.send(ts_BSSMAP_ClearCommand(9)); /* Cause: call control */ + RAN_CONN.send(ts_BSSMAP_ClearCommand(9)); /* Cause: call control */ }
/* CLEAR COMPLETE from BSS (response to CLEAR COMMAND) */ - [g_state == MSC_STATE_WAIT_CLEAR_COMPL] BSSAP.receive(tr_BSSMAP_ClearComplete) { + [g_state == MSC_STATE_WAIT_CLEAR_COMPL] RAN_CONN.receive(tr_BSSMAP_ClearComplete) { /* send DLCX */ g_state := MSC_STATE_WAIT_DLCX_ACK; var MgcpTransId trans_id := f_mgcp_alloc_tid(); - BSSAP.send(ts_DLCX(trans_id, g_ep_name, g_call_id)); + RAN_CONN.send(ts_DLCX(trans_id, g_ep_name, g_call_id)); }
- [g_state == MSC_STATE_WAIT_DLCX_ACK] BSSAP.receive(tr_DLCX_ACK) { - BSSAP.send(ts_MSC_CONN_PRIM_DISC_REQ); + [g_state == MSC_STATE_WAIT_DLCX_ACK] RAN_CONN.receive(tr_DLCX_ACK) { + RAN_CONN.send(ts_MSC_CONN_PRIM_DISC_REQ); setverdict(pass); self.stop; }
/* TODO: CLEAR REQUEST from BSS */
- [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(fail); self.stop; }
- [] BSSAP.receive(PDU_BSSAP:?) -> value bssap { + [] RAN_CONN.receive(PDU_BSSAP:?) -> value bssap { log("Received unhandled SCCP-CO: ", bssap); }
/* Guard timer has expired, close connection */ [] T.timeout { - BSSAP.send(ts_MSC_CONN_PRIM_DISC_REQ); + RAN_CONN.send(ts_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 14229cc..88943d2 100755 --- a/bsc-nat/MSC_Simulation.ttcn +++ b/bsc-nat/MSC_Simulation.ttcn @@ -8,7 +8,7 @@ import from SCCPasp_Types all; import from SCCP_Emulation all;
-/* +/* import from MobileL3_Types all; import from MobileL3_CommonIE_Types all; import from L3_Templates all; diff --git a/hnbgw/ConnHdlr.ttcn b/hnbgw/ConnHdlr.ttcn index d9ba5d5..91c7878 100644 --- a/hnbgw/ConnHdlr.ttcn +++ b/hnbgw/ConnHdlr.ttcn @@ -293,8 +293,8 @@
function f_create_ranap_exp(octetstring l3_enc) runs on ConnHdlr { - BSSAP_PROC.call(RAN_register:{l3_enc, self}) { - [] BSSAP_PROC.getreply(RAN_register:{?, ?}) {}; + RAN_CONN_PROC.call(RAN_register:{l3_enc, self}) { + [] RAN_CONN_PROC.getreply(RAN_register:{?, ?}) {}; } }
@@ -334,16 +334,16 @@ timer T := 5.0; T.start; alt { - [] BSSAP.receive(exp_rx) -> value rx { + [] RAN_CONN.receive(exp_rx) -> value rx { setverdict(pass); } - [] BSSAP.receive(RANAP_PDU:?) -> value rx { + [] RAN_CONN.receive(RANAP_PDU:?) -> value rx { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str("Got an unexpected RANAP message on BSSAP port: ", rx, " vs exp ", exp_rx)); + log2str("Got an unexpected RANAP message on RAN_CONN port: ", rx, " vs exp ", exp_rx)); } [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, - log2str("Timeout waiting for RANAP on BSSAP port: ", exp_rx)); + log2str("Timeout waiting for RANAP on RAN_CONN port: ", exp_rx)); } } T.stop; @@ -372,7 +372,7 @@ exp_rx := tx; }
- BSSAP.send(tx); + RAN_CONN.send(tx);
return f_rua_expect(exp_rx) } @@ -423,7 +423,7 @@
if (g_pars.expect_separate_sccp_cr) { /* Acknowledge the empty SCCP CR. RAN_Emulation does the confirmation, no need to respond. */ - BSSAP.receive(tr_RANAP_Conn_Ind()); + RAN_CONN.receive(tr_RANAP_Conn_Ind()); }
/* expect to receive it on the Iu side */ @@ -587,13 +587,13 @@ f_iuh2iu_disconnect(tx, RUA_IEs.Cause:{radioNetwork:=normal});
/* Once CN receives Iu-ReleaseComplete, it tears down the SCCP conn under Iu: */ - BSSAP.send(ts_MSC_CONN_PRIM_DISC_REQ(sccp_par_reason_end_user_originated)); + RAN_CONN.send(ts_MSC_CONN_PRIM_DISC_REQ(sccp_par_reason_end_user_originated)); /* There's no signalling from lower layers regarding when RLC is * received, hence only make sure the IUT is not sending an RLSD on its own * after a timeout, which would mean it didn't process our RLSD */ T.start(2.0); alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Rx Unexpected RLSD to our RLSD"); } [] T.timeout { @@ -714,7 +714,7 @@ /* Send RAB Assignment Request */ rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(g_pars.mgcp_pars.cn_rtp_ip), t_RAB_binding_port(g_pars.mgcp_pars.cn_rtp_port)); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); - BSSAP.send(tx); + RAN_CONN.send(tx); T.start;
/* Handle MGCP CRCX */ @@ -830,7 +830,7 @@ var template RAB_SetupOrModifyList rab_sml; rab_sml := ts_RAB_SML_ps(t_RAB_id(23), f_ts_RAB_TLA(g_pars.gtp_pars.core.remote.addr), g_pars.gtp_pars.core.remote.teid); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); - BSSAP.send(tx); + RAN_CONN.send(tx);
/* Expect PFCP Session Establishment Request. */ m := f_pfcp_expect(tr_PFCP_Session_Est_Req()); @@ -907,7 +907,7 @@ var template RAB_SetupOrModifyList rab_sml; rab_sml := ts_RAB_SML_ps(t_RAB_id(23), f_ts_RAB_TLA(g_pars.gtp_pars.core.remote.addr), g_pars.gtp_pars.core.remote.teid); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); - BSSAP.send(tx); + RAN_CONN.send(tx);
/* Expect on Iuh: unmodified RAB Assignment Request */ rx := valueof(ts_RANAP_RabAssReq(rab_sml)); diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 18c1eb5..d4df7e2 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -568,8 +568,8 @@ connect(vc_conn:RUA, vc_RUA[pars.hnb_idx]:CLIENT);
/* MSC or SGSN */ - connect(vc_conn:BSSAP, g_cn[pars.cn_idx].vc_RAN:CLIENT); - connect(vc_conn:BSSAP_PROC, g_cn[pars.cn_idx].vc_RAN:PROC); + connect(vc_conn:RAN_CONN, g_cn[pars.cn_idx].vc_RAN:CLIENT); + connect(vc_conn:RAN_CONN_PROC, g_cn[pars.cn_idx].vc_RAN:PROC);
/* MGCP part */ connect(vc_conn:MGCP, vc_MGCP:MGCP_CLIENT); @@ -1159,7 +1159,7 @@
/* Send RAB Release */ tx := valueof(ts_RANAP_RabAssReq(rab_rl := ts_RAB_RL(t_RAB_id(23), g_pars.rab_rel_cause))); - BSSAP.send(tx); + RAN_CONN.send(tx);
T.start;
@@ -1222,7 +1222,7 @@ f_ts_RAB_TLA(g_pars.mgcp_pars.cn_rtp_ip), t_RAB_binding_port(g_pars.mgcp_pars.cn_rtp_port)); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); - BSSAP.send(tx); + RAN_CONN.send(tx);
/* Ignore MGCP CRCX */ alt { @@ -1230,7 +1230,7 @@ log("Ignoreing CRCX1", mgcp_cmd); repeat; } - [] BSSAP.receive(tr_RANAP_IuReleaseRequest(?)) { } + [] RAN_CONN.receive(tr_RANAP_IuReleaseRequest(?)) { } [] T.timeout { setverdict(fail, "Timeout waiting for IuRelease"); } @@ -1340,7 +1340,7 @@ f_iuh2iu_connect(f_build_initial_ue(g_pars));
/* This triggers a tx of SCCP CREF CN -> HNBGW: */ - BSSAP.send(ts_MSC_CONN_PRIM_DISC_REQ(sccp_par_reason_end_user_failure)); + RAN_CONN.send(ts_MSC_CONN_PRIM_DISC_REQ(sccp_par_reason_end_user_failure)); /* HNBGW disconnects the session on the RUA side as a result: */ RUA.receive(RUA_Disc_Ind:?); } @@ -1377,10 +1377,10 @@ f_sleep(1.0);
/* Now tx SCCP CC from CN to HNBGW: */ - BSSAP.send(ts_MSC_CONN_PRIM_CONNECT_RES); + RAN_CONN.send(ts_MSC_CONN_PRIM_CONNECT_RES);
/* now that SCCP conn is connected, HNBGW should tear it down because the RUA conn was released in previous step: */ - BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); /* Let RAN_Emulation some time to answer RLSD with RLC: */ f_sleep(1.0); } @@ -1418,7 +1418,7 @@ f_create_rab_cs();
RUA.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted)); - BSSAP.receive(tr_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted)); + RAN_CONN.receive(tr_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted));
RUA.send(RUA_Disc_Req:{{misc:=unspecified}, omit});
@@ -1436,10 +1436,10 @@ * before it receives the RLSD from HNBGW, hence we don't send it. If we * sent it, it would be ignored by HNBGW since the RUA conn is already * disconnected: - * BSSAP.send(ts_RANAP_IuReleaseCommand(ts_RanapCause_radio_rab_preempted)); + * RAN_CONN.send(ts_RANAP_IuReleaseCommand(ts_RanapCause_radio_rab_preempted)); */
- BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); /* Let RAN_Emulation some time to answer RLSD with RLC: */ f_sleep(1.0); } @@ -1464,7 +1464,7 @@ f_create_rab_ps();
RUA.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted)); - BSSAP.receive(tr_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted)); + RAN_CONN.receive(tr_RANAP_IuReleaseRequest(ts_RanapCause_radio_rab_preempted));
RUA.send(RUA_Disc_Req:{{misc:=unspecified}, omit});
@@ -1477,10 +1477,10 @@ * before it receives the RLSD from HNBGW, hence we don't send it. If we * sent it, it would be ignored by HNBGW since the RUA conn is already * disconnected: - * BSSAP.send(ts_RANAP_IuReleaseCommand(ts_RanapCause_radio_rab_preempted)); + * RAN_CONN.send(ts_RANAP_IuReleaseCommand(ts_RanapCause_radio_rab_preempted)); */
- BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); /* Let RAN_Emulation some time to answer RLSD with RLC: */ f_sleep(1.0); } @@ -1513,7 +1513,7 @@ f_sleep(1.0);
/* Now tx SCCP CC from CN to HNBGW: */ - BSSAP.send(ts_MSC_CONN_PRIM_CONNECT_RES); + RAN_CONN.send(ts_MSC_CONN_PRIM_CONNECT_RES);
/* now that SCCP conn is connected, HNBGW should forward the previously queued RANAP PDU: */ f_bssap_expect(tx_ranap_pdu); @@ -1619,7 +1619,7 @@
/* Send RAB Release */ tx := valueof(ts_RANAP_RabAssReq(rab_rl := ts_RAB_RL(t_RAB_id(23), g_pars.rab_rel_cause))); - BSSAP.send(tx); + RAN_CONN.send(tx); f_rua_expect(tx);
tx := valueof(ts_RANAP_RabAssResp(rab_rl := ts_RAB_RLD(t_RAB_id(23)))); @@ -2171,7 +2171,7 @@ domain_ind := cs_domain; } var template (value) RANAP_PDU paging := ts_RANAP_Paging(domain_ind, imsi_hex2oct(imsi)); - BSSAP.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); + RAN_CONN.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); /* TODO: Expect RUA ConnectionlessTransfer Paging (on all HNB). * We could verify the Paging sent from osmo-hnbgw to RUA with some effort, * but, this test does not care whether the Paging was forwarded to RUA or not, only that osmo-hnbgw *received* @@ -2221,7 +2221,7 @@ } var template (value) RANAP_PDU paging := ts_RANAP_Paging_temp_id(domain_ind, imsi_hex2oct(imsi), ts_RANAP_TemporaryUE_ID_TMSI(tmsi)); - BSSAP.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); + RAN_CONN.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); /* TODO: Expect RUA ConnectionlessTransfer Paging (on all HNB). * We could verify the Paging sent from osmo-hnbgw to RUA with some effort, * but, this test does not care whether the Paging was forwarded to RUA or not, only that osmo-hnbgw *received* @@ -2269,7 +2269,7 @@ domain_ind := cs_domain; } var template (value) RANAP_PDU paging := ts_RANAP_Paging_pag_area_id(domain_ind, imsi_hex2oct(imsi), pag_area_id); - BSSAP.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); + RAN_CONN.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); /* TODO: Expect RUA ConnectionlessTransfer Paging (on subset of HNB). * We could verify the Paging sent from osmo-hnbgw to RUA with some effort, * but, this test does not care whether the Paging was forwarded to RUA or not, only that osmo-hnbgw *received* @@ -2321,7 +2321,7 @@ domain_ind := cs_domain; } var template (value) RANAP_PDU paging := ts_RANAP_Paging_pag_area_id(domain_ind, imsi_hex2oct(imsi), pag_area_id); - BSSAP.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); + RAN_CONN.send(ts_RANAP_UNITDATA_req(g_pars.sccp_addr_hnbgw, g_pars.sccp_addr_msc, paging)); /* TODO: Expect RUA ConnectionlessTransfer Paging (on subset of HNB). * We could verify the Paging sent from osmo-hnbgw to RUA with some effort, * but, this test does not care whether the Paging was forwarded to RUA or not, only that osmo-hnbgw *received* @@ -2539,7 +2539,7 @@
/* We modified the SCCP configuration, expect disconnect of UE that was active on the aborted link. */ RUA.receive(RUA_Disc_Ind:?); - BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND);
/* Would be nice to test reconnection on the other point-code, too. That would require another cnlink in * osmo-stp.cfg and module parameters... */ @@ -2580,7 +2580,7 @@ user_plane_info := omit, transport_layer_info := omit); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); - BSSAP.send(tx); + RAN_CONN.send(tx); T.start;
/* Expect this secondary RAB Assignment to go through unchanged. */ @@ -2615,7 +2615,7 @@ function f_TC_cnpool_L3Compl_no_cn(boolean ps_domain) runs on test_CT {
/* Have one MSC and one SGSN but do not allow attaching. - * I would use no MSCs and no SGSNs, but then we need many tweaks to allow test startup without any "BSSAP" + * I would use no MSCs and no SGSNs, but then we need many tweaks to allow test startup without any "RAN_CONN" * port. */ f_init(); f_vty_cnlink_allow_attach(HNBGWVTY, ps_domain, {false}); diff --git a/library/RAN_Emulation.ttcnpp b/library/RAN_Emulation.ttcnpp index c8f5677..ff1b272 100644 --- a/library/RAN_Emulation.ttcnpp +++ b/library/RAN_Emulation.ttcnpp @@ -67,9 +67,9 @@ * derive themselves by means of the "extends" feature */ type component RAN_ConnHdlr { /* port towards MSC Emulator core / SCCP connection dispatchar */ - port RAN_Conn_PT BSSAP; + port RAN_Conn_PT RAN_CONN; /* procedure based port to register for incoming connections */ - port RAN_PROC_PT BSSAP_PROC; + port RAN_PROC_PT RAN_CONN_PROC; }
/* we tell SCCP that connection (rx CR) was confirmed (tx CC) */ @@ -1683,8 +1683,8 @@ tmsi := valueof(tmsi_or_omit); }
- BSSAP_PROC.call(RAN_register_imsi:{imsi, tmsi, self}) { - [] BSSAP_PROC.getreply(RAN_register_imsi:{?,?,?}) {}; + RAN_CONN_PROC.call(RAN_register_imsi:{imsi, tmsi, self}) { + [] RAN_CONN_PROC.getreply(RAN_register_imsi:{?,?,?}) {}; } }
@@ -1692,21 +1692,21 @@ function f_ran_unregister_imsi(hexstring imsi) runs on RAN_ConnHdlr {
- BSSAP_PROC.call(RAN_unregister_imsi:{imsi, self}) { - [] BSSAP_PROC.getreply(RAN_unregister_imsi:{?,?}) {}; + RAN_CONN_PROC.call(RAN_unregister_imsi:{imsi, self}) { + [] RAN_CONN_PROC.getreply(RAN_unregister_imsi:{?,?}) {}; } }
/* register an expect with the BSSMAP core */ function f_ran_register_exp(octetstring l3_enc) runs on RAN_ConnHdlr { - BSSAP_PROC.call(RAN_register:{l3_enc, self}) { - [] BSSAP_PROC.getreply(RAN_register:{?, ?}) {}; + RAN_CONN_PROC.call(RAN_register:{l3_enc, self}) { + [] RAN_CONN_PROC.getreply(RAN_register:{?, ?}) {}; } }
function f_ran_register_sccp_cr_without_payload() runs on RAN_ConnHdlr { - BSSAP_PROC.call(RAN_register_sccp_cr_without_payload:{self}) { - [] BSSAP_PROC.getreply(RAN_register_sccp_cr_without_payload:{?}) {}; + RAN_CONN_PROC.call(RAN_register_sccp_cr_without_payload:{self}) { + [] RAN_CONN_PROC.getreply(RAN_register_sccp_cr_without_payload:{?}) {}; } }
@@ -1714,27 +1714,27 @@ /* helper function for clients to register their IMSI/TMSI */ function f_ran_register_IuSigConId(IuSignallingConnectionIdentifier sigc_id) runs on RAN_ConnHdlr { - BSSAP_PROC.call(RAN_register_IuSigConId:{sigc_id, self}) { - [] BSSAP_PROC.getreply(RAN_register_IuSigConId:{?,?}) {}; + RAN_CONN_PROC.call(RAN_register_IuSigConId:{sigc_id, self}) { + [] RAN_CONN_PROC.getreply(RAN_register_IuSigConId:{?,?}) {}; } }
/* expect a IuReleaseCommand; Confirm that; expect SCCP-level N-DISCONNET.ind */ altstep as_iu_release_compl_disc() runs on RAN_ConnHdlr { var RANAP_PDU ranap; - [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) { - BSSAP.send(ts_RANAP_IuReleaseComplete); + [] RAN_CONN.receive(tr_RANAP_IuReleaseCommand(?)) { + RAN_CONN.send(ts_RANAP_IuReleaseComplete); alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(pass); } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Unexpected RANAP while waiting for SCCP Release "); mtc.stop; } } } - [] BSSAP.receive(RANAP_PDU:?) -> value ranap{ + [] RAN_CONN.receive(RANAP_PDU:?) -> value ranap{ setverdict(fail, "Unexpected RANAP while waiting for IuReleaseCommand", ranap); mtc.stop; } diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index a0f4d28..dd285dd 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -305,11 +305,11 @@ runs on BSC_ConnHdlr { log("Sending COMPL L3: ", l3); var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3); - BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, + RAN_CONN.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(tr_MSC_CONN_PRIM_CONF_IND) {} - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(fail, "DISC.ind from SCCP"); mtc.stop; } @@ -355,10 +355,10 @@ };
ranap := valueof(ts_RANAP_initialUE_CS(lai, sai, l3_enc, sigc_id, grnc_id)); - BSSAP.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, ranap)); + RAN_CONN.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, ranap)); alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_CONF_IND) {} - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(fail, "DISC.ind from SCCP"); mtc.stop; } @@ -434,9 +434,9 @@ if (etype != EST_TYPE_PAG_RESP) { /* explicit CM SERVICE ACCEPT */ if (g_pars.net.expect_attach_success) { - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)); } else { - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)); } } } @@ -507,13 +507,13 @@ } if (g_pars.net.expect_auth) { if (g_pars.use_umts_aka) { - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ_3G(g_pars.vec.rand, g_pars.vec.autn))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ_3G(g_pars.vec.rand, g_pars.vec.autn))); var OCT4 res := substr(g_pars.vec.res, 0, 4); var OCT4 xres := substr(g_pars.vec.res, 4, 4); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_3G(res, xres))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_3G(res, xres))); } else { - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(g_pars.vec.rand))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(g_pars.vec.sres))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(g_pars.vec.rand))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G(g_pars.vec.sres))); } } } @@ -530,11 +530,11 @@
/* MSC <-> BSC: ID req/rsp for IMEI */ alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMEI))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMEI))) { mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); } - [] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { setverdict(fail, "Expected ID REQ for IMEI DTAP MT message, but got: ", dtap_mt); mtc.stop; } @@ -568,11 +568,11 @@
/* MSC <-> BSC: ID req/rsp for IMEISV */ alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMEISV))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMEISV))) { mi := valueof(ts_MI_IMEISV_LV(g_pars.imei)); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); } - [] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { setverdict(fail, "Expected ID REQ for IMEISV DTAP MT message, but got: ", dtap_mt); mtc.stop; } @@ -597,10 +597,10 @@ function f_expect_common_id() runs on BSC_ConnHdlr { if (g_pars.ran_is_geran) { - BSSAP.receive(tr_BSSMAP_CommonId(g_pars.imsi, + RAN_CONN.receive(tr_BSSMAP_CommonId(g_pars.imsi, f_tr_BSSMAP_LastUsedEUTRANPLMNId(g_pars.common_id_last_eutran_plmn))); } else { - BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); + RAN_CONN.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); } }
@@ -669,19 +669,19 @@
f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg); alt { - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128)) -> value pdu { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128)) -> value pdu { var OCT1 a5_chosen := f_best_alg_from_mask(a5_perm_alg); var integer a5_nr := f_alg_from_mask(a5_chosen); - BSSAP.send(ts_BSSMAP_CipherModeCompl(int2oct(a5_nr+1, 1))); + RAN_CONN.send(ts_BSSMAP_CipherModeCompl(int2oct(a5_nr+1, 1))); } - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd2) -> value pdu { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd2) -> value pdu { log("Error: Ciphering Mode Command with unexpected content. Expected: ", tr_BSSMAP_CipherModeCmd2(encryptionInformation, kC128), " got: ", pdu); setverdict(fail, "Ciphering Mode Command with unexpected content."); mtc.stop; } - [] BSSAP.receive(tr_BSSMAP_ClassmarkRequest) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)) + [] RAN_CONN.receive(tr_BSSMAP_ClassmarkRequest) { + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)) repeat; } } @@ -691,26 +691,26 @@ private function f_mm_ciph_utran() runs on BSC_ConnHdlr { alt { - [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?, + [g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?, uea_algs := ?, uea_key := oct2bit(g_pars.vec.ck))) { var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1*/ var EncryptionAlgorithm uea_chosen := 1; /*standard_UMTS_encryption_algorith_UEA1*/ - BSSAP.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen)); + RAN_CONN.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen)); } - [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) { + [g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) { setverdict(fail, "Invalid SecurityModeCommand (ciphering case)"); mtc.stop; } - [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, + [not g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?)) { var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/ - BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen)); + RAN_CONN.send(ts_RANAP_SecurityModeComplete(uia_chosen)); } - [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(?,?,?)) { + [not g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(?,?,?)) { setverdict(fail, "Invalid SecurityModeCommand (non-ciphering case)"); mtc.stop; } @@ -735,7 +735,7 @@
function f_expect_mm_info() runs on BSC_ConnHdlr { if (g_pars.mm_info == true) { - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_Info)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_Info)); } }
@@ -850,7 +850,7 @@ if (g_pars.ran_is_geran) { f_bssap_compl_l3(l3_lu); if (g_pars.send_early_cm) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); } } else { f_ranap_initial_ue(l3_lu); @@ -889,7 +889,7 @@ altstep as_accept_reject_lu(boolean expect_accept := true) runs on BSC_ConnHdlr { var PDU_DTAP_MT dtap_mt;
- [expect_accept] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt { + [expect_accept] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt { var PDU_ML3_LocationUpdateAccept lu_acc := dtap_mt.dtap.msgs.mm.locationUpdateAccept; if (g_pars.net.expect_tmsi) { if (not ispresent(lu_acc.mobileIdentityTLV) or @@ -898,7 +898,7 @@ mtc.stop; } else { g_pars.tmsi := lu_acc.mobileIdentityTLV.mobileIdentityLV.mobileIdentityV.oddEvenInd_identity.tmsi_ptmsi.octets; - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); } } else { if (ispresent(lu_acc.mobileIdentityTLV) and @@ -912,15 +912,15 @@ f_expect_mm_info(); setverdict(pass); } - [expect_accept] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [expect_accept] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(fail, "Expected LU ACK, but received LU REJ"); mtc.stop; }
- [not expect_accept] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [not expect_accept] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(pass); } - [not expect_accept] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt { + [not expect_accept] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt { setverdict(fail, "Expected LU REJ, but received LU ACK"); mtc.stop; } @@ -932,10 +932,10 @@
T.start(Tval); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej(cause))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej(cause))) { setverdict(pass); } - [] BSSAP.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(?)) -> value dtap_mt { setverdict(fail, "Expected LU reject BSSAP message, got: ", dtap_mt); } [] T.timeout { @@ -1134,16 +1134,16 @@ /* Remove 'or Misc_Helpers.f_osmo_repo_is("latest")' after osmo-msc * 1.15.0 is released with I7046e9244fd9d4301ee2c4df1147a619f753739c */ if (cpars.csd or Misc_Helpers.f_osmo_repo_is("latest")) { - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party, *))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party, *))); } else { /* Speech: check bearer capabilities against ts_Bcap_voice_mt * to ensure proper spare bits are sent for radio channel * requirement and that the speech list is omitted (OS#6657) */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party, ts_Bcap_voice_mt))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party, ts_Bcap_voice_mt))); }
/* MS -> MSC: ALERTING */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_ALERTING(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_ALERTING(cpars.transaction_id))); MNCC.receive(tr_MNCC_ALERT_ind(cpars.mncc_callref)); log("f_mt_call_complete 2");
@@ -1182,7 +1182,7 @@ }
/* expect the MSC to trigger a BSSMAP ASSIGNMENT */ - [] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, (tla_ass1, tla_ass2))) -> value bssap { + [] RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit, (tla_ass1, tla_ass2))) -> value bssap { var template BSSMAP_IE_AoIP_TransportLayerAddress tla; var BSSMAP_IE_SpeechCodec codec; var BSSMAP_IE_Osmo_OsmuxCID osmuxCID; @@ -1217,9 +1217,9 @@ } else { bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, tla, codec)); } - BSSAP.send(bssap); + RAN_CONN.send(bssap);
- BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id))); }
[] MNCC.receive(tr_MNCC_SETUP_cnf(cpars.mncc_callref)) { @@ -1302,15 +1302,15 @@ log("f_mt_call_complete 5.iu"); }
- [] BSSAP.receive(tr_RANAP_RabAssReq(?)) -> value ranap { + [] RAN_CONN.receive(tr_RANAP_RabAssReq(?)) -> value ranap { log("f_mt_call_complete 6.iu"); var RAB_ID rab_id := f_ranap_rab_ass_req_extract_rab_id(ranap); var template (value) RAB_SetupOrModifiedList l := ts_RAB_SMdL(rab_id, hex2bit('350001c0a8021500000000000000000000000000'H), '040c0000'O); - BSSAP.send(ts_RANAP_RabAssResp(l)); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id))); + RAN_CONN.send(ts_RANAP_RabAssResp(l)); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT(cpars.transaction_id))); }
[] MNCC.receive(tr_MNCC_SETUP_cnf(cpars.mncc_callref)) { @@ -1380,15 +1380,15 @@ /* expect BSSMAP/RANAP Paging for any IMSI and/or TMSI */ altstep as_paging_any() runs on BSC_ConnHdlr { - [g_pars.ran_is_geran] BSSAP.receive(tr_BSSMAP_Paging(?, *)); - [not g_pars.ran_is_geran] BSSAP.receive(tr_RANAP_Paging(?, ?)); + [g_pars.ran_is_geran] RAN_CONN.receive(tr_BSSMAP_Paging(?, *)); + [not g_pars.ran_is_geran] RAN_CONN.receive(tr_RANAP_Paging(?, ?)); }
/* expect BSSMAP/RANAP Paging for registered IMSI and the given TMSI */ altstep as_paging_tmsi(template OCT4 tmsi := *) runs on BSC_ConnHdlr { - [g_pars.ran_is_geran] BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi, tmsi)); - [not g_pars.ran_is_geran] BSSAP.receive(tr_RANAP_Paging(cs_domain, imsi_hex2oct(g_pars.imsi))); + [g_pars.ran_is_geran] RAN_CONN.receive(tr_BSSMAP_Paging(g_pars.imsi, tmsi)); + [not g_pars.ran_is_geran] RAN_CONN.receive(tr_RANAP_Paging(cs_domain, imsi_hex2oct(g_pars.imsi))); }
/* convenience wrapper for as_paging_tmsi() using g_pars.tmsi */ @@ -1449,12 +1449,12 @@ alt { [] MNCC.receive(tr_MNCC_DISC_ind(cpars.mncc_callref)); [] MNCC.receive(tr_MNCC_REL_ind(cpars.mncc_callref)); - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id))); - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); - [] BSSAP.receive(tr_BSSMAP_ClearCommand); - [] BSSAP.receive(tr_BSSMAP_ClearCommandCSFB); - [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)); + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id))); + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand); + [] RAN_CONN.receive(tr_BSSMAP_ClearCommandCSFB); + [] RAN_CONN.receive(tr_RANAP_IuReleaseCommand(?));
[] T.timeout { log("Call stayed open for ", open_time, " seconds, all is well.") @@ -1669,7 +1669,7 @@ } else { bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, tla, codec)); } - BSSAP.send(bssap); + RAN_CONN.send(bssap); }
function f_mo_call_establish(inout CallParameters cpars) @@ -1696,9 +1696,9 @@ f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
if (cpars.emergency) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_EMERG_SETUP(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_EMERG_SETUP(cpars.transaction_id))); } else { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party, + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party, cpars.bearer_cap))); }
@@ -1737,7 +1737,7 @@ log("f_mo_call_establish 3: rx RTP CREATE"); /* Call Proceeding */ MNCC.send(ts_MNCC_CALL_PROC_req(cpars.mncc_callref, cpars.mncc_bearer_cap)); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id)));
/* Alerting */ var MNCC_PDU mncc_alert_req := valueof(ts_MNCC_ALERT_req(cpars.mncc_callref)); @@ -1749,7 +1749,7 @@
if (cpars.expect_re_assignment) { /* Another Assignment Request is expected after telling the MO call leg about MT's codecs */ - BSSAP.receive(tr_BSSMAP_AssignmentReq(omit)) -> value bssap; + RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit)) -> value bssap;
if (not match(bssap.pdu.bssmap.assignmentRequest.codecList.codecElements, cpars.re_ass_req_codecs)) { @@ -1761,19 +1761,19 @@ } }
- //[g_pars.ran_is_geran] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)) -> value bssap - [] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit)) -> value bssap { + //[g_pars.ran_is_geran] RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)) -> value bssap + [] RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit)) -> value bssap { log("f_mo_call_establish 4: rx Assignment Request"); f_mo_call_establish__handle_assignment_request(cpars, bssap, cpars.ass_compl_chosen_codec); } - [] BSSAP.receive(tr_RANAP_RabAssReq(*)) -> value ranap { + [] RAN_CONN.receive(tr_RANAP_RabAssReq(*)) -> value ranap { log("f_mo_call_establish 4.iu: rx RANAP RAB Assignment Request"); var RAB_ID rab_id := f_ranap_rab_ass_req_extract_rab_id(ranap); var template (value) RAB_SetupOrModifiedList l := ts_RAB_SMdL(rab_id, hex2bit('350001c0a8021500000000000000000000000000'H), '040c0000'O); - BSSAP.send(ts_RANAP_RabAssResp(l)); + RAN_CONN.send(ts_RANAP_RabAssResp(l)); }
/* MDCX setting up the RAN side remote RTP address received from Assignment Complete */ @@ -1800,14 +1800,14 @@ MGCP.send(mgcp_resp); }
- [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))) { log("f_mo_call_establish 7: rx CC Alerting");
if (cpars.ran_clear_when_alerting) { if (g_pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0)); } else { - BSSAP.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); + RAN_CONN.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); } break; } @@ -1836,16 +1836,16 @@ } }
- [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CONNECT(cpars.transaction_id))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CONNECT(cpars.transaction_id))) { log("f_mo_call_establish 10: rx CC CONNECT"); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT_ACK(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT_ACK(cpars.transaction_id))); got_cc_connect := true; if (not cpars.expect_release and got_mncc_setup_compl_ind) { break; } }
- [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))) { log("f_mo_call_establish 11: rx CC RELEASE"); if (not cpars.expect_release) { setverdict(fail, "Got unexpected CC Release"); @@ -1886,7 +1886,7 @@
log("f_call_hangup 0: tx MNCC_DISC_REQ"); MNCC.send(ts_MNCC_DISC_req(cpars.mncc_callref, valueof(ts_MNCC_cause(23)))); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id)));
log("f_call_hangup 1: rx DTAP CC DISC");
@@ -1896,17 +1896,17 @@ tid_remote := '0'B; } /* B-side (MS) Release of call */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_RELEASE(cpars.transaction_id, tid_remote, '0000000'B))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_RELEASE(cpars.transaction_id, tid_remote, '0000000'B))); MNCC.receive(tr_MNCC_REL_ind(cpars.mncc_callref)); log("f_call_hangup 2: rx MNCC REL ind"); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_REL_COMPL(cpars.transaction_id))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_REL_COMPL(cpars.transaction_id))); log("f_call_hangup 3: rx DTAP CC REL COMPL"); } else { /* A-side (PLMN) Release of call */ MNCC.send(ts_MNCC_REL_req(cpars.mncc_callref, valueof(ts_MNCC_cause(42)))); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); log("f_call_hangup 2.a: rx DTAP CC RELEASE"); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id))); log("f_call_hangup 3.a: rx MNCC REL cnf"); MNCC.receive(tr_MNCC_REL_cnf(cpars.mncc_callref, cause := *)); } @@ -1918,17 +1918,17 @@
/* clearing of radio channel */ alt { - [g_pars.ran_is_geran] BSSAP.receive(t_clear) { - log("f_call_hangup 5: rx BSSAP Clear Command"); - BSSAP.send(ts_BSSMAP_ClearComplete); - BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + [g_pars.ran_is_geran] RAN_CONN.receive(t_clear) { + log("f_call_hangup 5: rx RAN_CONN Clear Command"); + RAN_CONN.send(ts_BSSMAP_ClearComplete); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); log("f_call_hangup 6: rx SCCP DISC"); setverdict(pass); } - [not g_pars.ran_is_geran] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) { + [not g_pars.ran_is_geran] RAN_CONN.receive(tr_RANAP_IuReleaseCommand(?)) { log("f_call_hangup 5.iu: rx Iu Release Command"); - BSSAP.send(ts_RANAP_IuReleaseComplete); - BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.send(ts_RANAP_IuReleaseComplete); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); log("f_call_hangup 6.iu: rx SCCP DISC"); setverdict(pass); } @@ -1992,7 +1992,7 @@ dtmf_dtap := ts_ML3_MO_CC_START_DTMF(cpars.transaction_id, "2");
/* Here, pass skip_seq_patching == false so that the RAN Emulation NSD increments after this message. */ - BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false)); + RAN_CONN.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false)); T.start; alt { [] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "2")) { @@ -2007,7 +2007,7 @@ /* Send the exact same DTAP with above NSD, which is now incorrect (has not incremented), so that this message * will get filtered by the duplicate detection. Write NSD into DTAP and pass skip_seq_patching == true. */ dtmf_dtap.msgs.cc.startDTMF.nsd := int2bit(next_n_sd, 2); - BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, true)); T.start; alt { [] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "2")) { @@ -2019,7 +2019,7 @@
/* Here the NSD should be correct again and we see a DTMF. */ dtmf_dtap := ts_ML3_MO_CC_START_DTMF(cpars.transaction_id, "3"); - BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false)); + RAN_CONN.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false)); alt { [] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "3")) { log("f_mo_seq_dtmf_dup() 3: got second START_DTMF_ind"); @@ -2037,19 +2037,19 @@ /* expect a clear command (for GERAN only!) */ altstep as_clear_cmd_compl_disc() runs on BSC_ConnHdlr { var PDU_BSSAP bssap; - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { - BSSAP.send(ts_BSSMAP_ClearComplete); + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { + RAN_CONN.send(ts_BSSMAP_ClearComplete); alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(pass); } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Unexpected BSSMAP while waiting for SCCP Release"); mtc.stop; } } } - [] BSSAP.receive(tr_BSSAP_BSSMAP) -> value bssap { + [] RAN_CONN.receive(tr_BSSAP_BSSMAP) -> value bssap { setverdict(fail, "Unexpected BSSMAP while waiting for ClearCommand", bssap); mtc.stop; } @@ -2080,23 +2080,23 @@ }
function f_create_bssmap_exp_n_connect(integer targetPointCode) runs on BSC_ConnHdlr { - BSSAP_PROC.call(RAN_register_n_connect:{targetPointCode, self}) { - [] BSSAP_PROC.getreply(RAN_register_n_connect:{?, ?}) {}; + RAN_CONN_PROC.call(RAN_register_n_connect:{targetPointCode, self}) { + [] RAN_CONN_PROC.getreply(RAN_register_n_connect:{?, ?}) {}; } }
function f_bssmap_last_n_sd() runs on BSC_ConnHdlr return N_Sd_Array { var N_Sd_Array last_n_sd; - BSSAP_PROC.call(RAN_last_n_sd:{self, -}) { - [] BSSAP_PROC.getreply(RAN_last_n_sd:{self, ?}) -> param(last_n_sd) { + RAN_CONN_PROC.call(RAN_last_n_sd:{self, -}) { + [] RAN_CONN_PROC.getreply(RAN_last_n_sd:{self, ?}) -> param(last_n_sd) { return last_n_sd; }; } }
function f_bssmap_continue_after_n_sd(N_Sd_Array last_n_sd) runs on BSC_ConnHdlr { - BSSAP_PROC.call(RAN_continue_after_n_sd:{last_n_sd, self}) { - [] BSSAP_PROC.getreply(RAN_continue_after_n_sd:{last_n_sd, self}); + RAN_CONN_PROC.call(RAN_continue_after_n_sd:{last_n_sd, self}) { + [] RAN_CONN_PROC.getreply(RAN_continue_after_n_sd:{last_n_sd, self}); } }
@@ -2162,7 +2162,7 @@ }
private altstep as_other_sms() runs on BSC_ConnHdlr { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(?, ?, ?), ?)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(?, ?, ?), ?)) { setverdict(fail, "Unexpected SMS related PDU from MSC"); mtc.stop; } @@ -2181,9 +2181,9 @@
rp_mo := ts_RP_SMMA_MO(spars.rp.msg_ref); l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo)); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); /* receive CP-ACK for CP-DATA above */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci));
deactivate(d); setverdict(pass); @@ -2205,9 +2205,9 @@ spars.tp.udl, spars.tp.ud); rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, omit, spars.rp.smsc_addr, tp_mo); l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo)); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); /* receive CP-ACK for CP-DATA above */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_ACK_MT), spars.dlci));
deactivate(d); setverdict(pass); @@ -2231,18 +2231,18 @@ /* expect an RP-ERROR message from MSC with given cause */ rp_mt := tr_RP_ERROR_MT(spars.rp.msg_ref, spars.exp_rp_err); l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); - BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); /* send CP-ACK for CP-DATA just received */ l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); } else { /* expect RP-ACK for RP-DATA */ rp_mt := tr_RP_ACK_MT(spars.rp.msg_ref); l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_REPL, tr_CP_DATA_MT(rp_mt)); - BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); /* send CP-ACO for CP-DATA just received */ l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_ACK_MO); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); }
deactivate(d); @@ -2275,7 +2275,7 @@ var default d := activate(as_other_sms());
/* Expect CP-DATA(RP-DATA(SMS-DELIVER)) */ - BSSAP.receive(f_mt_sms_deliver_pdu(spars)) -> value dtap_mt; + RAN_CONN.receive(f_mt_sms_deliver_pdu(spars)) -> value dtap_mt;
/* Extract relevant identifiers */ spars.tid := bit2int(dtap_mt.dtap.tiOrSkip.transactionId.tio); @@ -2283,7 +2283,7 @@
/* send CP-ACK for CP-DATA just received */ l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_ACK_MO); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true));
deactivate(d); setverdict(pass); @@ -2301,11 +2301,11 @@ /* send RP-ACK for RP-DATA */ rp_mo := ts_RP_ACK_MO(spars.rp.msg_ref); l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_DATA_MO(rp_mo)); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true));
/* expect CP-ACK for CP-DATA(RP-ACK) just sent */ l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_ORIG, tr_CP_ACK_MT); - BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci));
deactivate(d); setverdict(pass); @@ -2323,11 +2323,11 @@ /* send RP-ACK for RP-DATA */ rp_mo := ts_RP_ERROR_MO(spars.rp.msg_ref, cause); l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_REPL, ts_CP_DATA_MO(rp_mo)); - BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true)); + RAN_CONN.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true));
/* expect CP-ACK for CP-DATA(RP-ERROR) just sent */ l3_mt := tr_ML3_MT_SMS(spars.tid, c_TIF_ORIG, tr_CP_ACK_MT); - BSSAP.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci)); + RAN_CONN.receive(tr_PDU_DTAP_MT(l3_mt, spars.dlci));
deactivate(d); setverdict(pass); diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 1c08a5d..e32ea82 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -180,13 +180,13 @@ }
private altstep as_optional_cc_rel(CallParameters cpars, boolean respond := false) runs on BSC_ConnHdlr { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))) { if (respond) { var BIT1 tid_remote := '1'B; if (cpars.mo_call) { tid_remote := '0'B; } - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, tid_remote))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, tid_remote))); } repeat; } @@ -470,8 +470,8 @@ vc_conn := BSC_ConnHdlr.create(id);
/* BSSMAP part / A interface */ - connect(vc_conn:BSSAP, g_bssap[pars.ran_idx].vc_RAN:CLIENT); - connect(vc_conn:BSSAP_PROC, g_bssap[pars.ran_idx].vc_RAN:PROC); + connect(vc_conn:RAN_CONN, g_bssap[pars.ran_idx].vc_RAN:CLIENT); + connect(vc_conn:RAN_CONN_PROC, g_bssap[pars.ran_idx].vc_RAN:PROC); /* MNCC part */ connect(vc_conn:MNCC, vc_MNCC:MNCC_CLIENT); connect(vc_conn:MNCC_PROC, vc_MNCC:MNCC_PROC); @@ -557,10 +557,10 @@ GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)); GSUP.send(ts_GSUP_UL_ERR(g_pars.imsi, 23)); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej(int2oct(23,1)))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej(int2oct(23,1)))) { f_expect_clear(); } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { setverdict(fail, "Expecting LU REJ, but got ACCEPT"); mtc.stop; } @@ -588,10 +588,10 @@ /* Normally the HLR would need to respond here, but we decide to force a timeout here */ alt { /* FIXME: Expect specific reject cause */ - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { f_expect_clear(); } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { setverdict(fail, "Expecting LU REJ, but got ACCEPT"); mtc.stop; } @@ -653,7 +653,7 @@ if (g_pars.ran_is_geran) { f_bssap_compl_l3(l3_lu); if (g_pars.send_early_cm) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); } } else { f_ranap_initial_ue(l3_lu); @@ -665,8 +665,8 @@ f_mm_imei();
alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt {} - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt {} + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(fail, "Expected LU ACK, but received LU REJ"); mtc.stop; } @@ -710,8 +710,8 @@ timer T := 10.0; T.start; alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } - //[] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)) { } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } + //[] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)) { } [] GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)) { setverdict(fail, "Unexpected GSUP UL REQ"); mtc.stop; @@ -749,7 +749,7 @@ timer T := 10.0; T.start; alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } [] as_unexp_bssap_msg(); [] T.timeout { setverdict(fail, "Timeout waiting for CM SERV REJ"); @@ -852,7 +852,7 @@ /* Expect the channel cleared upon T(iar) triggered: */ T_wait_iar.start; alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { T_wait_iar.stop setverdict(pass); } @@ -899,13 +899,13 @@
/* Send Early Classmark, just for the fun of it */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); /* The HLR would normally return an auth vector here, but we fail to do so. */
- BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)); f_expect_clear(); } testcase TC_lu_auth_sai_timeout() runs on MTC_CT { @@ -933,13 +933,13 @@
/* Send Early Classmark, just for the fun of it */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); GSUP.send(ts_GSUP_SAI_ERR(g_pars.imsi, 13));
- BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)); f_expect_clear(); } testcase TC_lu_auth_sai_err() runs on MTC_CT { @@ -967,24 +967,24 @@ f_expect_common_id();
/* Send Early Classmark, just for the fun of it */ - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
f_sleep(1.0); /* send clear request in the middle of the LU */ - BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0)); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } - [] BSSAP.receive(tr_BSSMAP_ClearCommand) {} + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) {} } - BSSAP.send(ts_BSSMAP_ClearComplete); + RAN_CONN.send(ts_BSSMAP_ClearComplete); alt { /* See https://osmocom.org/issues/2862 */ - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { setverdict(fail, "Got a second Clear Command, only one expected"); mtc.stop; repeat; } - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); } @@ -1017,7 +1017,7 @@ f_sleep(2.0);
/* BSC sends BSSMAP Clear Request (e.g. due to RR failure) */ - BSSAP.send(ts_BSSMAP_ClearRequest(1)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(1));
/* Expect (optional) CC RELEASE and Clear Command */ var default ccrel := activate(as_optional_cc_rel(cpars)); @@ -1071,12 +1071,12 @@
/* Send Early Classmark, just for the fun of it */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
f_sleep(1.0); /* send clear request in the middle of the LU */ - BSSAP.send(ts_MSC_CONN_PRIM_DISC_REQ); + RAN_CONN.send(ts_MSC_CONN_PRIM_DISC_REQ); setverdict(pass); f_sleep(1.0); } @@ -1103,12 +1103,12 @@
/* Send Early Classmark, just for the fun of it */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); } /* wait for LU reject, ignore any ID REQ */ alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req)) { repeat; } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req)) { repeat; } } /* wait for normal teardown */ f_expect_clear(); @@ -1138,12 +1138,12 @@ f_cl3_or_initial_ue(l3_lu);
/* Send Early Classmark, just for the fun of it */ - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
/* Wait for + respond to ID REQ (IMSI) */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(overlong_imsi))); /* test for OS#2864 */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(overlong_imsi))); /* test for OS#2864 */ + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); f_expect_common_id();
/* Expect MSC to do UpdateLocation to HLR; respond to it */ @@ -1153,10 +1153,10 @@ GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));
alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(fail, "Expected LU ACK, but received REJ"); mtc.stop; } @@ -1190,11 +1190,11 @@ f_cl3_or_initial_ue(l3_lu);
/* Send Early Classmark, just for the fun of it */ - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
/* Wait for + respond to ID REQ (IMSI) */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); f_expect_common_id();
/* Expect MSC to do UpdateLocation to HLR; respond to it */ @@ -1204,10 +1204,10 @@ GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));
alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(fail, "Expected LU ACK, but received REJ"); mtc.stop; } @@ -1230,8 +1230,8 @@ f_cl3_or_initial_ue(l3_lu);
/* Wait for + respond to ID REQ (IMSI) */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp_IMSI(g_pars.imsi))); f_expect_common_id();
/* Expect MSC to do UpdateLocation to HLR; respond to it */ @@ -1241,10 +1241,10 @@ GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));
alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(fail, "Expected LU ACK, but received REJ"); mtc.stop; } @@ -1272,7 +1272,7 @@
/* Send Early Classmark, just for the fun of it? */ if (g_pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
/* wait for normal teardown */ @@ -1306,7 +1306,7 @@
/* Send Early Classmark, just for the fun of it? */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
/* wait for normal teardown */ @@ -1332,7 +1332,7 @@
/* Send Early Classmark, just for the fun of it? */ if (pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); }
/* wait for normal teardown */ @@ -1362,7 +1362,7 @@ var MobileIdentityLV mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi)); f_cl3_or_initial_ue(l3_info); - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ('05'O))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ('05'O))); f_expect_clear(); } testcase TC_emerg_call_imei_reject() runs on MTC_CT { @@ -1401,7 +1401,7 @@ var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VGCS, mi)); f_cl3_or_initial_ue(l3_info); - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); f_expect_clear(); } testcase TC_cm_serv_req_vgcs_reject() runs on MTC_CT { @@ -1422,7 +1422,7 @@ var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_VBS, mi)); f_cl3_or_initial_ue(l3_info); - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); f_expect_clear(); } testcase TC_cm_serv_req_vbs_reject() runs on MTC_CT { @@ -1443,7 +1443,7 @@ var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_LCS, mi)); f_cl3_or_initial_ue(l3_info); - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1)))); f_expect_clear(); } testcase TC_cm_serv_req_lcs_reject() runs on MTC_CT { @@ -1466,7 +1466,7 @@ f_cl3_or_initial_ue(l3_info); /* Older osmo-msc returns: GSM48_REJECT_SRV_OPT_NOT_SUPPORTED = 32, * newer osmo-msc with CM Re-Establish support returns: GSM48_REJECT_CALL_CAN_NOT_BE_IDENTIFIED = 38 */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ( (int2oct(32,1), int2oct(38,1)) ))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ( (int2oct(32,1), int2oct(38,1)) ))); f_expect_clear(); } testcase TC_cm_reest_req_reject() runs on MTC_CT { @@ -1490,22 +1490,22 @@ f_cl3_or_initial_ue(l3_lu);
/* Send Early Classmark, just for the fun of it */ - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
var AuthVector vec := f_gen_auth_vec_2g(); var GSUP_IE auth_tuple := valueof(ts_GSUP_IE_AuthTuple2G(vec.rand, vec.sres, vec.kc)); GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); GSUP.send(ts_GSUP_SAI_RES(g_pars.imsi, auth_tuple));
- BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(vec.rand))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_AUTH_REQ(vec.rand))); /* Send back wrong auth response */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G('00000000'O))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MT_MM_AUTH_RESP_2G('00000000'O)));
/* Expect GSUP AUTH FAIL REP to HLR */ GSUP.receive(tr_GSUP_AUTH_FAIL_IND(g_pars.imsi));
/* Expect LU REJECT with Cause == Illegal MS */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej('03'O))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej('03'O))); f_expect_clear(); } testcase TC_lu_auth_2G_fail() runs on MTC_CT { @@ -1539,16 +1539,16 @@ f_init_handler(pars);
/* Send Complete L3 Info with empty L3 frame */ - BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, + RAN_CONN.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, ''O))));
timer T := 5.0; T.start; alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) {} /* Expect LU REJECT with Cause == Illegal MS */ - [] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; } - [] BSSAP.receive(tr_MSC_CONN_PRIM_CONF_IND) { repeat; } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(?)) { repeat; } + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) { repeat; } [] as_clear_cmd_compl_disc(); [] T.timeout { setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release"); @@ -1577,16 +1577,16 @@ var octetstring payl := f_rnd_octstring(len);
/* Send Complete L3 Info with empty L3 frame */ - BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, + RAN_CONN.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, payl))));
timer T := 5.0; T.start; alt { /* Immediate disconnect */ - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) {} - [] BSSAP.receive(tr_PDU_DTAP_MT(?)) { repeat; } - [] BSSAP.receive(tr_MSC_CONN_PRIM_CONF_IND) { repeat; } + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) {} + [] RAN_CONN.receive(tr_PDU_DTAP_MT(?)) { repeat; } + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) { repeat; } [] as_clear_cmd_compl_disc(); [] T.timeout { setverdict(fail, "Timeout waiting for ClearCommand or SCCP Release"); @@ -1726,7 +1726,7 @@ f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
/* MSC->MS: SETUP */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))); }
/* Test MT Call */ @@ -1739,7 +1739,7 @@ f_mt_call_start(cpars);
/* MS->MSC: CALL CONFIRMED */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CALL_CONF(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CALL_CONF(cpars.transaction_id)));
MNCC.receive(tr_MNCC_CALL_CONF_ind(cpars.mncc_callref));
@@ -1817,7 +1817,7 @@ f_mt_call_start(cpars);
/* MS->MSC: CALL CONFIRMED */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CALL_CONF(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CALL_CONF(cpars.transaction_id))); MNCC.receive(tr_MNCC_CALL_CONF_ind(cpars.mncc_callref));
/* NOTE: MSC is expected to start T310 here */ @@ -1829,8 +1829,8 @@ }
/* BSC->BSC: BSSMAP ASSIGNMENT REQ */ - [] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, ?)) -> value bssap { - BSSAP.send(ts_BSSMAP_AssignmentComplete(omit, + [] RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit, ?)) -> value bssap { + RAN_CONN.send(ts_BSSMAP_AssignmentComplete(omit, aoip := f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port), speechCodec := ts_BSSMAP_IE_SpeechCodec({ ts_CodecFR }))); } @@ -1874,9 +1874,9 @@ } }
- BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id))); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, '1'B))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, '1'B)));
alt { [] MGCP.receive(tr_DLCX(?)) -> value mgcp_cmd { @@ -1922,7 +1922,7 @@ var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); f_cl3_or_initial_ue(l3_info); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } [] as_unexp_bssap_msg(); }
@@ -1987,20 +1987,20 @@ f_create_gsup_expect(hex2str(g_pars.imsi)); f_cl3_or_initial_ue(l3_lu); if (pars.send_early_cm) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); } else { pars.cm1.esind := '0'B; } f_mm_auth(); alt { - [] BSSAP.receive(tr_BSSMAP_ClassmarkReq) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + [] RAN_CONN.receive(tr_BSSMAP_ClassmarkReq) { + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { f_expect_clear(); } - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(?,?)) { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(?,?)) { setverdict(fail, "CipherModeCommand despite no A5 intersection"); mtc.stop; } @@ -2058,13 +2058,13 @@ var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi); f_create_gsup_expect(hex2str(g_pars.imsi)); f_cl3_or_initial_ue(l3_lu); - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); f_mm_auth(); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { f_expect_clear(); } - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(?,?)) { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(?,?)) { setverdict(fail, "CipherModeCommand despite no A5 intersection"); mtc.stop; } @@ -2260,10 +2260,10 @@ f_establish_fully(EST_TYPE_PAG_RESP); spars.tp.ud := 'C8329BFD064D9B53'O; interleave { - [] BSSAP.receive(f_mt_sms_deliver_pdu(spars)) { + [] RAN_CONN.receive(f_mt_sms_deliver_pdu(spars)) { log("Got SMS-DELIVER"); }; - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))) { log("Got CC Setup"); }; } @@ -2271,9 +2271,9 @@ log("success, tear down"); var default ccrel := activate(as_optional_cc_rel(cpars)); if (g_pars.ran_is_geran) { - BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0)); } else { - BSSAP.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); + RAN_CONN.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); } f_expect_clear(); deactivate(ccrel); @@ -3406,7 +3406,7 @@ f_establish_fully(EST_TYPE_PAG_RESP);
/* expect a MT SMS on DTAP */ - BSSAP.receive(f_mt_sms_deliver_pdu(spars)); + RAN_CONN.receive(f_mt_sms_deliver_pdu(spars));
/* ... MS does not send RP-ACK ... */
@@ -3594,15 +3594,15 @@ var PDU_DTAP_MT dtap; var PDU_BSSAP bssap;
- [] BSSAP.receive(PDU_DTAP_MT:?) -> value dtap { + [] RAN_CONN.receive(PDU_DTAP_MT:?) -> value dtap { setverdict(fail, "Unknown/unexpected BSSAP/DTAP received: ", dtap); self.stop; } - [] BSSAP.receive(PDU_BSSAP:?) -> value bssap { + [] RAN_CONN.receive(PDU_BSSAP:?) -> value bssap { setverdict(fail, "Unknown/unexpected BSSAP received: ", bssap); self.stop; } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Unknown/unexpected BSSAP received"); self.stop; } @@ -3638,7 +3638,7 @@
T.start; alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(msg)) -> value bssap_msg_complete { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(msg)) -> value bssap_msg_complete { setverdict(pass); } /* We don't expect anything else */ @@ -3703,7 +3703,7 @@ var GSUP_PDU gsup_req_complete;
/* Request own number */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_req)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_req)); /* Expect GSUP message containing the SS payload */ gsup_req_complete := f_expect_gsup_msg(gsup_req);
@@ -3795,7 +3795,7 @@ );
/* MS sends response to the notification */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_rsp)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_rsp)); /* Expect GSUP message containing the SS payload */ f_expect_gsup_msg(gsup_rsp);
@@ -3880,7 +3880,7 @@ var GSUP_PDU gsup_req_complete;
/* Request own number */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_req)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_req)); /* Expect GSUP message containing the SS payload */ gsup_req_complete := f_expect_gsup_msg(gsup_req);
@@ -3997,7 +3997,7 @@ );
/* MS sends response */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_rsp)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_rsp)); f_expect_gsup_msg(gsup_rsp);
/* Compose expected MT SS/RELEASE COMPLETE message */ @@ -4071,7 +4071,7 @@ facility := omit));
/* MS didn't receive the RELEASE COMPLETE yet, so it responds */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_SS_FACILITY(tid := 0, + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_SS_FACILITY(tid := 0, ti_flag := c_TIF_REPL, facility := facility_rsp))); /* this response is rejected because the SS transaction is gone */ @@ -4137,7 +4137,7 @@ var GSUP_PDU gsup_ms_req_complete;
/* Initiate a new transaction */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_ms_req)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_ms_req)); /* Expect GSUP request with original Facility IE */ gsup_ms_req_complete := f_expect_gsup_msg(gsup_ms_req);
@@ -4177,7 +4177,7 @@ );
/* Abort transaction */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_abort)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_abort)); /* Expect GSUP message indicating abort */ f_expect_gsup_msg(gsup_abort);
@@ -4226,7 +4226,7 @@ var GSUP_PDU gsup_ms_req_complete;
/* Initiate a new SS transaction */ - BSSAP.send(ts_PDU_DTAP_MO(ussd_ms_req)); + RAN_CONN.send(ts_PDU_DTAP_MO(ussd_ms_req)); /* Expect GSUP request with original Facility IE */ gsup_ms_req_complete := f_expect_gsup_msg(gsup_ms_req);
@@ -4247,7 +4247,7 @@
/* Expect release on both interfaces */ interleave { - [] BSSAP.receive(tr_PDU_DTAP_MT(dtap_rel)) { }; + [] RAN_CONN.receive(tr_PDU_DTAP_MT(dtap_rel)) { }; [] GSUP.receive(gsup_rel) { }; }
@@ -4337,7 +4337,7 @@ );
/* Send GSM 04.80 FACILITY for non-existing transaction */ - BSSAP.send(ts_PDU_DTAP_MO(mo_ss_fac)); + RAN_CONN.send(ts_PDU_DTAP_MO(mo_ss_fac));
/* Expect GSM 04.80 RELEASE COMPLETE message */ f_expect_mt_dtap_msg(mt_ss_rel); @@ -4347,7 +4347,7 @@ f_establish_fully(EST_TYPE_SS_ACT);
/* Send GSM 04.80 RELEASE COMPLETE for non-existing transaction */ - BSSAP.send(ts_PDU_DTAP_MO(mo_ss_rel)); + RAN_CONN.send(ts_PDU_DTAP_MO(mo_ss_rel));
/* Expect GSM 04.80 RELEASE COMPLETE message */ f_expect_mt_dtap_msg(mt_ss_rel); @@ -4545,7 +4545,7 @@ );
/* Send GSM 04.80 FACILITY for non-existing transaction */ - BSSAP.send(ts_PDU_DTAP_MO(mo_ss_fac)); + RAN_CONN.send(ts_PDU_DTAP_MO(mo_ss_fac));
/* Expect GSM 04.80 RELEASE COMPLETE message */ f_expect_mt_dtap_msg(mt_ss_rel); @@ -4620,10 +4620,10 @@ var OCT1 a5_net := f_alg_mask_from_cm(g_pars.cm2); var OCT1 a5_intersect := g_pars.net.kc_support and4b a5_net; alt { - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) { - BSSAP.send(ts_BSSMAP_CipherModeCompl(int2oct(4 /* "accept" A5/3 */, 1))); + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) { + RAN_CONN.send(ts_BSSMAP_CipherModeCompl(int2oct(4 /* "accept" A5/3 */, 1))); } - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(?, g_pars.vec.kc)) { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(?, g_pars.vec.kc)) { setverdict(fail, "Wrong ciphering algorithm mask in CiphModCmd"); mtc.stop; } @@ -4633,7 +4633,7 @@
/* Expect LU reject from MSC. */ alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(pass); } [] as_unexp_bssap_msg(); @@ -4667,7 +4667,7 @@
/* Expect LU reject from MSC. */ alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(pass); } [] as_unexp_bssap_msg(); @@ -4703,14 +4703,14 @@ var OCT1 a5_net := f_alg_mask_from_cm(g_pars.cm2); var OCT1 a5_intersect := g_pars.net.kc_support and4b a5_net; alt { - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) { - BSSAP.send(ts_BSSMAP_CipherModeComplAlg(omit)); + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(a5_intersect, g_pars.vec.kc)) { + RAN_CONN.send(ts_BSSMAP_CipherModeComplAlg(omit)); } - [] BSSAP.receive(tr_BSSMAP_ClassmarkReq) { - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + [] RAN_CONN.receive(tr_BSSMAP_ClassmarkReq) { + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); repeat; } - [] BSSAP.receive(tr_BSSMAP_CipherModeCmd(?, g_pars.vec.kc)) { + [] RAN_CONN.receive(tr_BSSMAP_CipherModeCmd(?, g_pars.vec.kc)) { setverdict(fail, "Wrong ciphering algorithm mask in CiphModCmd"); mtc.stop; } @@ -5959,8 +5959,8 @@ var template BSSMAP_FIELD_CellIdentificationList cil; cil := { cIl_LAI := { ts_BSSMAP_CI_LAI('023'H, '42'H, 999) } };
- BSSAP.send(ts_BSSMAP_HandoverRequired(cause, cil)); - BSSAP.receive(tr_BSSMAP_HandoverRequiredReject); + RAN_CONN.send(ts_BSSMAP_HandoverRequired(cause, cil)); + RAN_CONN.receive(tr_BSSMAP_HandoverRequiredReject);
f_call_hangup(cpars, true); } @@ -6037,17 +6037,17 @@ cil := { cIl_CGI := { ts_BSSMAP_CI_CGI('023'H, '42'H, 5, 6) } };
/* old BSS sends Handover Required */ - BSSAP.send(ts_BSSMAP_HandoverRequired(cause, cil)); + RAN_CONN.send(ts_BSSMAP_HandoverRequired(cause, cil));
/* Now the action goes on in f_tc_ho_inter_bsc1() */
/* MSC forwards the RR Handover Command to old BSS */ var PDU_BSSAP ho_command; - BSSAP.receive(tr_BSSMAP_HandoverCommand) -> value ho_command; + RAN_CONN.receive(tr_BSSMAP_HandoverCommand) -> value ho_command;
log("GOT HandoverCommand", ho_command);
- BSSAP.receive(tr_BSSMAP_HandoverSucceeded); + RAN_CONN.receive(tr_BSSMAP_HandoverSucceeded);
/* f_tc_ho_inter_bsc1() completes Handover, then expecting a Clear here. */ f_expect_clear(); @@ -6071,8 +6071,8 @@ kC128, codecList := ?); var PDU_BSSAP ho_request; alt { - [] BSSAP.receive(expect_ho_request); - [] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { + [] RAN_CONN.receive(expect_ho_request); + [] RAN_CONN.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { log("Error: Wrong handoverRequest received. Expected: ", expect_ho_request, " got ", ho_request); setverdict(fail, "Wrong handoverRequest received"); @@ -6085,7 +6085,7 @@ var octetstring rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd); var BSSMAP_IE_AoIP_TransportLayerAddress tla tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port)); - BSSAP.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), + RAN_CONN.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), tla, ts_BSSMAP_IE_SpeechCodec({ts_CodecFR})));
/* Now f_tc_ho_inter_bsc1() expects HandoverCommand */ @@ -6094,9 +6094,9 @@
/* Notify that the MS is now over here */
- BSSAP.send(ts_BSSMAP_HandoverDetect); + RAN_CONN.send(ts_BSSMAP_HandoverDetect); f_sleep(0.1); - BSSAP.send(ts_BSSMAP_HandoverComplete); + RAN_CONN.send(ts_BSSMAP_HandoverComplete);
f_sleep(3.0);
@@ -6133,8 +6133,8 @@ kC128, codecList := ?); var PDU_BSSAP ho_request; alt { - [] BSSAP.receive(expect_ho_request); - [] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { + [] RAN_CONN.receive(expect_ho_request); + [] RAN_CONN.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { log("Error: Wrong handoverRequest received. Expected: ", expect_ho_request, " got ", ho_request); setverdict(fail, "Wrong handoverRequest received"); @@ -6146,7 +6146,7 @@ var octetstring rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd); var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(bss_rtp_ip, 2342)); - BSSAP.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), + RAN_CONN.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), tla, ts_BSSMAP_IE_SpeechCodec({ts_CodecFR})));
/* Now f_tc_ho_inter_bsc0() expects HandoverCommand */ @@ -6155,9 +6155,9 @@
/* Notify that the MS is now over here */
- BSSAP.send(ts_BSSMAP_HandoverDetect); + RAN_CONN.send(ts_BSSMAP_HandoverDetect); f_sleep(0.1); - BSSAP.send(ts_BSSMAP_HandoverComplete); + RAN_CONN.send(ts_BSSMAP_HandoverComplete);
f_sleep(3.0);
@@ -6171,17 +6171,17 @@ cil := { cIl_CGI := { ts_BSSMAP_CI_CGI('262'H, '42'H, 23, 42) } };
/* old BSS sends Handover Required */ - BSSAP.send(ts_BSSMAP_HandoverRequired(cause, cil)); + RAN_CONN.send(ts_BSSMAP_HandoverRequired(cause, cil));
/* Now the action goes on in f_tc_ho_inter_bsc0() */
/* MSC forwards the RR Handover Command to old BSS */ var PDU_BSSAP ho_command; - BSSAP.receive(tr_BSSMAP_HandoverCommand) -> value ho_command; + RAN_CONN.receive(tr_BSSMAP_HandoverCommand) -> value ho_command;
log("GOT HandoverCommand", ho_command);
- BSSAP.receive(tr_BSSMAP_HandoverSucceeded); + RAN_CONN.receive(tr_BSSMAP_HandoverSucceeded);
/* f_tc_ho_inter_bsc1() completes Handover, then expecting a Clear here. */ f_expect_clear(); @@ -6297,7 +6297,7 @@ cil := { cIl_CGI := { ts_BSSMAP_CI_CGI('017'H, '017'H, 1, 1) } };
/* old BSS sends Handover Required */ - BSSAP.send(ts_BSSMAP_HandoverRequired(cause, cil)); + RAN_CONN.send(ts_BSSMAP_HandoverRequired(cause, cil));
/* The target cell 017-017 LAC 1 is configured to be a remote MSC of name "msc-017-017-1". * This MSC tries to reach the other MSC via GSUP. */ @@ -6350,7 +6350,7 @@ valueof(t_GSUP_AN_APDU(OSMO_GSUP_AN_PROTO_48006, enc_PDU_BSSAP(ho_req_ack)))));
/* MSC forwards the RR Handover Command to old BSS */ - BSSAP.receive(tr_BSSMAP_HandoverCommand); + RAN_CONN.receive(tr_BSSMAP_HandoverCommand);
/* The MS shows up at remote new BSS */
@@ -6358,7 +6358,7 @@ pars.imsi, remote_msc_name, local_msc_name, valueof(t_GSUP_AN_APDU(OSMO_GSUP_AN_PROTO_48006, enc_PDU_BSSAP(valueof(ts_BSSMAP_HandoverDetect)))))); - BSSAP.receive(tr_BSSMAP_HandoverSucceeded); + RAN_CONN.receive(tr_BSSMAP_HandoverSucceeded); f_sleep(0.1);
/* Save the MS sequence counters for use on the other connection */ @@ -6468,7 +6468,7 @@ cil := { cIl_CGI := { ts_BSSMAP_CI_CGI('262'H, '42'H, 23, 42) } };
/* old BSS sends Handover Required, via inter-MSC E link: like - * BSSAP.send(ts_BSSMAP_HandoverRequired(cause, cil)); + * RAN_CONN.send(ts_BSSMAP_HandoverRequired(cause, cil)); * but via GSUP */ GSUP.send(ts_GSUP_E_AN_APDU(OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_REQUEST, pars.imsi, remote_msc_name, local_msc_name, @@ -6483,8 +6483,8 @@ chosenEncryptionAlgorithm, kC128, codecList := ?); alt { - [] BSSAP.receive(expect_ho_request) -> value ho_request; - [] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { + [] RAN_CONN.receive(expect_ho_request) -> value ho_request; + [] RAN_CONN.receive(tr_BSSMAP_HandoverRequest) -> value ho_request { log("Error: Wrong handoverRequest received. Expected: ", expect_ho_request, " got ", ho_request); setverdict(fail, "Wrong handoverRequest received"); @@ -6500,7 +6500,7 @@ rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd); var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, cpars.bss_rtp_port)); - BSSAP.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), + RAN_CONN.send(ts_BSSMAP_HandoverRequestAcknowledge(rr_ho_cmd_enc, lengthof(rr_ho_cmd_enc), tla, ts_BSSMAP_IE_SpeechCodec({ts_CodecFR}), chosenEncryptionAlgorithm := ho_request.pdu.bssmap.handoverRequest.chosenEncryptionAlgorithm));
@@ -6510,9 +6510,9 @@ pars.imsi, destination_name := remote_msc_name)) -> value prep_subsq_ho_res;
/* MS shows up at the local BSS */ - BSSAP.send(ts_BSSMAP_HandoverDetect); + RAN_CONN.send(ts_BSSMAP_HandoverDetect); f_sleep(0.1); - BSSAP.send(ts_BSSMAP_HandoverComplete); + RAN_CONN.send(ts_BSSMAP_HandoverComplete);
/* Handover Succeeded message */ GSUP.receive(tr_GSUP_E_AN_APDU(OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST, @@ -6669,7 +6669,7 @@ l3_lu := f_build_lu_imsi(g_pars.imsi) f_create_gsup_expect(hex2str(g_pars.imsi)); f_bssap_compl_l3(l3_lu); - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
f_mm_common(); f_msc_lu_hlr(); @@ -6699,7 +6699,7 @@ l3_lu := f_build_lu_imsi(g_pars.imsi) f_create_gsup_expect(hex2str(g_pars.imsi)); f_bssap_compl_l3(l3_lu); - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
f_mm_common(); f_msc_lu_hlr(); @@ -6792,7 +6792,7 @@ l3_lu := f_build_lu_imsi(g_pars.imsi) f_create_gsup_expect(hex2str(g_pars.imsi)); f_bssap_compl_l3(l3_lu); - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
f_mm_imei_early(); f_expect_lu_reject(); @@ -6820,7 +6820,7 @@ l3_lu := f_build_lu_imsi(g_pars.imsi) f_create_gsup_expect(hex2str(g_pars.imsi)); f_bssap_compl_l3(l3_lu); - BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3)); + RAN_CONN.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
f_mm_imei_early(); f_expect_lu_reject(); @@ -6868,8 +6868,8 @@ f_bssap_compl_l3(f_build_lu_tmsi('FFFFFFFF'O));
/* Expect an Identity Request, send response with no identity */ - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp({ + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp({ lengthIndicator := 1, mobileIdentityV := { typeOfIdentity := '000'B, @@ -6983,7 +6983,7 @@ var template BSSMAP_IE_AoIP_TransportLayerAddress tla_ass := (f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_1.mgw_rtp_ip, ?), f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_2.mgw_rtp_ip, ?)); - BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)); + RAN_CONN.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)); /* By this Assignment Request, the CM Re-Establishment Request is implicitly accepted. */
/* Send Assignment Complete from BSC */ @@ -7005,7 +7005,7 @@ var default ack_mdcx := activate(as_mgcp_ack_all_mdcx(cpars)); var default optional_rtp_create := activate(as_mncc_rx_rtp_create(cpars));
- BSSAP.send(ts_BSSMAP_AssignmentComplete(omit, tla, codec)); + RAN_CONN.send(ts_BSSMAP_AssignmentComplete(omit, tla, codec));
/* The call has been fully re-established. * Let a bit of time pass before hanging up, for everything to settle. */ @@ -7020,19 +7020,19 @@ /* CC release. This is the proper MS initiated release sequence as shown by * https://git.osmocom.org/osmo-msc/tree/doc/sequence_charts/voice_call_full.ms... * f_call_hangup() seems a bit mixed up, so here a "proper" sequence. Fix of f_call_hangup() pending. */ - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_DISC(cpars.transaction_id, '0'B, '0000000'B))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_DISC(cpars.transaction_id, '0'B, '0000000'B))); MNCC.receive(tr_MNCC_DISC_ind(cpars.mncc_callref)); MNCC.send(ts_MNCC_REL_req(cpars.mncc_callref, valueof(ts_MNCC_cause(23)))); - BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, '0'B))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_RELEASE(cpars.transaction_id))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_REL_COMPL(cpars.transaction_id, '0'B))); MNCC.receive(tr_MNCC_REL_cnf(cpars.mncc_callref, cause := *));
/* BSSAP clear */ interleave { - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { - BSSAP.send(ts_BSSMAP_ClearComplete); + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { + RAN_CONN.send(ts_BSSMAP_ClearComplete); } - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); }
f_sleep(1.0); @@ -7110,11 +7110,11 @@
/* CM Serv Req with mismatching Mobile Identity */ var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(f_gen_imsi(99999))); /* ensure it is different from below*/ - BSSAP.send(ts_PDU_DTAP_MO(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, mi))); - BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_CM_SERV_REQ(CM_TYPE_MO_SMS, mi))); + RAN_CONN.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ));
/* Cancel the first CM Service from f_establish_fully() */ - BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0));
f_expect_clear(); } @@ -7377,7 +7377,7 @@ log(MSCVTY, "f_establish_fully() starting"); f_establish_fully(); log(MSCVTY, "f_establish_fully() done"); - BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0)); f_expect_clear(); }
@@ -7541,9 +7541,9 @@ /* MSC <-> BSC: ID req/rsp for IMSI */ private altstep as_id_req_imsi() runs on BSC_ConnHdlr { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_MM_ID_Req(CM_ID_TYPE_IMSI))) { var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_MM_ID_Rsp(mi))); repeat; } } @@ -7741,8 +7741,8 @@ /* Hold the call for some time */ T.start(3.0); alt { - [] BSSAP.receive(tr_BSSMAP_AssignmentReq) { - BSSAP.send(ts_BSSMAP_AssignmentComplete); + [] RAN_CONN.receive(tr_BSSMAP_AssignmentReq) { + RAN_CONN.send(ts_BSSMAP_AssignmentComplete); repeat; } [] as_unexp_bssap_msg(); @@ -7797,7 +7797,7 @@ } }
- BSSAP.send(ts_BSSMAP_ClearRequest(0)); + RAN_CONN.send(ts_BSSMAP_ClearRequest(0)); f_expect_clear(); } testcase TC_silent_call_active_conn() runs on MTC_CT { diff --git a/msc/MSC_Tests_ASCI.ttcn b/msc/MSC_Tests_ASCI.ttcn index c8bf2da..135edb1 100644 --- a/msc/MSC_Tests_ASCI.ttcn +++ b/msc/MSC_Tests_ASCI.ttcn @@ -154,13 +154,13 @@ log("Sending SETUP."); select (test) { case (COORD_TEST_NO_CALLREF) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, '3200002900'O))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, '3200002900'O))); } case (COORD_TEST_COMPLETE_VBS) { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_BCC(cpars.transaction_id, '3200001a00'O))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_BCC(cpars.transaction_id, '3200001a00'O))); } case else { - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, '3200001900'O))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, '3200001900'O))); } } COORD.send(COORD_SETUP); @@ -168,45 +168,45 @@ timer T := 10.0; T.start; alt { - [] BSSAP.receive(tr_assignment_req) -> value rx_bssap { + [] RAN_CONN.receive(tr_assignment_req) -> value rx_bssap { /* The MSC sends and Assignment Request to assign the calling subscriber to the VGCS/VBS channel. */ log("Got Assignment Request: ", rx_bssap); COORD.send(COORD_ASSIGNMENT); log("Sending Assignment Complete: ", ts_assignment_cpl); - BSSAP.send(ts_assignment_cpl); + RAN_CONN.send(ts_assignment_cpl); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination_21))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination_21))) { /* The MSC terminates the group call with cause 21 = requested service not subscribed. */ log("Got GCC Termination with failure."); COORD.send(COORD_GCC_TERMINATION_FAIL); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination_21))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination_21))) { /* The MSC terminates the broadcast call with cause 21 = requested service not subscribed. */ log("Got BCC Termination with failure."); COORD.send(COORD_BCC_TERMINATION_FAIL); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination_11))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination_11))) { /* The MSC terminates the group call with cause 11 = network failure. */ log("Got GCC Termination with failure."); COORD.send(COORD_GCC_TERMINATION_FAIL); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination_11))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination_11))) { /* The MSC terminates the broadcast call with cause 11 = network failure. */ log("Got BCC Termination with failure."); COORD.send(COORD_BCC_TERMINATION_FAIL); repeat; } - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { /* The SCCP connection is released. */ log("Got Clear Command on initial connection."); COORD.send(COORD_CLEAR); repeat; } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Got unexpected message on initial connection."); } [] COORD.receive(COORD_CLEAR) { } @@ -259,96 +259,96 @@ timer T := 7.0; T.start; alt { - [] BSSAP.receive(tr_vgcs_vbs_setup) -> value rx_bssap { + [] RAN_CONN.receive(tr_vgcs_vbs_setup) -> value rx_bssap { /* The MSC sets up call control on the BSC. The test case will send an ack or a refuse. */ log("Got VGCS/VBS Setup: ", rx_bssap); COORD.send(COORD_VGCS_SETUP); if (test == COORD_TEST_SETUP_REFUSE) { log("Sending VGCS/VBS Setup Refuse: ", ts_vgcs_vbs_setup_refuse); - BSSAP.send(ts_vgcs_vbs_setup_refuse); + RAN_CONN.send(ts_vgcs_vbs_setup_refuse); } else { log("Sending VGCS/VBS Setup Ack: ", ts_vgcs_vbs_setup_ack); - BSSAP.send(ts_vgcs_vbs_setup_ack); + RAN_CONN.send(ts_vgcs_vbs_setup_ack); } repeat; } - [] BSSAP.receive(tr_BSSMAP_UplinkSeizedCmd(GSM0808_CAUSE_CALL_CONTROL)) -> value rx_bssap { + [] RAN_CONN.receive(tr_BSSMAP_UplinkSeizedCmd(GSM0808_CAUSE_CALL_CONTROL)) -> value rx_bssap { /* After setting up the call, the MSC marks the call as busy. */ log("Got Uplink Seized Cmd: ", rx_bssap); COORD.send(COORD_UPLINK_SEIZED); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, gcc_connect))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, gcc_connect))) { /* The GCC CONNECT message is sent to the calling MS. */ log("Got GCC Connect."); COORD.send(COORD_GCC_CONNECT); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, bcc_connect))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, bcc_connect))) { /* The BCC CONNECT message is sent to the calling MS. */ log("Got BCC Connect."); COORD.send(COORD_BCC_CONNECT); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_set_param))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_set_param))) { /* The GCC SET PARAMETER message is sent to the calling MS. */ log("Got GCC Set Parameter."); COORD.send(COORD_GCC_SET_PARAM); f_sleep(0.2); /* The MS releases the uplink. */ log("Sending Uplink Release Ind: ", ts_uplink_rel_ind); - BSSAP.send(ts_uplink_rel_ind); + RAN_CONN.send(ts_uplink_rel_ind); f_sleep(0.2); /* The MS requests the uplink again. */ log("Sending Uplink Req: ", ts_uplink_req); - BSSAP.send(ts_uplink_req); + RAN_CONN.send(ts_uplink_req); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_set_param))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_set_param))) { /* The BCC SET PARAMETER message is sent to the calling MS. */ log("Got BCC Set Parameter"); COORD.send(COORD_BCC_SET_PARAM); f_sleep(0.2); /* The MS requests termination of the call. */ log("Sending BCC Termination Request: ", bcc_term_req); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_BCC(cpars.transaction_id, bcc_term_req))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_BCC(cpars.transaction_id, bcc_term_req))); repeat; } - [] BSSAP.receive(tr_BSSMAP_UplinkReqAck(*)) -> value rx_bssap { + [] RAN_CONN.receive(tr_BSSMAP_UplinkReqAck(*)) -> value rx_bssap { /* The uplink was granted by the MSC. */ log("Got Uplink Request Acknowledge: ", rx_bssap); COORD.send(COORD_UPLINK_REQ_ACK); f_sleep(0.2); /* The BSC confirms the uplink and provides mobile identity to identify originator. */ log("Sending Uplink Req Confirm: ", ts_uplink_req_conf); - BSSAP.send(ts_uplink_req_conf); + RAN_CONN.send(ts_uplink_req_conf); /* The MS requests termination of the call. */ log("Sending GCC Termination Request: ", gcc_term_req); - BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, gcc_term_req))); + RAN_CONN.send(ts_PDU_DTAP_MO(ts_ML3_MO_GCC(cpars.transaction_id, gcc_term_req))); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_GCC(cpars.transaction_id, xcc_termination))) { /* The MSC terminates the call towards the MS. */ log("Got GCC Termination."); COORD.send(COORD_GCC_TERMINATION); repeat; } - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination))) { + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_BCC(cpars.transaction_id, xcc_termination))) { /* The MSC terminates the call towards the MS. */ log("Got BCC Termination."); COORD.send(COORD_BCC_TERMINATION); repeat; } - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { /* The SCCP connection is released. */ log("Got Clear Command on control connection."); COORD.send(COORD_CLEAR); repeat; } - [] BSSAP.receive(PDU_BSSAP:?) -> value rx_bssap { + [] RAN_CONN.receive(PDU_BSSAP:?) -> value rx_bssap { setverdict(fail, "Got unexpected BSSAP message on control connection: ", rx_bssap); } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Got unexpected message on control connection."); } [] COORD.receive(COORD_CLEAR) { } @@ -395,29 +395,29 @@ timer T := 7.0; T.start; alt { - [] BSSAP.receive(tr_vgcs_vbs_ass_req) -> value rx_bssap { + [] RAN_CONN.receive(tr_vgcs_vbs_ass_req) -> value rx_bssap { /* The MSC allocates channel on the given BTS. The test case will send a result or a failure. */ log("Got VGCS/VBS Assignment Request: ", rx_bssap); COORD.send(COORD_VGCS_ASSIGN); if (test == COORD_TEST_ASSIGN_FAIL) { log("Sending VGCS/VBS Assignment Failure: ", ts_vgcs_vbs_ass_fail); - BSSAP.send(ts_vgcs_vbs_ass_fail); + RAN_CONN.send(ts_vgcs_vbs_ass_fail); } else { log("Sending VGCS/VBS Assignment Result: ", ts_vgcs_vbs_ass_res); - BSSAP.send(ts_vgcs_vbs_ass_res); + RAN_CONN.send(ts_vgcs_vbs_ass_res); } repeat; } - [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + [] RAN_CONN.receive(tr_BSSMAP_ClearCommand) { /* The SCCP connection is released. */ log("Got Clear Command on channel connection."); COORD.send(COORD_CLEAR); repeat; } - [] BSSAP.receive(PDU_BSSAP:?) -> value rx_bssap { + [] RAN_CONN.receive(PDU_BSSAP:?) -> value rx_bssap { setverdict(fail, "Got unexpected BSSAP message on channel connection: ", rx_bssap); } - [] BSSAP.receive { + [] RAN_CONN.receive { setverdict(fail, "Got unexpected message on channel connection."); } [] COORD.receive(COORD_CLEAR) { } diff --git a/msc/MSC_Tests_Iu.ttcn b/msc/MSC_Tests_Iu.ttcn index c3c7231..75ecbe3 100644 --- a/msc/MSC_Tests_Iu.ttcn +++ b/msc/MSC_Tests_Iu.ttcn @@ -127,25 +127,25 @@ /* tell GSUP dispatcher to send this IMSI to us */ f_create_gsup_expect(hex2str(g_pars.imsi));
- /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */ + /* Send RANAP_Conn_Req with COMPL L3 INFO to MSC */ f_cl3_or_initial_ue(l3_lu);
f_sleep(1.0); /* send release request in the middle of the LU */ - BSSAP.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); + RAN_CONN.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention)); alt { - [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } - [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) {} + [] RAN_CONN.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; } + [] RAN_CONN.receive(tr_RANAP_IuReleaseCommand(?)) {} } - BSSAP.send(ts_RANAP_IuReleaseComplete); + RAN_CONN.send(ts_RANAP_IuReleaseComplete); alt { /* See https://osmocom.org/issues/2862 */ - [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) { + [] RAN_CONN.receive(tr_RANAP_IuReleaseCommand(?)) { setverdict(fail, "Got a second Iu Release Command, only one expected"); mtc.stop; repeat; } - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) {} } setverdict(pass); } diff --git a/sgsn/BSSGP_ConnHdlr.ttcn b/sgsn/BSSGP_ConnHdlr.ttcn index c9e9f50..eac01d5 100644 --- a/sgsn/BSSGP_ConnHdlr.ttcn +++ b/sgsn/BSSGP_ConnHdlr.ttcn @@ -216,10 +216,10 @@ };
ranap := valueof(ts_RANAP_initialUE_PS(lai, rac, sai, l3_enc, sigc_id, grnc_id)); - BSSAP.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_local, ranap)); + RAN_CONN.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_local, ranap)); alt { - [] BSSAP.receive(tr_MSC_CONN_PRIM_CONF_IND) {} - [] BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND) { + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_CONF_IND) {} + [] RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND) { setverdict(fail, "DISC.ind from SCCP"); mtc.stop; } @@ -233,7 +233,7 @@ g_pars.rnc_send_initial_ue := false; f_send_l3_initial_ue(l3_mo); } else { - BSSAP.send(ts_PDU_DTAP_PS_MO(l3_mo)); + RAN_CONN.send(ts_PDU_DTAP_PS_MO(l3_mo)); } } else { f_send_l3_gmm_llc(l3_mo, ran_index); @@ -247,7 +247,7 @@ f_send_l3(ts_GMM_ID_RESP(mi), ran_index); repeat; } - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('010'B))) { + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('010'B))) { mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); f_send_l3(ts_GMM_ID_RESP(mi), ran_index); repeat; @@ -261,7 +261,7 @@ f_send_l3(ts_GMM_ID_RESP(mi), ran_index); repeat; } - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('001'B))) { + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('001'B))) { mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); f_send_l3(ts_GMM_ID_RESP(mi), ran_index); repeat; @@ -278,7 +278,7 @@ runs on BSSGP_ConnHdlr { var PDU_DTAP_PS_MT mt; [is_gb(ran_index)] BSSGP[ran_index].receive(rx_tpl) -> value l3_mt { } - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(rx_tpl)) -> value mt { + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(rx_tpl)) -> value mt { l3_mt := mt.dtap; } } @@ -286,26 +286,26 @@ /* (copied from msc/BSC_ConnectionHandler.ttcn) */ private altstep as_ciph_utran() runs on BSSGP_ConnHdlr { - [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?, + [g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmdEnc(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?, uea_algs := ?, uea_key := oct2bit(g_pars.vec.ck))) { var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1*/ var EncryptionAlgorithm uea_chosen := 1; /*standard_UMTS_encryption_algorith_UEA1*/ - BSSAP.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen)); + RAN_CONN.send(ts_RANAP_SecurityModeCompleteEnc(uia_chosen, uea_chosen)); } - [g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) { + [g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmdEnc(?,?,?,?,?)) { setverdict(fail, "Invalid SecurityModeCommand (ciphering case)"); mtc.stop; } - [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, + [not g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?)) { var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/ - BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen)); + RAN_CONN.send(ts_RANAP_SecurityModeComplete(uia_chosen)); } - [not g_pars.net.expect_ciph] BSSAP.receive(tr_RANAP_SecurityModeCmd(?,?,?)) { + [not g_pars.net.expect_ciph] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(?,?,?)) { setverdict(fail, "Invalid SecurityModeCommand (non-ciphering case)"); mtc.stop; } @@ -374,7 +374,7 @@ [is_gb(ran_index)] BSSGP[ran_index].receive(tr_GMM_AUTH_REQ(g_pars.vec.rand)) -> value l3_mt { f_gmm_auth_as(l3_mt, umts_aka_challenge, force_gsm_sres, ran_index); } - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_AUTH_REQ(g_pars.vec.rand))) -> value mt { + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_AUTH_REQ(g_pars.vec.rand))) -> value mt { l3_mt := mt.dtap; f_gmm_auth_as(l3_mt, umts_aka_challenge, force_gsm_sres, ran_index); } @@ -458,7 +458,7 @@ /* Security Mode Command + Complete on Iu case */ if (is_iu(ran_index)) { as_ciph_utran(); - BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); + RAN_CONN.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); } } else { /* wait for identity procedure */ @@ -662,21 +662,21 @@ altstep as_routing_area_update_iu(integer ran_index := 0) runs on BSSGP_ConnHdlr { var PDU_DTAP_PS_MT mt;
- [] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_ACCEPT)) -> value mt { + [] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_ACCEPT)) -> value mt { f_process_rau_accept(mt.dtap.msgs.gprs_mm.routingAreaUpdateAccept, ran_index); f_send_l3(ts_GMM_RAU_COMPL, ran_index); setverdict(pass); } - [] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_REJECT)) { + [] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_REJECT)) { setverdict(fail, "Unexpected RAU Reject"); mtc.stop; } - [] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, + [] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?)) { var IntegrityProtectionAlgorithm uia_chosen := 0; /* 0 = standard_UMTS_integrity_algorithm_UIA1 */ - BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen)); - BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))) + RAN_CONN.send(ts_RANAP_SecurityModeComplete(uia_chosen)); + RAN_CONN.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))) repeat; } } @@ -702,7 +702,7 @@ alt { [] as_routing_area_update(ran_index) { setverdict(pass); } [is_gb(ran_index)] BSSGP[ran_index].receive { repeat; } - [is_iu(ran_index)] BSSAP.receive { repeat; } + [is_iu(ran_index)] RAN_CONN.receive { repeat; } [] T.timeout { setverdict(fail, "Timeout completing the RAU procedure"); mtc.stop; @@ -722,26 +722,26 @@ altstep as_service_request(boolean exp_service_acc := true, integer ran_index := 0) runs on BSSGP_ConnHdlr { var PDU_DTAP_PS_MT mt;
- [exp_service_acc] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_ACC)) -> value mt { + [exp_service_acc] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_ACC)) -> value mt { setverdict(pass); } - [not exp_service_acc] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_ACC)) -> value mt { + [not exp_service_acc] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_ACC)) -> value mt { setverdict(fail, "Unexpected Service Accept"); mtc.stop; } - [] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_REJ)) { + [] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_SERVICE_REJ)) { setverdict(fail, "Unexpected Service Reject"); mtc.stop; } /* 24.008 4.7.13.3: a SecurityModeCommand is an implicit Service Accept if UE was in PMM-IDLE */ - [] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, + [] RAN_CONN.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), key_sts := ?)) { var IntegrityProtectionAlgorithm uia_chosen := 0; /* 0 = standard_UMTS_integrity_algorithm_UIA1 */ - BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen)); + RAN_CONN.send(ts_RANAP_SecurityModeComplete(uia_chosen)); if (not exp_service_acc) { /* Because we stop processing early, we need to consume the CommonID */ - BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); + RAN_CONN.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); setverdict(pass); } else { /* This repeat would be wrong if you follow the spec correct. Because: @@ -794,7 +794,7 @@
alt { [] as_service_request(exp_service_acc := expect_service_acc, ran_index := ran_index) { setverdict(pass); } - [not expect_auth] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_AUTH_REQ)) { + [not expect_auth] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_GMM_AUTH_REQ)) { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Service Request: Unexpected GMM Auth Req"); } @@ -802,7 +802,7 @@ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Service Request: Unexpected GSUP SAI Req"); } - [] BSSAP.receive { repeat; } + [] RAN_CONN.receive { repeat; } [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout completing the Service Request procedure"); @@ -820,7 +820,7 @@
function f_iu_release_req(template (value) Cause cause) runs on BSSGP_ConnHdlr { timer T := 5.0; - BSSAP.send(ts_RANAP_IuReleaseRequest(cause)); + RAN_CONN.send(ts_RANAP_IuReleaseRequest(cause)); T.start; alt { [] as_iu_release_compl_disc_ext() { T.stop; }; @@ -859,7 +859,7 @@
altstep as_ranap_rab_ass_req(inout PdpActPars apars) runs on BSSGP_ConnHdlr { var RANAP_PDU ranap; - [] BSSAP.receive(tr_RANAP_RabAssReq(?)) -> value ranap { + [] RAN_CONN.receive(tr_RANAP_RabAssReq(?)) -> value ranap { var RAB_ID rab_id := f_ranap_rab_ass_req_extract_rab_id(ranap);
f_ranap_rab_ass_req_validate_tli(ranap, apars); @@ -872,7 +872,7 @@ tla_bits := oct2bit(apars.rnc_ip_u); } l := ts_RAB_SMdL_ps(rab_id, tla_bits, apars.rnc_tei_u); - BSSAP.send(ts_RANAP_RabAssResp(l)); + RAN_CONN.send(ts_RANAP_RabAssResp(l)); } }
@@ -1020,22 +1020,22 @@ altstep as_pdp_ctx_act_iu(inout PdpActPars apars, integer ran_index := 0) runs on BSSGP_ConnHdlr { var boolean exp_rej := ispresent(apars.exp_rej_cause);
- [exp_rej] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) { + [exp_rej] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) { setverdict(pass); } - [exp_rej] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_ACCEPT)) { + [exp_rej] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_ACCEPT)) { setverdict(fail, "Unexpected PDP CTX ACT ACC"); mtc.stop; } - [not exp_rej] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) { + [not exp_rej] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) { setverdict(fail, "Unexpected PDP CTX ACT FAIL"); mtc.stop; } - [not exp_rej] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) { + [not exp_rej] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) { setverdict(fail, "Unexpected PDP CTX ACT FAIL"); mtc.stop; } - [not exp_rej] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) { + [not exp_rej] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) { setverdict(pass); } } @@ -1075,7 +1075,7 @@ alt { [] as_pdp_ctx_act(apars, ran_index) { T.stop; setverdict(pass); } [is_gb(ran_index)] BSSGP[ran_index].receive { repeat; } - [is_iu(ran_index)] BSSAP.receive { repeat; } + [is_iu(ran_index)] RAN_CONN.receive { repeat; } [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout completing the PDP ACT"); @@ -1096,7 +1096,7 @@ alt { [is_gb(ran_index)] BSSGP[ran_index].receive(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid)); [is_gb(ran_index)] as_xid(apars, ran_index); - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))); + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))); } setverdict(pass); } @@ -1105,7 +1105,7 @@ [is_gb(ran_index)] BSSGP[ran_index].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) { f_send_l3(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), ran_index); } - [is_iu(ran_index)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) { + [is_iu(ran_index)] RAN_CONN.receive(tr_PDU_DTAP_PS_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) { f_send_l3(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), ran_index); } } diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index a94eb3a..c1ab7cc 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -531,8 +531,8 @@
/* FIXME: support multiple RNCs */ if (g_iu_enable) { - connect(vc_conn:BSSAP, g_iu[0].ranap.vc_RAN:CLIENT); - connect(vc_conn:BSSAP_PROC, g_iu[0].ranap.vc_RAN:PROC); + connect(vc_conn:RAN_CONN, g_iu[0].ranap.vc_RAN:CLIENT); + connect(vc_conn:RAN_CONN_PROC, g_iu[0].ranap.vc_RAN:PROC);
for (var integer i := 0; i < NUM_RNC; i := i+1) { /* GTP[0] is used by emulated GGSN: */ diff --git a/sgsn/SGSN_Tests_Iu.ttcn b/sgsn/SGSN_Tests_Iu.ttcn index 78215bb..3400f43 100644 --- a/sgsn/SGSN_Tests_Iu.ttcn +++ b/sgsn/SGSN_Tests_Iu.ttcn @@ -340,7 +340,7 @@ var octetstring payload := f_rnd_octstring(100); f_ggsn_gtpu_send(apars, payload);
- BSSAP.receive(tr_RANAP_Paging(ps_domain, imsi_hex2oct(g_pars.imsi))); + RAN_CONN.receive(tr_RANAP_Paging(ps_domain, imsi_hex2oct(g_pars.imsi)));
/* Ue comes back, answering the paging: * SGSN recreates the Iu ctx and recovers the Direct Tunnel RNC<->GGSN: */ @@ -399,9 +399,9 @@ apars.ggsn_tei_c, GTP_CAUSE_REQUEST_ACCEPTED));
- BSSAP.receive(tr_MSC_CONN_PRIM_DISC_IND); + RAN_CONN.receive(tr_MSC_CONN_PRIM_DISC_IND); g_pars.rnc_send_initial_ue := true; - BSSAP.receive(tr_RANAP_Paging(ps_domain, imsi_hex2oct(g_pars.imsi))); + RAN_CONN.receive(tr_RANAP_Paging(ps_domain, imsi_hex2oct(g_pars.imsi)));
/* Ue comes back, answering the paging: * SGSN recreates the Iu ctx and recovers the Direct Tunnel RNC<->GGSN: */