msc: Add TC_cm_reest_req_reject: Expect CM RE-EST REQ to be rejected
Change-Id: I7d15b935caed2dacf39d66a33ff933a9b8c443d9
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index f23c8fa..7836555 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -129,6 +129,34 @@
}
}
+template (value) CipheringKeySequenceNumberV ts_CKSN(integer key_seq) := {
+ keySequence := int2bit(key_seq, 3),
+ spare := '0'B
+}
+
+/* Send template for CM RE-ESTABLISH REQUEST */
+template (value) PDU_ML3_MS_NW ts_CM_REEST_REQ(integer cksn, MobileIdentityLV mi_lv) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ mm := {
+ cMReEstablReq := {
+ messageType := '101000'B, /* overwritten */
+ nsd := '00'B,
+ cipheringKeySequenceNumber := ts_CKSN(cksn),
+ spare := '0000'B,
+ mobileStationClassmark2 := ts_CM2,
+ mobileIdentityLV := mi_lv,
+ locationAreaIdentification := omit,
+ deviceProperties := omit
+ }
+ }
+ }
+}
+
+
template PDU_ML3_NW_MS tr_MT_simple(template BIT4 discr := ?) := {
discriminator := discr,
tiOrSkip := {
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index b318aa9..b1a7d1b 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -1002,16 +1002,47 @@
var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_LCS, mi));
f_bssap_compl_l3(l3_info);
BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
+ BSSAP.receive(tr_BSSMAP_ClearCommand);
+ BSSAP.send(ts_BSSMAP_ClearComplete);
+ BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
setverdict(pass);
}
testcase TC_cm_serv_req_lcs_reject() runs on MTC_CT {
var BSC_ConnHdlr vc_conn;
f_init();
+ f_vty_config(MSCVTY, "network", "authentication optional");
+ f_vty_config(MSCVTY, "msc", "assign-tmsi");
vc_conn := f_start_handler(refers(f_tc_cm_serv_req_lcs_reject), testcasename(), 21);
vc_conn.done;
}
+/* CM Re-Establishment Request */
+private function f_tc_cm_reest_req_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
+ g_pars := pars;
+
+ /* First perform location update to ensure subscriber is known */
+ f_perform_lu(false, true, true);
+
+ var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
+ var PDU_ML3_MS_NW l3_info := valueof(ts_CM_REEST_REQ(0, mi));
+ f_bssap_compl_l3(l3_info);
+ BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ(int2oct(32,1))));
+ BSSAP.receive(tr_BSSMAP_ClearCommand);
+ BSSAP.send(ts_BSSMAP_ClearComplete);
+ BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
+ setverdict(pass);
+}
+testcase TC_cm_reest_req_reject() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+ f_vty_config(MSCVTY, "network", "authentication optional");
+ f_vty_config(MSCVTY, "msc", "assign-tmsi");
+
+ vc_conn := f_start_handler(refers(f_tc_cm_reest_req_reject), testcasename(), 22);
+ vc_conn.done;
+}
+
/* TODO:
* continue to send repeated MO signalling messages to keep channel open: does MSC tmeout?
@@ -1049,6 +1080,7 @@
execute( TC_cm_serv_req_vgcs_reject() );
execute( TC_cm_serv_req_vbs_reject() );
execute( TC_cm_serv_req_lcs_reject() );
+ execute( TC_cm_reest_req_reject() );
}