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, NULL, NULL);
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;
577 /* if the peer already exists, exit immediately */
578 peer = ibss_rsn_get_peer(ibss_rsn, addr);
579 if (peer)
582 peer = ibss_rsn_peer_init(ibss_rsn, addr);
583 if (peer == NULL)
593 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
594 return ibss_rsn_auth_init(ibss_rsn, peer);
596 os_get_reltime(&peer->own_auth_tx);
597 eloop_register_timeout(1, 0, ibss_rsn_auth_timeout, peer, NULL);
605 struct ibss_rsn_peer *peer, int reason)
609 if (ibss_rsn == NULL || peer == NULL)
612 already_started = ibss_rsn_is_auth_started(peer);
613 peer->authentication_status |= reason;
617 "started for peer " MACSTR, MAC2STR(peer->addr));
622 "for now-authenticated peer " MACSTR, MAC2STR(peer->addr));
624 return ibss_rsn_auth_init(ibss_rsn, peer);
630 struct ibss_rsn_peer *peer, *prev;
638 peer = ibss_rsn->peers;
639 while (peer) {
640 prev = peer;
641 peer = peer->next;
643 ibss_rsn->peers = peer;
646 /* remove specific peer */
647 wpa_printf(MSG_DEBUG, "%s: Remove specific peer " MACSTR,
650 for (prev = NULL, peer = ibss_rsn->peers; peer != NULL;
651 prev = peer, peer = peer->next) {
652 if (os_memcmp(peermac, peer->addr, ETH_ALEN) == 0) {
654 ibss_rsn->peers = peer->next;
656 prev->next = peer->next;
657 ibss_rsn_free(peer);
659 "removed a specific peer",
688 struct ibss_rsn_peer *peer, *prev;
693 peer = ibss_rsn->peers;
694 while (peer) {
695 prev = peer;
696 peer = peer->next;
751 struct ibss_rsn_peer *peer,
766 peer->authentication_status |= IBSS_RSN_AUTH_EAPOL_BY_PEER;
768 MACSTR, MAC2STR(peer->addr));
769 wpa_sm_rx_eapol(peer->supp, peer->addr, tmp, len);
771 if (ibss_rsn_is_auth_started(peer) == 0) {
774 "authenticated", MAC2STR(peer->addr));
780 "from "MACSTR, MAC2STR(peer->addr));
781 wpa_receive(ibss_rsn->auth_group, peer->auth, tmp, len);
792 struct ibss_rsn_peer *peer;
797 peer = ibss_rsn_get_peer(ibss_rsn, src_addr);
798 if (peer)
799 return ibss_rsn_process_rx_eapol(ibss_rsn, peer, buf, len);
803 * Create new IBSS peer based on an EAPOL message from the peer
806 peer = ibss_rsn_peer_init(ibss_rsn, src_addr);
807 if (peer == NULL)
810 /* assume the peer is authenticated already */
811 wpa_printf(MSG_DEBUG, "RSN: IBSS Not using IBSS Auth for peer "
813 ibss_rsn_peer_authenticated(ibss_rsn, peer,
832 struct ibss_rsn_peer *peer,
838 if (peer &&
839 peer->authentication_status & IBSS_RSN_AUTH_EAPOL_BY_PEER) {
840 if (peer->own_auth_tx.sec) {
843 os_reltime_sub(&now, &peer->own_auth_tx, &diff);
851 * A peer sent us an Authentication frame even though it already
860 peer = NULL;
863 if (!peer) {
864 peer = ibss_rsn_peer_init(ibss_rsn, addr);
865 if (!peer)
868 wpa_printf(MSG_DEBUG, "RSN: IBSS Auth started by peer " MACSTR,
876 ibss_rsn_peer_authenticated(ibss_rsn, peer, IBSS_RSN_AUTH_EAPOL_BY_US);
884 struct ibss_rsn_peer *peer;
897 peer = ibss_rsn_get_peer(ibss_rsn, header->sa);
901 ibss_rsn_handle_auth_1_of_2(ibss_rsn, peer, header->sa);
906 if (!peer) {
913 eloop_cancel_timeout(ibss_rsn_auth_timeout, peer, NULL);
916 ibss_rsn_peer_authenticated(ibss_rsn, peer,