diff options
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.patch | 49 |
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 + |