aboutsummaryrefslogtreecommitdiffstats
path: root/msc/BSC_ConnectionHandler.ttcn
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-04-09 18:18:31 +0200
committerHarald Welte <laforge@gnumonks.org>2018-04-09 18:19:36 +0000
commitb9e86fa815725b2f9fcdae47b1edeac290477f45 (patch)
treecc640fead866ba2d4208a1ce5b360d5d76c3b9ad /msc/BSC_ConnectionHandler.ttcn
parent51affb6e03d7f1ca6c726b278a10660b9011dc69 (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.ttcn40
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));