Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching refs:peer

30 	struct ibss_rsn_peer *peer;
32 for (peer = ibss_rsn->peers; peer; peer = peer->next)
33 if (ether_addr_equal(addr, peer->addr))
35 return peer;
39 static void ibss_rsn_free(struct ibss_rsn_peer *peer)
41 eloop_cancel_timeout(ibss_rsn_auth_timeout, peer, NULL);
42 wpa_auth_sta_deinit(peer->auth);
43 wpa_sm_deinit(peer->supp);
44 os_free(peer);
50 struct ibss_rsn_peer *peer = ctx;
51 peer->supp_state = state;
57 struct ibss_rsn_peer *peer = ctx;
58 return peer->supp_state;
65 struct ibss_rsn_peer *peer = ctx;
66 struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s;
67 int encrypt = peer->authentication_status & IBSS_RSN_REPORTED_PTK;
116 struct ibss_rsn_peer *peer = ctx;
120 wpa_sm_set_ap_rsnxe(peer->supp, NULL, 0);
121 return wpa_sm_set_ap_rsn_ie(peer->supp,
130 static void ibss_check_rsn_completed(struct ibss_rsn_peer *peer)
132 struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s;
134 if ((peer->authentication_status &
138 if (peer->authentication_status & IBSS_RSN_REPORTED_PTK)
140 peer->authentication_status |= IBSS_RSN_REPORTED_PTK;
142 MAC2STR(peer->addr));
151 struct ibss_rsn_peer *peer = ctx;
160 peer->authentication_status |= IBSS_RSN_SET_PTK_SUPP;
161 ibss_check_rsn_completed(peer);
164 * initiated by the peer with highest MAC address is used.
166 if (os_memcmp(peer->ibss_rsn->wpa_s->own_addr, peer->addr,
174 addr = peer->addr;
175 return wpa_drv_set_key(peer->ibss_rsn->wpa_s, link_id, alg, addr,
183 struct ibss_rsn_peer *peer = ctx;
184 return wpa_supplicant_get_ssid(peer->ibss_rsn->wpa_s);
216 static int ibss_rsn_supp_init(struct ibss_rsn_peer *peer, const u8 *own_addr,
223 ctx->ctx = peer;
224 ctx->msg_ctx = peer->ibss_rsn->wpa_s;
236 peer->supp = wpa_sm_init(ctx);
237 if (peer->supp == NULL) {
243 wpa_sm_set_own_addr(peer->supp, own_addr);
244 wpa_sm_set_param(peer->supp, WPA_PARAM_RSN_ENABLED, 1);
245 wpa_sm_set_param(peer->supp, WPA_PARAM_PROTO, WPA_PROTO_RSN);
246 wpa_sm_set_param(peer->supp, WPA_PARAM_PAIRWISE, WPA_CIPHER_CCMP);
247 wpa_sm_set_param(peer->supp, WPA_PARAM_GROUP, WPA_CIPHER_CCMP);
248 wpa_sm_set_param(peer->supp, WPA_PARAM_KEY_MGMT, WPA_KEY_MGMT_PSK);
249 wpa_sm_set_pmk(peer->supp, psk, PMK_LEN, NULL, NULL);
251 peer->supp_ie_len = sizeof(peer->supp_ie);
252 if (wpa_sm_set_assoc_wpa_ie_default(peer->supp, peer->supp_ie,
253 &peer->supp_ie_len) < 0) {
259 wpa_sm_notify_assoc(peer->supp, peer->addr);
337 struct ibss_rsn_peer *peer;
338 peer = ibss_rsn_get_peer(ibss_rsn, addr);
339 if (peer) {
340 peer->authentication_status |=
342 ibss_check_rsn_completed(peer);
347 * initiated by the peer with highest MAC address is used.
373 struct ibss_rsn_peer *peer;
377 for (peer = ibss_rsn->peers; peer; peer = peer->next) {
378 if (peer->auth && cb(peer->auth, cb_ctx))
387 struct ibss_rsn_peer *peer, int authorized)
392 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
396 MAC2STR(peer->addr));
398 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
401 MAC2STR(peer->addr));
407 MAC2STR(peer->addr), errno);
416 struct ibss_rsn_peer *peer = ibss_rsn_get_peer(ibss_rsn, addr);
418 if (peer == NULL)
423 ibss_set_sta_authorized(ibss_rsn, peer, value);
473 struct ibss_rsn_peer *peer)
475 peer->auth = wpa_auth_sta_init(ibss_rsn->auth_group, peer->addr, NULL);
476 if (peer->auth == NULL) {
481 /* TODO: get peer RSN IE with Probe Request */
482 if (wpa_validate_wpa_ie(ibss_rsn->auth_group, peer->auth, 0,
493 if (wpa_auth_sm_event(peer->auth, WPA_ASSOC))
496 if (wpa_auth_sta_associated(ibss_rsn->auth_group, peer->auth))
528 static int ibss_rsn_is_auth_started(struct ibss_rsn_peer * peer)
530 return peer->authentication_status &
538 struct ibss_rsn_peer *peer;
542 peer = ibss_rsn_get_peer(ibss_rsn, addr);
543 if (peer) {
544 wpa_printf(MSG_DEBUG, "RSN: IBSS Supplicant for peer "MACSTR
546 return peer;
549 wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Supplicant for peer "MACSTR,
552 peer = os_zalloc(sizeof(*peer));
553 if (peer == NULL) {
558 peer->ibss_rsn = ibss_rsn;
559 os_memcpy(peer->addr, addr, ETH_ALEN);
560 peer->authentication_status = IBSS_RSN_AUTH_NOT_AUTHENTICATED;
562 if (ibss_rsn_supp_init(peer, ibss_rsn->wpa_s->own_addr,
564 ibss_rsn_free(peer);
568 peer->next = ibss_rsn->peers;
569 ibss_rsn->peers = peer;
571 return peer;
577 struct ibss_rsn_peer *peer = eloop_ctx;
580 * Assume peer does not support Authentication exchange or the frame was
585 MACSTR " - start authenticator", MAC2STR(peer->addr));
587 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
588 ibss_rsn_auth_init(peer->ibss_rsn, peer);
594 struct ibss_rsn_peer *peer;
600 /* if the peer already exists, exit immediately */
601 peer = ibss_rsn_get_peer(ibss_rsn, addr);
602 if (peer)
605 peer = ibss_rsn_peer_init(ibss_rsn, addr);
606 if (peer == NULL)
616 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
617 return ibss_rsn_auth_init(ibss_rsn, peer);
619 os_get_reltime(&peer->own_auth_tx);
620 eloop_register_timeout(1, 0, ibss_rsn_auth_timeout, peer, NULL);
628 struct ibss_rsn_peer *peer, int reason)
632 if (ibss_rsn == NULL || peer == NULL)
635 already_started = ibss_rsn_is_auth_started(peer);
636 peer->authentication_status |= reason;
640 "started for peer " MACSTR, MAC2STR(peer->addr));
645 "for now-authenticated peer " MACSTR, MAC2STR(peer->addr));
647 return ibss_rsn_auth_init(ibss_rsn, peer);
653 struct ibss_rsn_peer *peer, *prev;
661 peer = ibss_rsn->peers;
662 while (peer) {
663 prev = peer;
664 peer = peer->next;
666 ibss_rsn->peers = peer;
669 /* remove specific peer */
670 wpa_printf(MSG_DEBUG, "%s: Remove specific peer " MACSTR,
673 for (prev = NULL, peer = ibss_rsn->peers; peer != NULL;
674 prev = peer, peer = peer->next) {
675 if (ether_addr_equal(peermac, peer->addr)) {
677 ibss_rsn->peers = peer->next;
679 prev->next = peer->next;
680 ibss_rsn_free(peer);
682 "removed a specific peer",
712 struct ibss_rsn_peer *peer, *prev;
717 peer = ibss_rsn->peers;
718 while (peer) {
719 prev = peer;
720 peer = peer->next;
775 struct ibss_rsn_peer *peer,
790 peer->authentication_status |= IBSS_RSN_AUTH_EAPOL_BY_PEER;
792 MACSTR, MAC2STR(peer->addr));
793 wpa_sm_rx_eapol(peer->supp, peer->addr, tmp, len, encrypted);
795 if (ibss_rsn_is_auth_started(peer) == 0) {
798 "authenticated", MAC2STR(peer->addr));
804 "from "MACSTR, MAC2STR(peer->addr));
805 wpa_receive(ibss_rsn->auth_group, peer->auth, tmp, len);
817 struct ibss_rsn_peer *peer;
822 peer = ibss_rsn_get_peer(ibss_rsn, src_addr);
823 if (peer)
824 return ibss_rsn_process_rx_eapol(ibss_rsn, peer, buf, len,
829 * Create new IBSS peer based on an EAPOL message from the peer
832 peer = ibss_rsn_peer_init(ibss_rsn, src_addr);
833 if (peer == NULL)
836 /* assume the peer is authenticated already */
837 wpa_printf(MSG_DEBUG, "RSN: IBSS Not using IBSS Auth for peer "
839 ibss_rsn_peer_authenticated(ibss_rsn, peer,
858 struct ibss_rsn_peer *peer,
864 if (peer &&
865 peer->authentication_status & (IBSS_RSN_SET_PTK_SUPP |
868 * where the peer STA has restarted and lost its key while we
870 wpa_printf(MSG_DEBUG, "RSN: Clear pairwise key for peer "
876 if (peer &&
877 peer->authentication_status & IBSS_RSN_AUTH_EAPOL_BY_PEER) {
878 if (peer->own_auth_tx.sec) {
881 os_reltime_sub(&now, &peer->own_auth_tx, &diff);
889 * A peer sent us an Authentication frame even though it already
898 peer = NULL;
901 if (!peer) {
902 peer = ibss_rsn_peer_init(ibss_rsn, addr);
903 if (!peer)
906 wpa_printf(MSG_DEBUG, "RSN: IBSS Auth started by peer " MACSTR,
914 ibss_rsn_peer_authenticated(ibss_rsn, peer, IBSS_RSN_AUTH_EAPOL_BY_US);
922 struct ibss_rsn_peer *peer;
935 peer = ibss_rsn_get_peer(ibss_rsn, header->sa);
939 ibss_rsn_handle_auth_1_of_2(ibss_rsn, peer, header->sa);
944 if (!peer) {
951 eloop_cancel_timeout(ibss_rsn_auth_timeout, peer, NULL);
954 ibss_rsn_peer_authenticated(ibss_rsn, peer,