diff options
author | Harald Welte <laforge@osmocom.org> | 2020-12-02 20:06:04 +0100 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2020-12-02 22:45:42 +0100 |
commit | c8d98ac8f994f4cd8bdc8db4086d308eb00c4377 (patch) | |
tree | 118582e1aaf44f66076e588e4b374fadff4981c9 /src | |
parent | 6626bbc2151fc57ffb7c203a6d0ac8ee07036ca7 (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
Diffstat (limited to 'src')
-rw-r--r-- | src/gbproxy/gb_proxy.c | 13 |
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, |