fixeria has uploaded this change for review.

View Change

bsc: verify Cell ID in BSSMAP HandoverPerformed

As per 3GPP TS 48.008 ยง3.2.1.25, HANDOVER PERFORMED must report the
target cell. Add an optional cell_id parameter to the template
(defaulting to '?' for backward compatibility) and update the two
intra-BSC handover test helpers to assert that the Cell Identifier
IE carries the target BTS (BTS 1: MCC=001 MNC=01 LAC=1 CI=1).

Also remove the unnecessary interleave wrapper in
f_tc_ho_during_lcs_loc_req(): the two receives arrive on separate
ports (RAN_CONN vs BSSAP_LE) so sequential receive is sufficient.

Change-Id: I82aadcc3a80c183cb93522b829071294b156a218
Related: osmo-bsc.git I4111351dc38fc2dbe844c2bd07b3ecfaaadd864e
---
M bsc/BSC_Tests.ttcn
M library/BSSMAP_Templates.ttcn
2 files changed, 21 insertions(+), 10 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/82/42582/1
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index e97ecb0..a4c666e 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -5887,8 +5887,14 @@
}

/* Since this is an internal handover we expect the BSC to inform the
- * MSC about the event */
- RAN_CONN.receive(tr_BSSMAP_HandoverPerformed);
+ * MSC about the event. The Cell Identifier must report the *target* BTS
+ * (BTS 1: MCC=001 MNC=01 LAC=1 CI=1), not the source BTS. */
+ alt {
+ [] RAN_CONN.receive(tr_BSSMAP_HandoverPerformed(tr_CellId_CGI('00F110'O, 1, 1)));
+ [] RAN_CONN.receive(tr_BSSMAP_HandoverPerformed) {
+ setverdict(fail, "BSSMAP HandoverPerformed indicates unexpected Cell ID");
+ }
+ }

/* Check the amount of MGCP transactions is still consistant with the
* test expectation */
@@ -10855,17 +10861,21 @@
[] as_handover(hs);
}

+ /* Expect the BSC to inform the MSC about the handover. The Cell Identifier
+ * must report the *target* BTS (BTS 1: MCC=001 MNC=01 LAC=1 CI=1). */
+ alt {
+ [] RAN_CONN.receive(tr_BSSMAP_HandoverPerformed(tr_CellId_CGI('00F110'O, 1, 1)));
+ [] RAN_CONN.receive(tr_BSSMAP_HandoverPerformed) {
+ setverdict(fail, "BSSMAP HandoverPerformed indicates unexpected Cell ID");
+ }
+ }
+
var PDU_BSSAP_LE rx_bsslap;

- interleave {
- /* Expect the BSC to inform the MSC about the handover */
- [] RAN_CONN.receive(tr_BSSMAP_HandoverPerformed);
-
/* Expect the BSC to inform the SMLC about the handover */
- [] BSSAP_LE.receive(tr_BSSMAP_LE_ConnInfo(BSSMAP_LE_PROT_BSSLAP, ?)) -> value(rx_bsslap) {
+ BSSAP_LE.receive(tr_BSSMAP_LE_ConnInfo(BSSMAP_LE_PROT_BSSLAP, ?)) -> value(rx_bsslap) {
f_match_bsslap(rx_bsslap, tr_BSSLAP_Reset(BSSLAP_CAUSE_INTRA_BSS_HO));
}
- }

/* SMLC now responds with geo information data. */
BSSAP_LE.send(ts_BSSMAP_LE_PerfLocResp(gad_ell_point_unc_circle, omit));
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 563d6d1..deeabda 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -1331,14 +1331,15 @@
}
}

-template PDU_BSSAP tr_BSSMAP_HandoverPerformed
+template PDU_BSSAP
+tr_BSSMAP_HandoverPerformed(template (present) BSSMAP_IE_CellIdentifier cell_id := ?)
modifies tr_BSSAP_BSSMAP := {
pdu := {
bssmap := {
handoverPerformed := {
messageType := '17'O,
cause := ?,
- cellIdentifier := ?,
+ cellIdentifier := cell_id,
chosenChannel := *,
chosenEncryptionAlgorithm := *,
speechVersion := *,

To view, visit change 42582. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I82aadcc3a80c183cb93522b829071294b156a218
Gerrit-Change-Number: 42582
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>