diff -u -urN osmocom-bb.120212/src/host/layer23/include/osmocom/bb/mobile/settings.h osmocom-bb.120212.force_key/src/host/layer23/include/osmocom/bb/mobile/settings.h
--- osmocom-bb.120212/src/host/layer23/include/osmocom/bb/mobile/settings.h	2012-02-12 20:07:10.000000000 +0100
+++ osmocom-bb.120212.force_key/src/host/layer23/include/osmocom/bb/mobile/settings.h	2012-02-12 20:07:50.000000000 +0100
@@ -87,6 +87,7 @@
 
 	/* radio */
 	uint16_t		dsc_max;
+	uint8_t			force_key;
 
 	/* dialing */
 	struct llist_head	abbrev;
diff -u -urN osmocom-bb.120212/src/host/layer23/src/mobile/gsm48_mm.c osmocom-bb.120212.force_key/src/host/layer23/src/mobile/gsm48_mm.c
--- osmocom-bb.120212/src/host/layer23/src/mobile/gsm48_mm.c	2012-02-12 20:07:10.000000000 +0100
+++ osmocom-bb.120212.force_key/src/host/layer23/src/mobile/gsm48_mm.c	2012-02-12 20:07:50.000000000 +0100
@@ -2344,7 +2344,7 @@
 	/* location updating type */
 	nlu->type = mm->lupd_type;
 	/* cipering key */
-	nlu->key_seq = subscr->key_seq;
+	nlu->key_seq = subscr_get_key_seq(ms, subscr);
 	/* LAI (last SIM stored LAI)
 	 *
 	 * NOTE: The TMSI is only valid within a LAI!
@@ -2806,7 +2806,7 @@
 
 	/* type and key */
 	nsr->cm_service_type = cm_serv;
-	nsr->cipher_key_seq = subscr->key_seq;
+	nsr->cipher_key_seq = subscr_get_key_seq(ms, subscr);
 	/* classmark 2 */
 	cm2lv[0] = sizeof(struct gsm48_classmark2);
 	gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1),
diff -u -urN osmocom-bb.120212/src/host/layer23/src/mobile/gsm48_rr.c osmocom-bb.120212.force_key/src/host/layer23/src/mobile/gsm48_rr.c
--- osmocom-bb.120212/src/host/layer23/src/mobile/gsm48_rr.c	2012-02-12 20:07:10.000000000 +0100
+++ osmocom-bb.120212.force_key/src/host/layer23/src/mobile/gsm48_rr.c	2012-02-12 20:07:50.000000000 +0100
@@ -3251,7 +3251,7 @@
 		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 = 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);
diff -u -urN osmocom-bb.120212/src/host/layer23/src/mobile/subscriber.c osmocom-bb.120212.force_key/src/host/layer23/src/mobile/subscriber.c
--- osmocom-bb.120212/src/host/layer23/src/mobile/subscriber.c	2012-02-12 20:07:10.000000000 +0100
+++ osmocom-bb.120212.force_key/src/host/layer23/src/mobile/subscriber.c	2012-02-12 20:07:50.000000000 +0100
@@ -1144,6 +1144,14 @@
 	return 0;
 }
 
+int subscr_get_key_seq(struct osmocom_ms *ms, struct gsm_subscriber *subscr)
+{
+        if (ms->settings.force_key)
+          return 7;
+        else
+          return subscr->key_seq;
+}
+
 int gsm_subscr_dump_forbidden_plmn(struct osmocom_ms *ms,
 			void (*print)(void *, const char *, ...), void *priv)
 {
diff -u -urN osmocom-bb.120212/src/host/layer23/src/mobile/vty_interface.c osmocom-bb.120212.force_key/src/host/layer23/src/mobile/vty_interface.c
--- osmocom-bb.120212/src/host/layer23/src/mobile/vty_interface.c	2012-02-12 20:07:10.000000000 +0100
+++ osmocom-bb.120212.force_key/src/host/layer23/src/mobile/vty_interface.c	2012-02-12 20:07:50.000000000 +0100
@@ -1300,6 +1300,9 @@
 	if (!hide_default || set->auto_answer)
 		vty_out(vty, " %sauto-answer%s",
 			(set->auto_answer) ? "" : "no ", VTY_NEWLINE);
+        if (!hide_default || set->force_key)
+                vty_out(vty, " %sforce_key%s",
+                        (set->force_key) ? "" : "no ", VTY_NEWLINE);
 	if (!hide_default || set->clip)
 		vty_out(vty, " %sclip%s", (set->clip) ? "" : "no ",
 			VTY_NEWLINE);
@@ -1730,6 +1733,28 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_no_force_key, cfg_ms_no_force_key_cmd, "no force_key",
+        NO_STR "Disable key renew forcing after every event")
+{
+        struct osmocom_ms *ms = vty->index;
+        struct gsm_settings *set = &ms->settings;
+
+        set->force_key = 0;
+
+        return CMD_SUCCESS;
+}
+
+DEFUN(cfg_force_key, cfg_ms_force_key_cmd, "force_key",
+        "Enable key renew forcing after every event")
+{
+        struct osmocom_ms *ms = vty->index;
+        struct gsm_settings *set = &ms->settings;
+
+        set->force_key = 1;
+
+        return CMD_SUCCESS;
+}
+
 DEFUN(cfg_clip, cfg_ms_clip_cmd, "clip",
 	"Force caller ID presentation")
 {
@@ -2782,6 +2807,8 @@
 	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_key_cmd);
+	install_element(MS_NODE, &cfg_ms_no_force_key_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);
