aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-02-04 01:05:34 +0100
committerHarald Welte <laforge@gnumonks.org>2019-02-05 17:45:29 +0100
commit924b6ea17b870292589d3d23a875eae266d28e56 (patch)
tree3ea5cb6be812c5c3184e39a2675f01cde197bf7f
parentcc32ed90965538064ebd5e0910f1705c728e9dff (diff)
bsc: replace octet string with decmatch when matching RR RELEASE
The 'decmatch' keyword allows us to match the decoded version of some octetstring, which is very useful in the situations where we have the L3 message only as octetstring but want to check if it matches some L3 template. Change-Id: I0a91e067f7e8062bf991fef8b0d4d8da740bfafc
-rw-r--r--bsc/BSC_Tests.ttcn5
-rw-r--r--bsc/BSC_Tests_LCLS.ttcn2
-rw-r--r--library/L3_Templates.ttcn31
3 files changed, 34 insertions, 4 deletions
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 5ac81918..555aac80 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -62,7 +62,6 @@ const float T3101_MAX := 12.0;
const integer NUM_TCHH_PER_BTS := 2;
const integer NUM_TCHF_PER_BTS := 4;
const integer NUM_SDCCH_PER_BTS := 4;
-template octetstring t_l3_rr_chan_rel := '060D??*'O;
/* per-BTS state which we keep */
@@ -872,7 +871,7 @@ function f_expect_chan_rel(integer bts_nr, RslChannelNr rsl_chan_nr,
got_deact_sacch := true;
repeat;
}
- [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, t_l3_rr_chan_rel))) {
+ [] IPA_RSL[bts_nr].receive(tr_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0, tr_RSL_DATA_REQ(rsl_chan_nr, ?, decmatch tr_RRM_RR_RELEASE))) {
got_rr_chan_rel := true;
repeat;
}
@@ -2816,7 +2815,7 @@ private function f_tc_ho_out_fail_no_ho_detect(charstring id) runs on MSC_ConnHd
[] RSL.receive(tr_RSL_DEACT_SACCH(g_chan_nr)) {
log("Got Deact SACCH");
}
- [] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, t_l3_rr_chan_rel)) {
+ [] RSL.receive(tr_RSL_DATA_REQ(g_chan_nr, ?, decmatch tr_RRM_RR_RELEASE)) {
log("Got RR Release");
}
[] RSL.receive(tr_RSL_MsgTypeD(RSL_MT_RF_CHAN_REL)) {
diff --git a/bsc/BSC_Tests_LCLS.ttcn b/bsc/BSC_Tests_LCLS.ttcn
index 0fada93d..67ccecf8 100644
--- a/bsc/BSC_Tests_LCLS.ttcn
+++ b/bsc/BSC_Tests_LCLS.ttcn
@@ -702,7 +702,7 @@ testcase TC_lcls_connect_clear() runs on lcls_test_CT {
var myBSSMAP_Cause cause_val := GSM0808_CAUSE_CALL_CONTROL;
CONN_A.send(ts_BSSMAP_ClearCommand(enum2int(cause_val)));
interleave {
- [] CONN_A.receive(tr_RSL_DATA_REQ(?, tr_RslLinkID_DCCH(0), t_l3_rr_chan_rel));
+ [] CONN_A.receive(tr_RSL_DATA_REQ(?, tr_RslLinkID_DCCH(0), decmatch tr_RRM_RR_RELEASE));
[] CONN_A.receive(tr_RSL_DEACT_SACCH(?));
[] CONN_A.receive(tr_RSL_RF_CHAN_REL(?)) -> value rsl {
var RSL_IE_Body ieb;
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 3978498f..0b714d32 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -660,6 +660,37 @@ template PDU_ML3_MS_NW tr_RRM_RR_STATUS(template OCT1 cause := ?) := {
}
}
+template PDU_ML3_NW_MS tr_RRM_RR_RELEASE(template OCT1 cause := ?) := {
+ discriminator := '0110'B,
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ rrm := {
+ channelRelease := {
+ messageType := '00001101'B,
+ rRCause := {
+ valuePart := cause
+ },
+ bARange := *,
+ groupChannelDescription := *,
+ groupCipherKeyNumber := *,
+ gPRSResumption := *,
+ bAListPref := *,
+ uTRANFrequencyList := *,
+ cellChannelDescr := *,
+ cellSelectionIndicator := *,
+ enhanced_DTM_CS_Release_Indication := *,
+ vGCS_Ciphering_Parameters := *,
+ group_Channel_Description_2 := *,
+ talkerIdentity := *,
+ talkerPriorityStatus := *,
+ vGCS_AMR_Configuration := *,
+ individual_Priorities := *
+ }
+ }
+ }
+}
template PDU_ML3_MS_NW ts_ML3_MO := {