<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/21615">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
daniel: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
</div><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(+), 17 deletions(-)<br><br></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..4f8c0e6 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,29 +907,25 @@</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> if (rc < 0) {</span><br><span> rc = tx_status_from_tlvp(rc, msg);</span><br><span style="color: hsl(0, 100%, 40%);">- msgb_free(msg);</span><br><span> rate_ctr_inc(&cfg->ctrg->ctr[GBPROX_GLOB_CTR_PROTO_ERR_SGSN]);</span><br><span> return rc;</span><br><span> }</span><br><span>@@ -1017,24 +1012,21 @@</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 style="color: hsl(0, 100%, 40%);">- 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: 5 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>