<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/21615">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gbproxy: Don't create an extra msgb copy for SGSN DL SIG<br><br>That copy may have made sense while we were doing patching/buffering,<br>but we're not doing any of that anymore.<br><br>Related: OS#4472<br>Change-Id: I207a869ffac8bf60104f80f9ed58faf0021e5e95<br>---<br>M src/gbproxy/gb_proxy.c<br>1 file changed, 9 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/15/21615/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gbproxy/gb_proxy.c b/src/gbproxy/gb_proxy.c</span><br><span>index a920906..8167880 100644</span><br><span>--- a/src/gbproxy/gb_proxy.c</span><br><span>+++ b/src/gbproxy/gb_proxy.c</span><br><span>@@ -886,9 +886,9 @@</span><br><span> }</span><br><span> </span><br><span> /* Receive an incoming signalling message from the SGSN-side NS-VC */</span><br><span style="color: hsl(0, 100%, 40%);">-static int gbprox_rx_sig_from_sgsn(struct gbproxy_nse *nse, struct msgb *orig_msg, uint16_t ns_bvci)</span><br><span style="color: hsl(120, 100%, 40%);">+static int gbprox_rx_sig_from_sgsn(struct gbproxy_nse *nse, struct msgb *msg, uint16_t ns_bvci)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct bssgp_normal_hdr *bgph = (struct bssgp_normal_hdr *) msgb_bssgph(orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+    struct bssgp_normal_hdr *bgph = (struct bssgp_normal_hdr *) msgb_bssgph(msg);</span><br><span>        uint8_t pdu_type = bgph->pdu_type;</span><br><span>        const char *pdut_name = osmo_tlv_prot_msg_name(&osmo_pdef_bssgp, bgph->pdu_type);</span><br><span>     struct gbproxy_config *cfg = nse->cfg;</span><br><span>@@ -896,7 +896,6 @@</span><br><span>      struct tlv_parsed tp;</span><br><span>        int data_len;</span><br><span>        uint16_t bvci;</span><br><span style="color: hsl(0, 100%, 40%);">-  struct msgb *msg;</span><br><span>    char log_pfx[32];</span><br><span>    int rc = 0;</span><br><span>  int cause;</span><br><span>@@ -908,23 +907,20 @@</span><br><span> </span><br><span>       if (ns_bvci != 0 && ns_bvci != 1) {</span><br><span>          LOGP(DGPRS, LOGL_NOTICE, "%s BVCI=%05u is not signalling\n", log_pfx, ns_bvci);</span><br><span style="color: hsl(0, 100%, 40%);">-               return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+         return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span>     }</span><br><span> </span><br><span>        if (!(bssgp_pdu_type_flags(pdu_type) & BSSGP_PDUF_SIG)) {</span><br><span>                LOGP(DGPRS, LOGL_NOTICE, "%s %s not allowed in signalling BVC\n", log_pfx, pdut_name);</span><br><span style="color: hsl(0, 100%, 40%);">-                return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+         return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span>     }</span><br><span> </span><br><span>        if (!(bssgp_pdu_type_flags(pdu_type) & BSSGP_PDUF_DL)) {</span><br><span>                 LOGP(DGPRS, LOGL_NOTICE, "%s %s not allowed in downlink direction\n", log_pfx, pdut_name);</span><br><span style="color: hsl(0, 100%, 40%);">-            return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+         return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   msg = bssgp_msgb_copy(orig_msg, "rx_sig_from_sgsn");</span><br><span style="color: hsl(0, 100%, 40%);">-  /* Update message info */</span><br><span style="color: hsl(0, 100%, 40%);">-       bgph = (struct bssgp_normal_hdr *) msgb_bssgph(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-    data_len = msgb_bssgp_len(orig_msg) - sizeof(*bgph);</span><br><span style="color: hsl(120, 100%, 40%);">+  data_len = msgb_bssgp_len(msg) - sizeof(*bgph);</span><br><span> </span><br><span>  rc = osmo_tlv_prot_parse(&osmo_pdef_bssgp, &tp, 1, pdu_type, bgph->data, data_len, 0, 0,</span><br><span>                           DGPRS, log_pfx);</span><br><span>@@ -1017,24 +1013,22 @@</span><br><span>  case BSSGP_PDUT_RAN_INFO_ERROR:</span><br><span>      case BSSGP_PDUT_RAN_INFO_APP_ERROR:</span><br><span>          /* FIXME: route based in RIM Routing IE */</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_FEAT, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_FEAT, NULL, msg);</span><br><span>                break;</span><br><span>       default:</span><br><span>             LOGPNSE(nse, LOGL_NOTICE, "Rx %s: Not supported\n", pdut_name);</span><br><span>            rate_ctr_inc(&cfg->ctrg->ctr[GBPROX_GLOB_CTR_PROTO_ERR_SGSN]);</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+           rc = bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span>               break;</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      return rc;</span><br><span> </span><br><span> err_no_bvc:</span><br><span>        LOGPNSE(nse, LOGL_ERROR, "Rx %s: Cannot find BVC\n", pdut_name);</span><br><span>   rate_ctr_inc(&cfg->ctrg-> ctr[GBPROX_GLOB_CTR_INV_RAI]);</span><br><span>   msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return bssgp_tx_status(BSSGP_CAUSE_INV_MAND_INF, NULL, orig_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+     return bssgp_tx_status(BSSGP_CAUSE_INV_MAND_INF, NULL, msg);</span><br><span> }</span><br><span> </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/21615">change 21615</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/c/osmo-sgsn/+/21615"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I207a869ffac8bf60104f80f9ed58faf0021e5e95 </div>
<div style="display:none"> Gerrit-Change-Number: 21615 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>