From b522e1cadb97d172d63ad3ec1bf551f41cce3e62 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Thu, 28 Sep 2023 13:38:50 +0200 Subject: [PATCH] bsc: Use different CIC in concurrent calls from same MSC The MSC (our TTCN3 emulation) expects to assign unique CIC for each concurrent call, so that the BSC can properly differentiate and do the proper connection setup. Change-Id: Iac09590693bf39ccc90bf2b0645ca672a4787c95 --- bsc/BSC_Tests.ttcn | 12 +++++++----- bsc/MSC_ConnectionHandler.ttcn | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index f2844e1df..b4d6e024a 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -1726,9 +1726,9 @@ testcase TC_assignment_cic_only(integer bssap_idx := 0) runs on test_CT { } /* generate an assignment request for either AoIP or SCCPlite */ -function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP { +function f_gen_ass_req(boolean osmux_enabled := false, uint8_t ass_cid := 0, integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP { var PDU_BSSAP ass_cmd; - var BSSMAP_IE_Osmo_OsmuxCID osmux_cid := valueof(ts_OsmuxCID(0)); + var BSSMAP_IE_Osmo_OsmuxCID osmux_cid := valueof(ts_OsmuxCID(ass_cid)); if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) { var BSSMAP_IE_AoIP_TransportLayerAddress tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342)); @@ -1738,7 +1738,9 @@ function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0, c ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla)); } } else { - var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(0,1)); + var BIT8 ass_cid_bit := int2bit(ass_cid, 8); + var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(bit2int(ass_cid_bit >> 5), + bit2int(ass_cid_bit and4b '00011111'B))); ass_cmd := valueof(ts_BSSMAP_AssignmentReq(cic, omit)); } return ass_cmd; @@ -12194,7 +12196,7 @@ private function f_vty_mgw_cfg_keepalive(integer mgw_nr := 1, integer req_intval private const charstring COORD_CMD_ESTABLISHED := "COORD_CMD_ESTABLISHED"; private function f_TC_mgwpool_call_seq_1(charstring id) runs on MSC_ConnHdlr { var template PDU_BSSAP exp_compl := f_gen_exp_compl(); - var PDU_BSSAP ass_cmd := f_gen_ass_req(); + var PDU_BSSAP ass_cmd := f_gen_ass_req(ass_cid := 0); ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR})); @@ -12207,7 +12209,7 @@ private function f_TC_mgwpool_call_seq_1(charstring id) runs on MSC_ConnHdlr { } private function f_TC_mgwpool_call_seq_2(charstring id) runs on MSC_ConnHdlr { var template PDU_BSSAP exp_compl := f_gen_exp_compl(); - var PDU_BSSAP ass_cmd := f_gen_ass_req(); + var PDU_BSSAP ass_cmd := f_gen_ass_req(ass_cid := 1); ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType); ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR})); diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn index 269fb795b..7a5e55e54 100644 --- a/bsc/MSC_ConnectionHandler.ttcn +++ b/bsc/MSC_ConnectionHandler.ttcn @@ -1652,7 +1652,7 @@ runs on MSC_ConnHdlr { var template MgcpCommand cmd; var template MgcpResponse resp; var integer cic := f_bssmap_ie_cic_2_int(ass_cmd.pdu.bssmap.assignmentRequest.circuitIdentityCode); - var MgcpEndpoint ep := int2str(cic) & "@mgw"; /* 1: matches value configured in BSC_Tests.ttcn pass in AssignReq */ + var MgcpEndpoint ep := int2str(cic) & "@mgw"; /* matches value configured in BSC_Tests.ttcn pass in AssignReq */ var MgcpCallId call_id := '51234'H; var SDP_attribute_list attributes := { valueof(ts_SDP_ptime(20)) }; if (g_pars.use_osmux_cn) {