osmo-msc/src/libmsc
Neels Hofmeyr f31a1ccd9a add full SDP codec information to the MNCC socket
This way osmo-msc can benefit from the complete codec information received via
SIP, which was so far terminated at osmo-sip-connector. osmo-sip-connector
could/should have translated the received SDP to MNCC bearer_cap, but this was
never implemented properly. Since osmo-msc already handles SDP towards the MGW,
it makes most sense to pass SDP to osmo-msc transparently.

To be able to send a valid RTP IP:port in the SDP upon the first MNCC_SETUP_IND
going out, move the CN side CRCX to the very start of establishing a voice
call. As a result, first create MGW conns for both RAN and CN before starting.

The voice_call_full.msc chart shows the change in message sequence for MO and
MT voice calls.

Implement cc_sdp.c, which accumulates codec information from various sources
(MS, BSS, Assignment, remote call leg) and provides filtering to get the
available set of codecs at any point in time.

Implement codec_sdp_cc_t9n.c, to translate between SDP and the various
libosmo-mgcp-client, CC and BSSMAP representations of codecs:
- Speech Version,
- Permitted Speech,
- Speech Codec Type,
- default Payload Type numbers,
- enum mgcp_codecs,
- FR/HR compatibility
- SDP audio codec names,
- various AMR configurations.
A codec_map lists these relations in one large data record.
Various functions provide conversions by traversing this map.

Add trans->cc.mnccc_release_sent: so far, avoiding to send an MNCC release
during trans_free() was done by setting the callref = 0. But that also skips CC
Release. On codec mismatch, we send a specific MNCC error code but still want a
normal CC Release: hence send the MNCC message, set mnccc_release_sent = true
and do normal CC Release in trans_free().
(A better way to do this would be to adopt the mncc_call FSM from inter-MSC
handover also for local voice calls, but that is out of scope for now. I want
to try that soon, as time permits.)

Change-Id: I8c3b2de53ffae4ec3a66b9dabf308c290a2c999f
2020-01-06 18:00:40 +01:00
..
Makefile.am add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
call_leg.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
cc_sdp.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
cell_id_list.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
codec_sdp_cc_t9n.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
ctrl_commands.c vlr_subscr: use osmo_use_count 2019-04-12 02:15:25 +02:00
db.c sms db: when storing an SMS, retrieve the ID 2019-12-12 15:46:41 +00:00
e_link.c GSUP: include terminating nul in inter-MSC source/destination name 2019-05-08 17:02:32 +02:00
gsm_04_08.c libmsc/gsm_04_08.c: fix: verify MI before calling vlr_subscr_rx_id_resp() 2020-01-05 11:23:09 +00:00
gsm_04_08_cc.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
gsm_04_11.c libmsc/gsm_04_11.c: do not abuse LOG_TRANS() in gsm411_alloc_mt_trans() 2019-06-20 16:54:45 +00:00
gsm_04_11_gsup.c libmsc/gsm_04_11_gsup.c: fix SM-RP-OA encoding for MO SMS over GSUP 2019-12-19 22:12:18 +09:00
gsm_04_14.c rename bscconfig.h to config.h, cleanup 2019-05-08 17:02:32 +02:00
gsm_04_80.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
gsm_09_11.c Fix some typos 2019-11-19 01:04:34 +00:00
gsup_client_mux.c gsup_client_mux_tx_error_reply(): fix: do not omit SM-RP-MR IE 2019-06-15 13:13:50 +07:00
mncc.c MNCC v6: add optional SDP to the socket protocol 2019-11-28 02:52:55 +01:00
mncc_builtin.c libmsc/mncc_builtin.c: drop dummy switch in int_mncc_recv() 2019-06-14 22:58:33 +07:00
mncc_call.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
mncc_sock.c Fix some typos 2019-11-19 01:04:34 +00:00
msc_a.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
msc_a_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_ho.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
msc_i.c call_leg: remove unused event MSC_EV_CALL_LEG_RTP_RELEASED 2019-05-10 07:13:41 +00:00
msc_i_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_net_init.c add 'encryption uea 1 2' cfg / fix ttcn3 iu tests 2019-08-13 23:52:31 +02:00
msc_t.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
msc_t_remote.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
msc_vty.c libmsc: fix potential NULL-pointer dereferences detected by GCC's LTO 2019-12-02 08:44:53 +00:00
msub.c msub_check_for_release(): Initialize msc_role_a_c 2019-05-09 08:42:48 +00:00
neighbor_ident.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
neighbor_ident_vty.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
paging.c paging: Send SGsAP-SERVICE-ABORT-REQUEST on paging timeout 2019-09-26 19:23:54 +00:00
ran_conn.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
ran_infra.c rename bscconfig.h to config.h, cleanup 2019-05-08 17:02:32 +02:00
ran_msg.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
ran_msg_a.c Fix some typos 2019-11-19 01:04:34 +00:00
ran_msg_iu.c log: RANAP encode: use RANAP message names instead of BSSAP 2019-10-29 16:46:32 +01:00
ran_peer.c Fix some typos 2019-11-19 01:04:34 +00:00
ran_up_l2.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
rrlp.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
rtp_stream.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
sccp_ran.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
sdp_msg.c add full SDP codec information to the MNCC socket 2020-01-06 18:00:40 +01:00
sgs_iface.c Fix some typos 2019-11-19 01:04:34 +00:00
sgs_server.c libmsc/sgs_server.c: do not override rc in case of SCTP_SHUTDOWN_EVENT 2019-05-13 20:15:04 +00:00
sgs_vty.c libmsc: fix: properly initialize the SGs server 2019-03-28 17:10:11 +07:00
silent_call.c large refactoring: support inter-BSC and inter-MSC Handover 2019-05-08 17:02:32 +02:00
smpp_openbsc.c Fix some typos 2019-11-19 01:04:34 +00:00
smpp_smsc.c smpp_smsc: Call destroy_tlv() when using build_tlv() 2019-04-10 10:53:23 +00:00
smpp_smsc.h SMPP: Don't accept password or system-id exceeding spec length 2019-05-10 07:07:00 +00:00
smpp_utils.c dissolve libcommon: drop debug.c 2018-03-22 17:05:42 +01:00
smpp_vty.c Write configuration correctly from vty (alert notifications) 2019-03-29 22:48:38 +00:00
sms_queue.c sms log tweak 2019-12-12 15:46:57 +00:00
transaction.c LOG_TRANS for CC: always log CC state 2019-10-21 00:40:31 +02:00