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;
|
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)
|
* 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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found) {
|
if (!found && s->num_p2p_clients < P2P_MAX_STORED_CLIENTS) {
|
||||||
n = os_realloc_array(s->p2p_client_list,
|
n = os_realloc_array(s->p2p_client_list,
|
||||||
s->num_p2p_clients + 1, ETH_ALEN);
|
s->num_p2p_clients + 1, ETH_ALEN);
|
||||||
if (n == NULL)
|
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);
|
os_memcpy(n + s->num_p2p_clients * ETH_ALEN, addr, ETH_ALEN);
|
||||||
s->p2p_client_list = n;
|
s->p2p_client_list = n;
|
||||||
s->num_p2p_clients++;
|
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
|
#ifndef CONFIG_NO_CONFIG_WRITE
|
||||||
|
|
Loading…
Reference in a new issue