c5c8606d8559fcf8a232d951a8494727f319fbfe
[openwrt-10.03/.git] / package / hostapd / patches / 730-fix_wds_bridge_handling.patch
1 --- a/src/drivers/driver_nl80211.c
2 +++ b/src/drivers/driver_nl80211.c
3 @@ -5487,6 +5487,9 @@ static int i802_set_wds_sta(void *priv, 
4                 linux_set_iface_flags(drv->ioctl_sock, name, 1);
5                 return i802_set_sta_vlan(priv, addr, name, 0);
6         } else {
7 +               if (bridge_ifname)
8 +                       linux_br_del_if(drv->ioctl_sock, bridge_ifname, name);
9 +
10                 i802_set_sta_vlan(priv, addr, bss->ifname, 0);
11                 return wpa_driver_nl80211_if_remove(priv, WPA_IF_AP_VLAN,
12                                                     name);
13 @@ -5927,14 +5930,14 @@ static int wpa_driver_nl80211_if_remove(
14                 return -1;
15  
16  #ifdef HOSTAPD
17 -       if (bss->added_if_into_bridge) {
18 +       if (type == WPA_IF_AP_BSS && bss->added_if_into_bridge) {
19                 if (linux_br_del_if(drv->ioctl_sock, bss->brname, bss->ifname)
20                     < 0)
21                         wpa_printf(MSG_INFO, "nl80211: Failed to remove "
22                                    "interface %s from bridge %s: %s",
23                                    bss->ifname, bss->brname, strerror(errno));
24         }
25 -       if (bss->added_bridge) {
26 +       if (type == WPA_IF_AP_BSS && bss->added_bridge) {
27                 if (linux_br_del(drv->ioctl_sock, bss->brname) < 0)
28                         wpa_printf(MSG_INFO, "nl80211: Failed to remove "
29                                    "bridge %s: %s",