rsl: Add osmocom-specific extensions to RSL channel numbers for CBCH

We don't really *need* it in libosmocore as such, but the lack of
having all osmocom extensions listed here lead to using overlapping
definitions: 0x18 was used for dynamic PDCH on the Abis side, but also
for CBCH on the L1SAP side.  Let's list them all here to increase
visibility in case anyone wants to extend this further...

Related: OS#4027
Change-Id: I93e557358cf1c1b622f77f906959df7ca6d5cb12
diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h
index 3ea4e63..1d4530d 100644
--- a/include/osmocom/gsm/protocol/gsm_08_58.h
+++ b/include/osmocom/gsm/protocol/gsm_08_58.h
@@ -50,6 +50,8 @@
 #define ABIS_RSL_CHAN_NR_CBITS_RACH		0x11
 #define ABIS_RSL_CHAN_NR_CBITS_PCH_AGCH	0x12
 #define ABIS_RSL_CHAN_NR_CBITS_OSMO_PDCH	0x18 /*< non-standard, for dyn TS */
+#define ABIS_RSL_CHAN_NR_CBITS_OSMO_CBCH4	0x19 /*< non-standard, for CBCH/SDCCH4 */
+#define ABIS_RSL_CHAN_NR_CBITS_OSMO_CBCH8	0x1a /*< non-standard, for CBCH/SDCCH8 */
 
 /* Link Identifier 9.3.2 */
 union abis_rsl_link_id {
@@ -424,6 +426,8 @@
 #define RSL_CHAN_RACH		0x88
 #define RSL_CHAN_PCH_AGCH	0x90
 #define RSL_CHAN_OSMO_PDCH	0xc0	/*< non-standard, for dyn TS */
+#define RSL_CHAN_OSMO_CBCH4	0xc8	/*< non-standard, for CBCH/SDCCH4 */
+#define RSL_CHAN_OSMO_CBCH8	0xd0	/*< non-standard, for CBCH/SDCCH8 */
 
 /* Chapter 9.3.3 */
 #define RSL_ACT_TYPE_INITIAL	0x00
diff --git a/src/gsm/rsl.c b/src/gsm/rsl.c
index 1777479..0409734 100644
--- a/src/gsm/rsl.c
+++ b/src/gsm/rsl.c
@@ -209,6 +209,12 @@
 	} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_PDCH) {
 		*type = RSL_CHAN_OSMO_PDCH;
 		*subch = 0;
+	} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH4) {
+		*type = RSL_CHAN_OSMO_CBCH4;
+		*subch = 0;
+	} else if ((chan_nr & 0xf8) == RSL_CHAN_OSMO_CBCH8) {
+		*type = RSL_CHAN_OSMO_CBCH8;
+		*subch = 0;
 	} else
 		return -EINVAL;
 
@@ -242,6 +248,10 @@
 		snprintf(buf, buf_len, "PCH/AGCH on TS%d", ts);
 	else if (cbits == 0x18)
 		snprintf(buf, buf_len, "PDCH on TS%d", ts);
+	else if (cbits == 0x19)
+		snprintf(buf, buf_len, "CBCH(SDCCH/4) on TS%d", ts);
+	else if (cbits == 0x1a)
+		snprintf(buf, buf_len, "CBCH(SDCCH/8) on TS%d", ts);
 	else
 		snprintf(buf, buf_len, "UNKNOWN on TS%d", ts);