aboutsummaryrefslogtreecommitdiffstats
path: root/sgsn
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-05-03 01:29:29 +0200
committerlaforge <laforge@gnumonks.org>2019-08-18 17:12:46 +0000
commit955aa94504510139a12d223071cf49ef90788a3d (patch)
treefd8c3005bbc5de49b4365e6ae38a29503cbc1008 /sgsn
parentce818da5b0e24ca5943f4061d53c41214678a830 (diff)
BSSGP_Emulation: Abandon "BssgpDecoded" intermediate structure
It originally seemed like a great idea to define a custom record which aggregates the decoded BSSGP, LLC, L3 and/or SNDCP and passes it to the individual ConnHdlr. However, particularly with testcase interoperability for IuPS in mind, this seems bogus. Also, we never really took advantage of this. Let's now decode as far as we can decode any PDU, and then send the decoded version of that PDU via the ports between the BSSGP_Emulation and the ConnHdlr component. Change-Id: I8c1082880902dd9a04935945f0293895f4d0c53a
Diffstat (limited to 'sgsn')
-rw-r--r--sgsn/SGSN_Tests.ttcn172
1 files changed, 81 insertions, 91 deletions
diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 03c9d05b..e3497197 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -401,12 +401,12 @@ function f_send_l3_gmm_llc(template PDU_L3_MS_SGSN l3_mo, integer gb_index := 0)
altstep as_mm_identity(integer gb_idx := 0) runs on BSSGP_ConnHdlr {
var MobileL3_CommonIE_Types.MobileIdentityLV mi;
- [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {
+ [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('001'B)) {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);
repeat;
}
- [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {
+ [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('010'B)) {
mi := valueof(ts_MI_IMEI_LV(g_pars.imei));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx);
repeat;
@@ -416,12 +416,9 @@ altstep as_mm_identity(integer gb_idx := 0) runs on BSSGP_ConnHdlr {
/* receive a L3 (GMM/SM) message over whatever is the appropriate lower-layer bearer */
function f_receive_l3(template PDU_L3_SGSN_MS rx_tpl := ?, integer gb_idx := 0)
runs on BSSGP_ConnHdlr return PDU_L3_SGSN_MS {
- var BssgpDecoded bd;
var PDU_L3_SGSN_MS l3_mt;
alt {
- [] BSSGP[gb_idx].receive(tr_BD_L3_MT(rx_tpl)) -> value bd {
- l3_mt := bd.l3_mt;
- }
+ [] BSSGP[gb_idx].receive(rx_tpl) -> value l3_mt { }
}
return l3_mt;
}
@@ -658,14 +655,14 @@ private function f_TC_attach_auth_id_timeout(charstring id) runs on BSSGP_ConnHd
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ(?))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ(?)) {
/* don't send ID Response */
repeat;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('09'O))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT('09'O)) {
setverdict(pass);
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(fail, "Wrong Attach Reject Cause");
mtc.stop;
}
@@ -688,7 +685,7 @@ private function f_TC_attach_auth_sai_timeout(charstring id) runs on BSSGP_ConnH
[] GSUP.receive(tr_GSUP_SAI_REQ(g_pars.imsi)); { }
}
/* don't send SAI-response from HLR */
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));
+ BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?));
setverdict(pass);
}
testcase TC_attach_auth_sai_timeout() runs on test_CT {
@@ -709,7 +706,7 @@ private function f_TC_attach_auth_sai_reject(charstring id) runs on BSSGP_ConnHd
GSUP.send(ts_GSUP_SAI_ERR(g_pars.imsi, 23));
}
}
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?)));
+ BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?));
setverdict(pass);
}
testcase TC_attach_auth_sai_reject() runs on test_CT {
@@ -721,7 +718,7 @@ testcase TC_attach_auth_sai_reject() runs on test_CT {
/* HLR never responds to UL REQ, expect ATTACH REJECT */
private function f_TC_attach_gsup_lu_timeout(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
@@ -730,11 +727,11 @@ private function f_TC_attach_gsup_lu_timeout(charstring id) runs on BSSGP_ConnHd
GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi));
/* Never follow-up with ISD_REQ or UL_RES */
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(pass);
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
setverdict(fail);
mtc.stop;
}
@@ -750,7 +747,7 @@ testcase TC_attach_gsup_lu_timeout() runs on test_CT {
/* HLR rejects UL REQ, expect ATTACH REJECT */
private function f_TC_attach_gsup_lu_reject(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
@@ -760,11 +757,11 @@ private function f_TC_attach_gsup_lu_reject(charstring id) runs on BSSGP_ConnHdl
GSUP.send(ts_GSUP_UL_ERR(g_pars.imsi, 0));
}
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(pass);
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
setverdict(fail);
mtc.stop;
}
@@ -781,7 +778,7 @@ testcase TC_attach_gsup_lu_reject() runs on test_CT {
/* Attempt of combined GPRS + IMSI attach: network should ACK only GPRS attach */
private function f_TC_attach_combined(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, true, false, omit, omit));
@@ -789,8 +786,8 @@ private function f_TC_attach_combined(charstring id) runs on BSSGP_ConnHdlr {
/* Expect MSC to perform LU with HLR */
f_gmm_gsup_lu_isd();
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
}
f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);
setverdict(pass);
@@ -805,15 +802,15 @@ testcase TC_attach_combined() runs on test_CT {
/* Attempt of GPRS ATTACH in 'accept all' mode */
private function f_TC_attach_accept_all(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
g_pars.net.expect_auth := false;
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
f_gmm_auth();
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
}
f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);
setverdict(pass);
@@ -840,13 +837,13 @@ private function f_TC_attach_closed_foreign(charstring id) runs on BSSGP_ConnHdl
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
alt {
[] as_mm_identity();
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT('07'O))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT('07'O)) {
setverdict(pass);
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(pass);
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT(*, *, *)) {
setverdict(fail);
mtc.stop;
}
@@ -871,7 +868,7 @@ private function f_TC_rau_unknown(charstring id) runs on BSSGP_ConnHdlr {
f_send_l3_gmm_llc(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, old_ra, false, omit, omit));
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT('0a'O))) {
+ [] BSSGP[0].receive(tr_GMM_RAU_REJECT('0a'O)) {
setverdict(pass);
}
/* FIXME: Expect XID RESET? */
@@ -887,8 +884,6 @@ testcase TC_rau_unknown() runs on test_CT {
}
private function f_TC_attach_rau(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
-
/* first perform regular attach */
f_TC_attach(id);
@@ -905,7 +900,7 @@ testcase TC_attach_rau() runs on test_CT {
/* general GPRS DETACH helper */
function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge, integer bssgp_index := 0) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
timer T := 5.0;
f_send_l3_gmm_llc(ts_GMM_DET_REQ_MO(detach_type, power_off), bssgp_index);
if (expect_purge) {
@@ -918,7 +913,7 @@ function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge,
setverdict(fail, "Unexpected GSUP PURGE MS for unregistered TLLI");
mtc.stop;
}
- [power_off] BSSGP[bssgp_index].receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {
+ [power_off] BSSGP[bssgp_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
g_pars.ra := omit;
setverdict(fail, "Unexpected DETACH ACCEPT in power-off DETACH");
mtc.stop;
@@ -927,12 +922,12 @@ function f_detach_mo(BIT3 detach_type, boolean power_off, boolean expect_purge,
[power_off] T.timeout {
setverdict(pass);
}
- [not power_off] BSSGP[bssgp_index].receive(tr_BD_L3_MT(tr_GMM_DET_ACCEPT_MT)) -> value bd {
+ [not power_off] BSSGP[bssgp_index].receive(tr_GMM_DET_ACCEPT_MT) -> value l3_mt {
g_pars.ra := omit;
setverdict(pass);
/* TODO: check if any PDP contexts are deactivated on network side? */
}
- [] BSSGP[bssgp_index].receive(tr_BD_L3_MT(?)) -> value bd {
+ [] BSSGP[bssgp_index].receive(PDU_L3_SGSN_MS:?) -> value l3_mt {
if (power_off) {
setverdict(fail, "Unexpected Layer 3 package received in power-off DETACH");
} else {
@@ -1056,22 +1051,22 @@ runs on BSSGP_ConnHdlr {
omit, recovery));
}
alt {
- [exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) {
+ [exp_rej] BSSGP[gb_idx].receive(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause)) {
setverdict(pass);
}
- [exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {
+ [exp_rej] BSSGP[gb_idx].receive(tr_SM_ACT_PDP_ACCEPT) {
setverdict(fail, "Unexpected PDP CTX ACT ACC");
mtc.stop;
}
- [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {
+ [not exp_rej] BSSGP[gb_idx].receive(tr_SM_ACT_PDP_REJ(apars.tid, ?)) {
setverdict(fail, "Unexpected PDP CTX ACT FAIL");
mtc.stop;
}
- [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, ?))) {
+ [not exp_rej] BSSGP[gb_idx].receive(tr_SM_ACT_PDP_REJ(apars.tid, ?)) {
setverdict(fail, "Unexpected PDP CTX ACT FAIL");
mtc.stop;
}
- [not exp_rej] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi))) {
+ [not exp_rej] BSSGP[gb_idx].receive(tr_SM_ACT_PDP_ACCEPT(apars.tid, apars.sapi)) {
setverdict(pass);
}
[] as_xid(apars, gb_idx);
@@ -1090,7 +1085,7 @@ runs on BSSGP_ConnHdlr {
GTP.send(ts_GTPC_DeletePdpResp(g_ud.peer, seq_nr, apars.sgsn_tei_c, '7F'O));
}
alt {
- [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {
+ [] BSSGP[gb_idx].receive(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid)) {
setverdict(pass);
}
[] as_xid(apars, gb_idx);
@@ -1114,7 +1109,7 @@ runs on BSSGP_ConnHdlr {
T.start;
alt {
- [] BSSGP[gb_idx].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {
+ [] BSSGP[gb_idx].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) {
f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), gb_idx);
}
[not error_ind] GTP.receive(tr_GTPC_MsgType(?, deletePDPContextResponse, apars.ggsn_tei_c)) {
@@ -1219,7 +1214,7 @@ private function f_gtpu_send(inout PdpActPars apars, octetstring payload) runs o
}
private altstep as_xid(PdpActPars apars, integer gb_idx := 0) runs on BSSGP_ConnHdlr {
- [] BSSGP[gb_idx].receive(tr_BD_LLC(tr_LLC_XID_MT_CMD(?, apars.sapi))) {
+ [] BSSGP[gb_idx].receive(tr_LLC_XID_MT_CMD(?, apars.sapi)) {
repeat;
}
}
@@ -1265,7 +1260,8 @@ runs on BSSGP_ConnHdlr {
/* Expect PDU via BSSGP/LLC on simulated PCU from SGSN */
alt {
[] as_xid(apars, gb_idx);
- [] BSSGP[gb_idx].receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));
+ //[] BSSGP[gb_idx].receive(tr_BD_SNDCP(apars.sapi, tr_SN_UD(apars.nsapi, payload)));
+ [] BSSGP[gb_idx].receive(tr_SN_UD(apars.nsapi, payload));
}
}
@@ -1304,14 +1300,14 @@ private function f_TC_pdp_act_unattached(charstring id) runs on BSSGP_ConnHdlr {
apars.apn, apars.pco));
alt {
/* We might want toalso actually expect a PDPC CTX ACT REJ? */
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(?, ?))) {
+ [] BSSGP[0].receive(tr_GMM_DET_REQ_MT(?, ?)) {
setverdict(pass);
}
[] GTP.receive(tr_GTPC_MsgType(?, createPDPContextRequest, ?)) {
setverdict(fail, "Unexpected GTP PDP CTX ACT");
mtc.stop;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT(?, ?))) {
+ [] BSSGP[0].receive(tr_SM_ACT_PDP_ACCEPT(?, ?)) {
setverdict(fail, "Unexpected SM PDP CTX ACT ACK");
mtc.stop;
}
@@ -1447,7 +1443,7 @@ private function f_TC_attach_restart_ctr_echo(charstring id) runs on BSSGP_ConnH
}
var OCT1 cause_network_failure := int2oct(38, 1)
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true))) {
+ [] BSSGP[0].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true)) {
f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));
setverdict(pass);
}
@@ -1522,7 +1518,7 @@ private function f_TC_attach_pdp_act_deact_mt_t3395_expire(charstring id) runs o
for (i := 0; i < 5; i := i+1) {
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {}
+ [] BSSGP[0].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) {}
[] as_xid(apars);
}
}
@@ -1567,7 +1563,7 @@ private function f_TC_attach_pdp_act_deact_gtp_retrans(charstring id) runs on BS
apars.ggsn_ip_c, apars.ggsn_ip_u, apars.chg_id,
omit, omit));
}
- BSSGP[0].receive(tr_BD_L3_MT(tr_SM_ACT_PDP_ACCEPT)) {}
+ BSSGP[0].receive(tr_SM_ACT_PDP_ACCEPT) {}
/* Now the same with Deact */
f_send_l3_gmm_llc(ts_SM_DEACT_PDP_REQ_MO(apars.tid, '00'O, false, omit), 0);
@@ -1583,7 +1579,7 @@ private function f_TC_attach_pdp_act_deact_gtp_retrans(charstring id) runs on BS
GTP.send(ts_GTPC_DeletePdpResp(g_ud_second.peer, seq_nr, apars.sgsn_tei_c, '7F'O));
}
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid))) {
+ [] BSSGP[0].receive(tr_SM_DEACT_PDP_ACCEPT_MT(apars.tid)) {
setverdict(pass);
}
[] as_xid(apars, 0);
@@ -1614,7 +1610,7 @@ private function f_TC_attach_pdp_act_deact_gtp_retrans_resp(charstring id) runs
g_delete_req := ts_GTPC_DeletePDP(peer, seq_nr, apars.sgsn_tei_c, apars.nsapi, '1'B);
GTP.send(g_delete_req);
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true))) {
+ [] BSSGP[0].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) {
f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid), 0);
}
[] as_xid(apars, 0);
@@ -1669,7 +1665,7 @@ private function f_TC_hlr_location_cancel_request_update(charstring id) runs on
timer T := 5.0;
T.start;
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(*, *, *))) {
+ [] BSSGP[0].receive(tr_GMM_DET_REQ_MT(*, *, *)) {
T.stop;
setverdict(fail, "Unexpected GMM Detach Request");
mtc.stop;
@@ -1728,7 +1724,7 @@ private function f_TC_hlr_location_cancel_request_withdraw(charstring id) runs o
GSUP.send(ts_GSUP_UL_RES(g_pars.imsi));
/* MS: receive a Detach Request */
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_DET_REQ_MT(c_GMM_DTT_MT_IMSI_DETACH, ?, ?)));
+ BSSGP[0].receive(tr_GMM_DET_REQ_MT(c_GMM_DTT_MT_IMSI_DETACH, ?, ?));
f_send_l3_gmm_llc(ts_GMM_DET_ACCEPT_MO);
setverdict(pass);
@@ -1823,15 +1819,15 @@ private function f_TC_attach_no_imei_response(charstring id) runs on BSSGP_ConnH
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
/* break */
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('001'B)) {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));
repeat;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {
/* ignore ID REQ IMEI */
count_req := count_req + 1;
repeat;
@@ -1871,15 +1867,15 @@ private function f_TC_attach_no_imsi_response(charstring id) runs on BSSGP_ConnH
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), f_random_RAI(), true, false, omit, omit));
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
/* break */
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('001'B)) {
/* ignore ID REQ IMSI */
count_req := count_req + 1;
repeat;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {
mi := valueof(ts_MI_IMEI_LV(g_pars.imei));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));
repeat;
@@ -1931,7 +1927,7 @@ testcase TC_attach_check_subscriber_list() runs on test_CT {
private function f_TC_attach_closed_imsi_added(charstring id) runs on BSSGP_ConnHdlr {
var RoutingAreaIdentificationV old_ra := f_random_RAI();
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
/* unregister the old IMSI */
f_bssgp_client_unregister(g_pars.imsi);
@@ -1945,12 +1941,12 @@ private function f_TC_attach_closed_imsi_added(charstring id) runs on BSSGP_Conn
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit));
f_gmm_auth();
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(fail, "Received unexpected GMM Attach REJECT");
mtc.stop;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT(*, *, *)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);
setverdict(pass);
}
@@ -2004,7 +2000,7 @@ private function f_TC_attach_check_complete_resend(charstring id) runs on BSSGP_
[] T.timeout {
/* break */
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT(*, *, *))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT(*, *, *)) {
/* ignore */
count_req := count_req + 1;
T.start;
@@ -2032,17 +2028,17 @@ testcase TC_attach_check_complete_resend() runs on test_CT {
}
private function f_routing_area_update(RoutingAreaIdentificationV ra, integer bssgp := 0) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
/* then send RAU */
f_send_l3_gmm_llc(ts_GMM_RAU_REQ(f_mi_get_lv(), GPRS_UPD_T_RA, g_pars.ra, false, omit, omit), bssgp);
alt {
- [] BSSGP[bssgp].receive(tr_BD_L3_MT(tr_GMM_RAU_ACCEPT)) -> value bd {
- f_process_rau_accept(bd.l3_mt.msgs.gprs_mm.routingAreaUpdateAccept, 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_gmm_llc(ts_GMM_RAU_COMPL, bssgp);
setverdict(pass);
}
- [] BSSGP[bssgp].receive(tr_BD_L3_MT(tr_GMM_RAU_REJECT)) {
+ [] BSSGP[bssgp].receive(tr_GMM_RAU_REJECT) {
setverdict(fail, "Unexpected RAU Reject");
mtc.stop;
}
@@ -2051,8 +2047,6 @@ private function f_routing_area_update(RoutingAreaIdentificationV ra, integer bs
}
private function f_TC_attach_rau_a_a(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
-
/* first perform regular attach */
f_TC_attach(id);
@@ -2081,8 +2075,6 @@ testcase TC_attach_rau_a_a() runs on test_CT {
}
private function f_TC_attach_rau_a_b(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
-
f_TC_attach(id);
log("attach complete sending rau");
@@ -2117,21 +2109,21 @@ private function f_TC_attach_gmm_attach_req_while_gmm_attach(charstring id) runs
var integer count_req := 0;
var MobileL3_CommonIE_Types.MobileIdentityLV mi;
var RoutingAreaIdentificationV rand_rai := f_random_RAI();
- var BssgpDecoded bd;
+ var PDU_L3_SGSN_MS l3_mt;
f_send_l3_gmm_llc(ts_GMM_ATTACH_REQ(f_mi_get_lv(), rand_rai, true, false, omit, omit));
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(fail, "Unexpected GMM ATTACH REJECT");
mtc.stop;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('001'B)) {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));
repeat;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {
/* send out a second GMM_Attach Request.
* If the SGSN follows the rules, this 2nd ATTACH REQ should be ignored, because
* of the same content */
@@ -2144,21 +2136,21 @@ private function f_TC_attach_gmm_attach_req_while_gmm_attach(charstring id) runs
/* we've sent already a IMEI answer, we should NOT asked again for IMEI */
alt {
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('001'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('001'B)) {
mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi));
repeat;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ID_REQ('010'B))) {
+ [] BSSGP[0].receive(tr_GMM_ID_REQ('010'B)) {
setverdict(fail, "Unexpected GMM ID REQ (IMEI).");
mtc.stop;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_REJECT(?))) {
+ [] BSSGP[0].receive(tr_GMM_ATTACH_REJECT(?)) {
setverdict(fail, "Unexpected GMM ATTACH REJECT");
mtc.stop;
}
- [] BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ [] BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);
setverdict(pass);
/* FIXME: Extract P-TMSI, if any. Only send Complete if necessary */
@@ -2186,7 +2178,6 @@ testcase TC_attach_gmm_attach_req_while_gmm_attach() runs on test_CT {
}
private function f_TC_attach_usim_resync(charstring id) runs on BSSGP_ConnHdlr {
- var BssgpDecoded bd;
var RoutingAreaIdentificationV old_ra := f_random_RAI();
var template PDU_L3_MS_SGSN attach_req := ts_GMM_ATTACH_REQ(f_mi_get_lv(), old_ra, false, false, omit, omit);
@@ -2227,7 +2218,7 @@ private function f_TC_attach_usim_resync(charstring id) runs on BSSGP_ConnHdlr {
var template PDU_L3_SGSN_MS auth_ciph_req := tr_GMM_AUTH_REQ(g_pars.vec.rand);
auth_ciph_req.msgs.gprs_mm.authenticationAndCipheringRequest.authenticationParameterAUTN := autn;
- BSSGP[0].receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd;
+ BSSGP[0].receive(auth_ciph_req) -> value l3_mt;
/* send the gmm auth failure with resync IE */
f_send_l3_gmm_llc(ts_GMM_AUTH_FAIL_UMTS_AKA_RESYNC(g_pars.vec.auts));
@@ -2259,8 +2250,7 @@ private function f_TC_attach_usim_resync(charstring id) runs on BSSGP_ConnHdlr {
/* wait for the new Auth Request */
auth_ciph_req := tr_GMM_AUTH_REQ(g_pars.vec.rand);
auth_ciph_req.msgs.gprs_mm.authenticationAndCipheringRequest.authenticationParameterAUTN := autn;
- BSSGP[0].receive(tr_BD_L3_MT(auth_ciph_req)) -> value bd;
- l3_mt := bd.l3_mt;
+ BSSGP[0].receive(auth_ciph_req) -> value l3_mt;
var BIT4 ac_ref := l3_mt.msgs.gprs_mm.authenticationAndCipheringRequest.acReferenceNumber.valueField;
var template PDU_L3_MS_SGSN auth_ciph_resp := ts_GMM_AUTH_RESP_2G(ac_ref, g_pars.vec.sres);
auth_ciph_resp := ts_GMM_AUTH_RESP_2G(ac_ref, g_pars.vec.sres);
@@ -2284,8 +2274,8 @@ private function f_TC_attach_usim_resync(charstring id) runs on BSSGP_ConnHdlr {
/* Expect SGSN to perform LU with HLR */
f_gmm_gsup_lu_isd();
- BSSGP[0].receive(tr_BD_L3_MT(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?))) -> value bd {
- f_process_attach_accept(bd.l3_mt.msgs.gprs_mm.attachAccept);
+ BSSGP[0].receive(tr_GMM_ATTACH_ACCEPT('001'B, ?, ?)) -> value l3_mt {
+ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept);
}
f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL);
setverdict(pass);
@@ -2337,7 +2327,7 @@ private function f_TC_llc_sabm_dm_llgmm(charstring id) runs on BSSGP_ConnHdlr {
f_gmm_attach(false, false);
f_sleep(1.0);
f_send_llc(ts_LLC_SABM({}, '1'B, c_LLC_SAPI_LLGMM, LLC_CR_UL_CMD));
- BSSGP[0].receive(tr_BD_LLC(tr_LLC_DM(?, c_LLC_SAPI_LLGMM, LLC_CR_DL_RSP)));
+ BSSGP[0].receive(tr_LLC_DM(?, c_LLC_SAPI_LLGMM, LLC_CR_DL_RSP));
setverdict(pass);
}
testcase TC_llc_sabm_dm_llgmm() runs on test_CT {
@@ -2353,7 +2343,7 @@ private function f_TC_llc_sabm_dm_ll5(charstring id) runs on BSSGP_ConnHdlr {
f_gmm_attach(false, false);
f_sleep(1.0);
f_send_llc(ts_LLC_SABM({}, '1'B, c_LLC_SAPI_LL5, LLC_CR_UL_CMD));
- BSSGP[0].receive(tr_BD_LLC(tr_LLC_DM(?, c_LLC_SAPI_LL5, LLC_CR_DL_RSP)));
+ BSSGP[0].receive(tr_LLC_DM(?, c_LLC_SAPI_LL5, LLC_CR_DL_RSP));
setverdict(pass);
}
testcase TC_llc_sabm_dm_ll5() runs on test_CT {
@@ -2380,7 +2370,7 @@ private function f_TC_xid_empty_l3(charstring id) runs on BSSGP_ConnHdlr {
xid_rx := { tr_XID_L3(''O) };
f_send_llc(ts_LLC_XID_MO_CMD(xid, apars.sapi));
alt {
- [] BSSGP[0].receive(tr_BD_LLC(tr_LLC_XID(xid_rx, apars.sapi)));
+ [] BSSGP[0].receive(tr_LLC_XID(xid_rx, apars.sapi));
[] as_xid(apars);
}
setverdict(pass);
@@ -2408,7 +2398,7 @@ private function f_TC_xid_n201u(charstring id) runs on BSSGP_ConnHdlr {
xid_rx := { tr_XID_N201U(1234) };
f_send_llc(ts_LLC_XID_MO_CMD(xid, apars.sapi));
alt {
- [] BSSGP[0].receive(tr_BD_LLC(tr_LLC_XID_MT_RSP(xid_rx, apars.sapi)));
+ [] BSSGP[0].receive(tr_LLC_XID_MT_RSP(xid_rx, apars.sapi));
[] as_xid(apars);
}
setverdict(pass);