Home | History | Annotate | Download | only in wpa_supplicant

Lines Matching defs:ibss_rsn

21 #include "ibss_rsn.h"
27 static struct ibss_rsn_peer * ibss_rsn_get_peer(struct ibss_rsn *ibss_rsn,
32 for (peer = ibss_rsn->peers; peer; peer = peer->next)
66 struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s;
132 struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s;
166 if (os_memcmp(peer->ibss_rsn->wpa_s->own_addr, peer->addr,
175 return wpa_drv_set_key(peer->ibss_rsn->wpa_s, link_id, alg, addr,
184 return wpa_supplicant_get_ssid(peer->ibss_rsn->wpa_s);
224 ctx->msg_ctx = peer->ibss_rsn->wpa_s;
280 struct ibss_rsn *ibss_rsn = ctx;
290 return ibss_rsn->psk;
297 struct ibss_rsn *ibss_rsn = ctx;
298 struct wpa_supplicant *wpa_s = ibss_rsn->wpa_s;
320 struct ibss_rsn *ibss_rsn = ctx;
338 peer = ibss_rsn_get_peer(ibss_rsn, addr);
350 os_memcmp(ibss_rsn->wpa_s->own_addr, addr, ETH_ALEN) < 0) {
356 return wpa_drv_set_key(ibss_rsn->wpa_s, -1, alg, addr, idx,
363 struct ibss_rsn *ibss_rsn = ctx;
364 wpa_drv_sta_deauth(ibss_rsn->wpa_s, addr, reason);
372 struct ibss_rsn *ibss_rsn = ctx;
377 for (peer = ibss_rsn->peers; peer; peer = peer->next) {
386 static void ibss_set_sta_authorized(struct ibss_rsn *ibss_rsn,
392 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
398 res = wpa_drv_sta_set_flags(ibss_rsn->wpa_s, peer->addr,
415 struct ibss_rsn *ibss_rsn = ctx;
416 struct ibss_rsn_peer *peer = ibss_rsn_get_peer(ibss_rsn, addr);
423 ibss_set_sta_authorized(ibss_rsn, peer, value);
433 static int ibss_rsn_auth_init_group(struct ibss_rsn *ibss_rsn,
460 ibss_rsn->auth_group = wpa_init(own_addr, &conf, &cb, ibss_rsn);
461 if (ibss_rsn->auth_group == NULL) {
466 wpa_init_keys(ibss_rsn->auth_group);
472 static int ibss_rsn_auth_init(struct ibss_rsn *ibss_rsn,
475 peer->auth = wpa_auth_sta_init(ibss_rsn->auth_group, peer->addr, NULL);
482 if (wpa_validate_wpa_ie(ibss_rsn->auth_group, peer->auth, 0,
496 if (wpa_auth_sta_associated(ibss_rsn->auth_group, peer->auth))
503 static int ibss_rsn_send_auth(struct ibss_rsn *ibss_rsn, const u8 *da, int seq)
507 struct wpa_supplicant *wpa_s = ibss_rsn->wpa_s;
536 ibss_rsn_peer_init(struct ibss_rsn *ibss_rsn, const u8 *addr)
539 if (ibss_rsn == NULL)
542 peer = ibss_rsn_get_peer(ibss_rsn, addr);
558 peer->ibss_rsn = ibss_rsn;
562 if (ibss_rsn_supp_init(peer, ibss_rsn->wpa_s->own_addr,
563 ibss_rsn->psk) < 0) {
568 peer->next = ibss_rsn->peers;
569 ibss_rsn->peers = peer;
588 ibss_rsn_auth_init(peer->ibss_rsn, peer);
592 int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr)
597 if (!ibss_rsn)
601 peer = ibss_rsn_get_peer(ibss_rsn, addr);
605 peer = ibss_rsn_peer_init(ibss_rsn, addr);
610 res = ibss_rsn_send_auth(ibss_rsn, addr, 1);
617 return ibss_rsn_auth_init(ibss_rsn, peer);
627 static int ibss_rsn_peer_authenticated(struct ibss_rsn *ibss_rsn,
632 if (ibss_rsn == NULL || peer == NULL)
647 return ibss_rsn_auth_init(ibss_rsn, peer);
651 void ibss_rsn_stop(struct ibss_rsn *ibss_rsn, const u8 *peermac)
655 if (ibss_rsn == NULL)
661 peer = ibss_rsn->peers;
666 ibss_rsn->peers = peer;
673 for (prev = NULL, peer = ibss_rsn->peers; peer != NULL;
677 ibss_rsn->peers = peer->next;
691 struct ibss_rsn * ibss_rsn_init(struct wpa_supplicant *wpa_s,
694 struct ibss_rsn *ibss_rsn;
696 ibss_rsn = os_zalloc(sizeof(*ibss_rsn));
697 if (ibss_rsn == NULL)
699 ibss_rsn->wpa_s = wpa_s;
701 if (ibss_rsn_auth_init_group(ibss_rsn, wpa_s->own_addr, ssid) < 0) {
702 ibss_rsn_deinit(ibss_rsn);
706 return ibss_rsn;
710 void ibss_rsn_deinit(struct ibss_rsn *ibss_rsn)
714 if (ibss_rsn == NULL)
717 peer = ibss_rsn->peers;
724 if (ibss_rsn->auth_group)
725 wpa_deinit(ibss_rsn->auth_group);
726 os_free(ibss_rsn);
774 static int ibss_rsn_process_rx_eapol(struct ibss_rsn *ibss_rsn,
805 wpa_receive(ibss_rsn->auth_group, peer->auth, tmp, len);
813 int ibss_rsn_rx_eapol(struct ibss_rsn *ibss_rsn, const u8 *src_addr,
819 if (ibss_rsn == NULL)
822 peer = ibss_rsn_get_peer(ibss_rsn, src_addr);
824 return ibss_rsn_process_rx_eapol(ibss_rsn, peer, buf, len,
832 peer = ibss_rsn_peer_init(ibss_rsn, src_addr);
839 ibss_rsn_peer_authenticated(ibss_rsn, peer,
842 return ibss_rsn_process_rx_eapol(ibss_rsn, ibss_rsn->peers,
849 void ibss_rsn_set_psk(struct ibss_rsn *ibss_rsn, const u8 *psk)
851 if (ibss_rsn == NULL)
853 os_memcpy(ibss_rsn->psk, psk, PMK_LEN);
857 static void ibss_rsn_handle_auth_1_of_2(struct ibss_rsn *ibss_rsn,
872 wpa_drv_set_key(ibss_rsn->wpa_s, -1, WPA_ALG_NONE, addr, 0, 0,
897 ibss_rsn_stop(ibss_rsn, addr);
902 peer = ibss_rsn_peer_init(ibss_rsn, addr);
912 ibss_rsn_send_auth(ibss_rsn, addr, 2);
914 ibss_rsn_peer_authenticated(ibss_rsn, peer, IBSS_RSN_AUTH_EAPOL_BY_US);
918 void ibss_rsn_handle_auth(struct ibss_rsn *ibss_rsn, const u8 *auth_frame,
928 if (ibss_rsn == NULL || len < auth_length)
935 peer = ibss_rsn_get_peer(ibss_rsn, header->sa);
939 ibss_rsn_handle_auth_1_of_2(ibss_rsn, peer, header->sa);
954 ibss_rsn_peer_authenticated(ibss_rsn, peer,