aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/gprs_gmm.c
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-02-23 20:59:07 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-03-03 16:19:12 +0100
commit7df570525181d3ff4305d5e690f10f99e5426332 (patch)
treed321e4abb9e8446329b6b00d40bd44493eab5835 /openbsc/src/gprs/gprs_gmm.c
parentda7424cc548ad99e0ad7395bd668c505f5e5f66f (diff)
WIP: Try and activate RABs after service request
Diffstat (limited to 'openbsc/src/gprs/gprs_gmm.c')
-rw-r--r--openbsc/src/gprs/gprs_gmm.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index d22411a3c..ee3f9bfed 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -742,7 +742,17 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
return gsm48_tx_gmm_att_ack(ctx);
case GSM48_MT_GMM_SERVICE_REQ:
- /* TODO: State transition */
+ /* TODO: PMM State transition */
+ ctx->pending_req = 0;
+
+ /* Send RAB activation requests for all PDP contexts */
+ if (ctx->iu.service.type == 1) {
+ struct sgsn_pdp_ctx *pdp;
+ llist_for_each_entry(pdp, &ctx->pdp_list, list) {
+ iu_rab_act_ps(pdp);
+ }
+ }
+
return gsm48_tx_gmm_service_ack(ctx);
default:
LOGMMCTXP(LOGL_ERROR, ctx,
@@ -1466,6 +1476,9 @@ static int gsm48_rx_gmm_service_req(struct sgsn_mm_ctx *ctx, struct msgb *msg)
goto rejected;
}
+ ctx->iu.service.type = service_type;
+
+ /* TODO: Handle those only in case of accept? */
/* Look at PDP Context Status IE and see if MS's view of
* activated/deactivated NSAPIs agrees with our view */
if (TLVP_PRESENT(&tp, GSM48_IE_GMM_PDP_CTX_STATUS)) {