From: Masashi Honma Date: Fri, 16 Jan 2015 11:19:23 +0000 (+0900) Subject: AP: Expire STA without entry in kernel X-Git-Tag: hostap_2_4~363 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b9749bac81cfd4132dfc87a5a94288005dfeec27;p=thirdparty%2Fhostap.git AP: Expire STA without entry in kernel If the inactivity check returns that there is no entry remaining for the STA in the kernel, drop the STA in hostapd as well. Signed-off-by: Masashi Honma --- diff --git a/src/ap/sta_info.c b/src/ap/sta_info.c index 3eca82d59..bb4321892 100644 --- a/src/ap/sta_info.c +++ b/src/ap/sta_info.c @@ -370,6 +370,13 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx) * but do not disconnect the station now. */ next_time = hapd->conf->ap_max_inactivity + fuzz; + } else if (inactive_sec == -ENOENT) { + wpa_msg(hapd->msg_ctx, MSG_DEBUG, + "Station " MACSTR " has lost its driver entry", + MAC2STR(sta->addr)); + + if (hapd->conf->skip_inactivity_poll) + sta->timeout_next = STA_DISASSOC; } else if (inactive_sec < hapd->conf->ap_max_inactivity) { /* station activity detected; reset timeout state */ wpa_msg(hapd->msg_ctx, MSG_DEBUG, diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c180f15d8..e278c87a5 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -5219,6 +5219,8 @@ static int i802_get_inact_sec(void *priv, const u8 *addr) data.inactive_msec = (unsigned long) -1; ret = i802_read_sta_data(priv, &data, addr); + if (ret == -ENOENT) + return -ENOENT; if (ret || data.inactive_msec == (unsigned long) -1) return -1; return data.inactive_msec / 1000;