aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs/gprs_gmm.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2017-07-20 14:41:34 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2017-08-27 17:40:53 +0200
commitd6649c39548484316ae3fb9b78b94a3caa4f36a3 (patch)
tree6e974b22df59f4290429b4d867b17b6aa3f2275a /src/gprs/gprs_gmm.c
parentbfa1895e8c79bc1534fc51d2dc08ac1419de61bd (diff)
IuPS: don't require an MM context for Iu Release
Diffstat (limited to 'src/gprs/gprs_gmm.c')
-rw-r--r--src/gprs/gprs_gmm.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c
index dfec60407..83b1a7023 100644
--- a/src/gprs/gprs_gmm.c
+++ b/src/gprs/gprs_gmm.c
@@ -180,25 +180,33 @@ int sgsn_ranap_iu_event(struct ue_conn_ctx *ctx, enum iu_event_type type, void *
int rc = -1;
mm = sgsn_mm_ctx_by_ue_ctx(ctx);
- if (!mm) {
- LOGP(DRANAP, LOGL_NOTICE, "Cannot find mm ctx for IU event %i!\n", type);
- return rc;
+
+#define REQUIRE_MM \
+ if (!mm) { \
+ LOGP(DRANAP, LOGL_NOTICE, "Cannot find mm ctx for IU event %d\n", type); \
+ return rc; \
}
switch (type) {
case IU_EVENT_RAB_ASSIGN:
+ REQUIRE_MM
rc = sgsn_ranap_rab_ass_resp(mm, (RANAP_RAB_SetupOrModifiedItemIEs_t *)data);
break;
case IU_EVENT_IU_RELEASE:
/* fall thru */
case IU_EVENT_LINK_INVALIDATED:
/* Clean up ue_conn_ctx here */
- LOGMMCTXP(LOGL_INFO, mm, "IU release for imsi %s\n", mm->imsi);
- if (mm->pmm_state == PMM_CONNECTED)
+ if (mm)
+ LOGMMCTXP(LOGL_INFO, mm, "IU release for imsi %s\n", mm->imsi);
+ else
+ LOGMMCTXP(LOGL_INFO, mm, "IU release for UE conn 0x%x\n",
+ ctx->conn_id);
+ if (mm && mm->pmm_state == PMM_CONNECTED)
mmctx_set_pmm_state(mm, PMM_IDLE);
rc = 0;
break;
case IU_EVENT_SECURITY_MODE_COMPLETE:
+ REQUIRE_MM
/* Continue authentication here */
mm->iu.ue_ctx->integrity_active = 1;
rc = gsm48_gmm_authorize(mm);