summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08.h1
-rw-r--r--include/osmocom/gsm/protocol/gsm_04_08_gprs.h12
-rw-r--r--src/gsm/gsm_04_08_gprs.c10
3 files changed, 22 insertions, 1 deletions
diff --git a/include/osmocom/gsm/protocol/gsm_04_08.h b/include/osmocom/gsm/protocol/gsm_04_08.h
index 0c2fcf28..074c2589 100644
--- a/include/osmocom/gsm/protocol/gsm_04_08.h
+++ b/include/osmocom/gsm/protocol/gsm_04_08.h
@@ -1272,6 +1272,7 @@ void gsm48_set_dtx(struct gsm48_cell_options *op, enum gsm48_dtx_mode full,
/* Additional MM elements */
#define GSM48_IE_LOCATION_AREA 0x13
+#define GSM48_IE_AUTN 0x20
#define GSM48_IE_PRIORITY_LEV 0x80
#define GSM48_IE_FOLLOW_ON_PROC 0xa1
#define GSM48_IE_CTS_PERMISSION 0xa2
diff --git a/include/osmocom/gsm/protocol/gsm_04_08_gprs.h b/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
index f35d11b6..e0e887fa 100644
--- a/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
+++ b/include/osmocom/gsm/protocol/gsm_04_08_gprs.h
@@ -22,6 +22,7 @@
#define GSM48_MT_GMM_AUTH_CIPH_REQ 0x12
#define GSM48_MT_GMM_AUTH_CIPH_RESP 0x13
#define GSM48_MT_GMM_AUTH_CIPH_REJ 0x14
+#define GSM48_MT_GMM_AUTH_CIPH_FAIL 0x1C
#define GSM48_MT_GMM_ID_REQ 0x15
#define GSM48_MT_GMM_ID_RESP 0x16
#define GSM48_MT_GMM_STATUS 0x20
@@ -79,6 +80,9 @@ enum gsm48_gprs_ie_mm {
GSM48_IE_GMM_IMEISV = 0x23, /* 10.5.1.4 */
GSM48_IE_GMM_CAUSE = 0x25, /* 10.5.5.14 */
GSM48_IE_GMM_DRX_PARAM = 0x27, /* 10.5.5.6 */
+ GSM48_IE_GMM_AUTN = 0x28, /* 10.5.3.1.1 */
+ GSM48_IE_GMM_AUTH_RES_EXT = 0x29, /* 10.5.3.2.1 */
+ GSM48_IE_GMM_AUTH_FAIL_PAR = 0x30, /* 10.5.3.2.2 */
GSM48_IE_GMM_MS_NET_CAPA = 0x31, /* 10.5.5.12 */
GSM48_IE_GMM_PDP_CTX_STATUS = 0x32, /* 10.5.7.1 */
GSM48_IE_GMM_PS_LCS_CAPA = 0x33, /* 10.5.5.22 */
@@ -160,6 +164,7 @@ struct gsm48_act_pdp_ctx_req {
enum gsm48_gmm_cause {
GMM_CAUSE_IMSI_UNKNOWN = 0x02,
GMM_CAUSE_ILLEGAL_MS = 0x03,
+ GMM_CAUSE_IMEI_NOT_ACCEPTED = 0x05,
GMM_CAUSE_ILLEGAL_ME = 0x06,
GMM_CAUSE_GPRS_NOTALLOWED = 0x07,
GMM_CAUSE_GPRS_OTHER_NOTALLOWED = 0x08,
@@ -169,9 +174,16 @@ enum gsm48_gmm_cause {
GMM_CAUSE_LA_NOTALLOWED = 0x0c,
GMM_CAUSE_ROAMING_NOTALLOWED = 0x0d,
GMM_CAUSE_NO_GPRS_PLMN = 0x0e,
+ GMM_CAUSE_NO_SUIT_CELL_IN_LA = 0x0f,
GMM_CAUSE_MSC_TEMP_NOTREACH = 0x10,
GMM_CAUSE_NET_FAIL = 0x11,
+ GMM_CAUSE_MAC_FAIL = 0x14,
+ GMM_CAUSE_SYNC_FAIL = 0x15,
GMM_CAUSE_CONGESTION = 0x16,
+ GMM_CAUSE_GSM_AUTH_UNACCEPT = 0x17,
+ GMM_CAUSE_NOT_AUTH_FOR_CSG = 0x19,
+ GMM_CAUSE_SMS_VIA_GPRS_IN_RA = 0x1c,
+ GMM_CAUSE_NO_PDP_ACTIVATED = 0x28,
GMM_CAUSE_SEM_INCORR_MSG = 0x5f,
GMM_CAUSE_INV_MAND_INFO = 0x60,
GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL = 0x61,
diff --git a/src/gsm/gsm_04_08_gprs.c b/src/gsm/gsm_04_08_gprs.c
index 6ce94159..5c00ea00 100644
--- a/src/gsm/gsm_04_08_gprs.c
+++ b/src/gsm/gsm_04_08_gprs.c
@@ -1,4 +1,4 @@
-/* (C) 2009-2010 by Harald Welte <laforge@gnumonks.org>
+/* (C) 2009-2016 by Harald Welte <laforge@gnumonks.org>
* (C) 2010 by On-Waves
* (C) 2014-2015 by Sysmocom s.f.m.c. GmbH
*
@@ -30,6 +30,7 @@
const struct value_string gsm48_gmm_cause_names_[] = {
{ GMM_CAUSE_IMSI_UNKNOWN, "IMSI unknown in HLR" },
{ GMM_CAUSE_ILLEGAL_MS, "Illegal MS" },
+ { GMM_CAUSE_IMEI_NOT_ACCEPTED, "IMEI not accepted" },
{ GMM_CAUSE_ILLEGAL_ME, "Illegal ME" },
{ GMM_CAUSE_GPRS_NOTALLOWED, "GPRS services not allowed" },
{ GMM_CAUSE_GPRS_OTHER_NOTALLOWED,
@@ -43,9 +44,16 @@ const struct value_string gsm48_gmm_cause_names_[] = {
"Roaming not allowed in this location area" },
{ GMM_CAUSE_NO_GPRS_PLMN,
"GPRS services not allowed in this PLMN" },
+ { GMM_CAUSE_NO_SUIT_CELL_IN_LA, "No suitable cell in LA" },
{ GMM_CAUSE_MSC_TEMP_NOTREACH, "MSC temporarily not reachable" },
{ GMM_CAUSE_NET_FAIL, "Network failure" },
+ { GMM_CAUSE_MAC_FAIL, "MAC failure" },
+ { GMM_CAUSE_SYNC_FAIL, "SYNC failure" },
{ GMM_CAUSE_CONGESTION, "Congestion" },
+ { GMM_CAUSE_GSM_AUTH_UNACCEPT, "GSM authentication unacceptable" },
+ { GMM_CAUSE_NOT_AUTH_FOR_CSG, "Not authorized for this CSG" },
+ { GMM_CAUSE_SMS_VIA_GPRS_IN_RA, "SMS provided via GPRS in this RA" },
+ { GMM_CAUSE_NO_PDP_ACTIVATED, "No PDP context activated" },
{ GMM_CAUSE_SEM_INCORR_MSG, "Semantically incorrect message" },
{ GMM_CAUSE_INV_MAND_INFO, "Invalid mandatory information" },
{ GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL,