This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-sgsn/+/21476 )
Change subject: gbproxy: Send BVC-BLOCK for PTP BVC to SGSN when BSS resets BVCI=0
......................................................................
gbproxy: Send BVC-BLOCK for PTP BVC to SGSN when BSS resets BVCI=0
We cannot pass the RESET of BVCI=0 on to the SGSN, as this would affect
all other NSE/BSS, too. Instead, we block the corresponding PTP BVC.
The BSS is expected to trigger a RESET of the PTP BVC shortly after
completing the BVCI=0 RESET, which will then also unblock those PTP BVC
again.
Change-Id: I48f1c148bc5c7c9a49b789dac78f76c2aa7baff8
---
M src/gbproxy/gb_proxy.c
M src/gbproxy/gb_proxy_peer.c
2 files changed, 24 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/76/21476/1
diff --git a/src/gbproxy/gb_proxy.c b/src/gbproxy/gb_proxy.c
index d8b828c..2c63614 100644
--- a/src/gbproxy/gb_proxy.c
+++ b/src/gbproxy/gb_proxy.c
@@ -1015,13 +1015,18 @@
{
struct gbproxy_peer *from_peer = NULL;
uint16_t bvci;
+ uint8_t cause;
- if (!TLVP_PRESENT(tp, BSSGP_IE_BVCI))
+ if (!TLVP_PRESENT(tp, BSSGP_IE_BVCI) || !TLVP_PRESENT(tp, BSSGP_IE_CAUSE))
return 0;
bvci = ntohs(tlvp_val16_unal(tp, BSSGP_IE_BVCI));
- LOGP(DGPRS, LOGL_INFO, "NSE(%05u) Rx BVC RESET (BVCI=%05u)\n", nsei, bvci);
+ cause = *TLVP_VAL(tp, BSSGP_IE_CAUSE);
+ LOGP(DGPRS, LOGL_INFO, "NSE(%05u) Rx BVC RESET (BVCI=%05u, cause=%s)\n", nsei, bvci,
+ bssgp_cause_str(cause));
+
if (bvci == 0) {
+ struct gbproxy_peer *peer;
/* If we receive a BVC reset on the signalling endpoint, we
* don't want the SGSN to reset, as the signalling endpoint
* is common for all point-to-point BVCs (and thus all BTS) */
@@ -1034,6 +1039,19 @@
return 0;
}
+ /* BLOCK all the unblocked PTP BVC of this BSS-side NSE towards the SGSN */
+ llist_for_each_entry(peer, &nse->bts_peers, list) {
+ struct bssgp_bvc_ctx bctx = {
+ .nsei = cfg->nsip_sgsn_nsei,
+ .bvci = peer->bvci,
+ };
+
+ if (peer->blocked)
+ continue;
+
+ bssgp_tx_bvc_block(&bctx, cause);
+ }
+
gbproxy_cleanup_peers(cfg, nsei, 0);
/* FIXME: only do this if SGSN is alive! */
diff --git a/src/gbproxy/gb_proxy_peer.c b/src/gbproxy/gb_proxy_peer.c
index 62c4d94..c95a572 100644
--- a/src/gbproxy/gb_proxy_peer.c
+++ b/src/gbproxy/gb_proxy_peer.c
@@ -260,6 +260,10 @@
peer->nse = nse;
}
+/*! remove peers (BVCs) withon NSE specified by NSEI.
+ * \param[in] cfg proxy in which we operate
+ * \param[in] nsei NS entity in which we should clean up
+ * \param[in] bvci if 0: remove all BVCs; if != 0: BVCI of the single BVC to clean up */
int gbproxy_cleanup_peers(struct gbproxy_config *cfg, uint16_t nsei, uint16_t bvci)
{
int counter = 0;
--
To view, visit https://gerrit.osmocom.org/c/osmo-sgsn/+/21476
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I48f1c148bc5c7c9a49b789dac78f76c2aa7baff8
Gerrit-Change-Number: 21476
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201202/67cd89f2/attachment.htm>