respect the link_id, not only the SAPI from SMS code
SMS related messages are all sent over SAPI=3. But in addition
to that, we also need to send it over the correct link identifier,
i.e. SACCH or main signalling channel
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index d54f2fd..8cec2b6 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -923,7 +923,7 @@
if (TLVP_PRESENT(&tp, RSL_IE_L3_INFO)) {
DEBUGPC(DMEAS, "L3\n");
msg->l3h = TLVP_VAL(&tp, RSL_IE_L3_INFO);
- return gsm0408_rcvmsg(msg);
+ return gsm0408_rcvmsg(msg, 0);
} else
DEBUGPC(DMEAS, "\n");
@@ -1206,10 +1206,12 @@
struct abis_rsl_rll_hdr *rllh = msgb_l2(msg);
int rc = 0;
char *ts_name;
+ u_int8_t sapi = rllh->link_id & 7;
msg->lchan = lchan_lookup(msg->trx, rllh->chan_nr);
ts_name = gsm_ts_name(msg->lchan->ts);
- DEBUGP(DRLL, "channel=%s chan_nr=0x%02x ", ts_name, rllh->chan_nr);
+ DEBUGP(DRLL, "channel=%s chan_nr=0x%02x sapi=%u ", ts_name,
+ rllh->chan_nr, sapi);
switch (rllh->c.msg_type) {
case RSL_MT_DATA_IND:
@@ -1218,7 +1220,7 @@
sizeof(struct abis_rsl_common_hdr) + sizeof(*rllh) &&
rllh->data[0] == RSL_IE_L3_INFO) {
msg->l3h = &rllh->data[3];
- return gsm0408_rcvmsg(msg);
+ return gsm0408_rcvmsg(msg, rllh->link_id);
}
break;
case RSL_MT_EST_IND:
@@ -1229,7 +1231,7 @@
sizeof(struct abis_rsl_common_hdr) + sizeof(*rllh) &&
rllh->data[0] == RSL_IE_L3_INFO) {
msg->l3h = &rllh->data[3];
- return gsm0408_rcvmsg(msg);
+ return gsm0408_rcvmsg(msg, rllh->link_id);
}
break;
case RSL_MT_EST_CONF: