bsc_cbsp: Support receiving CGI as cellID in CBSP Reset and Failure Ind

New versions of osmo-bsc send CGI instead of LAC+CI, which provides more
information (PLMN).

Related: SYS#5910
Change-Id: I48e86150f499f0f458f75f132087319d80f86448
diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn
index 1373002..4c34272 100644
--- a/bsc/BSC_Tests_CBSP.ttcn
+++ b/bsc/BSC_Tests_CBSP.ttcn
@@ -547,6 +547,8 @@
  * unlocked again. */
 testcase TC_cbsp_cell_rflock_failure_restart() runs on cbsp_test_CT {
 	var template CBSP_PDU rx;
+	var template (present) CBSP_FailureListItem fli_exp;
+	var template (present) BSSMAP_FIELD_CellIdentificationList cil_exp;
 
 	g_pars := valueof(ts_CBSP_Pars_default(false, 0, 0));
 	f_init();
@@ -554,9 +556,12 @@
 	/* Lock the TRX, CBCH should become unavailable and BSC send FAILURE */
 	f_ctrl_set(IPA_CTRL, "bts.0.trx.0.rf_locked", "1");
 
-	rx := tr_CBSP_FAILURE({CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
-							   CBSP_CAUSE_CB_NOT_OPERATIONAL)},
-			      CBSP_BC_MSGT_CBS);
+	/* Expect receiving either CGI or LAC+CI: */
+	fli_exp := (CBSP_FailureListItem_CGI(bssmap_cgi(mp_cgi_bts0),
+					     CBSP_CAUSE_CB_NOT_OPERATIONAL),
+		    CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
+						CBSP_CAUSE_CB_NOT_OPERATIONAL));
+	rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
@@ -569,8 +574,10 @@
 
 	/* Unlock the TRX, CBCH should become available and BSC send RESTART */
 	f_ctrl_set(IPA_CTRL, "bts.0.trx.0.rf_locked", "0");
-	rx :=  tr_CBSP_RESTART(ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)}),
-		               CBSP_BC_MSGT_CBS, ?);
+	/* Expect receiving either CGI or LAC+CI: */
+	cil_exp := (ts_BSSMAP_CIL_CGI({bssmap_cgi(mp_cgi_bts0)}),
+		    ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)}));
+	rx :=  tr_CBSP_RESTART(cil_exp, CBSP_BC_MSGT_CBS, ?);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
@@ -587,6 +594,7 @@
 /* Test if a LAC_CI FAILURE Ind is sent when conn of TRX holding the CBCH goes down. */
 testcase TC_cbsp_cell_rsl_down_failure() runs on cbsp_test_CT {
 	var template CBSP_PDU rx;
+	var template (present) CBSP_FailureListItem fli_exp;
 
 	g_pars := valueof(ts_CBSP_Pars_default(false, 0, 0));
 	f_init();
@@ -594,9 +602,12 @@
 	/* Drop RSL link of the TRX holding the CBCH: */
 	f_ipa_rsl_stop(bts[0][0].rsl);
 
-	rx := tr_CBSP_FAILURE({CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
-							   CBSP_CAUSE_CB_NOT_OPERATIONAL)},
-			      CBSP_BC_MSGT_CBS);
+	/* Expect receiving either CGI or LAC+CI: */
+	fli_exp := (CBSP_FailureListItem_CGI(bssmap_cgi(mp_cgi_bts0),
+					     CBSP_CAUSE_CB_NOT_OPERATIONAL),
+		    CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
+						CBSP_CAUSE_CB_NOT_OPERATIONAL));
+	rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
diff --git a/library/CBSP_Templates.ttcn b/library/CBSP_Templates.ttcn
index 2d70256..6ff2742 100644
--- a/library/CBSP_Templates.ttcn
+++ b/library/CBSP_Templates.ttcn
@@ -134,6 +134,18 @@
 						list := items
 				}});
 
+template (present) CBSP_FailureListItem CBSP_FailureListItem_CGI(
+				template (present) BSSMAP_FIELD_CellIdentification_CGI cgi := ?,
+				template (present) CBSP_Cause cause := ?) :=
+{
+	spare1_4 := '0000'B,
+	cell_id_discr := '0000'B,
+	cell_id := {
+		cI_CGI := cgi
+	},
+	cause := cause
+};
+
 template (present) CBSP_FailureListItem CBSP_FailureListItem_LAC_CI(
 				template (present) BSSMAP_FIELD_CellIdentification_LAC_CI lac_ci := ?,
 				template (present) CBSP_Cause cause := ?) :=