aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08_gprs.h16
-rw-r--r--src/gsm/gsm_04_08_gprs.c11
-rw-r--r--src/gsm/libosmogsm.map1
3 files changed, 28 insertions, 0 deletions
diff --git a/include/osmocom/gsm/protocol/gsm_04_08_gprs.h b/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
index af828fb7..cda1e48b 100644
--- a/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
+++ b/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
@@ -73,6 +73,11 @@ extern const struct value_string *gprs_det_t_mt_strs;
extern const struct value_string *gprs_upd_t_strs;
+/* Table 10.4 in 3GPP TS 24.008 (successor to 04.08) */
+#define GSM48_MT_GMM_SERVICE_REQ 0x0c
+#define GSM48_MT_GMM_SERVICE_ACK 0x0d
+#define GSM48_MT_GMM_SERVICE_REJ 0x0e
+
enum gsm48_gprs_ie_mm {
GSM48_IE_GMM_CIPH_CKSN = 0x08, /* 10.5.1.2 */
GSM48_IE_GMM_TIMER_READY = 0x17, /* 10.5.7.3 */
@@ -365,6 +370,17 @@ enum gsm48_qos_sdu_err {
GSM48_QOS_SERR_1e_1 = 0x07,
};
+/* 3GPP 24.008 / Chapter 10.5.5.20 / Table 10.5.153a */
+enum gsm48_gmm_service_type {
+ GPRS_SERVICE_T_SIGNALLING = 0x00,
+ GPRS_SERVICE_T_DATA = 0x01,
+ GPRS_SERVICE_T_PAGING_RESP = 0x02,
+ GPRS_SERVICE_T_MBMS_MC_SERV = 0x03,
+ GPRS_SERVICE_T_MBMS_BC_SERV = 0x04,
+};
+
+extern const struct value_string *gprs_service_t_strs;
+
bool gprs_ms_net_cap_gea_supported(const uint8_t *ms_net_cap, uint8_t cap_len,
enum gprs_ciph_algo gea);
diff --git a/src/gsm/gsm_04_08_gprs.c b/src/gsm/gsm_04_08_gprs.c
index 7cfcc80c..14207f8f 100644
--- a/src/gsm/gsm_04_08_gprs.c
+++ b/src/gsm/gsm_04_08_gprs.c
@@ -199,3 +199,14 @@ const struct value_string gprs_det_t_mt_strs_[] = {
};
const struct value_string *gprs_det_t_mt_strs = gprs_det_t_mt_strs_;
+
+const struct value_string gprs_service_t_strs_[] = {
+ { GPRS_SERVICE_T_SIGNALLING, "signalling" },
+ { GPRS_SERVICE_T_DATA, "data" },
+ { GPRS_SERVICE_T_PAGING_RESP, "paging response" },
+ { GPRS_SERVICE_T_MBMS_MC_SERV, "MBMS multicast service" },
+ { GPRS_SERVICE_T_MBMS_BC_SERV, "MBMS broadcast service" },
+ { 0, NULL }
+};
+
+const struct value_string *gprs_service_t_strs = gprs_service_t_strs_;
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index f530b6fa..dc8559fd 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -56,6 +56,7 @@ gprs_att_t_strs;
gprs_upd_t_strs;
gprs_det_t_mo_strs;
gprs_det_t_mt_strs;
+gprs_service_t_strs;
gsm0341_build_msg;