diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-04-09 18:18:31 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-04-09 18:19:36 +0000 |
commit | b9e86fa815725b2f9fcdae47b1edeac290477f45 (patch) | |
tree | cc640fead866ba2d4208a1ce5b360d5d76c3b9ad /msc/BSC_ConnectionHandler.ttcn | |
parent | 51affb6e03d7f1ca6c726b278a10660b9011dc69 (diff) |
msc: generate mobile identity inside f_establish_fully()
This reduces the code duplication in every caller of the function.
Change-Id: Iaa071b131a8ff372d70677c8622d227f88e9ea53
Diffstat (limited to 'msc/BSC_ConnectionHandler.ttcn')
-rw-r--r-- | msc/BSC_ConnectionHandler.ttcn | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 62eddf37..73368a2b 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -190,9 +190,18 @@ type enumerated EstablishType { }; /* helper function to fully establish a dedicated channel */ -function f_establish_fully(MobileIdentityLV mi, EstablishType etype := EST_TYPE_MO_CALL) +function f_establish_fully(EstablishType etype := EST_TYPE_MO_CALL) runs on BSC_ConnHdlr { var PDU_ML3_MS_NW l3_info; + var MobileIdentityLV mi; + + /* If we have a TMSI, use TMSI instead of IMSI */ + if (ispresent(g_pars.tmsi)) { + mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); + } else { + mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); + } + select (etype) { case (EST_TYPE_MO_CALL) { l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); @@ -408,7 +417,6 @@ template (value) CallParameters t_CallParams(hexstring called, integer tid) := { function f_mt_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -421,13 +429,7 @@ runs on BSC_ConnHdlr { /* BSC <- MSC: Expect paging. FIXME: By TMSI or not? */ BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi)); - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi, EST_TYPE_PAG_RESP); + f_establish_fully(EST_TYPE_PAG_RESP); /* MS <- MSC: Expect CC SETUP */ BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_SETUP(cpars.transaction_id, *, cpars.called_party))); @@ -498,21 +500,14 @@ runs on BSC_ConnHdlr { function f_mo_call_establish(inout CallParameters cpars) runs on BSC_ConnHdlr { - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var boolean respond_to_dlcx; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } if (cpars.emergency) { - f_establish_fully(mi, EST_TYPE_EMERG_CALL); + f_establish_fully(EST_TYPE_EMERG_CALL); } else { - f_establish_fully(mi, EST_TYPE_MO_CALL); + f_establish_fully(EST_TYPE_MO_CALL); } /* Create MNCC and MGCP expect */ @@ -664,18 +659,11 @@ function f_mo_seq_dtmf_dup(inout CallParameters cpars) runs on BSC_ConnHdlr { timer T := 1.0; - var MobileIdentityLV mi; var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; var template PDU_ML3_MS_NW dtmf_dtap; - /* If we have a TMSI, use TMSI instead of IMSI */ - if (ispresent(g_pars.tmsi)) { - mi := valueof(ts_MI_TMSI_LV(g_pars.tmsi)); - } else { - mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - } - f_establish_fully(mi); + f_establish_fully(); /* Create MNCC and MGCP expect */ f_create_mncc_expect(hex2str(cpars.called_party)); |