Home | History | Annotate | Download | only in rsn_supp

Lines Matching refs:peer

83 static void wpa_tdls_peer_free(struct wpa_sm *sm, struct wpa_tdls_peer *peer);
85 struct wpa_tdls_peer *peer);
100 u8 rsnie_p[TDLS_MAX_IE_LEN]; /* Peer RSN IE */
160 static int wpa_tdls_del_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
162 if (wpa_sm_set_key(sm, WPA_ALG_NONE, peer->addr,
173 static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
181 switch (peer->cipher) {
196 if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
197 rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
219 struct wpa_tdls_peer *peer;
239 for (peer = sm->tdls; peer; peer = peer->next) {
240 if (os_memcmp(peer->addr, dest, ETH_ALEN) == 0)
244 if (peer == NULL) {
250 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer);
253 peer->sm_tmr.count = TPK_M2_RETRY_COUNT;
254 peer->sm_tmr.timer = TPK_M2_TIMEOUT;
256 peer->sm_tmr.count = TPK_M1_RETRY_COUNT;
257 peer->sm_tmr.timer = TPK_M1_TIMEOUT;
261 os_memcpy(peer->sm_tmr.dest, dest, ETH_ALEN);
262 peer->sm_tmr.action_code = action_code;
263 peer->sm_tmr.dialog_token = dialog_token;
264 peer->sm_tmr.status_code = status_code;
265 peer->sm_tmr.buf_len = msg_len;
266 os_free(peer->sm_tmr.buf);
267 peer->sm_tmr.buf = os_malloc(msg_len);
268 if (peer->sm_tmr.buf == NULL)
270 os_memcpy(peer->sm_tmr.buf, msg, msg_len);
274 eloop_register_timeout(peer->sm_tmr.timer / 1000,
275 (peer->sm_tmr.timer % 1000) * 1000,
276 wpa_tdls_tpk_retry_timeout, sm, peer);
281 static int wpa_tdls_do_teardown(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
286 ret = wpa_tdls_send_teardown(sm, peer->addr, reason_code);
288 wpa_tdls_disable_peer_link(sm, peer);
298 struct wpa_tdls_peer *peer = timeout_ctx;
300 if (peer->sm_tmr.count) {
301 peer->sm_tmr.count--;
305 peer->sm_tmr.action_code);
307 if (peer->sm_tmr.buf == NULL) {
310 peer->sm_tmr.action_code);
312 peer);
316 /* resend TPK Handshake Message to Peer */
317 if (wpa_tdls_send_tpk_msg(sm, peer->sm_tmr.dest,
318 peer->sm_tmr.action_code,
319 peer->sm_tmr.dialog_token,
320 peer->sm_tmr.status_code,
321 peer->sm_tmr.buf,
322 peer->sm_tmr.buf_len)) {
327 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer);
328 eloop_register_timeout(peer->sm_tmr.timer / 1000,
329 (peer->sm_tmr.timer % 1000) * 1000,
330 wpa_tdls_tpk_retry_timeout, sm, peer);
332 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer);
335 wpa_tdls_do_teardown(sm, peer,
342 struct wpa_tdls_peer *peer,
345 if (action_code == peer->sm_tmr.action_code) {
350 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer);
353 os_free(peer->sm_tmr.buf);
354 peer->sm_tmr.buf = NULL;
356 peer->sm_tmr.count = 0;
357 peer->sm_tmr.timer = 0;
358 peer->sm_tmr.buf_len = 0;
359 peer->sm_tmr.action_code = 0xff;
367 static void wpa_tdls_generate_tpk(struct wpa_tdls_peer *peer,
380 if (os_memcmp(peer->inonce, peer->rnonce, WPA_NONCE_LEN) < 0) {
381 nonce[0] = peer->inonce;
382 nonce[1] = peer->rnonce;
384 nonce[0] = peer->rnonce;
385 nonce[1] = peer->inonce;
401 if (os_memcmp(own_addr, peer->addr, ETH_ALEN) < 0) {
403 os_memcpy(data + ETH_ALEN, peer->addr, ETH_ALEN);
405 os_memcpy(data, peer->addr, ETH_ALEN);
412 (u8 *) &peer->tpk, sizeof(peer->tpk));
414 peer->tpk.kck, sizeof(peer->tpk.kck));
416 peer->tpk.tk, sizeof(peer->tpk.tk));
417 peer->tpk_set = 1;
542 struct wpa_tdls_peer *peer,
548 if (peer->tpk_set) {
549 wpa_tdls_ftie_mic(peer->tpk.kck, trans_seq, lnkid,
550 peer->rsnie_p, timeoutie, (u8 *) ftie,
571 u8 trans_seq, u16 rcode, u8 dtoken, struct wpa_tdls_peer *peer,
576 if (peer->tpk_set) {
577 wpa_tdls_key_mic_teardown(peer->tpk.kck, trans_seq, rcode,
596 struct wpa_tdls_peer *peer = timeout_ctx;
606 if (peer->initiator) {
608 " - try to renew", MAC2STR(peer->addr));
609 wpa_tdls_start(sm, peer->addr);
612 " - tear down", MAC2STR(peer->addr));
613 wpa_tdls_do_teardown(sm, peer,
619 static void wpa_tdls_peer_free(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
621 wpa_printf(MSG_DEBUG, "TDLS: Clear state for peer " MACSTR,
622 MAC2STR(peer->addr));
623 eloop_cancel_timeout(wpa_tdls_tpk_timeout, sm, peer);
624 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer);
625 peer->reconfig_key = 0;
626 peer->initiator = 0;
627 peer->tpk_in_progress = 0;
628 os_free(peer->sm_tmr.buf);
629 peer->sm_tmr.buf = NULL;
630 os_free(peer->ht_capabilities);
631 peer->ht_capabilities = NULL;
632 os_free(peer->vht_capabilities);
633 peer->vht_capabilities = NULL;
634 os_free(peer->ext_capab);
635 peer->ext_capab = NULL;
636 peer->rsnie_i_len = peer->rsnie_p_len = 0;
637 peer->cipher = 0;
638 peer->tpk_set = peer->tpk_success = 0;
639 os_memset(&peer->tpk, 0, sizeof(peer->tpk));
640 os_memset(peer->inonce, 0, WPA_NONCE_LEN);
641 os_memset(peer->rnonce, 0, WPA_NONCE_LEN);
645 static void wpa_tdls_linkid(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
651 if (peer->initiator) {
653 os_memcpy(lnkid->resp_sta, peer->addr, ETH_ALEN);
655 os_memcpy(lnkid->init_sta, peer->addr, ETH_ALEN);
663 struct wpa_tdls_peer *peer;
674 for (peer = sm->tdls; peer; peer = peer->next) {
675 if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0)
679 if (peer == NULL) {
685 dialog_token = peer->dtoken;
691 if (wpa_tdls_get_privacy(sm) && peer->tpk_set && peer->tpk_success) {
705 if (!wpa_tdls_get_privacy(sm) || !peer->tpk_set || !peer->tpk_success)
711 os_memcpy(ftie->Anonce, peer->rnonce, WPA_NONCE_LEN);
712 os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
729 wpa_tdls_linkid(sm, peer, &lnkid);
730 wpa_tdls_key_mic_teardown(peer->tpk.kck, 4, reason_code,
744 wpa_tdls_peer_free(sm, peer);
752 struct wpa_tdls_peer *peer;
757 for (peer = sm->tdls; peer; peer = peer->next) {
758 if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0)
762 if (peer == NULL) {
763 wpa_printf(MSG_DEBUG, "TDLS: Could not find peer " MACSTR
768 if (!peer->tpk_success) {
769 wpa_printf(MSG_DEBUG, "TDLS: Peer " MACSTR
774 return wpa_tdls_do_teardown(sm, peer, reason_code);
779 struct wpa_tdls_peer *peer)
781 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr);
782 wpa_tdls_peer_free(sm, peer);
788 struct wpa_tdls_peer *peer;
790 for (peer = sm->tdls; peer; peer = peer->next) {
791 if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0)
795 if (peer)
796 wpa_tdls_disable_peer_link(sm, peer);
803 struct wpa_tdls_peer *peer = NULL;
812 for (peer = sm->tdls; peer; peer = peer->next) {
813 if (os_memcmp(peer->addr, src_addr, ETH_ALEN) == 0)
817 if (peer == NULL) {
845 if (!wpa_tdls_get_privacy(sm) || !peer->tpk_set || !peer->tpk_success)
857 peer->dtoken, peer,
869 wpa_tdls_disable_peer_link(sm, peer);
877 * @dst - MAC addr of Peer station
896 struct wpa_tdls_peer *peer;
900 for (peer = sm->tdls; peer; peer = peer->next) {
901 if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0) {
904 return peer; /* re-use existing entry */
908 wpa_printf(MSG_INFO, "TDLS: Creating peer entry for " MACSTR,
911 peer = os_zalloc(sizeof(*peer));
912 if (peer == NULL)
915 os_memcpy(peer->addr, addr, ETH_ALEN);
916 peer->next = sm->tdls;
917 sm->tdls = peer;
919 return peer;
924 struct wpa_tdls_peer *peer)
937 peer->rsnie_i_len = 0;
948 hdr = (struct rsn_ie_hdr *) peer->rsnie_i;
998 hdr->len = (pos - peer->rsnie_i) - 2;
999 peer->rsnie_i_len = pos - peer->rsnie_i;
1001 peer->rsnie_i, peer->rsnie_i_len);
1006 buf_len += peer->rsnie_i_len + sizeof(struct wpa_tdls_ftie) +
1017 wpa_tdls_peer_free(sm, peer);
1026 pos = wpa_add_ie(pos, peer->rsnie_i, peer->rsnie_i_len);
1032 if (os_get_random(peer->inonce, WPA_NONCE_LEN)) {
1036 wpa_tdls_peer_free(sm, peer);
1040 peer->inonce, WPA_NONCE_LEN);
1041 os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
1060 peer->lifetime = TPK_LIFETIME;
1065 peer->lifetime = 301;
1070 peer->lifetime = 0xffffffff;
1074 sizeof(timeoutie), peer->lifetime);
1075 wpa_printf(MSG_DEBUG, "TDLS: TPK lifetime %u seconds", peer->lifetime);
1084 wpa_tdls_linkid(sm, peer, l);
1091 "Handshake Message 1 (peer " MACSTR ")",
1092 MAC2STR(peer->addr));
1094 status = wpa_tdls_tpk_send(sm, peer->addr, WLAN_TDLS_SETUP_REQUEST,
1105 const struct wpa_tdls_peer *peer)
1116 /* Peer RSN IE, FTIE(Initiator Nonce, Responder Nonce),
1118 buf_len += peer->rsnie_i_len + sizeof(struct wpa_tdls_ftie) +
1134 /* Peer RSN IE */
1135 pos = wpa_add_ie(pos, peer->rsnie_p, peer->rsnie_p_len);
1140 os_memcpy(ftie->Anonce, peer->rnonce, WPA_NONCE_LEN);
1141 os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
1160 lifetime = peer->lifetime;
1174 wpa_tdls_ftie_mic(peer->tpk.kck, 2, (u8 *) lnkid, peer->rsnie_p,
1189 peer)
1200 /* Peer RSN IE, FTIE(Initiator Nonce, Responder Nonce),
1202 buf_len += peer->rsnie_i_len + sizeof(struct wpa_tdls_ftie) +
1218 /* Peer RSN IE */
1219 pos = wpa_add_ie(pos, peer->rsnie_p, peer->rsnie_p_len);
1224 os_memcpy(ftie->Anonce, peer->rnonce, WPA_NONCE_LEN);
1225 os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
1242 lifetime = peer->lifetime;
1256 wpa_tdls_ftie_mic(peer->tpk.kck, 3, (u8 *) lnkid, peer->rsnie_p,
1269 struct wpa_tdls_peer *peer,
1273 "(peer " MACSTR ")", MAC2STR(peer->addr));
1275 return wpa_tdls_tpk_send(sm, peer->addr, WLAN_TDLS_DISCOVERY_RESPONSE,
1286 struct wpa_tdls_peer *peer;
1321 peer = wpa_tdls_add_peer(sm, addr, NULL);
1322 if (peer == NULL)
1325 return wpa_tdls_send_discovery_response(sm, peer, dialog_token);
1334 wpa_printf(MSG_DEBUG, "TDLS: Sending Discovery Request to peer "
1342 struct wpa_tdls_peer *peer)
1348 peer->supp_rates_len = merge_byte_arrays(
1349 peer->supp_rates, sizeof(peer->supp_rates),
1358 struct wpa_tdls_peer *peer)
1368 if (!peer->ht_capabilities) {
1369 peer->ht_capabilities =
1371 if (peer->ht_capabilities == NULL)
1375 os_memcpy(peer->ht_capabilities, kde->ht_capabilities,
1377 wpa_hexdump(MSG_DEBUG, "TDLS: Peer HT capabilities",
1378 (u8 *) peer->ht_capabilities,
1386 struct wpa_tdls_peer *peer)
1396 if (!peer->vht_capabilities) {
1397 peer->vht_capabilities =
1399 if (peer->vht_capabilities == NULL)
1403 os_memcpy(peer->vht_capabilities, kde->vht_capabilities,
1405 wpa_hexdump(MSG_DEBUG, "TDLS: Peer VHT capabilities",
1406 (u8 *) peer->vht_capabilities,
1414 struct wpa_tdls_peer *peer)
1422 if (!peer->ext_capab || peer->ext_capab_len < kde->ext_capab_len - 2) {
1424 os_free(peer->ext_capab);
1425 peer->ext_capab = os_zalloc(kde->ext_capab_len - 2);
1426 if (peer->ext_capab == NULL)
1430 peer->ext_capab_len = kde->ext_capab_len - 2;
1431 os_memcpy(peer->ext_capab, kde->ext_capab + 2, peer->ext_capab_len);
1440 struct wpa_tdls_peer *peer;
1472 peer = wpa_tdls_add_peer(sm, src_addr, &existing_peer);
1473 if (peer == NULL)
1480 if (peer->tpk_success) {
1484 wpa_tdls_disable_peer_link(sm, peer);
1493 if (peer->initiator) {
1496 "from peer with higher address "
1501 "from peer with lower address "
1505 wpa_tdls_disable_peer_link(sm, peer);
1511 peer->capability = WPA_GET_LE16(cpos);
1537 if (copy_supp_rates(&kde, peer) < 0)
1540 if (copy_peer_ht_capab(&kde, peer) < 0)
1543 if (copy_peer_vht_capab(&kde, peer) < 0)
1546 if (copy_peer_ext_capab(&kde, peer) < 0)
1549 peer->qos_info = kde.qosinfo;
1551 peer->aid = kde.aid;
1555 peer = wpa_tdls_add_peer(sm, src_addr, NULL);
1556 if (peer == NULL)
1560 peer->initiator = 1;
1561 wpa_tdls_send_tpk_m1(sm, peer);
1645 if (os_memcmp(sm->own_addr, peer->addr, ETH_ALEN) < 0) {
1649 * the peer.
1656 peer->initiator = 0; /* Need to check */
1657 peer->dtoken = dtoken;
1660 peer->rsnie_i_len = 0;
1661 peer->rsnie_p_len = 0;
1662 peer->cipher = WPA_CIPHER_NONE;
1667 os_memcpy(peer->rsnie_i, kde.rsn_ie, kde.rsn_ie_len);
1668 peer->rsnie_i_len = kde.rsn_ie_len;
1669 peer->cipher = cipher;
1671 if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
1681 os_memcpy(peer->inonce, ftie->Snonce, WPA_NONCE_LEN);
1682 if (os_get_random(peer->rnonce, WPA_NONCE_LEN)) {
1685 wpa_tdls_peer_free(sm, peer);
1691 /* get version info from RSNIE received from Peer */
1695 /* use min(peer's version, out version) */
1699 hdr = (struct rsn_ie_hdr *) peer->rsnie_p;
1724 hdr->len = (pos - peer->rsnie_p) - 2;
1725 peer->rsnie_p_len = pos - peer->rsnie_p;
1729 os_memcpy(peer->rsnie_p, peer->rsnie_i, peer->rsnie_i_len);
1730 peer->rsnie_p_len = peer->rsnie_i_len;
1733 peer->rsnie_p, peer->rsnie_p_len);
1735 peer->lifetime = lifetime;
1737 wpa_tdls_generate_tpk(peer, sm->own_addr, sm->bssid);
1740 /* add the peer to the driver as a "setup in progress" peer */
1741 wpa_sm_tdls_peer_addset(sm, peer->addr, 1, 0, 0, NULL, 0, NULL, NULL, 0,
1743 peer->tpk_in_progress = 1;
1746 if (wpa_tdls_send_tpk_m2(sm, src_addr, dtoken, lnkid, peer) < 0) {
1747 wpa_tdls_disable_peer_link(sm, peer);
1760 static int wpa_tdls_enable_link(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
1762 peer->tpk_success = 1;
1763 peer->tpk_in_progress = 0;
1764 eloop_cancel_timeout(wpa_tdls_tpk_timeout, sm, peer);
1766 u32 lifetime = peer->lifetime;
1771 if (lifetime > 3 && peer->initiator)
1774 sm, peer);
1779 peer);
1784 /* add supported rates, capabilities, and qos_info to the TDLS peer */
1785 if (wpa_sm_tdls_peer_addset(sm, peer->addr, 0, peer->aid,
1786 peer->capability,
1787 peer->supp_rates, peer->supp_rates_len,
1788 peer->ht_capabilities,
1789 peer->vht_capabilities,
1790 peer->qos_info, peer->ext_capab,
1791 peer->ext_capab_len) < 0)
1794 if (peer->reconfig_key && wpa_tdls_set_key(sm, peer) < 0) {
1799 peer->reconfig_key = 0;
1801 return wpa_sm_tdls_oper(sm, TDLS_ENABLE_LINK, peer->addr);
1808 struct wpa_tdls_peer *peer;
1823 "(Peer " MACSTR ")", MAC2STR(src_addr));
1824 for (peer = sm->tdls; peer; peer = peer->next) {
1825 if (os_memcmp(peer->addr, src_addr, ETH_ALEN) == 0)
1828 if (peer == NULL) {
1829 wpa_printf(MSG_INFO, "TDLS: No matching peer found for "
1833 if (!peer->initiator) {
1836 * same time and we accept the TPK M1 from the peer in
1843 wpa_tdls_tpk_retry_timeout_cancel(sm, peer, WLAN_TDLS_SETUP_REQUEST);
1846 wpa_tdls_disable_peer_link(sm, peer);
1858 wpa_tdls_disable_peer_link(sm, peer);
1870 wpa_tdls_disable_peer_link(sm, peer);
1875 peer->capability = WPA_GET_LE16(pos);
1907 if (copy_supp_rates(&kde, peer) < 0)
1910 if (copy_peer_ht_capab(&kde, peer) < 0)
1913 if (copy_peer_vht_capab(&kde, peer) < 0)
1916 if (copy_peer_ext_capab(&kde, peer) < 0)
1919 peer->qos_info = kde.qosinfo;
1921 peer->aid = kde.aid;
1924 peer->rsnie_p_len = 0;
1925 peer->cipher = WPA_CIPHER_NONE;
1944 if (kde.rsn_ie_len != peer->rsnie_i_len ||
1945 os_memcmp(peer->rsnie_i, kde.rsn_ie, peer->rsnie_i_len) != 0) {
1949 peer->rsnie_i, peer->rsnie_i_len);
1976 if (!os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) == 0) {
1984 os_memcpy(peer->rnonce, ftie->Anonce, WPA_NONCE_LEN);
1985 os_memcpy(peer->rsnie_p, kde.rsn_ie, kde.rsn_ie_len);
1986 peer->rsnie_p_len = kde.rsn_ie_len;
1987 peer->cipher = cipher;
1999 if (lifetime != peer->lifetime) {
2001 "TPK M2 (expected %u)", lifetime, peer->lifetime);
2006 wpa_tdls_generate_tpk(peer, sm->own_addr, sm->bssid);
2009 if (wpa_supplicant_verify_tdls_mic(2, peer, (u8 *) lnkid,
2012 wpa_tdls_del_key(sm, peer);
2013 wpa_tdls_disable_peer_link(sm, peer);
2017 if (wpa_tdls_set_key(sm, peer) < 0) {
2024 peer->reconfig_key = 1;
2028 peer->dtoken = dtoken;
2032 if (wpa_tdls_send_tpk_m3(sm, src_addr, dtoken, lnkid, peer) < 0) {
2033 wpa_tdls_disable_peer_link(sm, peer);
2037 ret = wpa_tdls_enable_link(sm, peer);
2040 wpa_tdls_do_teardown(sm, peer,
2048 wpa_tdls_disable_peer_link(sm, peer);
2056 struct wpa_tdls_peer *peer;
2068 "(Peer " MACSTR ")", MAC2STR(src_addr));
2069 for (peer = sm->tdls; peer; peer = peer->next) {
2070 if (os_memcmp(peer->addr, src_addr, ETH_ALEN) == 0)
2073 if (peer == NULL) {
2074 wpa_printf(MSG_INFO, "TDLS: No matching peer found for "
2078 wpa_tdls_tpk_retry_timeout_cancel(sm, peer, WLAN_TDLS_SETUP_RESPONSE);
2130 if (kde.rsn_ie_len != peer->rsnie_p_len ||
2131 os_memcmp(kde.rsn_ie, peer->rsnie_p, peer->rsnie_p_len) != 0) {
2137 if (!os_memcmp(peer->rnonce, ftie->Anonce, WPA_NONCE_LEN) == 0) {
2143 if (!os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) == 0) {
2159 if (lifetime != peer->lifetime) {
2161 "TPK M3 (expected %u)", lifetime, peer->lifetime);
2165 if (wpa_supplicant_verify_tdls_mic(3, peer, (u8 *) lnkid,
2167 wpa_tdls_del_key(sm, peer);
2171 if (wpa_tdls_set_key(sm, peer) < 0) {
2178 peer->reconfig_key = 1;
2182 ret = wpa_tdls_enable_link(sm, peer);
2185 wpa_tdls_do_teardown(sm, peer,
2190 wpa_tdls_disable_peer_link(sm, peer);
2212 * @peer: MAC address of the peer STA
2216 * handshake with the peer.
2220 struct wpa_tdls_peer *peer;
2241 peer = wpa_tdls_add_peer(sm, addr, NULL);
2242 if (peer == NULL)
2245 if (peer->tpk_in_progress) {
2246 wpa_printf(MSG_DEBUG, "TDLS: Setup is already in progress with the peer");
2250 peer->initiator = 1;
2252 /* add the peer to the driver as a "setup in progress" peer */
2253 wpa_sm_tdls_peer_addset(sm, peer->addr, 1, 0, 0, NULL, 0, NULL, NULL, 0,
2256 peer->tpk_in_progress = 1;
2258 if (wpa_tdls_send_tpk_m1(sm, peer) < 0) {
2259 wpa_tdls_disable_peer_link(sm, peer);
2269 struct wpa_tdls_peer *peer;
2274 for (peer = sm->tdls; peer; peer = peer->next) {
2275 if (os_memcmp(peer->addr, addr, ETH_ALEN) == 0)
2279 if (peer == NULL || !peer->tpk_success)
2287 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr);
2403 struct wpa_tdls_peer *peer;
2405 peer = sm->tdls;
2409 while (peer) {
2410 wpa_printf(MSG_DEBUG, "TDLS: Tear down peer " MACSTR,
2411 MAC2STR(peer->addr));
2413 wpa_tdls_send_teardown(sm, peer->addr,
2416 wpa_sm_tdls_oper(sm, TDLS_TEARDOWN, peer->addr);
2418 peer = peer->next;
2425 struct wpa_tdls_peer *peer, *tmp;
2427 peer = sm->tdls;
2430 while (peer) {
2432 tmp = peer->next;
2433 res = wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr);
2434 wpa_printf(MSG_DEBUG, "TDLS: Remove peer " MACSTR " (res=%d)",
2435 MAC2STR(peer->addr), res);
2436 wpa_tdls_peer_free(sm, peer);
2437 os_free(peer);
2438 peer = tmp;