This avoids an issue when a received EAPOL-Key frame from a peer
is initiating IBSS RSN Authenticator and Supplicant for the peer
and the following new-STA-in-IBSS event from the driver is adding
yet another instance of Authenticator/Supplicant. The EAPOL-Key
RX case was already checking whether an instance had been started;
the driver new-STA event needs to do same.
{
struct ibss_rsn_peer *peer;
+ for (peer = ibss_rsn->peers; peer; peer = peer->next) {
+ if (os_memcmp(addr, peer->addr, ETH_ALEN) == 0) {
+ wpa_printf(MSG_DEBUG, "RSN: IBSS Authenticator and "
+ "Supplicant for peer " MACSTR " already "
+ "running", MAC2STR(addr));
+ return 0;
+ }
+ }
+
wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Authenticator and "
"Supplicant for peer " MACSTR, MAC2STR(addr));