From 9270d99f3db58e70d50ad45644b039b3fa314574 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 24 May 2015 20:51:17 +0800 Subject: [PATCH] sgsn: If there is a subscr don't allow an empty list This is a left-over from the initial system where no PDP was provided by the system. For now if there is a subscr attached and no PDP context provisioned. He is not allowed to have a data connection. Update the testcase to create the pdp list entry more early with a wildcard and then change it to a specific match. --- openbsc/src/gprs/gprs_sgsn.c | 3 +-- openbsc/tests/sgsn/sgsn_test.c | 9 +++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index 5fe4e616e..ad90d3c16 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -638,8 +638,7 @@ struct sgsn_ggsn_ctx *sgsn_mm_ctx_find_ggsn_ctx(struct sgsn_mm_ctx *mmctx, req_apn_str[0] = 0; } - if (mmctx->subscr == NULL || - llist_empty(&mmctx->subscr->sgsn_data->pdp_list)) + if (mmctx->subscr == NULL) allow_any_apn = 1; if (strlen(req_apn_str) == 0 && !allow_any_apn) { diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c index a06c1532a..64570038e 100644 --- a/openbsc/tests/sgsn/sgsn_test.c +++ b/openbsc/tests/sgsn/sgsn_test.c @@ -1871,6 +1871,11 @@ static void test_ggsn_selection(void) actxs[2] = sgsn_apn_ctx_find_alloc("*", "456789"); actxs[2]->ggsn = ggcs[2]; + 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 = @@ -1917,10 +1922,6 @@ static void test_ggsn_selection(void) /* Add PDP data entry to subscriber */ - 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, "Test.Apn", sizeof(pdp_data->apn_str)-1); tp.lv[GSM48_IE_GSM_APN].len =