Lines Matching +full:mic +full:- +full:max +full:- +full:freq

2  * WPA Supplicant - driver interaction with BSD net80211 layer
85 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_get_drvindex()
86 if (drv->ifindex == ifindex) in bsd_get_drvindex()
98 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_get_drvname()
99 if (os_strcmp(drv->ifname, ifname) == 0) in bsd_get_drvname()
111 if (drv->ifindex == 0 || drv->if_removed) in bsd_set80211()
112 return -1; in bsd_set80211()
115 os_strlcpy(ireq.i_name, drv->ifname, sizeof(ireq.i_name)); in bsd_set80211()
121 if (ioctl(drv->global->sock, SIOCS80211, &ireq) < 0) { in bsd_set80211()
125 return -1; in bsd_set80211()
137 os_strlcpy(ireq->i_name, drv->ifname, sizeof(ireq->i_name)); in bsd_get80211()
138 ireq->i_type = op; in bsd_get80211()
139 ireq->i_len = arg_len; in bsd_get80211()
140 ireq->i_data = arg; in bsd_get80211()
142 if (ioctl(drv->global->sock, SIOCG80211, ireq) < 0) { in bsd_get80211()
143 int level = drv->if_removed ? MSG_DEBUG : MSG_ERROR; in bsd_get80211()
147 return -1; in bsd_get80211()
158 return -1; in get80211var()
183 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_get_ssid()
185 if (ioctl(drv->global->sock, SIOCG80211NWID, &ifr) < 0 || in bsd_get_ssid()
187 return -1; in bsd_get_ssid()
206 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_set_ssid()
208 return ioctl(drv->global->sock, SIOCS80211NWID, &ifr); in bsd_set_ssid()
221 os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name)); in bsd_get_if_media()
223 if (ioctl(drv->global->sock, SIOCGIFMEDIA, &ifmr) < 0) { in bsd_get_if_media()
226 return -1; in bsd_get_if_media()
239 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_set_if_media()
242 if (ioctl(drv->global->sock, SIOCSIFMEDIA, &ifr) < 0) { in bsd_set_if_media()
245 return -1; in bsd_set_if_media()
257 return -1; in bsd_set_mediaopt()
261 return -1; in bsd_set_mediaopt()
303 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_ctrl_iface()
305 if (ioctl(drv->global->sock, SIOCGIFFLAGS, &ifr) < 0) { in bsd_ctrl_iface()
308 return -1; in bsd_ctrl_iface()
310 drv->flags = ifr.ifr_flags; in bsd_ctrl_iface()
323 if (ioctl(drv->global->sock, SIOCSIFFLAGS, &ifr) < 0) { in bsd_ctrl_iface()
326 return -1; in bsd_ctrl_iface()
330 __func__, drv->ifname, enable, ((ifr.ifr_flags & IFF_UP) != 0)); in bsd_ctrl_iface()
332 drv->flags = ifr.ifr_flags; in bsd_ctrl_iface()
337 __func__, drv->ifname, enable, ((ifr.ifr_flags & IFF_UP) != 0)); in bsd_ctrl_iface()
348 enum wpa_alg alg = params->alg; in bsd_set_key()
349 const u8 *addr = params->addr; in bsd_set_key()
350 int key_idx = params->key_idx; in bsd_set_key()
351 int set_tx = params->set_tx; in bsd_set_key()
352 const u8 *seq = params->seq; in bsd_set_key()
353 size_t seq_len = params->seq_len; in bsd_set_key()
354 const u8 *key = params->key; in bsd_set_key()
355 size_t key_len = params->key_len; in bsd_set_key()
389 return -1; in bsd_set_key()
421 if (drv->opmode == IEEE80211_M_IBSS || in bsd_set_key()
422 drv->opmode == IEEE80211_M_AHDEMO) in bsd_set_key()
436 keyrsc[WPA_KEY_RSC_LEN - i - 1] = seq[i]; in bsd_set_key()
451 { "WEP", "TKIP", "AES-OCB", "AES-CCM", "CKIP", "NONE" }; in bsd_configure_wpa()
454 switch (params->wpa_group) { in bsd_configure_wpa()
478 params->wpa_group); in bsd_configure_wpa()
479 return -1; in bsd_configure_wpa()
487 return -1; in bsd_configure_wpa()
491 v = (params->wpa_group == WPA_CIPHER_WEP104 ? 13 : 5); in bsd_configure_wpa()
495 return -1; in bsd_configure_wpa()
500 if (params->wpa_pairwise & WPA_CIPHER_BIP_CMAC_128) in bsd_configure_wpa()
502 if (params->wpa_pairwise & WPA_CIPHER_GCMP) in bsd_configure_wpa()
504 if (params->wpa_pairwise & WPA_CIPHER_CCMP) in bsd_configure_wpa()
506 if (params->wpa_pairwise & WPA_CIPHER_TKIP) in bsd_configure_wpa()
508 if (params->wpa_pairwise & WPA_CIPHER_NONE) in bsd_configure_wpa()
514 return -1; in bsd_configure_wpa()
518 __func__, params->wpa_key_mgmt); in bsd_configure_wpa()
520 params->wpa_key_mgmt)) { in bsd_configure_wpa()
523 params->wpa_key_mgmt); in bsd_configure_wpa()
524 return -1; in bsd_configure_wpa()
528 if (params->rsn_preauth) in bsd_configure_wpa()
531 __func__, params->rsn_preauth); in bsd_configure_wpa()
535 return -1; in bsd_configure_wpa()
539 wpa_printf(MSG_DEBUG, "%s: enable WPA= 0x%x", __func__, params->wpa); in bsd_configure_wpa()
540 if (set80211param(priv, IEEE80211_IOC_WPA, params->wpa)) { in bsd_configure_wpa()
541 wpa_printf(MSG_INFO, "Unable to set WPA to %u", params->wpa); in bsd_configure_wpa()
542 return -1; in bsd_configure_wpa()
550 wpa_printf(MSG_DEBUG, "%s: enabled=%d", __func__, params->enabled); in bsd_set_ieee8021x()
552 if (!params->enabled) { in bsd_set_ieee8021x()
557 if (!params->wpa && !params->ieee802_1x) { in bsd_set_ieee8021x()
560 return -1; in bsd_set_ieee8021x()
562 if (params->wpa && bsd_configure_wpa(priv, params) != 0) { in bsd_set_ieee8021x()
565 return -1; in bsd_set_ieee8021x()
568 (params->wpa ? IEEE80211_AUTH_WPA : IEEE80211_AUTH_8021X))) { in bsd_set_ieee8021x()
571 return -1; in bsd_set_ieee8021x()
601 drv_event_assoc(ctx, addr, iebuf, ielen, NULL, 0, NULL, -1, 0); in bsd_new_sta()
612 return l2_packet_send(drv->sock_xmit, addr, ETH_P_EAPOL, data, in bsd_send_eapol()
617 bsd_set_freq(void *priv, struct hostapd_freq_params *freq) in bsd_set_freq() argument
624 int channel = freq->channel; in bsd_set_freq()
628 freq->ht_enabled ? IFM_IEEE80211_11NG : in bsd_set_freq()
634 freq->vht_enabled ? IFM_IEEE80211_VHT5G : in bsd_set_freq()
635 freq->ht_enabled ? IFM_IEEE80211_11NA : in bsd_set_freq()
641 return -1; in bsd_set_freq()
646 os_strlcpy(creq.i_name, drv->ifname, sizeof(creq.i_name)); in bsd_set_freq()
648 return ioctl(drv->global->sock, SIOCS80211CHANNEL, &creq); in bsd_set_freq()
670 char event_buf[2048]; /* max size of a single route(4) msg */ in bsd_route_overflow()
681 } while (n != -1 || errno == ENOBUFS); in bsd_route_overflow()
683 if (getifaddrs(&ifaddrs) == -1) { in bsd_route_overflow()
690 for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { in bsd_route_overflow()
691 if (ifa->ifa_addr == NULL || in bsd_route_overflow()
692 ifa->ifa_addr->sa_family != AF_LINK) in bsd_route_overflow()
694 sdl = (struct sockaddr_dl *) (void *) ifa->ifa_addr; in bsd_route_overflow()
695 drv = bsd_get_drvname(global, ifa->ifa_name); in bsd_route_overflow()
697 (drv->ifindex != sdl->sdl_index || drv->if_removed)) { in bsd_route_overflow()
700 drv->ifname); in bsd_route_overflow()
701 drv->ifindex = sdl->sdl_index; in bsd_route_overflow()
702 drv->if_removed = 0; in bsd_route_overflow()
704 os_strlcpy(event.interface_status.ifname, ifa->ifa_name, in bsd_route_overflow()
706 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
710 (drv = bsd_get_drvindex(global, sdl->sdl_index)) != NULL) { in bsd_route_overflow()
714 drv->ifname); in bsd_route_overflow()
715 drv->if_removed = 1; in bsd_route_overflow()
717 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
719 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
725 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_route_overflow()
726 for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { in bsd_route_overflow()
727 if (ifa->ifa_addr == NULL || in bsd_route_overflow()
728 ifa->ifa_addr->sa_family != AF_LINK) in bsd_route_overflow()
730 sdl = (struct sockaddr_dl *) (void *) ifa->ifa_addr; in bsd_route_overflow()
731 if (os_strcmp(drv->ifname, ifa->ifa_name) == 0) in bsd_route_overflow()
734 if (ifa == NULL && !drv->if_removed) { in bsd_route_overflow()
737 drv->ifname); in bsd_route_overflow()
738 drv->if_removed = 1; in bsd_route_overflow()
740 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
742 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
748 if ((ifa->ifa_flags & IFF_UP) == 0 && in bsd_route_overflow()
749 (drv->flags & IFF_UP) != 0) { in bsd_route_overflow()
751 drv->ifname); in bsd_route_overflow()
752 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_route_overflow()
754 } else if ((ifa->ifa_flags & IFF_UP) != 0 && in bsd_route_overflow()
755 (drv->flags & IFF_UP) == 0) { in bsd_route_overflow()
757 drv->ifname); in bsd_route_overflow()
758 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_route_overflow()
761 drv->flags = ifa->ifa_flags; in bsd_route_overflow()
771 char event_buf[2048]; /* max size of a single route(4) msg */ in bsd_wireless_event_receive()
778 struct ieee80211_michael_event *mic; in bsd_wireless_event_receive() local
796 if (rtm->rtm_version != RTM_VERSION) { in bsd_wireless_event_receive()
798 rtm->rtm_version); in bsd_wireless_event_receive()
802 switch (rtm->rtm_type) { in bsd_wireless_event_receive()
805 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
808 switch (ifan->ifan_what) { in bsd_wireless_event_receive()
811 if (drv->is_ap) in bsd_wireless_event_receive()
813 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, NULL); in bsd_wireless_event_receive()
816 if (drv->is_ap) in bsd_wireless_event_receive()
818 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL); in bsd_wireless_event_receive()
821 if (drv->is_ap) in bsd_wireless_event_receive()
823 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, in bsd_wireless_event_receive()
828 drv_event_disassoc(drv->ctx, leave->iev_addr); in bsd_wireless_event_receive()
835 bsd_new_sta(drv, drv->ctx, join->iev_addr); in bsd_wireless_event_receive()
841 mic = (struct ieee80211_michael_event *) &ifan[1]; in bsd_wireless_event_receive()
843 "Michael MIC failure wireless event: " in bsd_wireless_event_receive()
844 "keyix=%u src_addr=" MACSTR, mic->iev_keyix, in bsd_wireless_event_receive()
845 MAC2STR(mic->iev_src)); in bsd_wireless_event_receive()
848 !IEEE80211_IS_MULTICAST(mic->iev_dst); in bsd_wireless_event_receive()
849 event.michael_mic_failure.src = mic->iev_src; in bsd_wireless_event_receive()
850 wpa_supplicant_event(drv->ctx, in bsd_wireless_event_receive()
857 switch (ifan->ifan_what) { in bsd_wireless_event_receive()
859 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
861 drv->if_removed = 1; in bsd_wireless_event_receive()
865 drv = bsd_get_drvname(global, ifan->ifan_name); in bsd_wireless_event_receive()
867 drv->ifindex = ifan->ifan_index; in bsd_wireless_event_receive()
868 drv->if_removed = 0; in bsd_wireless_event_receive()
877 ifan->ifan_name, in bsd_wireless_event_receive()
878 ifan->ifan_what == IFAN_DEPARTURE ? in bsd_wireless_event_receive()
880 os_strlcpy(event.interface_status.ifname, ifan->ifan_name, in bsd_wireless_event_receive()
883 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_wireless_event_receive()
889 if (ifan->ifan_what == IFAN_DEPARTURE) in bsd_wireless_event_receive()
890 drv->ifindex = 0; in bsd_wireless_event_receive()
892 wpa_supplicant_event_global(global->ctx, in bsd_wireless_event_receive()
899 drv = bsd_get_drvindex(global, ifm->ifm_index); in bsd_wireless_event_receive()
902 if (((ifm->ifm_flags & IFF_UP) == 0 || in bsd_wireless_event_receive()
903 (ifm->ifm_flags & IFF_RUNNING) == 0) && in bsd_wireless_event_receive()
904 (drv->flags & IFF_UP) != 0 && in bsd_wireless_event_receive()
905 (drv->flags & IFF_RUNNING) != 0) { in bsd_wireless_event_receive()
907 drv->ifname); in bsd_wireless_event_receive()
908 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_wireless_event_receive()
910 } else if ((ifm->ifm_flags & IFF_UP) != 0 && in bsd_wireless_event_receive()
911 (ifm->ifm_flags & IFF_RUNNING) != 0 && in bsd_wireless_event_receive()
912 ((drv->flags & IFF_UP) == 0 || in bsd_wireless_event_receive()
913 (drv->flags & IFF_RUNNING) == 0)) { in bsd_wireless_event_receive()
915 drv->ifname); in bsd_wireless_event_receive()
916 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_wireless_event_receive()
919 drv->flags = ifm->ifm_flags; in bsd_wireless_event_receive()
975 return -1; in bsd_get_seqnum()
988 seq[i] = tmp[WPA_KEY_RSC_LEN - i - 1]; in bsd_get_seqnum()
1005 -1); in bsd_flush()
1018 /* XXX? do packets counts include non-data frames? */ in bsd_read_sta_driver_data()
1019 data->rx_packets = stats.is_stats.ns_rx_data; in bsd_read_sta_driver_data()
1020 data->rx_bytes = stats.is_stats.ns_rx_bytes; in bsd_read_sta_driver_data()
1021 data->tx_packets = stats.is_stats.ns_tx_data; in bsd_read_sta_driver_data()
1022 data->tx_bytes = stats.is_stats.ns_tx_bytes; in bsd_read_sta_driver_data()
1047 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1061 drv->ifindex = if_nametoindex(params->ifname); in bsd_init()
1062 if (drv->ifindex == 0) { in bsd_init()
1064 __func__, params->ifname); in bsd_init()
1068 drv->ctx = hapd; in bsd_init()
1069 drv->is_ap = 1; in bsd_init()
1070 drv->global = params->global_priv; in bsd_init()
1071 os_strlcpy(drv->ifname, params->ifname, sizeof(drv->ifname)); in bsd_init()
1073 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in bsd_init()
1075 if (drv->sock_xmit == NULL) in bsd_init()
1077 if (l2_packet_get_own_addr(drv->sock_xmit, params->own_addr)) in bsd_init()
1090 dl_list_add(&drv->global->ifaces, &drv->list); in bsd_init()
1094 if (drv->sock_xmit != NULL) in bsd_init()
1095 l2_packet_deinit(drv->sock_xmit); in bsd_init()
1106 if (drv->ifindex != 0) in bsd_deinit()
1108 if (drv->sock_xmit != NULL) in bsd_deinit()
1109 l2_packet_deinit(drv->sock_xmit); in bsd_deinit()
1118 int authorized = -1; in bsd_set_sta_authorized()
1141 return -1; in get80211param()
1152 os_strlcpy(bs.i_name, drv->ifname, sizeof(bs.i_name)); in wpa_driver_bsd_get_bssid()
1153 if (ioctl(drv->global->sock, SIOCG80211BSSID, &bs) < 0) in wpa_driver_bsd_get_bssid()
1154 return -1; in wpa_driver_bsd_get_bssid()
1159 bssid, IEEE80211_ADDR_LEN) < 0 ? -1 : 0; in wpa_driver_bsd_get_bssid()
1190 ret = -1; in wpa_driver_bsd_set_wpa_internal()
1192 ret = -1; in wpa_driver_bsd_set_wpa_internal()
1194 ret = -1; in wpa_driver_bsd_set_wpa_internal()
1250 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1262 return -1; in wpa_driver_bsd_set_rsn_wpa_ie()
1264 privacy = !(params->pairwise_suite == WPA_CIPHER_NONE && in wpa_driver_bsd_set_rsn_wpa_ie()
1265 params->group_suite == WPA_CIPHER_NONE && in wpa_driver_bsd_set_rsn_wpa_ie()
1266 params->key_mgmt_suite == WPA_KEY_MGMT_NONE); in wpa_driver_bsd_set_rsn_wpa_ie()
1271 return -1; in wpa_driver_bsd_set_rsn_wpa_ie()
1276 return -1; in wpa_driver_bsd_set_rsn_wpa_ie()
1293 , (unsigned int) params->ssid_len, params->ssid in wpa_driver_bsd_associate()
1294 , (unsigned int) params->wpa_ie_len in wpa_driver_bsd_associate()
1295 , params->pairwise_suite in wpa_driver_bsd_associate()
1296 , params->group_suite in wpa_driver_bsd_associate()
1297 , params->key_mgmt_suite in wpa_driver_bsd_associate()
1300 switch (params->mode) { in wpa_driver_bsd_associate()
1315 return -1; in wpa_driver_bsd_associate()
1320 return -1; in wpa_driver_bsd_associate()
1323 if (params->mode == IEEE80211_MODE_AP) { in wpa_driver_bsd_associate()
1324 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in wpa_driver_bsd_associate()
1326 if (drv->sock_xmit == NULL) in wpa_driver_bsd_associate()
1327 return -1; in wpa_driver_bsd_associate()
1328 drv->is_ap = 1; in wpa_driver_bsd_associate()
1332 if (wpa_driver_bsd_set_drop_unencrypted(drv, params->drop_unencrypted) in wpa_driver_bsd_associate()
1334 ret = -1; in wpa_driver_bsd_associate()
1335 if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0) in wpa_driver_bsd_associate()
1336 ret = -1; in wpa_driver_bsd_associate()
1338 if (params->wpa_ie_len) { in wpa_driver_bsd_associate()
1339 rsn_ie = get_ie(params->wpa_ie, params->wpa_ie_len, in wpa_driver_bsd_associate()
1344 return -1; in wpa_driver_bsd_associate()
1347 wpa_ie = get_vendor_ie(params->wpa_ie, in wpa_driver_bsd_associate()
1348 params->wpa_ie_len, WPA_IE_VENDOR_TYPE); in wpa_driver_bsd_associate()
1352 return -1; in wpa_driver_bsd_associate()
1362 return -1; in wpa_driver_bsd_associate()
1366 if (params->ssid != NULL) in wpa_driver_bsd_associate()
1367 os_memcpy(mlme.im_ssid, params->ssid, params->ssid_len); in wpa_driver_bsd_associate()
1368 mlme.im_ssid_len = params->ssid_len; in wpa_driver_bsd_associate()
1369 if (params->bssid != NULL) in wpa_driver_bsd_associate()
1370 os_memcpy(mlme.im_macaddr, params->bssid, IEEE80211_ADDR_LEN); in wpa_driver_bsd_associate()
1372 return -1; in wpa_driver_bsd_associate()
1388 return -1; in wpa_driver_bsd_scan()
1394 "wpa_supplicant-based roaming: %s", __func__, in wpa_driver_bsd_scan()
1396 return -1; in wpa_driver_bsd_scan()
1402 return -1; in wpa_driver_bsd_scan()
1407 return -1; in wpa_driver_bsd_scan()
1414 if (params->num_ssids > 0) { in wpa_driver_bsd_scan()
1415 sr.sr_nssid = params->num_ssids; in wpa_driver_bsd_scan()
1426 sr.sr_ssid[i].len = params->ssids[i].ssid_len; in wpa_driver_bsd_scan()
1427 os_memcpy(sr.sr_ssid[i].ssid, params->ssids[i].ssid, in wpa_driver_bsd_scan()
1435 if (bsd_set_ssid(drv, params->ssids[0].ssid, in wpa_driver_bsd_scan()
1436 params->ssids[0].ssid_len) < 0) in wpa_driver_bsd_scan()
1437 return -1; in wpa_driver_bsd_scan()
1452 extra_len = 2 + sr->isr_ssid_len; in wpa_driver_bsd_add_scan_entry()
1453 extra_len += 2 + sr->isr_nrates; in wpa_driver_bsd_add_scan_entry()
1455 extra_len += sr->isr_ie_len; in wpa_driver_bsd_add_scan_entry()
1460 os_memcpy(result->bssid, sr->isr_bssid, ETH_ALEN); in wpa_driver_bsd_add_scan_entry()
1461 result->freq = sr->isr_freq; in wpa_driver_bsd_add_scan_entry()
1462 result->beacon_int = sr->isr_intval; in wpa_driver_bsd_add_scan_entry()
1463 result->caps = sr->isr_capinfo; in wpa_driver_bsd_add_scan_entry()
1464 result->qual = sr->isr_rssi; in wpa_driver_bsd_add_scan_entry()
1465 result->noise = sr->isr_noise; in wpa_driver_bsd_add_scan_entry()
1472 result->level = sr->isr_rssi / 2 + sr->isr_noise; in wpa_driver_bsd_add_scan_entry()
1474 result->level = sr->isr_rssi; in wpa_driver_bsd_add_scan_entry()
1480 *pos++ = sr->isr_ssid_len; in wpa_driver_bsd_add_scan_entry()
1481 os_memcpy(pos, sr + 1, sr->isr_ssid_len); in wpa_driver_bsd_add_scan_entry()
1482 pos += sr->isr_ssid_len; in wpa_driver_bsd_add_scan_entry()
1489 *pos++ = sr->isr_nrates; in wpa_driver_bsd_add_scan_entry()
1490 os_memcpy(pos, sr->isr_rates, sr->isr_nrates); in wpa_driver_bsd_add_scan_entry()
1491 pos += sr->isr_nrates; in wpa_driver_bsd_add_scan_entry()
1495 *pos++ = sr->isr_erp; in wpa_driver_bsd_add_scan_entry()
1498 os_memcpy(pos, (u8 *)(sr + 1) + sr->isr_ssid_len + sr->isr_meshid_len, in wpa_driver_bsd_add_scan_entry()
1499 sr->isr_ie_len); in wpa_driver_bsd_add_scan_entry()
1501 os_memcpy(pos, (u8 *)(sr + 1) + sr->isr_ssid_len, sr->isr_ie_len); in wpa_driver_bsd_add_scan_entry()
1503 pos += sr->isr_ie_len; in wpa_driver_bsd_add_scan_entry()
1505 result->ie_len = pos - (u8 *)(result + 1); in wpa_driver_bsd_add_scan_entry()
1507 tmp = os_realloc_array(res->res, res->num + 1, in wpa_driver_bsd_add_scan_entry()
1513 tmp[res->num++] = result; in wpa_driver_bsd_add_scan_entry()
1514 res->res = tmp; in wpa_driver_bsd_add_scan_entry()
1538 pos += sr->isr_len; in wpa_driver_bsd_get_scan_results2()
1539 rest -= sr->isr_len; in wpa_driver_bsd_get_scan_results2()
1543 len, (unsigned long)res->num); in wpa_driver_bsd_get_scan_results2()
1567 return -1; in wpa_driver_bsd_capa()
1574 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1577 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | in wpa_driver_bsd_capa()
1581 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1584 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP; in wpa_driver_bsd_capa()
1586 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP; in wpa_driver_bsd_capa()
1588 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_GCMP; in wpa_driver_bsd_capa()
1590 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_BIP; in wpa_driver_bsd_capa()
1593 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1605 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1609 drv->capa.enc = WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1613 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1616 drv->capa.max_scan_ssids = IEEE80211_IOC_SCAN_MAX_SSID; in wpa_driver_bsd_capa()
1618 drv->capa.max_scan_ssids = 1; in wpa_driver_bsd_capa()
1620 drv->capa.auth = WPA_DRIVER_AUTH_OPEN | in wpa_driver_bsd_capa()
1632 (void) os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name)); in get80211opmode()
1634 if (ioctl(drv->global->sock, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) { in get80211opmode()
1659 (((v) = get80211param(drv, param)) != -1) in wpa_driver_bsd_init()
1667 drv->ifindex = if_nametoindex(ifname); in wpa_driver_bsd_init()
1668 if (drv->ifindex == 0) { in wpa_driver_bsd_init()
1674 drv->ctx = ctx; in wpa_driver_bsd_init()
1675 drv->global = priv; in wpa_driver_bsd_init()
1676 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); in wpa_driver_bsd_init()
1679 drv->if_removed = 1; in wpa_driver_bsd_init()
1681 if (!GETPARAM(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming)) { in wpa_driver_bsd_init()
1686 if (!GETPARAM(drv, IEEE80211_IOC_PRIVACY, drv->prev_privacy)) { in wpa_driver_bsd_init()
1691 if (!GETPARAM(drv, IEEE80211_IOC_WPA, drv->prev_wpa)) { in wpa_driver_bsd_init()
1702 drv->capa.key_mgmt_iftype[i] = drv->capa.key_mgmt; in wpa_driver_bsd_init()
1709 drv->if_removed = 0; in wpa_driver_bsd_init()
1711 drv->opmode = get80211opmode(drv); in wpa_driver_bsd_init()
1712 dl_list_add(&drv->global->ifaces, &drv->list); in wpa_driver_bsd_init()
1726 if (drv->ifindex != 0 && !drv->if_removed) { in wpa_driver_bsd_deinit()
1732 wpa_driver_bsd_set_wpa_internal(drv, drv->prev_wpa, in wpa_driver_bsd_deinit()
1733 drv->prev_privacy); in wpa_driver_bsd_deinit()
1735 if (set80211param(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming) in wpa_driver_bsd_deinit()
1742 if (drv->sock_xmit != NULL) in wpa_driver_bsd_deinit()
1743 l2_packet_deinit(drv->sock_xmit); in wpa_driver_bsd_deinit()
1744 dl_list_del(&drv->list); in wpa_driver_bsd_deinit()
1753 os_memcpy(capa, &drv->capa, sizeof(*capa)); in wpa_driver_bsd_get_capa()
1776 global->ctx = ctx; in bsd_global_init()
1777 dl_list_init(&global->ifaces); in bsd_global_init()
1779 global->sock = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); in bsd_global_init()
1780 if (global->sock < 0) { in bsd_global_init()
1786 global->route = socket(PF_ROUTE, in bsd_global_init()
1788 if (global->route < 0) { in bsd_global_init()
1795 if (setsockopt(global->route, PF_ROUTE, RO_MSGFILTER, in bsd_global_init()
1803 if (setsockopt(global->route, PF_ROUTE, ROUTE_MSGFILTER, in bsd_global_init()
1809 eloop_register_read_sock(global->route, bsd_wireless_event_receive, in bsd_global_init()
1815 close(global->sock); in bsd_global_init()
1826 eloop_unregister_read_sock(global->route); in bsd_global_deinit()
1827 (void) close(global->route); in bsd_global_deinit()
1828 (void) close(global->sock); in bsd_global_deinit()