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
This commit is contained in:
Harald Welte 2019-02-04 01:05:34 +01:00
parent cc32ed9096
commit 924b6ea17b
3 changed files with 34 additions and 4 deletions

View File

@ -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)) {

View File

@ -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;

View File

@ -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 := {