diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-09-20 17:55:39 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-09-20 17:56:03 +0200 |
commit | 6fa9b042ff4dc2ef91a8b8c49cbc02cdfca0cf28 (patch) | |
tree | e579f7124c3e62f0a672d14b2fea11d8779e7738 /wireless.c | |
parent | 5ba9744aac6d42da1e56357aca951b52f86cfacb (diff) | |
download | netifd-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.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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; } } |