From: Hu Wang Date: Tue, 26 Jun 2018 02:56:29 +0000 (+0800) Subject: nl80211: Indicate interface up only for the main netdev X-Git-Tag: hostap_2_7~237 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8a9950f7b6ebd4f555575f60d7ae7a98cdb73383;p=thirdparty%2Fhostap.git nl80211: Indicate interface up only for the main netdev ifname is checked for interface down event in commit 106fa1e97e29e7514ae324020802c280f993ee48 ("nl80211: Indicate interface-down event only for the main netdev"). Do the same for interface up event to avoid unexpected notifications when the master interface (e.g., a bridge interface) is set up while then WLAN interface remains down. Signed-off-by: Jouni Malinen --- diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 9d8137e00..16bae4907 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1079,11 +1079,20 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx, } if (drv->if_disabled && (ifi->ifi_flags & IFF_UP)) { + namebuf[0] = '\0'; if (if_indextoname(ifi->ifi_index, namebuf) && linux_iface_up(drv->global->ioctl_sock, namebuf) == 0) { wpa_printf(MSG_DEBUG, "nl80211: Ignore interface up " "event since interface %s is down", namebuf); + return; + } + wpa_printf(MSG_DEBUG, "nl80211: Interface up (%s/%s)", + namebuf, ifname); + if (os_strcmp(drv->first_bss->ifname, ifname) != 0) { + wpa_printf(MSG_DEBUG, + "nl80211: Not the main interface (%s) - do not indicate interface up", + drv->first_bss->ifname); } else if (if_nametoindex(drv->first_bss->ifname) == 0) { wpa_printf(MSG_DEBUG, "nl80211: Ignore interface up " "event since interface %s does not exist", @@ -1096,7 +1105,6 @@ static void wpa_driver_nl80211_event_rtm_newlink(void *ctx, /* Re-read MAC address as it may have changed */ nl80211_refresh_mac(drv, ifi->ifi_index, 0); - wpa_printf(MSG_DEBUG, "nl80211: Interface up"); drv->if_disabled = 0; wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, NULL);