<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/21410">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  pespin: 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: Ensure BVC0 is reset before handling PtP BVCs<br><br>Change-Id: I9c67f973f7bca00e8eb22a024ef2282c007dd84b<br>Related: SYS#5226<br>---<br>M src/gbproxy/gb_proxy.c<br>M tests/gbproxy/gbproxy_test.c<br>M tests/gbproxy/gbproxy_test.ok<br>3 files changed, 125 insertions(+), 6 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 736bd7a..1ca4fc6 100644</span><br><span>--- a/src/gbproxy/gb_proxy.c</span><br><span>+++ b/src/gbproxy/gb_proxy.c</span><br><span>@@ -1058,6 +1058,14 @@</span><br><span>                         LOGP(DGPRS, LOGL_INFO, "NSEI=%u Rx BVC RESET (BVCI=%u)\n",</span><br><span>                                 nsei, bvci);</span><br><span>                         if (bvci == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              struct gbproxy_nse *nse;</span><br><span style="color: hsl(120, 100%, 40%);">+                              /* Ensure the NSE peer is there and clear all PtP BVCs */</span><br><span style="color: hsl(120, 100%, 40%);">+                             nse = gbproxy_nse_by_nsei_or_new(cfg, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+                          if (!nse)</span><br><span style="color: hsl(120, 100%, 40%);">+                                     LOGP(DGPRS, LOGL_ERROR, "Could not allocate NSE for NSEI=%u\n", nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                            gbproxy_cleanup_peers(cfg, nsei, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>                               /* FIXME: only do this if SGSN is alive! */</span><br><span>                          LOGP(DGPRS, LOGL_INFO, "NSEI=%u Tx fake "</span><br><span>                                  "BVC RESET ACK of BVCI=0\n", nsei);</span><br><span>@@ -1066,10 +1074,11 @@</span><br><span>                      }</span><br><span>                    from_peer = gbproxy_peer_by_bvci(cfg, bvci);</span><br><span>                         if (!from_peer) {</span><br><span style="color: hsl(0, 100%, 40%);">-                               struct gbproxy_nse *nse = gbproxy_nse_by_nsei_or_new(cfg, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+                              struct gbproxy_nse *nse = gbproxy_nse_by_nsei(cfg, nsei);</span><br><span>                            if (!nse) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                     LOGP(DGPRS, LOGL_ERROR, "Could not allocate NSE for NSEI=%u\n", nsei);</span><br><span style="color: hsl(0, 100%, 40%);">-                                        return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                                      LOGP(DGPRS, LOGL_NOTICE, "Got PtP BVC reset before signalling reset for "</span><br><span style="color: hsl(120, 100%, 40%);">+                                           "BVCI=%u NSEI=%u\n", bvci, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+                                   return bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_STATE, NULL, msg);</span><br><span>                             }</span><br><span>                            /* if a PTP-BVC is reset, and we don't know that</span><br><span>                                  * PTP-BVCI yet, we should allocate a new peer */</span><br><span>@@ -1081,10 +1090,11 @@</span><br><span>                  /* Could have moved to a different NSE */</span><br><span>                    if (!check_peer_nsei(from_peer, nsei)) {</span><br><span>                             struct gbproxy_nse *nse_old = from_peer->nse;</span><br><span style="color: hsl(0, 100%, 40%);">-                                struct gbproxy_nse *nse_new = gbproxy_nse_by_nsei_or_new(cfg, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+                          struct gbproxy_nse *nse_new = gbproxy_nse_by_nsei(cfg, nsei);</span><br><span>                                if (!nse_new) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                 LOGP(DGPRS, LOGL_ERROR, "Could not allocate NSE for NSEI=%u\n", nsei);</span><br><span style="color: hsl(0, 100%, 40%);">-                                        return bssgp_tx_status(BSSGP_CAUSE_PROTO_ERR_UNSPEC, NULL, msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                                      LOGP(DGPRS, LOGL_NOTICE, "Got PtP BVC reset before signalling reset for "</span><br><span style="color: hsl(120, 100%, 40%);">+                                           "BVCI=%u NSEI=%u\n", bvci, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+                                   return bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_STATE, NULL, msg);</span><br><span>                             }</span><br><span>                            LOGP(DGPRS, LOGL_NOTICE, "Peer for BVCI=%u moved from NSEI=%u to NSEI=%u\n", bvci, nse_old->nsei, nsei);</span><br><span> </span><br><span>diff --git a/tests/gbproxy/gbproxy_test.c b/tests/gbproxy/gbproxy_test.c</span><br><span>index 06734b4..fec5914 100644</span><br><span>--- a/tests/gbproxy/gbproxy_test.c</span><br><span>+++ b/tests/gbproxy/gbproxy_test.c</span><br><span>@@ -930,6 +930,7 @@</span><br><span>                "NSEI 0x%04x(%d)\n\n",</span><br><span>             nsei, nsei);</span><br><span>  send_ns_avail(nsi, nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+     send_bssgp_reset(nsi, nsei, 0);</span><br><span> }</span><br><span> </span><br><span> static void setup_bssgp(struct gprs_ns2_inst *nsi,</span><br><span>diff --git a/tests/gbproxy/gbproxy_test.ok b/tests/gbproxy/gbproxy_test.ok</span><br><span>index 14a2641..fbd5366 100644</span><br><span>--- a/tests/gbproxy/gbproxy_test.ok</span><br><span>+++ b/tests/gbproxy/gbproxy_test.ok</span><br><span>@@ -13,6 +13,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -48,6 +57,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 8192</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=8192 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x2002(8194)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 8192</span><br><span>@@ -366,6 +384,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> --- Setup BVCI 1 ---</span><br><span> </span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span>@@ -488,6 +515,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 8192</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=8192 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> --- Setup BVCI 1 ---</span><br><span> </span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span>@@ -679,6 +715,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -1057,6 +1102,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -1342,6 +1396,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -1991,6 +2054,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -2250,6 +2322,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -2966,6 +3047,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x0000(0)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -4108,6 +4198,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span>@@ -5716,6 +5815,15 @@</span><br><span> </span><br><span> NS2 CALLBACK, prim 2, bvci 0x0000</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+PROCESSING BVC_RESET from NSEI 4096</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NS2 CALLBACK, prim 0, msg length 18, bvci 0x0000</span><br><span style="color: hsl(120, 100%, 40%);">+22 04 82 00 00 07 81 08 08 88 11 22 33 40 50 60 10 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Message for BSS (NSEI=4096 BVCI=0):</span><br><span style="color: hsl(120, 100%, 40%);">+23 04 82 00 00 </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> Setup BSSGP: BVCI 0x1002(4098)</span><br><span> </span><br><span> PROCESSING BVC_RESET from NSEI 4096</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/21410">change 21410</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/+/21410"/><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: I9c67f973f7bca00e8eb22a024ef2282c007dd84b </div>
<div style="display:none"> Gerrit-Change-Number: 21410 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>