Harald Welte has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/14083 )

Change subject: rsl: Send RSL Error Report in case of unknown/unsupported 
msg_type
......................................................................

rsl: Send RSL Error Report in case of unknown/unsupported msg_type

Send an RSL Error Report in case of unknown/unsupported msg_type,
as describedi in section 7.3 of 3GPP TS 48.058.

Related: OS#3750
Change-Id: Ib2918007410e635b144a7535cec30b9f3378c755
---
M src/common/rsl.c
1 file changed, 14 insertions(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/common/rsl.c b/src/common/rsl.c
index c2a7db6..1be6e52 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -2523,7 +2523,9 @@
 static int rsl_rx_rll(struct gsm_bts_trx *trx, struct msgb *msg)
 {
        struct abis_rsl_rll_hdr *rh = msgb_l2(msg);
+       struct abis_rsl_rll_hdr rh2;
        struct gsm_lchan *lchan;
+       int rc;

        if (msgb_l2len(msg) < sizeof(*rh)) {
                LOGP(DRSL, LOGL_NOTICE, "RSL Radio Link Layer message too 
short\n");
@@ -2546,9 +2548,14 @@
        DEBUGP(DRLL, "%s Rx RLL %s Abis -> LAPDm\n", gsm_lchan_name(lchan),
                rsl_msg_name(rh->c.msg_type));

+       /* make copy of RLL header, as the message will be free'd in case of 
erroneous return */
+       rh2 = *rh;
        /* exception: RLL messages are _NOT_ freed as they are now
         * owned by LAPDm which might have queued them */
-       return lapdm_rslms_recvmsg(msg, &lchan->lapdm_ch);
+       rc = lapdm_rslms_recvmsg(msg, &lchan->lapdm_ch);
+       if (rc < 0)
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &rh2.chan_nr, 
&rh2.link_id, NULL);
+       return rc;
 }

 static inline int rsl_link_id_is_sacch(uint8_t link_id)
@@ -2823,10 +2830,12 @@
        case RSL_MT_NOT_CMD:
                LOGP(DRSL, LOGL_NOTICE, "unimplemented RSL cchan msg_type %s\n",
                        rsl_msg_name(cch->c.msg_type));
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &cch->chan_nr, NULL, 
msg);
                break;
        default:
                LOGP(DRSL, LOGL_NOTICE, "undefined RSL cchan msg_type 0x%02x\n",
                        cch->c.msg_type);
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &cch->chan_nr, NULL, 
msg);
                ret = -EINVAL;
                break;
        }
@@ -2898,10 +2907,12 @@
        case RSL_MT_TFO_MOD_REQ:
                LOGP(DRSL, LOGL_NOTICE, "unimplemented RSL dchan msg_type %s\n",
                        rsl_msg_name(dch->c.msg_type));
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, 
msg);
                break;
        default:
                LOGP(DRSL, LOGL_NOTICE, "undefined RSL dchan msg_type 0x%02x\n",
                        dch->c.msg_type);
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, 
msg);
                ret = -EINVAL;
        }

@@ -2931,6 +2942,7 @@
        default:
                LOGP(DRSL, LOGL_NOTICE, "undefined RSL TRX msg_type 0x%02x\n",
                        th->msg_type);
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, NULL, NULL, msg);
                ret = -EINVAL;
        }

@@ -2977,6 +2989,7 @@
        default:
                LOGP(DRSL, LOGL_NOTICE, "unsupported RSL ip.access msg_type 
0x%02x\n",
                        dch->c.msg_type);
+               rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, 
msg);
                ret = -EINVAL;
        }


--
To view, visit https://gerrit.osmocom.org/14083
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib2918007410e635b144a7535cec30b9f3378c755
Gerrit-Change-Number: 14083
Gerrit-PatchSet: 3
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Vadim Yanitskiy <axilira...@gmail.com>

Reply via email to