Fix FH-BUG-069, 080, 081 and add ISSI whitelist over Brew (079) - #47
Open
razvanzeces wants to merge 4 commits into
Open
Fix FH-BUG-069, 080, 081 and add ISSI whitelist over Brew (079)#47razvanzeces wants to merge 4 commits into
razvanzeces wants to merge 4 commits into
Conversation
FH-BUG-069, reopened. has_listener counts both local radios and external Brew subscribers, so a busy worldwide TG (BM TG-91) with affiliates only on the backhaul kept ts2 in a setup/hangtime/release loop with zero local members listening. The earlier fix required a listener but not a local one. Network-initiated group-call admission now checks has_local_listener, read from the subscriber registry that only MM writes from real U-ATTACH/DETACH, so scan-off detach clears it and the slot frees. Local U-SETUP still uses the combined count so EchoLink-bridged TGs keep working.
FH-BUG-080. CMCE decoded the digits and handed them to the Asterisk entity as NetworkCircuitDtmf, which logged 'currently ignored' and dropped them. Send one in-dialog SIP INFO (application/dtmf-relay) per digit to the remote target, CSeq bumped and persisted so back-to-back digits and the later BYE stay ordered. CMCE only forwards tone-start digits as ASCII, so one INFO per digit with a fixed 250ms duration. Unknown/ringing dialog: dropped quietly.
FH-BUG-081. Reporter had both a µCell (driver=mucell) and an SXceiver (driver=sx) on one Pi. detect() maps both correctly; the problem is enumeration order: with no device= set, the first supported device wins (µCell), so the SXceiver is never opened and the badge shows the wrong board. Log the raw driver_key/hardware_key on every probe, WARN when more than one device is present with the fix (set device="driver=sx"), and expose the raw keys to the dashboard next to the name so a future misdetection is visible without SSH. On an unrecognised device fall back to an Unknown badge instead of mislabelling.
FH-BUG-079. Firewalled basestations can only be reached over the outbound Brew link,
so the dashboard whitelist endpoint doesn't help. A user shipped a working PoC that
patched the Rust at runtime; this is the same thing upstreamed natively.
Brew Service 0xf4 type 0x30 with {"issi_whitelist":[...]} sets the runtime override,
kicks now-disallowed radios (via MM, so they actually re-register and get rejected),
and persists to config.toml. Off by default behind [brew] feature_issi_whitelist_sync
so a remote core can't take over local access control unless the operator opts in.
Empty list follows the configured whitelist_mode instead of forcing open, and never
kicks everyone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four tracker bugs on v0.4.0. One commit each.
FH-BUG-069 (reopened) - a busy network TG pinned a timeslot with nobody local
listening.
has_listenercounts local radios AND external Brew subscribers, so BMTG-91 (affiliates only on the backhaul) kept ts2 in a setup/hangtime/release loop with
zero local members. The earlier fix required a listener but not a local one. Network
group-call admission now checks
has_local_listener, read from the registry only MMwrites from real U-ATTACH/DETACH, so scan-off detach frees the slot. Local U-SETUP
keeps the combined count so EchoLink-bridged TGs still work.
FH-BUG-080 - DTMF was decoded and then dropped at the Asterisk entity ("currently
ignored"). Now sent as one in-dialog SIP INFO (application/dtmf-relay) per digit, CSeq
ordered against the later BYE.
FH-BUG-081 - reporter had a µCell and an SXceiver on one Pi.
detect()is fine; thebug is enumeration order, with no
device=set the first supported device wins (µCell)so the SXceiver is never opened. Log the raw driver/hardware keys every probe, WARN when
more than one device is present with the fix (
device = "driver=sx"), and show the keyson the dashboard so the next misdetection needs no SSH.
FH-BUG-079 - firewalled basestations are only reachable over Brew, so the dashboard
whitelist endpoint doesn't help. The reporter (HOH) shipped a working PoC that patched
the Rust at runtime; this upstreams it natively. Brew Service 0xf4 type 0x30 with
{"issi_whitelist":[...]}sets the override, kicks now-disallowed radios via MM, andpersists to config.toml. Off by default behind
[brew] feature_issi_whitelist_sync.Empty list follows the configured
whitelist_modeinstead of forcing open.Testing
491 pass, 0 fail (+18 new). Default and
--features asteriskboth check clean.asterisk can't link here (no libtetra-codec), so 080 is compile-checked only. Run it for
real before release.
Follow-ups
host. The user still sets
device=. Confirm the SXceiver's post-opendriver_keyisactually
sxfrom the new log if it still shows wrong.change inside net_brew + tetra-config. Works and is tested, but moving them onto
CfgBrew/StackConfigfields is cleaner and means a config reload picks up the flagwithout a restart. Left for a follow-up.