Skip to content

Commit

Permalink
hostapd: reload bss if a relevant ifindex changes
Browse files Browse the repository at this point in the history
This can happen if the bridge or a stacked vlan device gets recreated.
Ensure that hostapd sees the change and handles it gracefully.

Signed-off-by: Felix Fietkau <[email protected]>
  • Loading branch information
nbd168 committed Oct 6, 2024
1 parent cffc52b commit 12c1a56
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion package/network/services/hostapd/files/hostapd.uc
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ hostapd.data.file_fields = {
eap_sim_db: true,
};
hostapd.data.iface_fields = {
ft_iface: true,
upnp_iface: true,
snoop_iface: true,
bridge: true,
iapp_interface: true,
};
function iface_remove(cfg)
{
if (!cfg || !cfg.bss || !cfg.bss[0] || !cfg.bss[0].ifname)
Expand Down Expand Up @@ -324,9 +332,24 @@ function bss_remove_file_fields(config)
return new_cfg;
}
function bss_ifindex_list(config)
{
config = filter(config, (line) => !!hostapd.data.iface_fields[split(line, "=")[0]]);
return join(",", map(config, (line) => {
try {
let file = "/sys/class/net/" + split(line, "=")[1] + "/ifindex";
let val = trim(readfile(file));
return val;
} catch (e) {
return "";
}
}));
}

function bss_config_hash(config)
{
return hostapd.sha1(remove_file_fields(config) + "");
return hostapd.sha1(remove_file_fields(config) + bss_ifindex_list(config));
}

function bss_find_existing(config, prev_config, prev_hash)
Expand Down

0 comments on commit 12c1a56

Please sign in to comment.