diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-03-18 14:08:14 +0100 |
---|---|---|
committer | Daniel Willmann <dwillmann@sysmocom.de> | 2016-03-18 14:08:14 +0100 |
commit | d8b0b61ca8dbda67687907afbc6fea6af311cc1b (patch) | |
tree | 2a8ec491e6c6eade87c9896d15eaa2c79b165db2 /openbsc/src/gprs | |
parent | 19f073575270d8d588e1bdb10767aa545f9e8a00 (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.
Diffstat (limited to 'openbsc/src/gprs')
-rw-r--r-- | openbsc/src/gprs/gprs_gmm.c | 9 |
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 */ |