Lines Matching refs:ni

77     struct ieee80211_node *ni)
107 if ((ni->ni_rsnprotos == IEEE80211_PROTO_RSN &&
109 (ni->ni_rsnprotos == IEEE80211_PROTO_WPA &&
131 if (ieee80211_is_sha256_akm(ni->ni_rsnakms)) {
134 } else if (ni->ni_rsncipher == IEEE80211_CIPHER_CCMP ||
135 ni->ni_rsngroupcipher == IEEE80211_CIPHER_CCMP) {
151 ieee80211_recv_eapol_key_req(ic, key, ni);
157 ieee80211_recv_4way_msg3(ic, key, ni);
160 ieee80211_recv_4way_msg2or4(ic, key, ni);
163 ieee80211_recv_4way_msg1(ic, key, ni);
170 ieee80211_recv_wpa_group_msg1(ic, key, ni);
172 ieee80211_recv_rsn_group_msg1(ic, key, ni);
176 ieee80211_recv_group_msg2(ic, key, ni);
188 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
204 if (ni->ni_rsn_supp_state == RSNA_SUPP_INITIALIZE) {
205 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_supp_state));
209 if (ni->ni_replaycnt_ok &&
210 BE_READ_8(key->replaycnt) <= ni->ni_replaycnt) {
242 if (ieee80211_is_8021x_akm(ni->ni_rsnakms)) {
244 pmk = ieee80211_pmksa_find(ic, ni,
248 ether_sprintf(ni->ni_macaddr)));
251 memcpy(ni->ni_pmk, pmk->pmk_key, IEEE80211_PMK_LEN);
253 memcpy(ni->ni_pmk, ic->ic_psk, IEEE80211_PMK_LEN);
254 ni->ni_flags |= IEEE80211_NODE_PMK;
257 memcpy(ni->ni_nonce, key->nonce, EAPOL_KEY_NONCE_LEN);
263 ieee80211_derive_ptk(ni->ni_rsnakms, ni->ni_pmk, ni->ni_macaddr,
264 ic->ic_myaddr, ni->ni_nonce, ic->ic_nonce, &tptk);
267 ni->ni_flags |= IEEE80211_NODE_RSN_NEW_PTK;
272 ether_sprintf(ni->ni_macaddr));
275 (void)ieee80211_send_4way_msg2(ic, ni, key->replaycnt, &tptk);
284 struct ieee80211_eapol_key *key, struct ieee80211_node *ni,
294 if (ni->ni_rsn_state != RSNA_PTKSTART &&
295 ni->ni_rsn_state != RSNA_PTKCALCNEGOTIATING) {
296 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_state));
299 ni->ni_rsn_state = RSNA_PTKCALCNEGOTIATING;
304 ieee80211_derive_ptk(ni->ni_rsnakms, ni->ni_pmk, ic->ic_myaddr,
305 ni->ni_macaddr, ni->ni_nonce, key->nonce, &tptk);
314 timeout_del(&ni->ni_eapol_to);
315 ni->ni_rsn_state = RSNA_PTKCALCNEGOTIATING_2;
316 ni->ni_rsn_retries = 0;
319 memcpy(&ni->ni_ptk, &tptk, sizeof(tptk));
325 if (ni->ni_rsnie == NULL || rsnie[1] != ni->ni_rsnie[1] ||
326 memcmp(rsnie, ni->ni_rsnie, 2 + rsnie[1]) != 0) {
327 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
329 ieee80211_node_leave(ic, ni);
336 ether_sprintf(ni->ni_macaddr));
339 (void)ieee80211_send_4way_msg3(ic, ni);
362 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
377 if (ni->ni_rsn_supp_state != RSNA_SUPP_PTKNEGOTIATING &&
378 ni->ni_rsn_supp_state != RSNA_SUPP_PTKDONE) {
379 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_supp_state));
383 if (ni->ni_replaycnt_ok &&
384 BE_READ_8(key->replaycnt) <= ni->ni_replaycnt) {
389 if (!(ni->ni_flags & IEEE80211_NODE_PMK)) {
391 ether_sprintf(ni->ni_macaddr)));
395 if (memcmp(key->nonce, ni->ni_nonce, EAPOL_KEY_NONCE_LEN) != 0) {
400 ieee80211_derive_ptk(ni->ni_rsnakms, ni->ni_pmk, ni->ni_macaddr,
412 memcpy(&ni->ni_ptk, &tptk, sizeof(tptk));
416 ieee80211_eapol_key_decrypt(key, ni->ni_ptk.kek) != 0) {
436 if (ni->ni_rsnprotos != IEEE80211_PROTO_RSN)
453 if (ni->ni_flags & IEEE80211_NODE_MFP)
460 if (ni->ni_rsnprotos !=
487 if (ni->ni_rsncipher != IEEE80211_CIPHER_USEGROUP &&
497 if (ni->ni_rsnie == NULL || rsnie1[1] != ni->ni_rsnie[1] ||
498 memcmp(rsnie1, ni->ni_rsnie, 2 + rsnie1[1]) != 0) {
511 if (rsn.rsn_akms != ni->ni_rsnakms ||
512 rsn.rsn_groupcipher != ni->ni_rsngroupcipher ||
519 ni->ni_rsnciphers = rsn.rsn_ciphers;
520 ni->ni_rsncipher = ni->ni_rsnciphers;
525 ni->ni_replaycnt = BE_READ_8(key->replaycnt);
526 ni->ni_replaycnt_ok = 1;
531 ether_sprintf(ni->ni_macaddr));
534 if (ieee80211_send_4way_msg4(ic, ni) != 0)
548 if (ni->ni_rsncipher != IEEE80211_CIPHER_USEGROUP &&
549 (ni->ni_flags & IEEE80211_NODE_RSN_NEW_PTK)) {
553 keylen = ieee80211_cipher_keylen(ni->ni_rsncipher);
561 k = &ni->ni_pairwise_key;
563 k->k_cipher = ni->ni_rsncipher;
566 memcpy(k->k_key, ni->ni_ptk.tk, k->k_len);
568 switch ((*ic->ic_set_key)(ic, ni, k)) {
578 ni->ni_flags &= ~IEEE80211_NODE_RSN_NEW_PTK;
579 ni->ni_flags &= ~IEEE80211_NODE_TXRXPROT;
580 ni->ni_flags |= IEEE80211_NODE_RXPROT;
581 } else if (ni->ni_rsncipher != IEEE80211_CIPHER_USEGROUP)
583 ic->ic_if.if_xname, ether_sprintf(ni->ni_macaddr));
589 keylen = ieee80211_cipher_keylen(ni->ni_rsngroupcipher);
600 k->k_cipher = ni->ni_rsngroupcipher;
608 switch ((*ic->ic_set_key)(ic, ni, k)) {
639 k->k_cipher = ni->ni_rsngroupmgmtcipher;
645 switch ((*ic->ic_set_key)(ic, ni, k)) {
658 ni->ni_flags |= IEEE80211_NODE_TXRXPROT;
661 ni->ni_flags |= IEEE80211_NODE_TXRXPROT;
664 ++ni->ni_key_count == 2)
669 ether_sprintf(ni->ni_macaddr)));
670 ni->ni_port_valid = 1;
673 ni->ni_assoc_fail = 0;
675 ic->ic_rsngroupcipher = ni->ni_rsngroupcipher;
680 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
692 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
699 if (ni->ni_rsn_state != RSNA_PTKINITNEGOTIATING) {
700 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_state));
707 if (ieee80211_eapol_key_check_mic(key, ni->ni_ptk.kck) != 0) {
713 timeout_del(&ni->ni_eapol_to);
714 ni->ni_rsn_state = RSNA_PTKINITDONE;
715 ni->ni_rsn_retries = 0;
717 if (ni->ni_rsncipher != IEEE80211_CIPHER_USEGROUP) {
721 k = &ni->ni_pairwise_key;
723 k->k_cipher = ni->ni_rsncipher;
725 memcpy(k->k_key, ni->ni_ptk.tk, k->k_len);
727 switch ((*ic->ic_set_key)(ic, ni, k)) {
732 IEEE80211_SEND_MGMT(ic, ni,
735 ieee80211_node_leave(ic, ni);
738 ni->ni_flags |= IEEE80211_NODE_TXRXPROT;
740 if (ic->ic_opmode != IEEE80211_M_IBSS || ++ni->ni_key_count == 2) {
742 ether_sprintf(ni->ni_macaddr)));
743 ni->ni_port_valid = 1;
749 ether_sprintf(ni->ni_macaddr));
752 if (ni->ni_rsnprotos == IEEE80211_PROTO_WPA)
753 (void)ieee80211_send_group_msg1(ic, ni);
755 ni->ni_rsn_gstate = RSNA_IDLE;
764 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
769 if (BE_READ_8(key->replaycnt) != ni->ni_replaycnt) {
800 ieee80211_recv_4way_msg2(ic, key, ni, rsnie);
802 ieee80211_recv_4way_msg4(ic, key, ni);
811 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
825 if (ni->ni_rsn_supp_state != RSNA_SUPP_PTKDONE) {
826 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_supp_state));
830 if (BE_READ_8(key->replaycnt) <= ni->ni_replaycnt) {
835 if (ieee80211_eapol_key_check_mic(key, ni->ni_ptk.kck) != 0) {
844 ieee80211_eapol_key_decrypt(key, ni->ni_ptk.kek) != 0) {
867 if (ni->ni_flags & IEEE80211_NODE_MFP)
883 keylen = ieee80211_cipher_keylen(ni->ni_rsngroupcipher);
893 k->k_cipher = ni->ni_rsngroupcipher;
901 switch ((*ic->ic_set_key)(ic, ni, k)) {
927 k->k_cipher = ni->ni_rsngroupmgmtcipher;
933 switch ((*ic->ic_set_key)(ic, ni, k)) {
946 ++ni->ni_key_count == 2)
950 ether_sprintf(ni->ni_macaddr)));
951 ni->ni_port_valid = 1;
953 ni->ni_assoc_fail = 0;
957 ni->ni_replaycnt = BE_READ_8(key->replaycnt);
962 ether_sprintf(ni->ni_macaddr));
965 (void)ieee80211_send_group_msg2(ic, ni, NULL);
968 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH, reason);
977 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
991 if (ni->ni_rsn_supp_state != RSNA_SUPP_PTKDONE) {
992 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_supp_state));
996 if (BE_READ_8(key->replaycnt) <= ni->ni_replaycnt) {
1001 if (ieee80211_eapol_key_check_mic(key, ni->ni_ptk.kck) != 0) {
1010 if (ieee80211_eapol_key_decrypt(key, ni->ni_ptk.kek) != 0) {
1016 keylen = ieee80211_cipher_keylen(ni->ni_rsngroupcipher);
1033 k->k_cipher = ni->ni_rsngroupcipher;
1041 switch ((*ic->ic_set_key)(ic, ni, k)) {
1046 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
1055 ++ni->ni_key_count == 2)
1059 ether_sprintf(ni->ni_macaddr)));
1060 ni->ni_port_valid = 1;
1062 ni->ni_assoc_fail = 0;
1066 ni->ni_replaycnt = BE_READ_8(key->replaycnt);
1071 ether_sprintf(ni->ni_macaddr));
1074 (void)ieee80211_send_group_msg2(ic, ni, k);
1083 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
1090 if (ni->ni_rsn_gstate != RSNA_REKEYNEGOTIATING) {
1092 ni->ni_rsn_gstate));
1096 if (BE_READ_8(key->replaycnt) != ni->ni_replaycnt) {
1101 if (ieee80211_eapol_key_check_mic(key, ni->ni_ptk.kck) != 0) {
1107 timeout_del(&ni->ni_eapol_to);
1108 ni->ni_rsn_gstate = RSNA_REKEYESTABLISHED;
1110 if (ni->ni_flags & IEEE80211_NODE_REKEY) {
1112 ni->ni_flags &= ~IEEE80211_NODE_REKEY;
1118 ni->ni_flags |= IEEE80211_NODE_TXRXPROT;
1120 ni->ni_rsn_gstate = RSNA_IDLE;
1121 ni->ni_rsn_retries = 0;
1126 ether_sprintf(ni->ni_macaddr));
1136 struct ieee80211_eapol_key *key, struct ieee80211_node *ni)
1145 if (ni->ni_rsn_state != RSNA_PTKINITDONE) {
1146 DPRINTF(("unexpected in state: %d\n", ni->ni_rsn_state));
1150 if (ni->ni_reqreplaycnt_ok &&
1151 BE_READ_8(key->replaycnt) <= ni->ni_reqreplaycnt) {
1158 ieee80211_eapol_key_check_mic(key, ni->ni_ptk.kck) != 0) {
1164 ni->ni_reqreplaycnt = BE_READ_8(key->replaycnt);
1165 ni->ni_reqreplaycnt_ok = 1;
1170 ni->ni_rsncipher != IEEE80211_CIPHER_TKIP) {
1172 ether_sprintf(ni->ni_macaddr)));