cosmetic prep: publish vlr_use_umts_aka() decision
During Set Ciphering Mode on GERAN, it is required to know whether UMTS AKA is used to decide which Kc to pick. Change static function is_umts_auth() into public vlr_use_umts_aka(), so future patches can re-use it. Prepares: If04e405426c55a81341747a9b450a69188525d5c Change-Id: I85d784c62ecbabdb6186a3dae4dcd554e7921041
This commit is contained in:
parent
703638e79a
commit
e3d72d7827
|
@ -435,5 +435,7 @@ int vlr_set_ciph_mode(struct vlr_instance *vlr,
|
|||
enum vlr_ciph ciph_mode,
|
||||
bool retrieve_imeisv);
|
||||
|
||||
bool vlr_use_umts_aka(struct osmo_auth_vector *vec, bool is_r99);
|
||||
|
||||
void log_set_filter_vlr_subscr(struct log_target *target,
|
||||
struct vlr_subscr *vlr_subscr);
|
||||
|
|
|
@ -1122,6 +1122,23 @@ int vlr_set_ciph_mode(struct vlr_instance *vlr,
|
|||
}
|
||||
}
|
||||
|
||||
/* Decide whether UMTS AKA should be used.
|
||||
* UTRAN networks are by definition R99 capable, and the auth vector is required to contain UMTS AKA
|
||||
* tokens. This is expected to be verified by the caller. On GERAN, UMTS AKA must be used iff MS and
|
||||
* GERAN are R99 capable and UMTS AKA tokens are available.
|
||||
* \param[in] vec Auth tokens (received from the HLR).
|
||||
* \param[in] is_r99 True when BTS and GERAN are R99 capable.
|
||||
* \returns true to use UMTS AKA, false to use pre-R99 GSM AKA.
|
||||
*/
|
||||
bool vlr_use_umts_aka(struct osmo_auth_vector *vec, bool is_r99)
|
||||
{
|
||||
if (!is_r99)
|
||||
return false;
|
||||
if (!(vec->auth_types & OSMO_AUTH_TYPE_UMTS))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void log_set_filter_vlr_subscr(struct log_target *target,
|
||||
struct vlr_subscr *vlr_subscr)
|
||||
{
|
||||
|
|
|
@ -211,16 +211,6 @@ static void auth_fsm_onenter_failed(struct osmo_fsm_inst *fi, uint32_t prev_stat
|
|||
vlr_subscr_tx_auth_fail_rep(vsub);
|
||||
}
|
||||
|
||||
static bool is_umts_auth(struct auth_fsm_priv *afp,
|
||||
uint32_t auth_types)
|
||||
{
|
||||
if (!afp->is_r99)
|
||||
return false;
|
||||
if (!(auth_types & OSMO_AUTH_TYPE_UMTS))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Terminate the Auth FSM Instance and notify parent */
|
||||
static void auth_fsm_term(struct osmo_fsm_inst *fi, enum vlr_auth_fsm_result res)
|
||||
{
|
||||
|
@ -268,7 +258,7 @@ static int _vlr_subscr_authenticate(struct osmo_fsm_inst *fi)
|
|||
afp->auth_requested = true;
|
||||
vsub->last_tuple = at;
|
||||
vsub->vlr->ops.tx_auth_req(vsub->msc_conn_ref, at,
|
||||
is_umts_auth(afp, at->vec.auth_types));
|
||||
vlr_use_umts_aka(&at->vec, afp->is_r99));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue