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 (os_memcmp(addr, peer->addr, ETH_ALEN) == 0)
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;
110 struct ibss_rsn_peer *peer = ctx;
114 return wpa_sm_set_ap_rsn_ie(peer->supp,
123 static void ibss_check_rsn_completed(struct ibss_rsn_peer *peer)
125 struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s;
127 if ((peer->authentication_status &
131 if (peer->authentication_status & IBSS_RSN_REPORTED_PTK)
133 peer->authentication_status |= IBSS_RSN_REPORTED_PTK;
135 MAC2STR(peer->addr));
144 struct ibss_rsn_peer *peer = ctx;
153 peer->authentication_status |= IBSS_RSN_SET_PTK_SUPP;
154 ibss_check_rsn_completed(peer);
157 * initiated by the peer with highest MAC address is used.
159 if (os_memcmp(peer->ibss_rsn->wpa_s->own_addr, peer->addr,
167 addr = peer->addr;
168 return wpa_drv_set_key(peer->ibss_rsn->wpa_s, alg, addr, key_idx,
175 struct ibss_rsn_peer *peer = ctx;
176 return wpa_supplicant_get_ssid(peer->ibss_rsn->wpa_s);
202 static int ibss_rsn_supp_init(struct ibss_rsn_peer *peer, const u8 *own_addr,
209 ctx->ctx = peer;
210 ctx->msg_ctx = peer->ibss_rsn->wpa_s;
221 peer->supp = wpa_sm_init(ctx);
222 if (peer->supp == NULL) {
227 wpa_sm_set_own_addr(peer->supp, own_addr);
228 wpa_sm_set_param(peer->supp, WPA_PARAM_RSN_ENABLED, 1);
229 wpa_sm_set_param(peer->supp, WPA_PARAM_PROTO, WPA_PROTO_RSN);
230 wpa_sm_set_param(peer->supp, WPA_PARAM_PAIRWISE, WPA_CIPHER_CCMP);
231 wpa_sm_set_param(peer->supp, WPA_PARAM_GROUP, WPA_CIPHER_CCMP);
232 wpa_sm_set_param(peer->supp, WPA_PARAM_KEY_MGMT, WPA_KEY_MGMT_PSK);
233 wpa_sm_set_pmk(peer->supp, psk, PMK_LEN);
235 peer->supp_ie_len = sizeof(peer->supp_ie);
236 if (wpa_sm_set_assoc_wpa_ie_default(peer->supp, peer->supp_ie,
237 &peer->supp_ie_len) < 0) {
243 wpa_sm_notify_assoc(peer->supp, peer->addr);
310 struct ibss_rsn_peer *peer;
311 peer = ibss_rsn_get_peer(ibss_rsn, addr);
312 if (peer) {
313 peer->authentication_status |=
315 ibss_check_rsn_completed(peer);
320 * initiated by the peer with highest MAC address is used.
346 struct ibss_rsn_peer *peer;
350 for (peer = ibss_rsn->peers; peer; peer = peer->next) {
351 if (peer->auth && cb(peer->auth, cb_ctx))
360 struct ibss_rsn_peer *peer, int authorized)
365 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
369 MAC2STR(peer->addr));
371 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
374 MAC2STR(peer->addr));
380 MAC2STR(peer->addr), errno);
389 struct ibss_rsn_peer *peer = ibss_rsn_get_peer(ibss_rsn, addr);
391 if (peer == NULL)
396 ibss_set_sta_authorized(ibss_rsn, peer, value);
446 struct ibss_rsn_peer *peer)
448 peer->auth = wpa_auth_sta_init(ibss_rsn->auth_group, peer->addr, NULL);
449 if (peer->auth == NULL) {
454 /* TODO: get peer RSN IE with Probe Request */
455 if (wpa_validate_wpa_ie(ibss_rsn->auth_group, peer->auth,
466 if (wpa_auth_sm_event(peer->auth, WPA_ASSOC))
469 if (wpa_auth_sta_associated(ibss_rsn->auth_group, peer->auth))
505 static int ibss_rsn_is_auth_started(struct ibss_rsn_peer * peer)
507 return peer->authentication_status &
515 struct ibss_rsn_peer *peer;
519 peer = ibss_rsn_get_peer(ibss_rsn, addr);
520 if (peer) {
521 wpa_printf(MSG_DEBUG, "RSN: IBSS Supplicant for peer "MACSTR
523 return peer;
526 wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Supplicant for peer "MACSTR,
529 peer = os_zalloc(sizeof(*peer));
530 if (peer == NULL) {
535 peer->ibss_rsn = ibss_rsn;
536 os_memcpy(peer->addr, addr, ETH_ALEN);
537 peer->authentication_status = IBSS_RSN_AUTH_NOT_AUTHENTICATED;
539 if (ibss_rsn_supp_init(peer, ibss_rsn->wpa_s->own_addr,
541 ibss_rsn_free(peer);
545 peer->next = ibss_rsn->peers;
546 ibss_rsn->peers = peer;
548 return peer;
554 struct ibss_rsn_peer *peer = eloop_ctx;
557 * Assume peer does not support Authentication exchange or the frame was
562 MACSTR " - start authenticator", MAC2STR(peer->addr));
564 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
565 ibss_rsn_auth_init(peer->ibss_rsn, peer);
571 struct ibss_rsn_peer *peer;
574 /* if the peer already exists, exit immediately */
575 peer = ibss_rsn_get_peer(ibss_rsn, addr);
576 if (peer)
579 peer = ibss_rsn_peer_init(ibss_rsn, addr);
580 if (peer == NULL)
590 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
591 return ibss_rsn_auth_init(ibss_rsn, peer);
593 os_get_time(&peer->own_auth_tx);
594 eloop_register_timeout(1, 0, ibss_rsn_auth_timeout, peer, NULL);
602 struct ibss_rsn_peer *peer, int reason)
606 if (ibss_rsn == NULL || peer == NULL)
609 already_started = ibss_rsn_is_auth_started(peer);
610 peer->authentication_status |= reason;
614 "started for peer " MACSTR, MAC2STR(peer->addr));
619 "for now-authenticated peer " MACSTR, MAC2STR(peer->addr));
621 return ibss_rsn_auth_init(ibss_rsn, peer);
627 struct ibss_rsn_peer *peer, *prev;
635 peer = ibss_rsn->peers;
636 while (peer) {
637 prev = peer;
638 peer = peer->next;
640 ibss_rsn->peers = peer;
643 /* remove specific peer */
644 wpa_printf(MSG_DEBUG, "%s: Remove specific peer " MACSTR,
647 for (prev = NULL, peer = ibss_rsn->peers; peer != NULL;
648 prev = peer, peer = peer->next) {
649 if (os_memcmp(peermac, peer->addr, ETH_ALEN) == 0) {
651 ibss_rsn->peers = peer->next;
653 prev->next = peer->next;
654 ibss_rsn_free(peer);
656 "removed a specific peer",
685 struct ibss_rsn_peer *peer, *prev;
690 peer = ibss_rsn->peers;
691 while (peer) {
692 prev = peer;
693 peer = peer->next;
747 struct ibss_rsn_peer *peer,
762 peer->authentication_status |= IBSS_RSN_AUTH_EAPOL_BY_PEER;
764 MACSTR, MAC2STR(peer->addr));
765 wpa_sm_rx_eapol(peer->supp, peer->addr, tmp, len);
767 if (ibss_rsn_is_auth_started(peer) == 0) {
770 "authenticated", MAC2STR(peer->addr));
776 "from "MACSTR, MAC2STR(peer->addr));
777 wpa_receive(ibss_rsn->auth_group, peer->auth, tmp, len);
788 struct ibss_rsn_peer *peer;
793 peer = ibss_rsn_get_peer(ibss_rsn, src_addr);
794 if (peer)
795 return ibss_rsn_process_rx_eapol(ibss_rsn, peer, buf, len);
799 * Create new IBSS peer based on an EAPOL message from the peer
802 peer = ibss_rsn_peer_init(ibss_rsn, src_addr);
803 if (peer == NULL)
806 /* assume the peer is authenticated already */
807 wpa_printf(MSG_DEBUG, "RSN: IBSS Not using IBSS Auth for peer "
809 ibss_rsn_peer_authenticated(ibss_rsn, peer,
828 struct ibss_rsn_peer *peer,
834 if (peer &&
835 peer->authentication_status & IBSS_RSN_AUTH_EAPOL_BY_PEER) {
836 if (peer->own_auth_tx.sec) {
839 os_time_sub(&now, &peer->own_auth_tx, &diff);
847 * A peer sent us an Authentication frame even though it already
856 peer = NULL;
859 if (!peer) {
860 peer = ibss_rsn_peer_init(ibss_rsn, addr);
861 if (!peer)
864 wpa_printf(MSG_DEBUG, "RSN: IBSS Auth started by peer " MACSTR,
872 ibss_rsn_peer_authenticated(ibss_rsn, peer, IBSS_RSN_AUTH_EAPOL_BY_US);
880 struct ibss_rsn_peer *peer;
893 peer = ibss_rsn_get_peer(ibss_rsn, header->sa);
897 ibss_rsn_handle_auth_1_of_2(ibss_rsn, peer, header->sa);
902 if (!peer) {
909 eloop_cancel_timeout(ibss_rsn_auth_timeout, peer, NULL);
912 ibss_rsn_peer_authenticated(ibss_rsn, peer,