bts: Store the bcch_change_mark in the bts structure

Store the BCCH change mark inside the BTS structure. This will
allow us increment the number and re-generate the SIs.

Related: SYS#739
diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h
index 0704bd7..0c14232 100644
--- a/openbsc/include/openbsc/gsm_data_shared.h
+++ b/openbsc/include/openbsc/gsm_data_shared.h
@@ -686,8 +686,9 @@
 	int num_trx;
 	struct llist_head trx_list;
 
-	/* SI compatibility hacks */
+	/* SI related items */
 	int force_combined_si;
+	int bcch_change_mark;
 
 #ifdef ROLE_BSC
 	/* Abis NM queue */
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index a3deefc..97827f2 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -792,6 +792,9 @@
 	si13_default.no_pbcch.rac = bts->gprs.rac;
 	si13_default.no_pbcch.net_ctrl_ord = bts->gprs.net_ctrl_ord;
 
+	/* Information about the other SIs */
+	si13_default.bcch_change_mark = bts->bcch_change_mark;
+
 	ret = rest_octets_si13(si13->rest_octets, &si13_default);
 	if (ret < 0)
 		return ret;
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c
index 8d5d0f8..8687a10 100644
--- a/openbsc/src/libcommon/gsm_data_shared.c
+++ b/openbsc/src/libcommon/gsm_data_shared.c
@@ -276,6 +276,9 @@
 	bts->rach_ldavg_slots = -1;
 	bts->paging.free_chans_need = -1;
 
+	/* si handling */
+	bts->bcch_change_mark = 1;
+
 	return bts;
 }