<p>Harald Welte has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/14083">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">rsl: Send RSL Error Report in case of unknown/unsupported msg_type<br><br>Send an RSL Error Report in case of unknown/unsupported msg_type,<br>as describedi in section 7.3 of 3GPP TS 48.058.<br><br>Related: OS#3789<br>Change-Id: Ib2918007410e635b144a7535cec30b9f3378c755<br>---<br>M src/common/rsl.c<br>1 file changed, 14 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/83/14083/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/common/rsl.c b/src/common/rsl.c</span><br><span>index c2a7db6..1be6e52 100644</span><br><span>--- a/src/common/rsl.c</span><br><span>+++ b/src/common/rsl.c</span><br><span>@@ -2523,7 +2523,9 @@</span><br><span> static int rsl_rx_rll(struct gsm_bts_trx *trx, struct msgb *msg)</span><br><span> {</span><br><span>        struct abis_rsl_rll_hdr *rh = msgb_l2(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+   struct abis_rsl_rll_hdr rh2;</span><br><span>         struct gsm_lchan *lchan;</span><br><span style="color: hsl(120, 100%, 40%);">+      int rc;</span><br><span> </span><br><span>  if (msgb_l2len(msg) < sizeof(*rh)) {</span><br><span>              LOGP(DRSL, LOGL_NOTICE, "RSL Radio Link Layer message too short\n");</span><br><span>@@ -2546,9 +2548,14 @@</span><br><span>      DEBUGP(DRLL, "%s Rx RLL %s Abis -> LAPDm\n", gsm_lchan_name(lchan),</span><br><span>             rsl_msg_name(rh->c.msg_type));</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* make copy of RLL header, as the message will be free'd in case of erroneous return */</span><br><span style="color: hsl(120, 100%, 40%);">+  rh2 = *rh;</span><br><span>   /* exception: RLL messages are _NOT_ freed as they are now</span><br><span>    * owned by LAPDm which might have queued them */</span><br><span style="color: hsl(0, 100%, 40%);">-       return lapdm_rslms_recvmsg(msg, &lchan->lapdm_ch);</span><br><span style="color: hsl(120, 100%, 40%);">+     rc = lapdm_rslms_recvmsg(msg, &lchan->lapdm_ch);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &rh2.chan_nr, &rh2.link_id, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ return rc;</span><br><span> }</span><br><span> </span><br><span> static inline int rsl_link_id_is_sacch(uint8_t link_id)</span><br><span>@@ -2823,10 +2830,12 @@</span><br><span>     case RSL_MT_NOT_CMD:</span><br><span>                 LOGP(DRSL, LOGL_NOTICE, "unimplemented RSL cchan msg_type %s\n",</span><br><span>                   rsl_msg_name(cch->c.msg_type));</span><br><span style="color: hsl(120, 100%, 40%);">+            rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &cch->chan_nr, NULL, msg);</span><br><span>                 break;</span><br><span>       default:</span><br><span>             LOGP(DRSL, LOGL_NOTICE, "undefined RSL cchan msg_type 0x%02x\n",</span><br><span>                   cch->c.msg_type);</span><br><span style="color: hsl(120, 100%, 40%);">+          rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &cch->chan_nr, NULL, msg);</span><br><span>                 ret = -EINVAL;</span><br><span>               break;</span><br><span>       }</span><br><span>@@ -2898,10 +2907,12 @@</span><br><span>  case RSL_MT_TFO_MOD_REQ:</span><br><span>             LOGP(DRSL, LOGL_NOTICE, "unimplemented RSL dchan msg_type %s\n",</span><br><span>                   rsl_msg_name(dch->c.msg_type));</span><br><span style="color: hsl(120, 100%, 40%);">+            rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, msg);</span><br><span>                 break;</span><br><span>       default:</span><br><span>             LOGP(DRSL, LOGL_NOTICE, "undefined RSL dchan msg_type 0x%02x\n",</span><br><span>                   dch->c.msg_type);</span><br><span style="color: hsl(120, 100%, 40%);">+          rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, msg);</span><br><span>                 ret = -EINVAL;</span><br><span>       }</span><br><span> </span><br><span>@@ -2931,6 +2942,7 @@</span><br><span>        default:</span><br><span>             LOGP(DRSL, LOGL_NOTICE, "undefined RSL TRX msg_type 0x%02x\n",</span><br><span>                     th->msg_type);</span><br><span style="color: hsl(120, 100%, 40%);">+             rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, NULL, NULL, msg);</span><br><span>                 ret = -EINVAL;</span><br><span>       }</span><br><span> </span><br><span>@@ -2977,6 +2989,7 @@</span><br><span>        default:</span><br><span>             LOGP(DRSL, LOGL_NOTICE, "unsupported RSL ip.access msg_type 0x%02x\n",</span><br><span>                     dch->c.msg_type);</span><br><span style="color: hsl(120, 100%, 40%);">+          rsl_tx_error_report(trx, RSL_ERR_MSG_TYPE, &dch->chan_nr, NULL, msg);</span><br><span>                 ret = -EINVAL;</span><br><span>       }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14083">change 14083</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/14083"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ib2918007410e635b144a7535cec30b9f3378c755 </div>
<div style="display:none"> Gerrit-Change-Number: 14083 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Harald Welte <laforge@gnumonks.org> </div>