libmsc: add 3k1_AUDIO and FAX_G3 bearer cap
Bearer capability 3k1_AUDIO and FAX_G3 are only important
for the interworking function, the MSC should handle
these calls the same as CSD calls with unrestricted digital
bearer capability.
Change-Id: I198aa867a8f236b8ddd05d3b2356f64b876fd4c1
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 1e2c5af..31fcb23 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -825,6 +825,8 @@
LOG_TRANS(trans, LOGL_INFO,
"Got no information of remote audio codecs: neither SDP nor Bearer Capability. Trying anyway.\n");
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
if (setup->fields & MNCC_F_BEARER_CAP) {
trans->cc.remote = (struct sdp_msg){};
@@ -878,6 +880,8 @@
return rc;
}
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
if (csd_bs_list_to_bearer_cap(&bearer_cap, &trans->cc.local.bearer_services) == 0) {
LOG_TRANS(trans, LOGL_ERROR, "Error composing Bearer Capability for CC Setup\n");
diff --git a/src/libmsc/mncc_builtin.c b/src/libmsc/mncc_builtin.c
index c1debc5..6474201 100644
--- a/src/libmsc/mncc_builtin.c
+++ b/src/libmsc/mncc_builtin.c
@@ -88,6 +88,8 @@
/* we currently only do speech and CSD */
switch (setup->bearer_cap.transfer) {
case GSM_MNCC_BCAP_SPEECH:
+ case GSM_MNCC_BCAP_AUDIO:
+ case GSM_MNCC_BCAP_FAX_G3:
case GSM_MNCC_BCAP_UNR_DIG:
break;
default:
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index b4776a0..e64b54d 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -669,6 +669,8 @@
return;
}
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
if (!cc_trans->cc.local.bearer_services.count) {
LOG_TRANS(cc_trans, LOGL_ERROR, "Assignment not possible, no matching bearer service: %s\n",
diff --git a/src/libmsc/msc_ho.c b/src/libmsc/msc_ho.c
index 9748ed9..f826975 100644
--- a/src/libmsc/msc_ho.c
+++ b/src/libmsc/msc_ho.c
@@ -422,6 +422,8 @@
return;
}
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
if (csd_bs_list_to_gsm0808_channel_type(&channel_type, &cc_trans->cc.local.bearer_services)) {
msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
diff --git a/src/libmsc/transaction_cc.c b/src/libmsc/transaction_cc.c
index 35ec5dc..1ea6633 100644
--- a/src/libmsc/transaction_cc.c
+++ b/src/libmsc/transaction_cc.c
@@ -54,6 +54,8 @@
LOG_TRANS(trans, LOGL_DEBUG, "codecs: %s\n",
codec_filter_to_str(&trans->cc.codecs, &trans->cc.local, &trans->cc.remote));
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
csd_filter_run(&trans->cc.csd, &trans->cc.local, &trans->cc.remote);
LOG_TRANS(trans, LOGL_DEBUG, "codec/BS: %s\n",
@@ -78,6 +80,8 @@
case GSM48_BCAP_ITCAP_SPEECH:
sdp_audio_codecs_from_bearer_cap(&trans->cc.codecs.ms, bcap);
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
sdp_audio_codecs_set_csd(&trans->cc.codecs.ms);
csd_bs_list_from_bearer_cap(&trans->cc.csd.ms, bcap);
@@ -101,6 +105,8 @@
case GSM48_BCAP_ITCAP_SPEECH:
sdp_audio_codecs_from_bearer_cap(&trans->cc.remote.audio_codecs, bcap);
break;
+ case GSM48_BCAP_ITCAP_3k1_AUDIO:
+ case GSM48_BCAP_ITCAP_FAX_G3:
case GSM48_BCAP_ITCAP_UNR_DIG_INF:
sdp_audio_codecs_set_csd(&trans->cc.remote.audio_codecs);
csd_bs_list_from_bearer_cap(&trans->cc.remote.bearer_services, bcap);