mobile: Add vty option to force rekeying for every new channel
Written-by: Tim Ehlers <osmocom@ehlers.info> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
978ec28b71
commit
b4a8badc45
|
@ -87,6 +87,7 @@ struct gsm_settings {
|
|||
|
||||
/* radio */
|
||||
uint16_t dsc_max;
|
||||
uint8_t force_rekey;
|
||||
|
||||
/* dialing */
|
||||
struct llist_head abbrev;
|
||||
|
|
|
@ -105,6 +105,7 @@ int gsm_subscr_dump_forbidden_plmn(struct osmocom_ms *ms,
|
|||
void gsm_subscr_dump(struct gsm_subscriber *subscr,
|
||||
void (*print)(void *, const char *, ...), void *priv);
|
||||
char *gsm_check_imsi(const char *imsi);
|
||||
int gsm_subscr_get_key_seq(struct osmocom_ms *ms, struct gsm_subscriber *subscr);
|
||||
|
||||
#endif /* _SUBSCRIBER_H */
|
||||
|
||||
|
|
|
@ -2344,7 +2344,7 @@ static int gsm48_mm_tx_loc_upd_req(struct osmocom_ms *ms)
|
|||
/* location updating type */
|
||||
nlu->type = mm->lupd_type;
|
||||
/* cipering key */
|
||||
nlu->key_seq = subscr->key_seq;
|
||||
nlu->key_seq = gsm_subscr_get_key_seq(ms, subscr);
|
||||
/* LAI (last SIM stored LAI)
|
||||
*
|
||||
* NOTE: The TMSI is only valid within a LAI!
|
||||
|
@ -2806,7 +2806,7 @@ static int gsm48_mm_tx_cm_serv_req(struct osmocom_ms *ms, int rr_prim,
|
|||
|
||||
/* type and key */
|
||||
nsr->cm_service_type = cm_serv;
|
||||
nsr->cipher_key_seq = subscr->key_seq;
|
||||
nsr->cipher_key_seq = gsm_subscr_get_key_seq(ms, subscr);
|
||||
/* classmark 2 */
|
||||
cm2lv[0] = sizeof(struct gsm48_classmark2);
|
||||
gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1),
|
||||
|
|
|
@ -3251,7 +3251,7 @@ static int gsm48_rr_dl_est(struct osmocom_ms *ms)
|
|||
gh->msg_type = GSM48_MT_RR_PAG_RESP;
|
||||
pr = (struct gsm48_pag_rsp *) msgb_put(nmsg, sizeof(*pr));
|
||||
/* key sequence */
|
||||
pr->key_seq = subscr->key_seq;
|
||||
pr->key_seq = gsm_subscr_get_key_seq(ms, subscr);
|
||||
/* classmark 2 */
|
||||
pr->cm2_len = sizeof(pr->cm2);
|
||||
gsm48_rr_enc_cm2(ms, &pr->cm2, rr->cd_now.arfcn);
|
||||
|
|
|
@ -1144,6 +1144,14 @@ int gsm_subscr_is_forbidden_plmn(struct gsm_subscriber *subscr, uint16_t mcc,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int gsm_subscr_get_key_seq(struct osmocom_ms *ms, struct gsm_subscriber *subscr)
|
||||
{
|
||||
if (ms->settings.force_rekey)
|
||||
return 7;
|
||||
else
|
||||
return subscr->key_seq;
|
||||
}
|
||||
|
||||
int gsm_subscr_dump_forbidden_plmn(struct osmocom_ms *ms,
|
||||
void (*print)(void *, const char *, ...), void *priv)
|
||||
{
|
||||
|
|
|
@ -1300,6 +1300,9 @@ static void config_write_ms(struct vty *vty, struct osmocom_ms *ms)
|
|||
if (!hide_default || set->auto_answer)
|
||||
vty_out(vty, " %sauto-answer%s",
|
||||
(set->auto_answer) ? "" : "no ", VTY_NEWLINE);
|
||||
if (!hide_default || set->force_rekey)
|
||||
vty_out(vty, " %sforce-rekey%s",
|
||||
(set->force_rekey) ? "" : "no ", VTY_NEWLINE);
|
||||
if (!hide_default || set->clip)
|
||||
vty_out(vty, " %sclip%s", (set->clip) ? "" : "no ",
|
||||
VTY_NEWLINE);
|
||||
|
@ -1730,6 +1733,28 @@ DEFUN(cfg_auto_answer, cfg_ms_auto_answer_cmd, "auto-answer",
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_no_force_rekey, cfg_ms_no_force_rekey_cmd, "no force-rekey",
|
||||
NO_STR "Disable key renew forcing after every event")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
|
||||
set->force_rekey = 0;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_force_rekey, cfg_ms_force_rekey_cmd, "force-rekey",
|
||||
"Enable key renew forcing after every event")
|
||||
{
|
||||
struct osmocom_ms *ms = vty->index;
|
||||
struct gsm_settings *set = &ms->settings;
|
||||
|
||||
set->force_rekey = 1;
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_clip, cfg_ms_clip_cmd, "clip",
|
||||
"Force caller ID presentation")
|
||||
{
|
||||
|
@ -2782,6 +2807,8 @@ int ms_vty_init(void)
|
|||
install_element(MS_NODE, &cfg_ms_no_cw_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_auto_answer_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_no_auto_answer_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_force_rekey_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_no_force_rekey_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_clip_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_clir_cmd);
|
||||
install_element(MS_NODE, &cfg_ms_no_clip_cmd);
|
||||
|
|
Loading…
Reference in New Issue