diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-05-21 00:35:41 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-09-02 04:28:49 +0200 |
commit | af241727a9f03f9259529e1e374329adf4ca0626 (patch) | |
tree | 36aac9232a33a398bbd51abb124b83c62dff46a7 /openbsc/src/gprs/gprs_gmm.c | |
parent | 1dee2b6e96dfce363a31097da97ef4ac14470245 (diff) |
IuPS: RA UPD: make sure to authorize, for Iu Integrity Protection
Change-Id: I2ea2089895f8a8e125ef39d9bef70dafb2b1ce69
Diffstat (limited to 'openbsc/src/gprs/gprs_gmm.c')
-rw-r--r-- | openbsc/src/gprs/gprs_gmm.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index b515abdb8..53b632246 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -50,6 +50,7 @@ #ifdef BUILD_IU #include <osmocom/ranap/ranap_ies_defs.h> +#include <osmocom/ranap/ranap_msg_factory.h> #endif #include <openbsc/debug.h> @@ -853,9 +854,8 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx) ctx->pending_req = 0; rc = gsm48_tx_gmm_service_ack(ctx); - if (ctx->iu.service.type == 1) { + if (ctx->iu.service.type != GPRS_SERVICE_T_SIGNALLING) activate_pdp_rabs(ctx); - } return rc; #endif @@ -1540,8 +1540,11 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg, process_ms_ctx_status(mmctx, pdp_status); } - /* Send RA UPDATE ACCEPT */ - return gsm48_tx_gmm_ra_upd_ack(mmctx); + /* Send RA UPDATE ACCEPT. In Iu, the RA upd request can be called from + * a new Iu connection, so we might need to re-authenticate the + * connection as well as turn on integrity protection. */ + mmctx->pending_req = GSM48_MT_GMM_RA_UPD_REQ; + return gsm48_gmm_authorize(mmctx); rejected: /* Send RA UPDATE REJECT */ |