aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-10-28 15:07:08 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2019-10-28 15:15:43 +0100
commitf7630a6498f0a2f4c71b8382ed69f5028621c3d2 (patch)
tree427a9895434b2445158ae1b8c9f385a23efc797c
parent3d008ae837de2612e42db8607314debbe6dcc720 (diff)
bsc: Verify ms power level value from RSL IE MS Power during CHAN ACT
-rw-r--r--bsc/MSC_ConnectionHandler.ttcn11
-rw-r--r--library/RSL_Types.ttcn6
2 files changed, 17 insertions, 0 deletions
diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn
index 40701d64..8091d8dc 100644
--- a/bsc/MSC_ConnectionHandler.ttcn
+++ b/bsc/MSC_ConnectionHandler.ttcn
@@ -526,6 +526,7 @@ type record TestHdlrParams {
TestHdlrEncrParams encr optional,
TestHdlrParamsLcls lcls,
TestHdlrParamsHandover handover optional,
+ uint5_t exp_ms_power_level,
boolean aoip,
boolean use_osmux
};
@@ -551,6 +552,7 @@ template (value) TestHdlrParams t_def_TestHdlrPars := {
adjust_cx_exp := true
},
handover := omit,
+ exp_ms_power_level := 7, /* calculated from osmo-bsc.cfg "ms max power" */
aoip := true,
use_osmux := false
}
@@ -739,6 +741,7 @@ private template RSL_IE_Body tr_EncrInfo(template RSL_AlgId alg, template octets
private function f_check_chan_act(AssignmentState st, RSL_Message chan_act) runs on MSC_ConnHdlr {
var RSL_IE_Body encr_info;
var RSL_IE_Body ms_power_param;
+ var RSL_IE_Body ms_power;
if (ispresent(g_pars.encr) and g_pars.encr.enc_alg != '01'O) {
if (not f_rsl_find_ie(chan_act, RSL_IE_ENCR_INFO, encr_info)) {
@@ -763,6 +766,14 @@ private function f_check_chan_act(AssignmentState st, RSL_Message chan_act) runs
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "IE MS Power Parameters not found in CHAN ACT");
}
+ if (not f_rsl_find_ie(chan_act, RSL_IE_MS_POWER, ms_power)) {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "IE MS Power not found in CHAN ACT");
+ } else {
+ if (not match(ms_power.ms_power, tr_RSL_IE_MS_Power(g_pars.exp_ms_power_level, false))) {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Wrong MS Power IE in CHAN ACT");
+ }
+ }
+
}
altstep as_assignment(inout AssignmentState st) runs on MSC_ConnHdlr {
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index db0e231c..d982e02e 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -454,6 +454,12 @@ module RSL_Types {
boolean fpc_epc,
uint5_t power_level
}
+ template RSL_IE_MS_Power tr_RSL_IE_MS_Power(template uint5_t power_level := ?,
+ template boolean fpc_epc := false) := {
+ reserved := 0,
+ fpc_epc := fpc_epc,
+ power_level := power_level
+ }
template (value) RSL_IE_MS_Power ts_RSL_IE_MS_Power(uint5_t power_level,
boolean fpc_epc := false) := {
reserved := 0,