[PATCH] hostapd: fix interface enabling/disabling and DFS

Michal Kazior michal.kazior
Tue Nov 19 02:08:47 PST 2013


The `started` state was tracked incorrectly. It
also broke DFS as it was using
hostapd_enable/disable_iface() functions.

Signed-hostap: Michal Kazior <michal.kazior at tieto.com>
---
 src/ap/hostapd.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index 51b1035..69e8956 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -243,6 +243,13 @@ static int hostapd_broadcast_wep_set(struct hostapd_data *hapd)
 
 static void hostapd_free_hapd_data(struct hostapd_data *hapd)
 {
+	if (!hapd->started) {
+		wpa_printf(MSG_ERROR, "%s: Interface %s wasn't started",
+			   __func__, hapd->conf->iface);
+		return;
+	}
+	hapd->started = 0;
+
 	wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
 	iapp_deinit(hapd->iapp);
 	hapd->iapp = NULL;
@@ -306,7 +313,6 @@ static void hostapd_cleanup(struct hostapd_data *hapd)
 	    hapd->iface->interfaces->ctrl_iface_deinit)
 		hapd->iface->interfaces->ctrl_iface_deinit(hapd);
 	hostapd_free_hapd_data(hapd);
-	hapd->started = 0;
 }
 
 
-- 
1.8.4.rc3




More information about the Hostap mailing list