From ea07da5fe56327c26ab8e3ad6544bc15a1767955 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 19 Apr 2011 15:41:49 +0000 Subject: [PATCH] hostapd: fix bridge handling for wds stations (#9257) SVN-Revision: 26724 --- .../patches/730-fix_wds_bridge_handling.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 package/hostapd/patches/730-fix_wds_bridge_handling.patch 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 0000000000..c5c8606d85 --- /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",