aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch')
-rw-r--r--contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch b/contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch
new file mode 100644
index 0000000..1b72bb6
--- /dev/null
+++ b/contrib/0002-Trigger-Deactivate-PDP-context-Request-from-SGSN-VTY.patch
@@ -0,0 +1,49 @@
+From 29f7bd1023fc698ebdb19b93f8029b2559392f17 Mon Sep 17 00:00:00 2001
+From: Pravin Kumarvel <pmanohar@radisys.com>
+Date: Thu, 29 Dec 2016 20:18:49 +0530
+Subject: [PATCH 2/2] Trigger Deactivate PDP context Request from SGSN VTY
+
+In SGSN for acl based authorization IMSI values of all registered
+MS are maintained.
+Through imsi_acl_del Deactivate PDP context Request from network
+can be triggered.
+Hence, It will remove all PDP context related to that MS.
+---
+ openbsc/src/gprs/gprs_gmm.c | 2 ++
+ openbsc/src/gprs/sgsn_vty.c | 6 ++++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
+index 363b457..77f94f8 100644
+--- a/openbsc/src/gprs/gprs_gmm.c
++++ b/openbsc/src/gprs/gprs_gmm.c
+@@ -2535,6 +2535,8 @@ static int gsm0408_rcv_gsm(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
+ break;
+ case GSM48_MT_GSM_DEACT_PDP_ACK:
+ rc = gsm48_rx_gsm_deact_pdp_ack(mmctx, msg);
++ if (sgsn_auth_state(mmctx) != SGSN_AUTH_ACCEPTED)
++ gsm0408_gprs_access_cancelled(mmctx, GMM_CAUSE_GPRS_NOTALLOWED);
+ break;
+ case GSM48_MT_GSM_STATUS:
+ rc = gsm48_rx_gsm_status(mmctx, msg);
+diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
+index 21c865b..feeb0ff 100644
+--- a/openbsc/src/gprs/sgsn_vty.c
++++ b/openbsc/src/gprs/sgsn_vty.c
+@@ -573,9 +573,11 @@ DEFUN(imsi_acl, cfg_imsi_acl_cmd,
+
+ if (!strcmp(op, "add"))
+ rc = sgsn_acl_add(imsi, g_cfg);
+- else
++ else {
++ vty_out(vty, "%% Network initiated PDP deactivate%s", VTY_NEWLINE);
++ drop_gmm_ctx_for_ms(imsi);
+ rc = sgsn_acl_del(imsi, g_cfg);
+-
++ }
+ if (rc < 0) {
+ vty_out(vty, "%% unable to %s ACL%s", op, VTY_NEWLINE);
+
+--
+1.9.1
+