MSC: f_ran_register_imsi(): allow passing omit as TMSI

Change-Id: I6dd2f77283a79e83f028115f4cc42f05db885838
This commit is contained in:
Vadim Yanitskiy 2020-01-10 00:23:10 +01:00 committed by laforge
parent 70d15bf48f
commit ae74774138
2 changed files with 21 additions and 61 deletions

View File

@ -1444,8 +1444,17 @@ runs on RAN_Emulation_CT {
}
/* helper function for clients to register their IMSI/TMSI */
function f_ran_register_imsi(hexstring imsi, OCT4 tmsi)
function f_ran_register_imsi(hexstring imsi, template (omit) OCT4 tmsi_or_omit)
runs on RAN_ConnHdlr {
var OCT4 tmsi;
/* Resolve omit to a special reserved value */
if (istemplatekind(tmsi_or_omit, "omit")) {
tmsi := 'FFFFFFFF'O;
} else {
tmsi := valueof(tmsi_or_omit);
}
BSSAP_PROC.call(RAN_register_imsi:{imsi, tmsi, self}) {
[] BSSAP_PROC.getreply(RAN_register_imsi:{?,?,?}) {};
}

View File

@ -1345,15 +1345,9 @@ testcase TC_mo_crcx_ran_reject() runs on MTC_CT {
private function f_mt_call_start(inout CallParameters cpars) runs on BSC_ConnHdlr {
var MNCC_PDU mncc;
var MgcpCommand mgcp_cmd;
var OCT4 tmsi;
f_perform_lu();
if (isvalue(g_pars.tmsi)) {
tmsi := g_pars.tmsi;
} else {
tmsi := 'FFFFFFFF'O;
}
f_ran_register_imsi(g_pars.imsi, tmsi);
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
/* Allocate call reference and send SETUP via MNCC to MSC */
cpars.mncc_callref := f_rnd_int(2147483648);
@ -1914,7 +1908,6 @@ runs on BSC_ConnHdlr {
/* LU followed by MT SMS */
friend function f_tc_lu_and_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
var SmsParameters spars := valueof(t_SmsPars);
var OCT4 tmsi;
f_init_handler(pars);
@ -1922,12 +1915,7 @@ friend function f_tc_lu_and_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on
f_perform_lu();
/* register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
tmsi := g_pars.tmsi;
} else {
tmsi := 'FFFFFFFF'O;
}
f_ran_register_imsi(g_pars.imsi, tmsi);
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS");
@ -1955,19 +1943,14 @@ testcase TC_lu_and_mt_sms() runs on MTC_CT {
/* Paging for MT SMS but no response */
friend function f_tc_lu_and_mt_sms_paging_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
var SmsParameters spars := valueof(t_SmsPars);
var OCT4 tmsi;
f_init_handler(pars, 150.0);
/* Perform location update */
f_perform_lu();
/* register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
tmsi := g_pars.tmsi;
} else {
tmsi := 'FFFFFFFF'O;
}
f_ran_register_imsi(g_pars.imsi, tmsi);
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS");
@ -2013,7 +1996,6 @@ testcase TC_lu_and_mt_sms_paging_and_nothing() runs on MTC_CT {
/* LU followed by MT SMS with repeated paging */
friend function f_tc_lu_and_mt_sms_paging_repeated(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
var SmsParameters spars := valueof(t_SmsPars);
var OCT4 tmsi;
f_init_handler(pars);
@ -2021,12 +2003,7 @@ friend function f_tc_lu_and_mt_sms_paging_repeated(charstring id, BSC_ConnHdlrPa
f_perform_lu();
/* register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
tmsi := g_pars.tmsi;
} else {
tmsi := 'FFFFFFFF'O;
}
f_ran_register_imsi(g_pars.imsi, tmsi);
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
f_vty_sms_send(hex2str(pars.imsi), "2342", "Hello SMS");
@ -2310,11 +2287,7 @@ runs on BSC_ConnHdlr {
f_perform_lu();
/* Register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
} else {
f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
}
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES(
imsi := g_pars.imsi,
@ -2375,11 +2348,7 @@ runs on BSC_ConnHdlr {
f_perform_lu();
/* Register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
} else {
f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
}
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
var template GSUP_PDU mt_forwardSM_err := tr_GSUP_MT_FORWARD_SM_ERR(
imsi := g_pars.imsi,
@ -2442,11 +2411,7 @@ runs on BSC_ConnHdlr {
f_perform_lu();
/* Register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
} else {
f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
}
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
/* Submit the 1st MT SMS on GSUP */
log("TX MT-forwardSM-Req for the 1st SMS");
@ -2555,11 +2520,7 @@ runs on BSC_ConnHdlr {
f_perform_lu();
/* Register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
} else {
f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
}
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
/* Send CM Service Request for MO SMMA */
f_establish_fully(EST_TYPE_MO_SMS);
@ -2659,11 +2620,7 @@ runs on BSC_ConnHdlr {
f_perform_lu();
/* Register an 'expect' for given IMSI (+TMSI) */
if (isvalue(g_pars.tmsi)) {
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
} else {
f_ran_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
}
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES(
imsi := g_pars.imsi,
@ -2811,13 +2768,7 @@ private function f_tc_smpp_mt_sms(charstring id, BSC_ConnHdlrPars pars) runs on
SMPP.receive(tr_SMPP(c_SMPP_command_id_alert_notification, ESME_ROK));
/* register an 'expect' for given IMSI (+TMSI) */
var OCT4 tmsi;
if (isvalue(g_pars.tmsi)) {
tmsi := g_pars.tmsi;
} else {
tmsi := 'FFFFFFFF'O;
}
f_ran_register_imsi(g_pars.imsi, tmsi);
f_ran_register_imsi(g_pars.imsi, g_pars.tmsi);
var SmsParameters spars := valueof(t_SmsPars);
/* TODO: test with more intelligent user data; test different coding schemes */