summaryrefslogtreecommitdiff
path: root/wireless.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2021-09-20 17:55:39 +0200
committerFelix Fietkau <nbd@nbd.name>2021-09-20 17:56:03 +0200
commit6fa9b042ff4dc2ef91a8b8c49cbc02cdfca0cf28 (patch)
treee579f7124c3e62f0a672d14b2fea11d8779e7738 /wireless.c
parent5ba9744aac6d42da1e56357aca951b52f86cfacb (diff)
downloadnetifd-6fa9b042ff4dc2ef91a8b8c49cbc02cdfca0cf28.tar.gz
wireless: only apply wireless device attributes to the base vif interface
Per-station interfaces in 4-addr AP mode must not inherit them, because this can cause reflected packets by enabling hairpin mode. Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'wireless.c')
-rw-r--r--wireless.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/wireless.c b/wireless.c
index 0e6447d..29feb6a 100644
--- a/wireless.c
+++ b/wireless.c
@@ -328,14 +328,14 @@ static void wireless_interface_handle_link(struct wireless_interface *vif, const
if (!ifname)
ifname = vif->ifname;
- if (up) {
+ if (up && ifname != vif->ifname) {
struct device *dev = device_get(ifname, 2);
if (dev) {
dev->wireless_isolate = vif->isolate;
dev->wireless_proxyarp = vif->proxyarp;
dev->wireless = true;
dev->wireless_ap = vif->ap_mode;
- dev->bpdu_filter = dev->wireless_ap && ifname == vif->ifname;
+ dev->bpdu_filter = dev->wireless_ap;
}
}