P2P: Limit maximum number of stored P2P clients to 100
This limits the maximum size of the p2p_client_list parameter that is maintained at the GO for a persistent group. In other words, only the 100 most recently seen P2P clients are kept in the list. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com> intended-for: hostap-1
This commit is contained in:
parent
223167956c
commit
b4a5dfa95d
2 changed files with 14 additions and 1 deletions
|
@ -431,6 +431,10 @@ struct wpa_ssid {
|
|||
*/
|
||||
size_t num_p2p_clients;
|
||||
|
||||
#ifndef P2P_MAX_STORED_CLIENTS
|
||||
#define P2P_MAX_STORED_CLIENTS 100
|
||||
#endif /* P2P_MAX_STORED_CLIENTS */
|
||||
|
||||
/**
|
||||
* p2p_group - Network generated as a P2P group (used internally)
|
||||
*/
|
||||
|
|
|
@ -560,7 +560,7 @@ static void wpas_p2p_add_persistent_group_client(struct wpa_supplicant *wpa_s,
|
|||
break;
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
if (!found && s->num_p2p_clients < P2P_MAX_STORED_CLIENTS) {
|
||||
n = os_realloc_array(s->p2p_client_list,
|
||||
s->num_p2p_clients + 1, ETH_ALEN);
|
||||
if (n == NULL)
|
||||
|
@ -568,6 +568,15 @@ static void wpas_p2p_add_persistent_group_client(struct wpa_supplicant *wpa_s,
|
|||
os_memcpy(n + s->num_p2p_clients * ETH_ALEN, addr, ETH_ALEN);
|
||||
s->p2p_client_list = n;
|
||||
s->num_p2p_clients++;
|
||||
} else if (!found) {
|
||||
/* Not enough room for an additional entry - drop the oldest
|
||||
* entry */
|
||||
os_memmove(s->p2p_client_list,
|
||||
s->p2p_client_list + ETH_ALEN,
|
||||
(s->num_p2p_clients - 1) * ETH_ALEN);
|
||||
os_memcpy(s->p2p_client_list +
|
||||
(s->num_p2p_clients - 1) * ETH_ALEN,
|
||||
addr, ETH_ALEN);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_NO_CONFIG_WRITE
|
||||
|
|
Loading…
Reference in a new issue