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 <[email protected]>

Reply via email to