34 lines
1.3 KiB
Diff
34 lines
1.3 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Wed, 20 Oct 2021 21:13:10 +0200
|
|
Subject: [PATCH] hostpad: fix a race condition on adding AP mode wds sta
|
|
interfaces
|
|
|
|
Both hostapd and netifd attempt to add a VLAN device to a bridge.
|
|
Depending on which one wins the race, bridge vlan settings might be incomplete,
|
|
or hostapd might run into an error and refuse to service the client.
|
|
Fix this by preventing hostapd from adding interfaces to the bridge and
|
|
instead rely entirely on netifd handling this properly
|
|
|
|
--- a/hostapd/config_file.c
|
|
+++ b/hostapd/config_file.c
|
|
@@ -2447,6 +2447,8 @@ static int hostapd_config_fill(struct ho
|
|
sizeof(conf->bss[0]->iface));
|
|
} else if (os_strcmp(buf, "bridge") == 0) {
|
|
os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
|
|
+ if (!bss->wds_bridge[0])
|
|
+ os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
|
|
} else if (os_strcmp(buf, "bridge_hairpin") == 0) {
|
|
bss->bridge_hairpin = atoi(pos);
|
|
} else if (os_strcmp(buf, "vlan_bridge") == 0) {
|
|
--- a/src/ap/ap_drv_ops.c
|
|
+++ b/src/ap/ap_drv_ops.c
|
|
@@ -387,8 +387,6 @@ int hostapd_set_wds_sta(struct hostapd_d
|
|
return -1;
|
|
if (hapd->conf->wds_bridge[0])
|
|
bridge = hapd->conf->wds_bridge;
|
|
- else if (hapd->conf->bridge[0])
|
|
- bridge = hapd->conf->bridge;
|
|
return hapd->driver->set_wds_sta(hapd->drv_priv, addr, aid, val,
|
|
bridge, ifname_wds);
|
|
}
|