Commit Graph

7220 Commits

Author SHA1 Message Date
Andreas Eversberg 6c8db1d27c ASCI: Add function to receive VGCS/VBS messages from BSS
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-19 08:23:23 +00:00
Oliver Smith 80654ed67d csd_bs_to_gsm0808: add T 300 / proper ch_rate_type
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-18 11:14:48 +02:00
Andreas Eversberg f7c6f1424f ASCI: Add decoder for VGCS/VBS messages to msc_a.c
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-17 12:29:42 +00:00
Andreas Eversberg e24636c6bb ASCI: Add call control for VGCS/VBS
Change-Id: I9947403fde8212b66758104443c60aaacc8b1e7b
Related: OS#4854
2023-07-17 12:29:42 +00:00
Andreas Eversberg 9bbdc34a65 ASCI: Add callref to assignment command
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-17 12:29:42 +00:00
Andreas Eversberg 2d27e2ccb1 ASCI: Add functions to transcode VGCS/VBS messages on A-interface
Change-Id: I6b1f088201e7ef4a58762937855a1d358973882c
Related: OS#4854
2023-07-17 12:29:42 +00:00
Andreas Eversberg cd605f30b7 ASCI: Add simple implementation of Group Call Register
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-17 12:29:42 +00:00
Oliver Smith 429ab7bb97 mncc_builtin: permit data bearer types
Related: OS#4394
Change-Id: I7bd6fa836e5a5c05c5d2358a9b8fd2b61981dd5f
2023-07-12 09:54:57 +00:00
Oliver Smith fa006b8a36 csd_bs_list_remove: fix removal logic
Related: OS#4394
Change-Id: I638d4e063fee6bad45ab14d8ad6b9ad847a7127a
2023-07-10 07:03:29 +00:00
Oliver Smith f543548505 test: add csd_test
Show that csd_bs_list_remove() is currently broken, the next patch will
fix it.

Related: OS#4394
Change-Id: Icc98de75e97c75216a71caf94355d09330c95cba
2023-07-10 07:02:59 +00:00
Andreas Eversberg 5b1ab541a2 ASCI: Allow transaction without subscriber associated
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-09 07:41:33 +00:00
Andreas Eversberg 456c6f7e4d ASCI: Add two new transaction types for VGCS and VBS
- 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-09 07:41:33 +00:00
Andreas Eversberg 7e4b032b88 ASCI: Add transaction type to trans_find_by_callref()
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-09 07:41:33 +00:00
Andreas Eversberg bcb4d6b26f ASCI: Allow usage of rtp_stream with other FSM
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-09 07:41:33 +00:00
Andreas Eversberg 58fe2e03c8 ASCI: rtp_stream_commit(): Also update MGW on conn mode change
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-09 07:41:33 +00:00
Andreas Eversberg 712b28e695 ASCI: Use a unique call-id for RTP streams
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-09 07:41:33 +00:00
Andreas Eversberg 0452cf9467 ASCI: Add log category for VGCS/VBS call and channel FSM
Change-Id: Icebc855fdc3f6ca7034ad3576b1acb5aed6bc435
Related: OS#4854
2023-07-09 07:41:33 +00:00
Andreas Eversberg b9162c7cc6 ASCI: Add log categories for GCC/BCC (call control)
Change-Id: I4c5d002b5bb1c2ebf2fac777ab784559fc265e7c
Related: OS#4854
2023-07-09 07:41:33 +00:00
Oliver Smith 412cf92d3c gsm48_cc_tx_setup: use MNCC bcaps for CSD
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-06 14:52:06 +02:00
Oliver Smith 8d0aa26166 mncc_test: fix talloc_named_const
Change-Id: I0f0a5497eb37b9f9b9102e01cee8c1bda85c5dfe
2023-07-06 12:58:14 +02:00
Oliver Smith 8e16e8b338 gsm48_cc_tx_alerting: check rc of sdp_msg_from_sdp_str
Fixes: CID#321280
Change-Id: Id372d2d844446d6667a00dae22bdf8ed36c599ba
2023-06-23 10:55:55 +00:00
Oliver Smith 17399803a4 csd_bs_list_to_gsm0808_channel_type: fix rc check
Check the return code before writing it to unsigned ct->data_rate, as
"ct->data_rate < 0" is never true.

Fixes: CID#321277
Fixes: 106321 ("Add initial CSD support with external MNCC")
Change-Id: I5d77da71b60748818ba631229126c1bf061a9c7d
2023-06-23 10:38:46 +00:00
Oliver Smith 0d4607d90d msc_ho_send_handover_request: fix check_after_deref
Fixes: CID#211073
Change-Id: I9389cc9c4af987c11652c6fe9a0ff4289a7781c9
2023-06-22 14:53:17 +02:00
Oliver Smith 6a8dae666c smpp_msc: submit_to_sms: check ud_len > sms_msg_len
Fixes: CID#240727
Change-Id: Ie01ac84816f6ac3ba5631a643d486fb0dfb05eb2
2023-06-22 12:15:15 +02:00
Oliver Smith d0980a4e8b sdp_msg_test: fix dereference after null check
Fixes: CID#274690
Change-Id: Ic59252e4f1d4daf5f86c6b73ec951e02109df9bc
2023-06-22 11:56:11 +02:00
Oliver Smith 79d824f7f4 smpp_handle_bind_tx: initialize tlv
Fixes: CID#272977
Change-Id: I22da1aa95bf19a9bb1d8e0875f3b68356d801c70
2023-06-22 11:42:23 +02:00
Oliver Smith 1063213b38 Add initial CSD support with external MNCC
Implement and use CSD bearer service logic (with similar audio codec code):
* csd_filter (codec_filter)
* csd_bs (sdp_audio_codec)
* csd_bs_list (sdp_audio_codecs)

Related: OS#4394
Change-Id: Ide8b8321e0401dcbe35da2ec9cee0abca821d99a
2023-06-20 12:47:05 +02:00
Oliver Smith 64f3930c72 gsm48_cc_tx_setup: set trans->bearer_cap.transfer early
Prepare to use trans->bearer_cap.transfer in trans_cc_filter_run() to
differentiate between speech and data (CSD).

Related: OS#4394
Change-Id: Id0476a4882bcb27413d033f2de2c5288954f0b95
2023-06-15 15:06:46 +02:00
Oliver Smith 8a8ce714ff msc: add trans_cc_set_remote_from_bc
Prepare to set remote CSD bearer services in a future patch.

Related: OS#4394
Change-Id: I71a8ff6167e2adf3ee609883730e5f67b7539185
2023-06-15 15:06:46 +02:00
Oliver Smith c63c3a0cc5 transaction: move cc.codecs.result -> cc.local
Prepare for CSD where this will be used too.

Related: OS#4394
Change-Id: Iaf954be0455625faa06a64c19905b79b7045f8e4
2023-06-15 15:06:46 +02:00
Oliver Smith 593cd88535 transaction: move cc.codecs.remote -> cc.remote
Move remote out of codecs, as it will be used by CSD code as well.
Otherwise we would need to store it twice (in cc.codecs.remote and
cc.csd.remote).

Related: OS#4394
Change-Id: I5d2e078db3b3437cb6feae40d8955912d7a297e4
2023-06-15 15:06:46 +02:00
Oliver Smith ceca8e6d2d codec_filter_run: prepare for CSD
Related: OS#4394
Change-Id: I18b396193ad25a3905cc8c1853c9680dab0a2d44
2023-06-15 15:06:46 +02:00
Oliver Smith 1c7f1787bd codec_filter_set_bss: prepare for CSD
Related: OS#4394
Change-Id: I931db33820d9da81147bda84002ada0b80f11186
2023-06-15 15:06:46 +02:00
Oliver Smith c7c40c9648 codec_filter_set_ran: prepare for CSD
Related: OS#4394
Change-Id: I467a7bd461dcac2fff93a3777d4090d6b7d3d041
2023-06-15 15:06:46 +02:00
Oliver Smith a35abb761c codec_filter_init: prepare for CSD
Related: OS#4394
Change-Id: I1270b00464456abc5300fd47e6087a0ba6243d03
2023-06-15 15:06:46 +02:00
Oliver Smith 0b70b20a89 Cosmetic: gsm48_cc_tx_setup: remove TODO comment
Remove the comment as trans->bearer_cap will be used in CSD code to
differentiate between speech and data.

Related: OS#4394
Change-Id: I0539632f464bc44945599bec52dc2a4df2f0115f
2023-06-15 15:03:55 +02:00
Oliver Smith e545b9d3d6 Cosmetic: gsm48_cc_tx_setup: tweak comment
Remove the misleading "We must not pass bearer_cap to
codec_filter_init()" part of the comment. The function doesn't accept a
bearer_cap parameter, it cannot be passed to the function:

  void codec_filter_init(struct codec_filter *codec_filter)
  {
  	*codec_filter = (struct codec_filter){};
  }

Related: OS#4394
Change-Id: I87a1e371e108d8da514b30f1726aad0f85ea4111
2023-06-15 14:25:24 +02:00
Oliver Smith 5375f78ebb codec_filter_set_ms_from_bc: prepare for CSD
In all the places where codec_filter_ functions get called, for CSD we
will need to filter the bearer services. Add a new
transaction_cc.c file for functions that either combine the
codec_filter_ function with logic for CSD and voice calls or just call
the existing codec_filter function and a new csd_filter function.

Start with moving codec_filter_set_ms_from_bc to this new file, it will
be extended with a case for CSD in a future patch.

Related: OS#4394
Change-Id: If225f2a299ce6bc9ae35a17d6f591d889f49155e
2023-06-15 14:25:24 +02:00
Oliver Smith b1a1588f6e ran_a_channel_type_to_speech_codec_list: add CSD
Related: OS#4394
Change-Id: I336e6aa735f894aa35b2ccfe24a54eb171d7ad10
2023-06-15 10:29:29 +02:00
Oliver Smith b4b9ec805a codec_mapping: add clearmode
Related: OS#4394
Change-Id: Ieeaca6a00dc332424d443e44251f3219245511db
2023-06-15 10:29:29 +02:00
Pau Espin 9e3bab9e97 Use new mgcp_client_conf_alloc() API to alloc mgcp_client_conf
Depends: osmo-mgw.git Change-Id Iba0853ed099a32cf1dde78c17e1b34343db41cfc
Change-Id: I382046bba67646a7365d9290d604b97c9d886e02
2023-06-14 14:09:11 +02:00
Pau Espin 11c420a2fa Write explicit role & sctp-role fields in ASP configurations
Change-Id: I4901ea309cd5975117480642d068df3ca2f73662
2023-06-08 19:39:13 +02:00
Vadim Yanitskiy d3abcabdb3 tests/{ctrl,vty}_test_runner.py: raise an exception if proc's rc != 0
Change-Id: I4ed672d369bd379871a6a9fba5ff2da817e362d7
Depends: osmo-python-tests.git I1e11fcb6c5a587c27fc00920b6e157862d972fd9
Related: OS#5665
2023-06-01 20:08:02 +07:00
Vadim Yanitskiy 912f3501f2 fixup: contrib/jenkins: create workspace.tar.xz on error
cat-testlogs.sh does "exit 1", so no workspace.tar.xz is created.
Call this script after archiving the workspace.

Change-Id: Ibcb842f32418e66a186d6b21bb5861cf4a0b7c4a
Fixes: 799d972132 "contrib/jenkins: create workspace.tar.xz on error"
Related: OS#5665
2023-05-28 03:04:51 +07:00
Oliver Smith 902fb947b6 systemd: depend on networking-online.target
Related: SYS#6400
Change-Id: Ib6c78c76c5f13b9482428ce653a61b03b2aca1d3
2023-05-26 15:32:04 +00:00
Pau Espin 1c841f8a95 UserManual: Include sigtran*.adoc from osmo-gsm-manuals.git
They were only included in osmo-stp so far.

Change-Id: I37e36e7919d6996a79533b62564c5d82908b57f7
2023-05-26 14:11:01 +02:00
Oliver Smith 799d972132 contrib/jenkins: create workspace.tar.xz on error
In order to figure out why we sometimes get a coredump in the jenkins
master jobs, add a quick hack to get all relevant binaries on libraries
on error.

Related: OS#5665
Change-Id: If7b4eb050e2b3f763b5cfddf1a5b6a18bb41f46e
2023-05-23 16:21:04 +02:00
Vadim Yanitskiy 999a593efb copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbH
Change-Id: I81687235fedcbbb686db7def59318e891e00ced7
2023-05-18 17:22:26 +07:00
Oliver Smith e4aa86514e debian: set compat level to 10
Related: OS#5958
Change-Id: I9776c48f4f913dd7f7cde3afc6fe32bd0e9ba1b0
2023-04-25 16:48:30 +02:00
Neels Hofmeyr 85d7ba3d34 TODO-RELEASE: add note on osmo-sip-connector and SDP
Change-Id: I37fb5e18f06a5379d0320ee7d47885c9283cbd06
2023-04-15 21:57:22 +00:00