aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/abis_rsl.c
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2018-02-06 17:31:50 +0100
committerPhilipp Maier <pmaier@sysmocom.de>2018-02-06 19:39:57 +0100
commitcc48efe40062d5730af5f820fc33ee0a3dcf6f1a (patch)
tree02de352c3384c0eca8ebe562e70408083c09ab5b /src/libbsc/abis_rsl.c
parent81dc9e74558ac9c62ce9a17c415963cdcaf1ecec (diff)
abis_rsl: permit first EstablishInd only on SAPI=0
When the first EstablishInd (DCCH) is made by the MS, then it must by definition happen on SAPI=0. The MS may establish multiple connection on other SAPIs afterwards. At the moment osmo-bsc does not check the SAPI when an EstablishInd message is received. - For SAPIs other than 0, check if SAPI=0 has already been established See also TTCN3 testcases: BSC_Tests.TC_rll_est_ind_inval_sapi1 BSC_Tests.TC_rll_est_ind_inval_sapi3 Change-Id: Ibf4fca0bd42dfe5bc63e8b08754ebbe0a5e252c3 Closes: OS#2750
Diffstat (limited to 'src/libbsc/abis_rsl.c')
-rw-r--r--src/libbsc/abis_rsl.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c
index 3f8bbc904..189316631 100644
--- a/src/libbsc/abis_rsl.c
+++ b/src/libbsc/abis_rsl.c
@@ -2180,6 +2180,20 @@ static int abis_rsl_rx_rll(struct msgb *msg)
case RSL_MT_EST_IND:
DEBUGPC(DRLL, "ESTABLISH INDICATION\n");
/* lchan is established, stop T3101 */
+
+ /* Note: By definition the first Establish Indication must
+ * happen first on SAPI 0, once the connection on SAPI 0 is
+ * made, parallel connections on other SAPIs are permitted */
+ if (sapi != 0 && msg->lchan->sapis[0] != LCHAN_SAPI_MS) {
+ LOGP(DRLL, LOGL_NOTICE, "MS attempted to establish DCCH on SAPI=%d (expected SAPI=0)\n",
+ rllh->link_id & 0x7);
+
+ /* Note: We do not need to close the channel,
+ * since we might still get a proper Establish Ind.
+ * If not, T3101 will close the channel on timeout. */
+ break;
+ }
+
msg->lchan->sapis[rllh->link_id & 0x7] = LCHAN_SAPI_MS;
osmo_timer_del(&msg->lchan->T3101);
if (msgb_l2len(msg) >