aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2011-02-24 19:25:40 (GMT)
committerJouni Malinen <j@w1.fi>2011-02-24 19:25:40 (GMT)
commite926bcffd80ad0df3a7dc987d396a3b28f212783 (patch)
treedd08248e3deb19a3bd1cb87178686f8bc9c8b1ec /src
parent9526fd293f98c4df91a0453a11efd8eeaa86b6db (diff)
downloadhostap-e926bcffd80ad0df3a7dc987d396a3b28f212783.zip
hostap-e926bcffd80ad0df3a7dc987d396a3b28f212783.tar.gz
hostap-e926bcffd80ad0df3a7dc987d396a3b28f212783.tar.bz2
hostapd: Inherit correct MAC address for AP VLAN interfaces
When using multiple vifs and dynamic vlan tagging is enabled on any interface, the created AP VLAN interfaces get the BSSID of the first AP mode interface instead of the BSSID of the corresponding AP mode interface. Example: wlan0 - xx:xx:xx:xx:x0 wlan1 - xx:xx:xx:xx:x1 Assume a STA connects to the AP interface wlan1 and gets a dynamic VLAN tag 100 assigned by the RADIUS server. Hostapd will create an AP VLAN interface wlan1.100 but doesn't set an address for this interface which results in wlan1.100 getting the same address as wlan0: wlan1.100 - xx:xx:xx:xx:x0 As a result the STA that was moved to wlan1.100 isn't able to finish its 4-way handshake since mac80211 won't pass its frames to wlan1.100 due to the different address. To fix this issue make use of the address of the AP interface when creating an AP VLAN interface. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r--src/ap/ap_drv_ops.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index 7f9522a..22a7b91 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -280,8 +280,8 @@ int hostapd_vlan_if_add(struct hostapd_data *hapd, const char *ifname)
{
char force_ifname[IFNAMSIZ];
u8 if_addr[ETH_ALEN];
- return hostapd_if_add(hapd, WPA_IF_AP_VLAN, ifname, NULL, NULL, NULL,
- force_ifname, if_addr);
+ return hostapd_if_add(hapd, WPA_IF_AP_VLAN, ifname, hapd->own_addr,
+ NULL, NULL, force_ifname, if_addr);
}