From: Helmut Schaa Date: Thu, 24 Feb 2011 19:25:40 +0000 (+0200) Subject: hostapd: Inherit correct MAC address for AP VLAN interfaces X-Git-Tag: hostap-1-bp~564 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e926bcffd80ad0df3a7dc987d396a3b28f212783;p=thirdparty%2Fhostap.git 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 --- diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c index 7f9522a06..22a7b9162 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); }