sgsn: extend f_routing_area_update() to support Iu

Allow Iu tests to use f_routing_area_update()

Change-Id: Ic03952a04c00a4fc437ef39c5ee046549c122c8b
This commit is contained in:
Alexander Couzens 2019-09-03 12:36:18 +02:00
parent 1552e79637
commit 5d56f5251b
1 changed files with 27 additions and 5 deletions

View File

@ -2360,22 +2360,44 @@ testcase TC_attach_check_complete_resend() runs on test_CT {
f_cleanup();
}
private function f_routing_area_update(RoutingAreaIdentificationV ra, integer bssgp := 0) runs on BSSGP_ConnHdlr {
friend function f_routing_area_update(RoutingAreaIdentificationV ra, integer bssgp := 0) runs on BSSGP_ConnHdlr {
var PDU_L3_SGSN_MS l3_mt;
var PDU_DTAP_PS_MT mt;
var template OCT4 p_tmsi := omit;
if (is_iu(bssgp)) {
p_tmsi := g_pars.p_tmsi;
}
/* then send RAU */
f_send_l3(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit), bssgp);
f_send_l3(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit, p_tmsi), bssgp);
alt {
[] BSSGP[bssgp].receive(tr_GMM_RAU_ACCEPT) -> value l3_mt {
[is_gb(bssgp)] BSSGP[bssgp].receive(tr_GMM_RAU_ACCEPT) -> value l3_mt {
f_process_rau_accept(l3_mt.msgs.gprs_mm.routingAreaUpdateAccept, bssgp);
f_send_l3(ts_GMM_RAU_COMPL, bssgp);
setverdict(pass);
}
[] BSSGP[bssgp].receive(tr_GMM_RAU_REJECT) {
[is_iu(bssgp)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_ACCEPT)) -> value mt {
f_process_rau_accept(mt.dtap.msgs.gprs_mm.routingAreaUpdateAccept, bssgp);
f_send_l3(ts_GMM_RAU_COMPL, bssgp);
setverdict(pass);
}
[is_gb(bssgp)] BSSGP[bssgp].receive(tr_GMM_RAU_REJECT) {
setverdict(fail, "Unexpected RAU Reject");
mtc.stop;
}
[] BSSGP[bssgp].receive { repeat; }
[is_iu(bssgp)] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_RAU_REJECT)) {
setverdict(fail, "Unexpected RAU Reject");
mtc.stop;
}
[is_iu(bssgp)] BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik),
key_sts := ?)) {
var IntegrityProtectionAlgorithm uia_chosen := 0; /* 0 = standard_UMTS_integrity_algorithm_UIA1 */
BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen));
}
[is_gb(bssgp)] BSSGP[bssgp].receive { repeat; }
[is_iu(bssgp)] BSSAP.receive { repeat; }
}
}