summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-03-18 14:08:14 +0100
committerDaniel Willmann <dwillmann@sysmocom.de>2016-03-18 14:08:14 +0100
commitd8b0b61ca8dbda67687907afbc6fea6af311cc1b (patch)
tree2a8ec491e6c6eade87c9896d15eaa2c79b165db2
parent19f073575270d8d588e1bdb10767aa545f9e8a00 (diff)
gprs_gmm: Call gsm48_gmm_authorize from RA upd request
In Iu mode the RA upd request can be called from a new Iu connection so we might need to reauthenticate the connection as well as turn on integrity protection.
-rw-r--r--openbsc/src/gprs/gprs_gmm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index 922c65ab1..6432a33fe 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -696,6 +696,8 @@ static int gsm48_tx_gmm_service_rej(struct sgsn_mm_ctx *mm,
return _tx_gmm_service_rej(msg, gmm_cause, mm);
}
+static int gsm48_tx_gmm_ra_upd_ack(struct sgsn_mm_ctx *mm);
+
/* Check if we can already authorize a subscriber */
static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
{
@@ -790,6 +792,10 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx)
}
return gsm48_tx_gmm_service_ack(ctx);
+ case GSM48_MT_GMM_RA_UPD_REQ:
+ /* Send RA UPDATE ACCEPT */
+ return gsm48_tx_gmm_ra_upd_ack(ctx);
+
default:
LOGMMCTXP(LOGL_ERROR, ctx,
"only Attach Request is supported yet, "
@@ -1430,8 +1436,9 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg,
process_ms_ctx_status(mmctx, pdp_status);
}
+ mmctx->pending_req = GSM48_MT_GMM_RA_UPD_REQ;
/* Send RA UPDATE ACCEPT */
- return gsm48_tx_gmm_ra_upd_ack(mmctx);
+ return gsm48_gmm_authorize(mmctx);
rejected:
/* Send RA UPDATE REJECT */