aboutsummaryrefslogtreecommitdiff
path: root/package/network/services/hostapd/patches/711-wds_bridge_force.patch
blob: dbd75658ae4a94fd71e62cd954874064881b525e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
 }