}
-static void wpa_supplicant_deinit_iface(struct wpa_supplicant *wpa_s)
+static void wpa_supplicant_deinit_iface(struct wpa_supplicant *wpa_s,
+ int notify)
{
if (wpa_s->drv_priv) {
wpa_supplicant_deauthenticate(wpa_s,
wpa_clear_keys(wpa_s, NULL);
}
- wpas_notify_iface_removed(wpa_s);
+ if (notify)
+ wpas_notify_iface_removed(wpa_s);
wpa_supplicant_cleanup(wpa_s);
if (wpa_supplicant_init_iface(wpa_s, &t_iface)) {
wpa_printf(MSG_DEBUG, "Failed to add interface %s",
iface->ifname);
- wpa_supplicant_deinit_iface(wpa_s);
+ wpa_supplicant_deinit_iface(wpa_s, 0);
os_free(wpa_s);
return NULL;
}
/* Notify the control interfaces about new iface */
if (wpas_notify_iface_added(wpa_s)) {
- wpa_supplicant_deinit_iface(wpa_s);
+ wpa_supplicant_deinit_iface(wpa_s, 1);
os_free(wpa_s);
return NULL;
}
wpa_printf(MSG_DEBUG, "Removing interface %s", wpa_s->ifname);
- wpa_supplicant_deinit_iface(wpa_s);
+ wpa_supplicant_deinit_iface(wpa_s, 1);
os_free(wpa_s);
return 0;