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) {
228 wpa_sm_set_own_addr(peer->supp, own_addr);
229 wpa_sm_set_param(peer->supp, WPA_PARAM_RSN_ENABLED, 1);
230 wpa_sm_set_param(peer->supp, WPA_PARAM_PROTO, WPA_PROTO_RSN);
231 wpa_sm_set_param(peer->supp, WPA_PARAM_PAIRWISE, WPA_CIPHER_CCMP);
232 wpa_sm_set_param(peer->supp, WPA_PARAM_GROUP, WPA_CIPHER_CCMP);
233 wpa_sm_set_param(peer->supp, WPA_PARAM_KEY_MGMT, WPA_KEY_MGMT_PSK);
234 wpa_sm_set_pmk(peer->supp, psk, PMK_LEN, NULL, NULL);
236 peer->supp_ie_len = sizeof(peer->supp_ie);
237 if (wpa_sm_set_assoc_wpa_ie_default(peer->supp, peer->supp_ie,
238 &peer->supp_ie_len) < 0) {
244 wpa_sm_notify_assoc(peer->supp, peer->addr);
315 struct ibss_rsn_peer *peer;
316 peer = ibss_rsn_get_peer(ibss_rsn, addr);
317 if (peer) {
318 peer->authentication_status |=
320 ibss_check_rsn_completed(peer);
325 * initiated by the peer with highest MAC address is used.
351 struct ibss_rsn_peer *peer;
355 for (peer = ibss_rsn->peers; peer; peer = peer->next) {
356 if (peer->auth && cb(peer->auth, cb_ctx))
365 struct ibss_rsn_peer *peer, int authorized)
370 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
374 MAC2STR(peer->addr));
376 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
379 MAC2STR(peer->addr));
385 MAC2STR(peer->addr), errno);
394 struct ibss_rsn_peer *peer = ibss_rsn_get_peer(ibss_rsn, addr);
396 if (peer == NULL)
401 ibss_set_sta_authorized(ibss_rsn, peer, value);
451 struct ibss_rsn_peer *peer)
453 peer->auth = wpa_auth_sta_init(ibss_rsn->auth_group, peer->addr, NULL);
454 if (peer->auth == NULL) {
459 /* TODO: get peer RSN IE with Probe Request */
460 if (wpa_validate_wpa_ie(ibss_rsn->auth_group, peer->auth,
471 if (wpa_auth_sm_event(peer->auth, WPA_ASSOC))
474 if (wpa_auth_sta_associated(ibss_rsn->auth_group, peer->auth))
510 static int ibss_rsn_is_auth_started(struct ibss_rsn_peer * peer)
512 return peer->authentication_status &
520 struct ibss_rsn_peer *peer;
524 peer = ibss_rsn_get_peer(ibss_rsn, addr);
525 if (peer) {
526 wpa_printf(MSG_DEBUG, "RSN: IBSS Supplicant for peer "MACSTR
528 return peer;
531 wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Supplicant for peer "MACSTR,
534 peer = os_zalloc(sizeof(*peer));
535 if (peer == NULL) {
540 peer->ibss_rsn = ibss_rsn;
541 os_memcpy(peer->addr, addr, ETH_ALEN);
542 peer->authentication_status = IBSS_RSN_AUTH_NOT_AUTHENTICATED;
544 if (ibss_rsn_supp_init(peer, ibss_rsn->wpa_s->own_addr,
546 ibss_rsn_free(peer);
550 peer->next = ibss_rsn->peers;
551 ibss_rsn->peers = peer;
553 return peer;
559 struct ibss_rsn_peer *peer = eloop_ctx;
562 * Assume peer does not support Authentication exchange or the frame was
567 MACSTR " - start authenticator", MAC2STR(peer->addr));
569 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
570 ibss_rsn_auth_init(peer->ibss_rsn, peer);
576 struct ibss_rsn_peer *peer;
582 /* if the peer already exists, exit immediately */
583 peer = ibss_rsn_get_peer(ibss_rsn, addr);
584 if (peer)
587 peer = ibss_rsn_peer_init(ibss_rsn, addr);
588 if (peer == NULL)
598 peer->authentication_status |= IBSS_RSN_AUTH_BY_US;
599 return ibss_rsn_auth_init(ibss_rsn, peer);
601 os_get_reltime(&peer->own_auth_tx);
602 eloop_register_timeout(1, 0, ibss_rsn_auth_timeout, peer, NULL);
610 struct ibss_rsn_peer *peer, int reason)
614 if (ibss_rsn == NULL || peer == NULL)
617 already_started = ibss_rsn_is_auth_started(peer);
618 peer->authentication_status |= reason;
622 "started for peer " MACSTR, MAC2STR(peer->addr));
627 "for now-authenticated peer " MACSTR, MAC2STR(peer->addr));
629 return ibss_rsn_auth_init(ibss_rsn, peer);
635 struct ibss_rsn_peer *peer, *prev;
643 peer = ibss_rsn->peers;
644 while (peer) {
645 prev = peer;
646 peer = peer->next;
648 peer;
651 /* remove specific peer */
652 wpa_printf(MSG_DEBUG, "%s: Remove specific peer " MACSTR,
655 for (prev = NULL, peer = ibss_rsn->peers; peer != NULL;
656 prev = peer, peer = peer->next) {
657 if (os_memcmp(peermac, peer->addr, ETH_ALEN) == 0) {
659 ibss_rsn->peers = peer->next;
661 prev->next = peer->next;
662 ibss_rsn_free(peer);
664 "removed a specific peer",
694 struct ibss_rsn_peer *peer, *prev;
699 peer = ibss_rsn->peers;
700 while (peer) {
701 prev = peer;
702 peer = peer->next;
757 struct ibss_rsn_peer *peer,
771 peer->authentication_status |= IBSS_RSN_AUTH_EAPOL_BY_PEER;
773 MACSTR, MAC2STR(peer->addr));
774 wpa_sm_rx_eapol(peer->supp, peer->addr, tmp, len);
776 if (ibss_rsn_is_auth_started(peer) == 0) {
779 "authenticated", MAC2STR(peer->addr));
785 "from "MACSTR, MAC2STR(peer->addr));
786 wpa_receive(ibss_rsn->auth_group, peer->auth, tmp, len);
797 struct ibss_rsn_peer *peer;
802 peer = ibss_rsn_get_peer(ibss_rsn, src_addr);
803 if (peer)
804 return ibss_rsn_process_rx_eapol(ibss_rsn, peer, buf, len);
808 * Create new IBSS peer based on an EAPOL message from the peer
811 peer = ibss_rsn_peer_init(ibss_rsn, src_addr);
812 if (peer == NULL)
815 /* assume the peer is authenticated already */
816 wpa_printf(MSG_DEBUG, "RSN: IBSS Not using IBSS Auth for peer "
818 ibss_rsn_peer_authenticated(ibss_rsn, peer,
837 struct ibss_rsn_peer *peer,
843 if (peer &&
844 peer->authentication_status & (IBSS_RSN_SET_PTK_SUPP |
847 * where the peer STA has restarted and lost its key while we
849 wpa_printf(MSG_DEBUG, "RSN: Clear pairwise key for peer "
855 if (peer &&
856 peer->authentication_status & IBSS_RSN_AUTH_EAPOL_BY_PEER) {
857 if (peer->own_auth_tx.sec) {
860 os_reltime_sub(&now, &peer->own_auth_tx, &diff);
868 * A peer sent us an Authentication frame even though it already
877 peer = NULL;
880 if (!peer) {
881 peer = ibss_rsn_peer_init(ibss_rsn, addr);
882 if (!peer)
885 wpa_printf(MSG_DEBUG, "RSN: IBSS Auth started by peer " MACSTR,
893 ibss_rsn_peer_authenticated(ibss_rsn, peer, IBSS_RSN_AUTH_EAPOL_BY_US);
901 struct ibss_rsn_peer *peer;
914 peer = ibss_rsn_get_peer(ibss_rsn, header->sa);
918 ibss_rsn_handle_auth_1_of_2(ibss_rsn, peer, header->sa);
923 if (!peer) {
930 eloop_cancel_timeout(ibss_rsn_auth_timeout, peer, NULL);
933 ibss_rsn_peer_authenticated(ibss_rsn, peer,