[PATCH] osmo-msc[master]: Properly reject CM Re-Establishment Request

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Wed Jan 24 20:41:50 UTC 2018


Review at  https://gerrit.osmocom.org/6033

Properly reject CM Re-Establishment Request

Even if we're not implementing CM re-establishment, we should give
the MS a clear indication that we don't do and follow the related
procedures of TS 24.008 by sending CM SERVICE REJECT.

Change-Id: I1c0473647295456fd635b8df6079ee48695dcf2e
---
M src/libmsc/gsm_04_08.c
1 file changed, 22 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/33/6033/1

diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 2a70ef4..2400fa8 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -794,6 +794,26 @@
 	return 0;
 }
 
+/* Receive a CM Re-establish Request */
+static int gsm48_rx_cm_reest_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
+{
+	uint8_t mi_type;
+	char mi_string[GSM48_MI_SIZE];
+	struct gsm48_hdr *gh = msgb_l3(msg);
+
+	uint8_t classmark2_len = gh->data[1];
+	uint8_t *classmark2 = gh->data+2;
+	uint8_t mi_len = *(classmark2 + classmark2_len);
+	uint8_t *mi = (classmark2 + classmark2_len + 1);
+
+	gsm48_mi_to_string(mi_string, sizeof(mi_string), mi, mi_len);
+	mi_type = mi[0] & GSM_MI_TYPE_MASK;
+	DEBUGP(DMM, "<- CM RE-ESTABLISH REQUEST MI(%s)=%s\n", gsm48_mi_type_name(mi_type), mi_string);
+
+	/* we don't support CM call re-establishment */
+	return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
+}
+
 static int gsm48_rx_mm_imsi_detach_ind(struct gsm_subscriber_connection *conn, struct msgb *msg)
 {
 	struct gsm_network *network = conn->network;
@@ -1093,7 +1113,7 @@
 		rc = gsm48_rx_mm_imsi_detach_ind(conn, msg);
 		break;
 	case GSM48_MT_MM_CM_REEST_REQ:
-		DEBUGP(DMM, "CM REESTABLISH REQUEST: Not implemented\n");
+		rc = gsm48_rx_cm_reest_req(conn, msg);
 		break;
 	case GSM48_MT_MM_AUTH_RESP:
 		rc = gsm48_rx_mm_auth_resp(conn, msg);
@@ -3240,6 +3260,7 @@
 		switch (msg_type) {
 		case GSM48_MT_MM_LOC_UPD_REQUEST:
 		case GSM48_MT_MM_CM_SERV_REQ:
+		case GSM48_MT_MM_CM_REEST_REQ:
 		case GSM48_MT_MM_AUTH_RESP:
 		case GSM48_MT_MM_AUTH_FAIL:
 		case GSM48_MT_MM_ID_RESP:

-- 
To view, visit https://gerrit.osmocom.org/6033
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1c0473647295456fd635b8df6079ee48695dcf2e
Gerrit-PatchSet: 1
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list