aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/gprs_gmm.c
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-05-21 00:35:41 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-09-02 04:28:49 +0200
commitaf241727a9f03f9259529e1e374329adf4ca0626 (patch)
tree36aac9232a33a398bbd51abb124b83c62dff46a7 /openbsc/src/gprs/gprs_gmm.c
parent1dee2b6e96dfce363a31097da97ef4ac14470245 (diff)
IuPS: RA UPD: make sure to authorize, for Iu Integrity Protection
Diffstat (limited to 'openbsc/src/gprs/gprs_gmm.c')
-rw-r--r--openbsc/src/gprs/gprs_gmm.c11
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 */