[PATCH] openbsc[master]: Support Deactivate PDP Context Request from network

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pravin gerrit-no-reply at lists.osmocom.org
Mon Nov 28 14:17:35 UTC 2016


Hello Harald Welte, Jenkins Builder, Holger Freyther,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/1262

to look at the new patch set (#2).

Support Deactivate PDP Context Request from network

This commit will enable trigger of Deactivate PDP context Request message
based on the IMSI of the subscriber.

Change-Id: Ia0a41aa2218ec2fda4ea17a37c8cc55cba63dd13
---
M openbsc/include/openbsc/gprs_sgsn.h
M openbsc/src/gprs/gprs_sgsn.c
2 files changed, 27 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/62/1262/2

diff --git a/openbsc/include/openbsc/gprs_sgsn.h b/openbsc/include/openbsc/gprs_sgsn.h
index 24e286c..c72171a 100644
--- a/openbsc/include/openbsc/gprs_sgsn.h
+++ b/openbsc/include/openbsc/gprs_sgsn.h
@@ -369,6 +369,8 @@
  * ottherwise lost state (recovery procedure) */
 int drop_all_pdp_for_ggsn(struct sgsn_ggsn_ctx *ggsn);
 
+void drop_pdp_for_ms(const char *imsi);
+
 char *gprs_pdpaddr2str(uint8_t *pdpa, uint8_t len);
 
 /*
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index e5a54d9..d30f401 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -667,6 +667,31 @@
 	}
 }
 
+/* High-level function to be called for PDP deactivation initiated from SGSN */
+void drop_pdp_for_ms(const char *imsi)
+{
+	OSMO_ASSERT(imsi != NULL);
+	struct sgsn_mm_ctx *mm;
+	struct sgsn_pdp_ctx *pdp;
+
+	LOGP(DGPRS, LOGL_NOTICE, "SGSN intiated Deactivate PDP for IMSI: %s\n",imsi);
+	/* Search the PDP for this subscriber */
+	mm = sgsn_mm_ctx_by_imsi(imsi);
+	if (mm) {
+		if (llist_empty(&mm->pdp_list)) {
+			gsm0408_gprs_access_cancelled(mm, GMM_CAUSE_GPRS_NOTALLOWED);
+			LOGP(DGPRS, LOGL_NOTICE, "No pdp context for this IMSI\n");
+		} else {
+
+			llist_for_each_entry(pdp, &mm->pdp_list, list) {
+				gsm48_tx_gsm_deact_pdp_req(pdp, GSM_CAUSE_DEACT_REGULAR);
+				LOGPDPCTXP(LOGL_NOTICE, pdp, "PDP Deactivation Successful\n");
+			}
+		}
+	} else
+		LOGP(DGPRS, LOGL_NOTICE, "No mm context for this IMSI\n");
+}
+
 /* High-level function to be called in case a GGSN has disappeared or
  * otherwise lost state (recovery procedure) */
 int drop_all_pdp_for_ggsn(struct sgsn_ggsn_ctx *ggsn)

-- 
To view, visit https://gerrit.osmocom.org/1262
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia0a41aa2218ec2fda4ea17a37c8cc55cba63dd13
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: pravin <pravin.manoharan at radisys.com>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list