msc: add TC_lu_imsi_auth_tmsi_encr_3_1_no_cm
This is a variation on TC_lu_imsi_auth_tmsi_encr_3_1 that "indicates" inability
of A5/3 by completely omitting a Classmark2.
Add flag send_cm_update to f_tc_lu_imsi_auth_tmsi_encr_3_1() so that we can
easily omit the classmark update. Set this flag to true in existing
TC_lu_imsi_auth_tmsi_encr_3_1, and add pass false from the new test.
Change-Id: I903136d5acbd88f2e0e26fee22e3878258e04786
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 517afe0..daadc2b 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -1444,7 +1444,11 @@
var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi);
f_create_gsup_expect(hex2str(g_pars.imsi));
f_bssap_compl_l3(l3_lu);
- BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
+ if (pars.send_early_cm) {
+ BSSAP.send(ts_BSSMAP_ClassmarkUpd(g_pars.cm2, g_pars.cm3));
+ } else {
+ pars.cm1.esind := '0'B;
+ }
f_mm_auth();
alt {
[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { }
@@ -1465,7 +1469,19 @@
f_vty_config(MSCVTY, "network", "authentication required");
f_vty_config(MSCVTY, "network", "encryption a5 3");
- vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_3_1), 36);
+ vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth_tmsi_encr_3_1), 360);
+ vc_conn.done;
+}
+testcase TC_lu_imsi_auth_tmsi_encr_3_1_no_cm() runs on MTC_CT {
+ var BSC_ConnHdlrPars pars;
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+ f_vty_config(MSCVTY, "network", "authentication required");
+ f_vty_config(MSCVTY, "network", "encryption a5 3");
+
+ pars := f_init_pars(361);
+ pars.send_early_cm := false;
+ vc_conn := f_start_handler_with_pars(refers(f_tc_lu_imsi_auth_tmsi_encr_3_1), pars);
vc_conn.done;
}
@@ -1624,6 +1640,7 @@
execute( TC_lu_imsi_auth_tmsi_encr_1_13() );
execute( TC_lu_imsi_auth_tmsi_encr_3_13() );
execute( TC_lu_imsi_auth_tmsi_encr_3_1() );
+ execute( TC_lu_imsi_auth_tmsi_encr_3_1_no_cm() );
execute( TC_lu_imsi_auth_tmsi_encr_13_2() );
execute( TC_lu_imsi_auth_tmsi_encr_013_2() );