aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-05-24 20:51:17 +0800
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-05-25 14:38:01 +0800
commit9270d99f3db58e70d50ad45644b039b3fa314574 (patch)
tree216aa1390b7c0668df1126bed86536430aeefa6a
parent5e4b88cbb2d754d691a858a3ff99bcdc7ed9c7ce (diff)
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.
-rw-r--r--openbsc/src/gprs/gprs_sgsn.c3
-rw-r--r--openbsc/tests/sgsn/sgsn_test.c9
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 =