[MERGED] openbsc[master]: Revert "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/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Tue Dec 13 12:42:47 UTC 2016


Neels Hofmeyr has submitted this change and it was merged.

Change subject: Revert "Support Deactivate PDP Context Request from network"
......................................................................


Revert "Support Deactivate PDP Context Request from network"

This reverts commit 1611df5226199da2bf2fba3d22d93cc1a6c6c777.

This is due to a segfault introduced to the asan build only. See:
http://lists.osmocom.org/pipermail/openbsc/2016-December/009966.html
 Subject: new sanitizer breakage: SIGSEGV in sgsn_create_pdp_ctx()
 Date: Tue Dec 13 12:08:32 UTC 2016

Change-Id: Ic926c0e6778947b516994822e3a21d4fde25bb02
---
M openbsc/include/openbsc/gprs_sgsn.h
M openbsc/src/gprs/gprs_sgsn.c
M openbsc/tests/sgsn/sgsn_test.c
M openbsc/tests/sgsn/sgsn_test.ok
4 files changed, 0 insertions(+), 180 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/include/openbsc/gprs_sgsn.h b/openbsc/include/openbsc/gprs_sgsn.h
index b3f250d..24e286c 100644
--- a/openbsc/include/openbsc/gprs_sgsn.h
+++ b/openbsc/include/openbsc/gprs_sgsn.h
@@ -369,8 +369,6 @@
  * ottherwise lost state (recovery procedure) */
 int drop_all_pdp_for_ggsn(struct sgsn_ggsn_ctx *ggsn);
 
-void drop_gmm_ctx_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 8558029..e5a54d9 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -667,44 +667,6 @@
 	}
 }
 
-/*
- * High-level function to be called for PDP deactivation initiated from SGSN VTY.
- * When there are PDP contexts present for a MM context, PDP context will be
- * deactivated along with GMM Detach(MM context deletion).
- * If there are no PDP present, MM context will be deleted to avoid further
- * PDP context activation for that MS.
- */
-void drop_gmm_ctx_for_ms(const char *imsi)
-{
-	OSMO_ASSERT(imsi != NULL);
-	struct sgsn_mm_ctx *mm;
-	struct sgsn_pdp_ctx *pdp;
-
-	/* Search the MM context subscriber */
-	mm = sgsn_mm_ctx_by_imsi(imsi);
-	LOGMMCTXP(LOGL_INFO, mm,
-		"SGSN intiated Deactivate PDP request for %s\n", imsi);
-	if (mm) {
-		/* Search the PDP for this subscriber */
-		if (llist_empty(&mm->pdp_list)) {
-			/*
-			 * Deleting mm context for the subscriber when no PDP
-			 * context is present.
-			 */
-			gsm0408_gprs_access_cancelled(mm, GMM_CAUSE_GPRS_NOTALLOWED);
-			LOGMMCTXP(LOGL_NOTICE, mm, "No PDP context to deactivate\n");
-		} else {
-			llist_for_each_entry(pdp, &mm->pdp_list, list) {
-				gsm48_tx_gsm_deact_pdp_req(pdp, GSM_CAUSE_DEACT_REGULAR);
-				LOGPDPCTXP(LOGL_INFO, pdp, "PDP Deactivation "
-					"Successful\n");
-			}
-		}
-	} else
-		LOGMMCTXP(LOGL_NOTICE, mm,
-			"No MM context to deactivate for %s\n", imsi);
-}
-
 /* 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)
diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c
index 6f01d44..e7b7458 100644
--- a/openbsc/tests/sgsn/sgsn_test.c
+++ b/openbsc/tests/sgsn/sgsn_test.c
@@ -38,17 +38,14 @@
 #include <osmocom/core/rate_ctr.h>
 
 #include <stdio.h>
-#include <gtp.h>
 
 void *tall_bsc_ctx;
-struct gsn_t gsn_ctx;
 static struct sgsn_instance sgsn_inst = {
 	.config_file = "osmo_sgsn.cfg",
 	.cfg = {
 		.gtp_statedir = "./",
 		.auth_policy = SGSN_AUTH_POLICY_CLOSED,
 	},
-	.gsn = &gsn_ctx,
 };
 struct sgsn_instance *sgsn = &sgsn_inst;
 unsigned sgsn_tx_counter = 0;
@@ -2366,138 +2363,6 @@
 	cleanup_test();
 }
 
-static void test_pdp_deactivation_with_pdp_ctx(void)
-{
-	struct apn_ctx *actxs[4];
-	struct sgsn_ggsn_ctx *ggc, *ggcs[3];
-	struct gsm_subscriber *s1;
-	const char *imsi1 = "1234567890";
-	struct sgsn_mm_ctx *ctx;
-	struct gprs_ra_id raid = { 0, };
-	uint32_t local_tlli = 0xffeeddcc;
-	enum gsm48_gsm_cause gsm_cause;
-	struct tlv_parsed tp;
-	uint8_t apn_enc[GSM_APN_LENGTH + 10];
-	struct sgsn_subscriber_pdp_data *pdp_data;
-	char apn_str[GSM_APN_LENGTH];
-
-	printf("Testing Pdp deactivation for MS with pdp ctx\n");
-
-	gprs_gsup_client_send_cb = my_gprs_gsup_client_send_dummy;
-
-	/* Check for emptiness */
-	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
-
-	/* Create a context */
-	OSMO_ASSERT(count(gprs_llme_list()) == 0);
-	ctx = alloc_mm_ctx(local_tlli, &raid);
-	strncpy(ctx->imsi, imsi1, sizeof(ctx->imsi) - 1);
-
-	/* Allocate and attach a subscriber */
-	s1 = gprs_subscr_get_or_create_by_mmctx(ctx);
-	assert_subscr(s1, imsi1);
-
-	struct sgsn_pdp_ctx *pdp;
-
-	tp.lv[GSM48_IE_GSM_APN].len = 0;
-	tp.lv[GSM48_IE_GSM_APN].val = apn_enc;
-
-	tp.lv[OSMO_IE_GSM_REQ_PDP_ADDR].len = 2;
-	tp.lv[OSMO_IE_GSM_REQ_PDP_ADDR].val = apn_enc;
-
-	tp.lv[OSMO_IE_GSM_REQ_QOS].len = 14;
-	tp.lv[OSMO_IE_GSM_REQ_QOS].val = apn_enc;
-
-	ggcs[0] = sgsn_ggsn_ctx_find_alloc(0);
-
-	actxs[0] = sgsn_apn_ctx_find_alloc("test.apn", "123456");
-	actxs[0]->ggsn = ggcs[0];
-
-	pdp_data = sgsn_subscriber_pdp_data_alloc(s1->sgsn_data);
-	pdp_data->context_id = 1;
-	pdp_data->pdp_type = 0x0121;
-	strncpy(pdp_data->apn_str, "*", sizeof(pdp_data->apn_str)-1);
-
-	/* Resolve GGSNs */
-	tp.lv[GSM48_IE_GSM_APN].len =
-		gprs_str_to_apn(apn_enc, sizeof(apn_enc), "Test.Apn");
-
-	ggc = sgsn_mm_ctx_find_ggsn_ctx(ctx, &tp, &gsm_cause, apn_str);
-
-	OSMO_ASSERT(ggc != NULL);
-	OSMO_ASSERT(ggc->id == 0);
-
-	ggc = sgsn_ggsn_ctx_alloc(ggc->id);
-	/* Create a pdp context */
-	pdp = sgsn_create_pdp_ctx(ggc, ctx, 5, &tp);
-
-	/* Intiate PDP deactivation for imsi1 */
-	drop_gmm_ctx_for_ms(imsi1);
-	gsm48_tx_gsm_deact_pdp_acc(pdp);
-	gsm0408_gprs_access_cancelled(ctx, GMM_CAUSE_GPRS_NOTALLOWED);
-
-	/* Cleanup */
-
-	subscr_put(s1);
-
-	sgsn_apn_ctx_free(actxs[0]);
-	sgsn_ggsn_ctx_free(ggcs[0]);
-	sgsn_ggsn_ctx_free(ggc);
-	talloc_free(pdp);
-
-	cleanup_test();
-}
-
-static void test_pdp_deactivation_with_only_mm_ctx(void)
-{
-	struct gsm_subscriber *s1;
-	const char *imsi1 = "1234567890";
-	struct sgsn_mm_ctx *ctx;
-	struct gprs_ra_id raid = { 0, };
-	uint32_t local_tlli = 0xffeeddcc;
-
-	printf("Testing Pdp deactivation for MS with only MM ctx\n");
-
-	gprs_gsup_client_send_cb = my_gprs_gsup_client_send_dummy;
-
-	/* Check for emptiness */
-	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
-
-	/* Create a context */
-	OSMO_ASSERT(count(gprs_llme_list()) == 0);
-	ctx = alloc_mm_ctx(local_tlli, &raid);
-	strncpy(ctx->imsi, imsi1, sizeof(ctx->imsi) - 1);
-
-	/* Allocate and attach a subscriber */
-	s1 = gprs_subscr_get_or_create_by_mmctx(ctx);
-	assert_subscr(s1, imsi1);
-
-	/* Intiate PDP deactivation for imsi1 */
-	drop_gmm_ctx_for_ms(imsi1);
-
-	cleanup_test();
-}
-
-static void test_pdp_deactivation_without_mm_ctx(void)
-{
-	const char *imsi1 = "1234567890";
-
-	printf("Testing Pdp deactivation for MS without MM ctx\n");
-
-	/* Intiate PDP deactivation for imsi1 */
-	drop_gmm_ctx_for_ms(imsi1);
-
-	cleanup_test();
-}
-
-static void test_pdp_deactivation(void)
-{
-	printf("Testing pdp deactivation\n");
-
-	test_pdp_deactivation_with_pdp_ctx();
-	test_pdp_deactivation_without_mm_ctx();
-	test_pdp_deactivation_with_only_mm_ctx();
-}
 static struct log_info_cat gprs_categories[] = {
 	[DMM] = {
 		.name = "DMM",
@@ -2589,7 +2454,6 @@
 	test_gmm_routing_areas();
 	test_apn_matching();
 	test_ggsn_selection();
-	test_pdp_deactivation();
 	printf("Done\n");
 
 	talloc_report_full(osmo_sgsn_ctx, stderr);
diff --git a/openbsc/tests/sgsn/sgsn_test.ok b/openbsc/tests/sgsn/sgsn_test.ok
index c36b643..c7a53b9 100644
--- a/openbsc/tests/sgsn/sgsn_test.ok
+++ b/openbsc/tests/sgsn/sgsn_test.ok
@@ -34,8 +34,4 @@
   - RA Update Request (RA 2 -> RA 2)
 Testing APN matching
 Testing GGSN selection
-Testing pdp deactivation
-Testing Pdp deactivation for MS with pdp ctx
-Testing Pdp deactivation for MS without MM ctx
-Testing Pdp deactivation for MS with only MM ctx
 Done

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic926c0e6778947b516994822e3a21d4fde25bb02
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list