diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-04-19 15:41:49 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-04-19 15:41:49 +0000 |
commit | 4ddfc78a4b20c87156ed17f44c595e42afcf2884 (patch) | |
tree | 9d8504c935fc8498e153c5d402be0f790eda79e5 /package/hostapd | |
parent | 2a28eaed70ebe45e0ef4839f7b89e3a31791f6af (diff) |
hostapd: fix bridge handling for wds stations (#9257)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26724 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/hostapd')
-rw-r--r-- | package/hostapd/patches/730-fix_wds_bridge_handling.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/package/hostapd/patches/730-fix_wds_bridge_handling.patch b/package/hostapd/patches/730-fix_wds_bridge_handling.patch new file mode 100644 index 000000000..c5c8606d8 --- /dev/null +++ b/package/hostapd/patches/730-fix_wds_bridge_handling.patch @@ -0,0 +1,29 @@ +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -5487,6 +5487,9 @@ static int i802_set_wds_sta(void *priv, + linux_set_iface_flags(drv->ioctl_sock, name, 1); + return i802_set_sta_vlan(priv, addr, name, 0); + } else { ++ if (bridge_ifname) ++ linux_br_del_if(drv->ioctl_sock, bridge_ifname, name); ++ + i802_set_sta_vlan(priv, addr, bss->ifname, 0); + return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN, + name); +@@ -5927,14 +5930,14 @@ static int wpa_driver_nl80211_if_remove( + return -1; + + #ifdef HOSTAPD +- if (bss->added_if_into_bridge) { ++ if (type == WPA_IF_AP_BSS && bss->added_if_into_bridge) { + if (linux_br_del_if(drv->ioctl_sock, bss->brname, bss->ifname) + < 0) + wpa_printf(MSG_INFO, "nl80211: Failed to remove " + "interface %s from bridge %s: %s", + bss->ifname, bss->brname, strerror(errno)); + } +- if (bss->added_bridge) { ++ if (type == WPA_IF_AP_BSS && bss->added_bridge) { + if (linux_br_del(drv->ioctl_sock, bss->brname) < 0) + wpa_printf(MSG_INFO, "nl80211: Failed to remove " + "bridge %s: %s", |