[S] Change in osmo-msc[master]: vlr: vlr_set_ciph_mode(): use vlr_subscr_security_context instead of ...
lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/41168?usp=email ) Change subject: vlr: vlr_set_ciph_mode(): use vlr_subscr_security_context instead of umts_aka ...................................................................... vlr: vlr_set_ciph_mode(): use vlr_subscr_security_context instead of umts_aka Simplifies code when re-transmitting Ciphering Mode Command when using it also for PS. Change-Id: Ia556bc33d1cf30ef17fed2828908aa0b6b6dc8be --- M include/osmocom/vlr/vlr.h M src/libvlr/vlr.c M src/libvlr/vlr_access_req_fsm.c M src/libvlr/vlr_lu_fsm.c 4 files changed, 24 insertions(+), 16 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/68/41168/1 diff --git a/include/osmocom/vlr/vlr.h b/include/osmocom/vlr/vlr.h index b1994d0..9b49ff2 100644 --- a/include/osmocom/vlr/vlr.h +++ b/include/osmocom/vlr/vlr.h @@ -488,7 +488,7 @@ int vlr_set_ciph_mode(struct vlr_instance *vlr, struct osmo_fsm_inst *fi, void *msc_conn_ref, - bool umts_aka, + enum vlr_subscr_security_context sec_ctx, bool retrieve_imeisv); bool vlr_use_umts_aka(struct osmo_auth_vector *vec, bool is_r99); diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index c7b7e63..c9055dc 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -1664,19 +1664,35 @@ /* Internal evaluation of requested ciphering mode. * Send set_ciph_mode() to MSC depending on the ciph_mode argument. - * \param[in] vlr VLR instance. - * \param[in] fi Calling FSM instance, for logging. - * \param[in] msc_conn_ref MSC conn to send to. - * \param[in] ciph_mode Ciphering config, to decide whether to do ciphering. + * \param[in] vlr VLR instance. + * \param[in] fi Calling FSM instance, for logging. + * \param[in] msc_conn_ref MSC conn to send to. + * \param[in] sec_ctx the security context to be established. + * \param[in] retrieve_imeisv request the IMEI in the ciphering mode command. * \returns 0 if no ciphering is needed or message was sent successfully, * or a negative value if ciph_mode is invalid or sending failed. */ int vlr_set_ciph_mode(struct vlr_instance *vlr, struct osmo_fsm_inst *fi, void *msc_conn_ref, - bool umts_aka, + enum vlr_subscr_security_context sec_ctx, bool retrieve_imeisv) { + bool umts_aka; + + switch (sec_ctx) { + case VLR_SEC_CTX_GSM: + umts_aka = false; + break; + case VLR_SEC_CTX_UMTS: + umts_aka = true; + break; + case VLR_SEC_CTX_NONE: + return 0; + default: + return -EINVAL; + } + LOGPFSML(fi, LOGL_DEBUG, "Set Ciphering Mode\n"); return vlr->ops.set_ciph_mode(msc_conn_ref, umts_aka, retrieve_imeisv); } diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c index 516f53d..91ff06e 100644 --- a/src/libvlr/vlr_access_req_fsm.c +++ b/src/libvlr/vlr_access_req_fsm.c @@ -297,7 +297,6 @@ { struct proc_arq_priv *par = fi->priv; struct vlr_subscr *vsub = par->vsub; - bool umts_aka; LOGPFSM(fi, "%s()\n", __func__); @@ -311,10 +310,7 @@ switch (vsub->sec_ctx) { case VLR_SEC_CTX_GSM: - umts_aka = false; - break; case VLR_SEC_CTX_UMTS: - umts_aka = true; break; default: LOGPFSML(fi, LOGL_ERROR, "Cannot start ciphering, security context is not established\n"); @@ -323,7 +319,7 @@ } if (vlr_set_ciph_mode(vsub->vlr, fi, par->msc_conn_ref, - umts_aka, + vsub->sec_ctx, vsub->vlr->cfg.retrieve_imeisv_ciphered)) { LOGPFSML(fi, LOGL_ERROR, "Failed to send Ciphering Mode Command\n"); diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c index 5b2e96b..ec459a1 100644 --- a/src/libvlr/vlr_lu_fsm.c +++ b/src/libvlr/vlr_lu_fsm.c @@ -892,7 +892,6 @@ { struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi); struct vlr_subscr *vsub = lfp->vsub; - bool umts_aka; LOGPFSM(fi, "%s()\n", __func__); @@ -914,10 +913,7 @@ switch (vsub->sec_ctx) { case VLR_SEC_CTX_GSM: - umts_aka = false; - break; case VLR_SEC_CTX_UMTS: - umts_aka = true; break; default: LOGPFSML(fi, LOGL_ERROR, "Cannot start ciphering, security context is not established\n"); @@ -926,7 +922,7 @@ } if (vlr_set_ciph_mode(vsub->vlr, fi, lfp->msc_conn_ref, - umts_aka, + vsub->sec_ctx, vsub->vlr->cfg.retrieve_imeisv_ciphered)) { LOGPFSML(fi, LOGL_ERROR, "Failed to send Ciphering Mode Command\n"); -- To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/41168?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: Ia556bc33d1cf30ef17fed2828908aa0b6b6dc8be Gerrit-Change-Number: 41168 Gerrit-PatchSet: 1 Gerrit-Owner: lynxis lazus <lynxis@fe80.eu>
participants (1)
-
lynxis lazus