Add optional steering_ssid allow-list to scope DAWN per SSID - #268
Conversation
DAWN manages every hostapd BSS it discovers under hostapd_dir; there is no way to run it on some SSIDs but not others. Add an opt-in allow-list: zero or more `list steering_ssid '<SSID>'` entries in the `config hostapd` section restrict DAWN to the named SSIDs. With no entries the list is empty and the historic manage-everything behaviour is preserved. Filtering happens at interface discovery in subscribe_to_new_interfaces(): a BSS whose SSID is not allowed is never subscribed, so DAWN neither steers/kicks its clients nor shares their measurements with peer APs. SSID lookup fails open — if it cannot be read the interface is managed as before. The check only runs for not-yet-subscribed interfaces, so steady -state overhead is nil and an excluded BSS is re-evaluated on each rescan. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Fine for me. But if we dont subscribe to each "ssid", we maybe loose some information how many clients are in total on a radio and similar. However, for now I dont think this is important. |
|
Thanks! Agreed it's not critical for now — and good point to flag. Small clarification on the metrics: channel utilization actually survives, since The one that does undercount is Since this is opt-in (empty Cheers! |
806166b
into
berlin-open-wireless-lab:master
|
@PolynomialDivision - thanks for merging. Can you close the following issue then please: #239 |
Motivation
There is currently no way to run DAWN on some SSIDs but not others. DAWN
subscribes to every hostapd BSS it discovers under
hostapd_dir, and thereis no UCI option (nor an OpenWrt wireless option) to scope it. On APs that host
a mix of networks — e.g. a steered main/roaming SSID alongside a static IoT or
guest SSID that should be left completely alone — this is an all-or-nothing
choice today.
What this adds
An opt-in allow-list in the
config hostapdsection:steering_ssidentries the list is empty and behaviour isunchanged — DAWN manages every BSS, exactly as before. Fully backwards
compatible.
Implementation
Filtering happens at interface discovery in
subscribe_to_new_interfaces().A BSS whose SSID is not allowed is simply never subscribed, so DAWN neither
steers/kicks its clients nor shares their measurements with peer APs — the
interface is invisible to DAWN rather than partially handled.
get_ssid(ifname, ...)(iwinfo), whichworks at discovery time, so no extra subscription is needed to make the
decision.
before, so the feature can never accidentally disable steering.
overhead is nil; an excluded BSS is re-evaluated on each rescan, so it can be
picked up later if its SSID changes.
uci_get_dawn_steering_ssids()(mirroring
uci_get_dawn_hostapd_dir());dawn_ssid_is_managed()does themembership test.
Caveat
Like
hostapd_dir, theconfig hostapdsection is not covered byubus call dawn reload_config, so changes tosteering_ssidtake effect onservice restart. This is noted in
CONFIGURE.md.Docs
CONFIGURE.md(regeneratedCONFIG-Hrow + prose) and the exampledawn-configare updated.Testing
mediatek/filogic(aarch64_cortex-a53) against theOpenWrt 25.12.4 SDK — clean build under DAWN's
-Wall -Werror --std=gnu99 -Wmissing-declarations.excluded SSID's clients are no longer steered/kicked, while the listed SSID
continues to be managed normally. Log confirms the skip:
[SUBSCRIBING] Skipping <iface>: SSID '<other>' not in steering_ssid list.🤖 Generated with Claude Code