aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2020-12-02 20:06:04 +0100
committerHarald Welte <laforge@osmocom.org>2020-12-02 22:45:42 +0100
commitc8d98ac8f994f4cd8bdc8db4086d308eb00c4377 (patch)
tree118582e1aaf44f66076e588e4b374fadff4981c9
parent6626bbc2151fc57ffb7c203a6d0ac8ee07036ca7 (diff)
gb_proxy: Broadcast SGSN-INVOKE-TRACE and OVERLOAD
Both BSSGP messages appear from the SGSN in downlink on BVCI=0. We must send a copy of this message to each of the BSS side NSEs. Change-Id: Ia19791b143989eb1490f461d88b9edbd8e3b82be Closes: OS#4875
-rw-r--r--src/gbproxy/gb_proxy.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/gbproxy/gb_proxy.c b/src/gbproxy/gb_proxy.c
index 0d79ff7eb..c5abeb9e7 100644
--- a/src/gbproxy/gb_proxy.c
+++ b/src/gbproxy/gb_proxy.c
@@ -1290,6 +1290,7 @@ static int gbprox_rx_sig_from_sgsn(struct gbproxy_config *cfg,
struct tlv_parsed tp;
uint8_t pdu_type = bgph->pdu_type;
int data_len;
+ struct gbproxy_nse *nse;
struct gbproxy_peer *peer;
uint16_t bvci;
struct msgb *msg;
@@ -1401,11 +1402,13 @@ static int gbprox_rx_sig_from_sgsn(struct gbproxy_config *cfg,
rc = gbprox_relay2bvci(cfg, msg, bvci, ns_bvci);
break;
case BSSGP_PDUT_SGSN_INVOKE_TRACE:
- LOGP(DGPRS, LOGL_ERROR,
- "NSE(%05u/SGSN) BSSGP INVOKE TRACE not supported\n", nsei);
- rate_ctr_inc(&cfg->ctrg->
- ctr[GBPROX_GLOB_CTR_NOT_SUPPORTED_SGSN]);
- rc = bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_FEAT, NULL, orig_msg);
+ case BSSGP_PDUT_OVERLOAD:
+ LOGP(DGPRS, LOGL_DEBUG,
+ "NSE(%05u/SGSN) BSSGP %s: broadcasting\n", nsei, bssgp_pdu_str(pdu_type));
+ /* broadcast to all BSS-side peers */
+ llist_for_each_entry(nse, &cfg->nse_peers, list) {
+ gbprox_relay2nse(msg, nse, 0);
+ }
break;
default:
LOGP(DGPRS, LOGL_NOTICE, "NSE(%05u/SGSN) BSSGP PDU type %s not supported\n", nsei,