From: Jouni Malinen Date: Sat, 5 Sep 2015 16:38:06 +0000 (+0300) Subject: Add station tracking based on other management frame subtypes X-Git-Tag: hostap_2_5~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b308a304d4289a0d9cf4f003ae8fa7aeba8c6b45;p=thirdparty%2Fhostap.git Add station tracking based on other management frame subtypes This extends the previous tracking design to add a station entry based on other management frames than Probe Request frames. For example, this covers a case where the station is using passive scanning. Signed-off-by: Jouni Malinen --- diff --git a/src/ap/beacon.c b/src/ap/beacon.c index 85c6ef3cf..5fe8fd566 100644 --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -592,7 +592,7 @@ static struct hostapd_sta_info * sta_track_get(struct hostapd_iface *iface, } -static void sta_track_add(struct hostapd_iface *iface, const u8 *addr) +void sta_track_add(struct hostapd_iface *iface, const u8 *addr) { struct hostapd_sta_info *info; diff --git a/src/ap/beacon.h b/src/ap/beacon.h index e183cde25..d98f42e81 100644 --- a/src/ap/beacon.h +++ b/src/ap/beacon.h @@ -21,6 +21,7 @@ int ieee802_11_update_beacons(struct hostapd_iface *iface); int ieee802_11_build_ap_params(struct hostapd_data *hapd, struct wpa_driver_ap_params *params); void ieee802_11_free_ap_params(struct wpa_driver_ap_params *params); +void sta_track_add(struct hostapd_iface *iface, const u8 *addr); void sta_track_expire(struct hostapd_iface *iface, int force); struct hostapd_data * sta_track_seen_on(struct hostapd_iface *iface, const u8 *addr, diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index 78355d660..19c6a12e0 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -2335,6 +2335,9 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len, return 0; } + if (hapd->iconf->track_sta_max_num) + sta_track_add(hapd->iface, mgmt->sa); + switch (stype) { case WLAN_FC_STYPE_AUTH: wpa_printf(MSG_DEBUG, "mgmt::auth");