diff --git a/library/BSSMAP_Emulation.ttcn b/library/BSSMAP_Emulation.ttcn index dce8eb0e6..e7a432c3a 100644 --- a/library/BSSMAP_Emulation.ttcn +++ b/library/BSSMAP_Emulation.ttcn @@ -55,7 +55,9 @@ type enumerated BSSAP_Conn_Prim { /* SCCP tell us that connection was released */ MSC_CONN_PRIM_DISC_IND, /* we tell SCCP to release connection */ - MSC_CONN_PRIM_DISC_REQ + MSC_CONN_PRIM_DISC_REQ, + /* Connection confirmed indication */ + MSC_CONN_PRIM_CONF_IND } type record BSSAP_Conn_Req { @@ -420,6 +422,9 @@ function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT { /* SCCP -> Client: connection confirm for outbound connection */ [] BSSAP.receive(BSSAP_N_CONNECT_cfm:?) -> value conn_cfm { + vc_conn := f_comp_by_conn_id(conn_cfm.connectionId); + var BSSAP_Conn_Prim prim := MSC_CONN_PRIM_CONF_IND; + CLIENT.send(prim) to vc_conn; /* handle user payload */ if (ispresent(conn_cfm.userData)) { f_handle_userData(vc_conn, conn_cfm.userData); diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn index 15a460b5a..2d6036fb7 100644 --- a/msc_tests/BSC_ConnectionHandler.ttcn +++ b/msc_tests/BSC_ConnectionHandler.ttcn @@ -93,6 +93,13 @@ runs on BSC_ConnHdlr { 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, valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, l3_enc)))); + alt { + [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {} + [] BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + setverdict(fail, "DISC.ind from SCCP"); + self.stop; + } + } } /* helper function to fully establish a dedicated channel */