diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libmsc/gsm_04_08.c | 12 | ||||
-rw-r--r-- | src/libvlr/vlr.c | 26 | ||||
-rw-r--r-- | src/libvlr/vlr_access_req_fsm.c | 9 | ||||
-rw-r--r-- | src/libvlr/vlr_lu_fsm.c | 9 |
4 files changed, 16 insertions, 40 deletions
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 126a216e1..c37aeb758 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -339,8 +339,7 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg) net->vlr, conn, vlr_lu_type, tmsi, imsi, &old_lai, &new_lai, is_utran || conn->network->authentication_required, - is_utran? VLR_CIPH_A5_3 - : conn->network->a5_encryption, + is_utran || conn->network->a5_encryption, classmark_is_r99(&conn->classmark), is_utran, net->vlr->cfg.assign_tmsi); @@ -724,8 +723,7 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms net->vlr, conn, VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai, is_utran || conn->network->authentication_required, - is_utran? VLR_CIPH_A5_3 - : conn->network->a5_encryption, + is_utran || conn->network->a5_encryption, classmark_is_r99(&conn->classmark), is_utran); @@ -1129,8 +1127,7 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m net->vlr, conn, VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai, is_utran || conn->network->authentication_required, - is_utran? VLR_CIPH_A5_3 - : conn->network->a5_encryption, + is_utran || conn->network->a5_encryption, classmark_is_r99(&conn->classmark), is_utran); @@ -3422,7 +3419,6 @@ osmo_static_assert(sizeof(((struct gsm0808_encrypt_info*)0)->key) >= sizeof(((st /* VLR asks us to start using ciphering */ static int msc_vlr_set_ciph_mode(void *msc_conn_ref, - enum vlr_ciph ciph, bool umts_aka, bool retrieve_imeisv) { @@ -3453,7 +3449,7 @@ static int msc_vlr_set_ciph_mode(void *msc_conn_ref, { struct gsm0808_encrypt_info ei; - ei.perm_algo[0] = vlr_ciph_to_gsm0808_alg_id(ciph); + ei.perm_algo[0] = vlr_ciph_to_gsm0808_alg_id(conn->network->a5_encryption); ei.perm_algo_len = 1; /* In case of UMTS AKA, the Kc for ciphering must be derived from the 3G auth diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c index 21ef0821f..6750a46f6 100644 --- a/src/libvlr/vlr.c +++ b/src/libvlr/vlr.c @@ -1105,33 +1105,15 @@ void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, struct vlr_ciph_result *res int vlr_set_ciph_mode(struct vlr_instance *vlr, struct osmo_fsm_inst *fi, void *msc_conn_ref, - enum vlr_ciph ciph_mode, + bool ciph_required, bool umts_aka, bool retrieve_imeisv) { - switch (ciph_mode) { - case VLR_CIPH_NONE: + if (!ciph_required) return 0; - case VLR_CIPH_A5_1: - case VLR_CIPH_A5_3: - LOGPFSML(fi, LOGL_DEBUG, "Set Ciphering Mode: %d=%s\n", - ciph_mode, vlr_ciph_name(ciph_mode)); - return vlr->ops.set_ciph_mode(msc_conn_ref, - ciph_mode, - umts_aka, - retrieve_imeisv); - - case VLR_CIPH_A5_2: - /* TODO policy by user config? */ - LOGPFSML(fi, LOGL_ERROR, "A5/2 ciphering is not allowed\n"); - return -EINVAL; - - default: - LOGPFSML(fi, LOGL_ERROR, "unknown ciphering value: %d\n", - ciph_mode); - return -EINVAL; - } + LOGPFSML(fi, LOGL_DEBUG, "Set Ciphering Mode\n"); + return vlr->ops.set_ciph_mode(msc_conn_ref, umts_aka, retrieve_imeisv); } /* Decide whether UMTS AKA should be used. diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c index 41e629ed2..556e69426 100644 --- a/src/libvlr/vlr_access_req_fsm.c +++ b/src/libvlr/vlr_access_req_fsm.c @@ -79,7 +79,7 @@ struct proc_arq_priv { uint32_t tmsi; struct osmo_location_area_id lai; bool authentication_required; - enum vlr_ciph ciphering_required; + bool ciphering_required; bool is_r99; bool is_utran; bool implicitly_accepted_parq_by_ciphering_cmd; @@ -277,7 +277,7 @@ static void _proc_arq_vlr_node2_post_ciph(struct osmo_fsm_inst *fi) static bool is_ciph_required(struct proc_arq_priv *par) { - return par->ciphering_required != VLR_CIPH_NONE; + return par->ciphering_required; } static void _proc_arq_vlr_node2(struct osmo_fsm_inst *fi) @@ -311,8 +311,7 @@ static bool is_auth_required(struct proc_arq_priv *par) /* The cases where the authentication procedure should be used * are defined in 3GPP TS 33.102 */ /* For now we use a default value passed in to vlr_lu_fsm(). */ - return par->authentication_required - || (par->ciphering_required != VLR_CIPH_NONE); + return par->authentication_required || par->ciphering_required; } /* after the IMSI is known */ @@ -654,7 +653,7 @@ vlr_proc_acc_req(struct osmo_fsm_inst *parent, enum vlr_parq_type type, const uint8_t *mi_lv, const struct osmo_location_area_id *lai, bool authentication_required, - enum vlr_ciph ciphering_required, + bool ciphering_required, bool is_r99, bool is_utran) { struct osmo_fsm_inst *fi; diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c index e540e2ae9..6c8b53adb 100644 --- a/src/libvlr/vlr_lu_fsm.c +++ b/src/libvlr/vlr_lu_fsm.c @@ -644,7 +644,7 @@ struct lu_fsm_priv { struct osmo_location_area_id old_lai; struct osmo_location_area_id new_lai; bool authentication_required; - enum vlr_ciph ciphering_required; + bool ciphering_required; bool is_r99; bool is_utran; bool assign_tmsi; @@ -665,14 +665,13 @@ static bool is_auth_required(struct lu_fsm_priv *lfp) /* The cases where the authentication procedure should be used * are defined in 3GPP TS 33.102 */ /* For now we use a default value passed in to vlr_lu_fsm(). */ - return lfp->authentication_required - || (lfp->ciphering_required != VLR_CIPH_NONE); + return lfp->authentication_required || lfp->ciphering_required; } /* Determine if ciphering is required */ static bool is_ciph_required(struct lu_fsm_priv *lfp) { - return lfp->ciphering_required != VLR_CIPH_NONE; + return lfp->ciphering_required; } /* Determine if a HLR Update is required */ @@ -1391,7 +1390,7 @@ vlr_loc_update(struct osmo_fsm_inst *parent, const struct osmo_location_area_id *old_lai, const struct osmo_location_area_id *new_lai, bool authentication_required, - enum vlr_ciph ciphering_required, + bool ciphering_required, bool is_r99, bool is_utran, bool assign_tmsi) { |