Move hostapd_acl_expire() to use common AP periodic cleanup mechanism

This reduces number of periodic eloop timeouts when AP mode operations
are in progress.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2015-07-20 13:39:22 +03:00 committed by Jouni Malinen
parent 3188aabaf1
commit 22fd2822f9
3 changed files with 15 additions and 10 deletions

View File

@ -2926,4 +2926,16 @@ struct hostapd_data * hostapd_get_iface(struct hapd_interfaces *interfaces,
void hostapd_periodic_iface(struct hostapd_iface *iface) void hostapd_periodic_iface(struct hostapd_iface *iface)
{ {
size_t i;
for (i = 0; i < iface->num_bss; i++) {
struct hostapd_data *hapd = iface->bss[i];
if (!hapd->started)
continue;
#ifndef CONFIG_NO_RADIUS
hostapd_acl_expire(hapd);
#endif /* CONFIG_NO_RADIUS */
}
} }

View File

@ -399,19 +399,15 @@ static void hostapd_acl_expire_queries(struct hostapd_data *hapd,
/** /**
* hostapd_acl_expire - ACL cache expiration callback * hostapd_acl_expire - ACL cache expiration callback
* @eloop_ctx: struct hostapd_data * * @hapd: struct hostapd_data *
* @timeout_ctx: Not used
*/ */
static void hostapd_acl_expire(void *eloop_ctx, void *timeout_ctx) void hostapd_acl_expire(struct hostapd_data *hapd)
{ {
struct hostapd_data *hapd = eloop_ctx;
struct os_reltime now; struct os_reltime now;
os_get_reltime(&now); os_get_reltime(&now);
hostapd_acl_expire_cache(hapd, &now); hostapd_acl_expire_cache(hapd, &now);
hostapd_acl_expire_queries(hapd, &now); hostapd_acl_expire_queries(hapd, &now);
eloop_register_timeout(10, 0, hostapd_acl_expire, hapd, NULL);
} }
@ -615,8 +611,6 @@ int hostapd_acl_init(struct hostapd_data *hapd)
if (radius_client_register(hapd->radius, RADIUS_AUTH, if (radius_client_register(hapd->radius, RADIUS_AUTH,
hostapd_acl_recv_radius, hapd)) hostapd_acl_recv_radius, hapd))
return -1; return -1;
eloop_register_timeout(10, 0, hostapd_acl_expire, hapd, NULL);
#endif /* CONFIG_NO_RADIUS */ #endif /* CONFIG_NO_RADIUS */
return 0; return 0;
@ -632,8 +626,6 @@ void hostapd_acl_deinit(struct hostapd_data *hapd)
struct hostapd_acl_query_data *query, *prev; struct hostapd_acl_query_data *query, *prev;
#ifndef CONFIG_NO_RADIUS #ifndef CONFIG_NO_RADIUS
eloop_cancel_timeout(hostapd_acl_expire, hapd, NULL);
hostapd_acl_cache_free(hapd->acl_cache); hostapd_acl_cache_free(hapd->acl_cache);
#endif /* CONFIG_NO_RADIUS */ #endif /* CONFIG_NO_RADIUS */

View File

@ -24,5 +24,6 @@ int hostapd_allowed_address(struct hostapd_data *hapd, const u8 *addr,
int hostapd_acl_init(struct hostapd_data *hapd); int hostapd_acl_init(struct hostapd_data *hapd);
void hostapd_acl_deinit(struct hostapd_data *hapd); void hostapd_acl_deinit(struct hostapd_data *hapd);
void hostapd_free_psk_list(struct hostapd_sta_wpa_psk_short *psk); void hostapd_free_psk_list(struct hostapd_sta_wpa_psk_short *psk);
void hostapd_acl_expire(struct hostapd_data *hapd);
#endif /* IEEE802_11_AUTH_H */ #endif /* IEEE802_11_AUTH_H */