aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2023-08-23gsm48_cc_tx_call_proc_…: verify bcap.transferosmith/wipOliver Smith1-0/+8
Fail if MNCC tries to switch the Information Transfer Capability from CSD to speech, so it is obvious that something is wrong here. I ran into this while writing a test. Related: OS#4394 Change-Id: Ibb76d08cad1ac3bc3320391c89766150a2e605c3
2023-08-23msc_a_up_call_assignment_complete: check CSD codecOliver Smith1-0/+9
Reject any other codec than GSM0808_SCT_CSD in Assignment Complete from RAN, if OsmoMSC is preparing a CSD call. Related: OS#4394 Change-Id: I94de84df41bcd050d0e7b4e4fea1c6a6551ef7d3
2023-08-23msc_ho_send_handover_request: support CSDOliver Smith1-4/+21
Related: OS#4394 Change-Id: I5fea299bdc19d2979b5c222d8dd265dac2068307
2023-08-23csd_bs_list_to_gsm0808_ct: assert -> ret -EINVALOliver Smith1-1/+2
Instead of asserting on an empty list of bearer services, return -EINVAL. This makes the function more similar to sdp_audio_codecs_to_gsm0808_channel_type which also doesn't assert if an empty list of codecs is passed. Related: OS#4394 Change-Id: I15a389e1f7a9d3d17b6531c9836d3d5f9d148267
2023-08-23Cosmetic: fix typoOliver Smith1-1/+1
Change-Id: Ib707fa66ae789abfa8795b4e521a16e24c77647d
2023-08-08trans_lcls_compose(): Set PLMN fron cell currently in usePau Espin Pedrol1-1/+1
The MS in general provides the Selected PLMN ID (IE) in the Complete Layer 3 Information message. osmo-msc handles that message in msc_a_ran_dec_from_msc_i() and stores the information of the PLMN in msc_a->via_cell. If no PLMN information is provided in the message, then at that same place the PLMN configured in the VTY is taken as an implicit default. This patch changes trans_lcls_compose() to use the PLMN stored in msc_a->via_cell instead of the VTY configured one, meaning the PLMN provided by the MS (through the RAN in use) is used if available (otherwise the VTY-configure one is still used, as before). With this patch the PLMN VTY config option use is relegated to a single point of use in msc_a_ran_dec_from_msc_i() where the Complete Layer 3 Information is used. As a result, it becomes clear now that the VTY config is only applied in the scenario where no PLMN is provided at that time. Related: SYS#6360 Change-Id: Ibad0005a1d7cef64dd8fefa3e554ba99a06c3666
2023-08-08Tx Loc UPD ACC: Use PLMN provided by subscrPau Espin Pedrol1-6/+1
The MS in general provides the Selected PLMN ID (IE) in the Complete Layer 3 Information message. osmo-msc handles that message in msc_a_ran_dec_from_msc_i() and stores the information of the PLMN in msc_a->via_cell. If no PLMN information is provided in the message, then at that same place the PLMN configured in the VTY is taken as an implicit default. The PLMN information stored in msc_a->via_cell is then finally stored into vsub->cgi in evaluate_acceptance_outcome(). This patch changes gsm0408_loc_upd_acc() to avoid re-applying the PLMN configured at the VTY again, and instead use whatever is already in vsub->cgi. This is more correct since the PLMN provided by the MS takes precedence over the implicitly configured one, meaning several PLMNs can be handled. Otherwise, the code is always overwriting the PLMN announced by the network on a specific RAN with the one in the MSC, which may end up with unexpected results. Related: SYS#6360 Change-Id: I421bd63a264db2bf6e1c4a4eea976f389e87b332
2023-07-28ASCI: Add missing transaction ID to SET PARAMETER messageAndreas Eversberg1-1/+2
Change-Id: I1b692cee894826a306885253a53a351f952d52dc Related: OS#4854
2023-07-28ASCI: Add debugging and error logging to VGCS/VBS call controlAndreas Eversberg1-0/+6
Change-Id: I3fbce71e47e9670f58e46e7c2a0f26a1bbc1a46e Related: OS#4854
2023-07-26csd_bs_list_to_bearer_cap(): add default branch for safetyVadim Yanitskiy1-0/+5
Otherwise we may fail to initialize cap->data.{user,interm}_rate. Change-Id: Ibfb71d1ece502585b55db0f28069a6aa0666b9df Related: OS#6110, OS#4394
2023-07-26csd_bs_list_to_bearer_cap(): properly initialize bcap fieldsVadim Yanitskiy1-1/+19
Currently this function fails to initialize all bcap fields properly, so the resulting CC Setup message generated by osmo-msc has some fields set to reserved/invalid values. With these changes I am able to establish a data call on TCH/F9.6: * cap->{mode,coding}: assign default values explicitly; * cap->radio: value 0 is reserved, set GSM48_BCAP_RRQ_FR_ONLY; * cap->data.sig_access: value 0 is reserved, set GSM48_BCAP_SA_I440_I450; * cap->data.transp: this is not a bool, set GSM48_BCAP_TR_{TRANSP,RLP}; * cap->data.{nr_{data,stop}_bits,parity}: set 8N1 by default; * cap->data.modem_type: explicitly assign default value; * cap->data.interm_rate: value 0 is reserved, set GSM48_BCAP_IR_{8k,16k}. The related libosmocore.git patch additionally fixes encoding of the "Connection element (octet 6c)", so that bcap->data.transp is used. Change-Id: If49c89e4f867bac92ad062c062b9f36bab2b4531 Related: libosmocore.git I7339908864e8a2aef6f2b48a108650167e413c7f Related: OS#6110, OS#4394
2023-07-25codec_mapping: codec_map[]: add missing speech codec for CLEARMODEVadim Yanitskiy1-0/+7
Without the gsm0808_speech_codec functions: * codec_mapping_by_gsm0808_speech_codec_type(), and * codec_mapping_by_gsm0808_speech_codec() fail to find the codec mapping for CLEARMODE. Change-Id: I87b3aedaf7ff7bbbcb381e94158566dc765e3ae6 Related: OS#6110, OS#4394
2023-07-25ran_a_channel_type_to_speech_codec_list(): set PI/PT for CSDVadim Yanitskiy1-1/+6
As per 3GPP TS 48.008, section 3.2.2.103, the Codec Type is valid if at least one of FI, PI or PT is set to '1'. Otherwise the Speech Codec Element is considered invalid and shall be ignored. Change-Id: Ibc452d37d4215c961a7946eef3ba2e7efdba078b Related: OS#6110, OS#4394
2023-07-25ran_a_mgcp_codec_from_sc(): map GSM0808_SCT_CSD to CODEC_CLEARMODEVadim Yanitskiy1-0/+2
Change-Id: I4095124be8ffb293863f35bea440cd465048a9fd Related: OS#6110, OS#4394
2023-07-25ran_a_mgcp_codec_from_sc(): cosmetic: remove unneeded breaksVadim Yanitskiy1-10/+0
Change-Id: I23d94c2d81c929deb819c02f4ddac3a702a3867d Related: OS#6110, OS#4394
2023-07-21SMPP: Fix Memory leaksKeith Whyte2-0/+3
Whenever we call build_tlv() we must call destroy_tlv() after we are finished with it. Similarly, smpp34_unpack() makes calls to smpp34_malloc() and these need to be free'd by us later. Change-Id: Ic2abcbe78cf7cf7b6ce36fe09aa9b4f8daee973f
2023-07-21ASCI: Point to correct state machine when calling ran_encode_and_send()Andreas Eversberg1-1/+1
Fixes: CID#322139 Change-Id: I8de1fce76ba36a06384581e3a1af706b41cad1fe
2023-07-21ASCI: Fix Null pointer dereference bug in gsm44068_bcc_gcc_trans_free()Andreas Eversberg1-4/+3
Fixes: CID#322142 Change-Id: Iab0b66dfcfdb870eaec4611720ce3a5f2089bd21
2023-07-21ASCI: Check if codec mapping exists for given codecAndreas Eversberg1-0/+5
Fixes: CID#322143 Change-Id: I65cdf2b7feaa72167c8002cd4d47183f99cab761
2023-07-21ASCI: Fix wrong check for Null pointer in vgcs_cell_fsm_null()Andreas Eversberg1-3/+3
Fixes: CID#322145, CID#322141 Change-Id: Iec0820f612450cde772076131b07fe7819d35790
2023-07-21ASCI: Null pointer bug fix in trans_create_bcc_gccAndreas Eversberg1-2/+5
Fixes: CID#322147 Change-Id: I1676d3cbf844930a6a433253f055a3f8fe3c210b
2023-07-21ASCI: Receive messages from MSC-A role related to VGCS/VBSAndreas Eversberg1-1/+29
Voice group call and voice broadcast call messages as well as assignment result are forwarded to VGCS/VBS call control. Change-Id: Ie68eedb8fcb064a55cd71b58630d7a8c8b5f29ad Related: OS#4854
2023-07-21msc_vty: support spaces in short/long network nameVadim Yanitskiy2-6/+10
Change-Id: If55c92669f06f0d038e8d90088a6bd76133055a2
2023-07-21ASCI: Clear VGCS call and channel on BSSMAP reset messageAndreas Eversberg1-1/+6
When sending or receiving BSSMAP reset msg, the ongoing VGCS/VBS SCCP connections are cleared. E.g. this happens if the BSC is restarted and there is an ongoing VGCS/VBS call at this BSC. Change-Id: Ib0b309150b82148098d05cfb1fb18767283e654e Related: OS#4854
2023-07-21ASCI: Add reception of UPLINK RELEASE on dedicated channelAndreas Eversberg1-0/+4
When the calling phone releases the uplink before it has been assigned to the group channel, it will send an UPLINK RELEASE message on the dedicated channel. This message is forwarded to VGCS state machine to handle the release there. Change-Id: Ie8f7338da18eaaefbb022c09b96f18a3d78f8a95 Related: OS#4854
2023-07-21ASCI: Add VTY to configure GCR (Group Call Register)Andreas Eversberg8-0/+481
Change-Id: I5bd034a62fc8b483f550d29103c2f7587198f590 Related: OS#4854
2023-07-19ASCI: Remove check for trans->msc_a to be set in _assign_complete()Andreas Eversberg1-4/+3
trans->msc_a is always set when ASSIGNMENT COMPLETE is received. Fixes: CID#322144 Change-Id: I0fe16e59959b48d08d95aefa6d4415f78dcf1eb4
2023-07-19ASCI: Check return code of osmo_mobile_identity_decode()Andreas Eversberg1-1/+2
Fixes: CID#322146 Change-Id: I15a6cf97a901cbb6c99ec2269051a351b504d338
2023-07-19ASCI: Add option to switch on or off ASCI supportAndreas Eversberg4-7/+16
Switching ASCI support is controled via VTY. This added in a later patch. (Chg-Id: I5bd034a62fc8b483f550d29103c2f7587198f590) Change-Id: Id68deb69f7395f0f8f50b3820e9d51052a34f753 Related: OS#4854
2023-07-19ASCI: Add function to receive VGCS/VBS messages from BSSAndreas Eversberg2-10/+20
A voice group/broadcast call has no SCCP connection that is related 1:1 to a calling or called subscriber. Instead there are multiple connections between MSC and BSS. Some of them control the uplink for each BSS and some of them assign the channels for each BTS. SCCP connections are maintained by the VGCS call control. Message from the RAN are directly forwarded to the VGCS call control. Change-Id: Ie4a2f19ba75140a6f2de02b709597239c01f02a2 Related: OS#4854
2023-07-18csd_bs_to_gsm0808: add T 300 / proper ch_rate_typeOliver Smith1-8/+17
There is no GSM0808_DATA_RATE_TRANSP_300 (not in libosmocore and not in 3GPP TS 48.008 § 3.2.11 on which the enum is based). As I understand it, we need to use GSM0808_DATA_RATE_TRANSP_600. As pointed out in review, either TCH/H2.4 or TCH/F2.4 would work for rates below 9600, so use GSM0808_DATA_FULL_PREF. Use GSM0808_DATA_FULL_BM instead of GSM0808_SPEECH_FULL_BM. The value is 0x8 for both, but this is the correct name. Related: OS#4394 Change-Id: I7297cc481fbe36355b5231ca800cf566a1ee93c0
2023-07-17ASCI: Add decoder for VGCS/VBS messages to msc_a.cAndreas Eversberg1-0/+131
VGCS/VBS messages from BSS are decoded and a receiver funktion for the GCC/BCC (VGCS/VBS call control) is selected. Change-Id: Ief6259ba3914eeaceb063b562a0bcbc48349ce60 Related: OS#4854
2023-07-17ASCI: Add call control for VGCS/VBSAndreas Eversberg8-1/+3015
Change-Id: I9947403fde8212b66758104443c60aaacc8b1e7b Related: OS#4854
2023-07-17ASCI: Add callref to assignment commandAndreas Eversberg2-8/+8
The (optional) call reference is required to assign a calling subscriber to a voice group/bcast channel. The BSC can then determine to which existing VGCS/VBS channel the MS is assigned to. This IE is part of the GSM standard TS 48.008 (see §3.2.1.1) Change-Id: I7955c6e0eebc930f85f360dda46be17cbd39e181 Related: OS#4854
2023-07-17ASCI: Add functions to transcode VGCS/VBS messages on A-interfaceAndreas Eversberg3-0/+548
Change-Id: I6b1f088201e7ef4a58762937855a1d358973882c Related: OS#4854
2023-07-17ASCI: Add simple implementation of Group Call RegisterAndreas Eversberg6-0/+238
This is a built-in data structure to store and handle voice group calls. The GCR will be used by VGCS/VBS call control. (Chg-Id: I9947403fde8212b66758104443c60aaacc8b1e7b) The GCR will be used by VTY code. (Chg-Id: I5bd034a62fc8b483f550d29103c2f7587198f590) Change-Id: Ia74a4a865f943c5fb388cd28f9406005c92e663e Related: OS#4854
2023-07-12mncc_builtin: permit data bearer typesOliver Smith1-3/+7
Related: OS#4394 Change-Id: I7bd6fa836e5a5c05c5d2358a9b8fd2b61981dd5f
2023-07-10csd_bs_list_remove: fix removal logicOliver Smith2-9/+9
Related: OS#4394 Change-Id: I638d4e063fee6bad45ab14d8ad6b9ad847a7127a
2023-07-10test: add csd_testOliver Smith7-0/+101
Show that csd_bs_list_remove() is currently broken, the next patch will fix it. Related: OS#4394 Change-Id: Icc98de75e97c75216a71caf94355d09330c95cba
2023-07-09ASCI: Allow transaction without subscriber associatedAndreas Eversberg1-3/+4
Generally a transaction is linked with a subscriber (vsub). A voice group call transaction may not have a subscriber associated. The vsub field of the transaction will be NULL. If the group call is initiated by a calling subscriber, the vsub field is set until the calling subscriber is assigned to the voice group channel. If the group call is initiated via VTY, vsub field is not set on creation of the transaction. Change-Id: I2b9afe95db4c106c141f4b7bd199ec74e197e523 Related: OS#4854
2023-07-09ASCI: Add two new transaction types for VGCS and VBSAndreas Eversberg4-0/+34
- TRANS_GCC is used for the voice group call. - TRANS_BCC for the voice broadcast call. This also includes the use counters for transaction and CM service request usage: - MSC_A_USE_GCC - MSC_A_USE_BCC - MSC_A_USE_CM_SERVICE_BCC - MSC_A_USE_CM_SERVICE_GCC Change-Id: Iddd11f813582ac2ac2bdee91cc3a525986deb514 Related: OS#4854
2023-07-09ASCI: Add transaction type to trans_find_by_callref()Andreas Eversberg4-11/+12
A transaction can be identified by the callref and the type. Because transactions with different types may share the same callref value, it is required to include the type in the trans_find_by_callref() parameters. E.g. a voice group call may have the same callref as a voice broadcast call, but they are different calls. They also may not be confused with other transaction types having eventually equal callref value, like GSM 04.08 calls, SMS or supplementary services transactions. By adding the transaction type to trans_find_by_callref(), we essentially now use the (type, callref) tuple as unique ID for transactions, instead of just callref. Change-Id: Ic0b82033a1aa3c3508ad610c690a5f29073006c1 Related: OS#4854, OS#3294
2023-07-09ASCI: Allow usage of rtp_stream with other FSMAndreas Eversberg3-10/+15
Allow the caller of rtp_stream_alloc() to define what events will be dispatched to the parent FSM. This allows other state machines to use rtp_stream. It is required for using RTP stream process with VGCS FSM. Drop the unused parent_call_leg member. Change-Id: I0991927b6d00da08dfd455980645e68281a73a9e Related: OS#4854
2023-07-09ASCI: rtp_stream_commit(): Also update MGW on conn mode changeAndreas Eversberg3-9/+31
So far rtp_stream_commit() triggers an MGCP MDCX message only when codecs or the RTP address changed. Do the same for mode changes. ('sendrecv', 'recvonly', 'sendonly',...) Change-Id: I7a5637d0a7f1df13133e522fc78ba75eeeb2873e Related: OS#4854
2023-07-09ASCI: Use a unique call-id for RTP streamsAndreas Eversberg9-201/+207
The MGCP protocol features the 'C' (call-id) to identify which connections belong to the same call. They may be used by MGW for accounting or management procedures. So far we sent the MNCC callref as call-id. Instead, add a separate unique call_id number space. Assign a unique call_id to each transaction. Change-Id: I36c5f159fa0b54fb576ff8bd279928b895554793 Related: OS#4854
2023-07-09ASCI: Add log category for VGCS/VBS call and channel FSMAndreas Eversberg2-0/+6
Change-Id: Icebc855fdc3f6ca7034ad3576b1acb5aed6bc435 Related: OS#4854
2023-07-09ASCI: Add log categories for GCC/BCC (call control)Andreas Eversberg2-0/+14
Change-Id: I4c5d002b5bb1c2ebf2fac777ab784559fc265e7c Related: OS#4854
2023-07-06gsm48_cc_tx_setup: use MNCC bcaps for CSDOliver Smith1-1/+10
Use the MNCC bearer capabilities in CC setup for CSD, if available. Note that in the MNCC_F_BEARER_CAP code path sdp_audio_codecs_set_csd() also gets called by trans_cc_set_remote_from_bc(). Related: OS#4394 Change-Id: I56e49ebc41696912a81b8f4f63fbc36d0b605e9e
2023-07-06mncc_test: fix talloc_named_constOliver Smith1-1/+1
Change-Id: I0f0a5497eb37b9f9b9102e01cee8c1bda85c5dfe
2023-06-23gsm48_cc_tx_alerting: check rc of sdp_msg_from_sdp_strOliver Smith1-1/+6
Fixes: CID#321280 Change-Id: Id372d2d844446d6667a00dae22bdf8ed36c599ba