aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/gsm_04_08.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-01-24 12:49:34 +0100
committerHarald Welte <laforge@gnumonks.org>2018-01-24 14:04:46 +0000
commit37382ec2cf26ebcd70918457cb4d2b7285c52e0d (patch)
treeb1424559f1598ac0187515c8a66fb4110deff5ac /src/libmsc/gsm_04_08.c
parent3995d2ea855e34bce25f1923feb416567083399f (diff)
Reject any CM SERVICE we don't support
When we receive a CM Service Request, OsmoMSC should eventually verify what kind of service it is the phone requests, and whether we support that service. Change-Id: I499730d760dc9ac7f599e09959c6eac4452f2eab Closes: OS#2668
Diffstat (limited to 'src/libmsc/gsm_04_08.c')
-rw-r--r--src/libmsc/gsm_04_08.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 90669e13c..ea40a9608 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -693,6 +693,17 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
GSM48_REJECT_INCORRECT_MESSAGE);
}
+ switch (req->cm_service_type) {
+ case GSM48_CMSERV_MO_CALL_PACKET:
+ case GSM48_CMSERV_EMERGENCY:
+ case GSM48_CMSERV_SMS:
+ case GSM48_CMSERV_SUP_SERV:
+ /* continue below */
+ break;
+ default:
+ return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
+ }
+
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, (classmark2 + classmark2_len));
memcpy(conn->classmark.classmark2, classmark2, classmark2_len);
conn->classmark.classmark2_len = classmark2_len;