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);