Lines Matching refs:drv
83 struct bsd_driver_data *drv; in bsd_get_drvindex() local
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()
87 return drv; in bsd_get_drvindex()
96 struct bsd_driver_data *drv; in bsd_get_drvname() local
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()
100 return drv; in bsd_get_drvname()
108 struct bsd_driver_data *drv = priv; in bsd_set80211() local
111 if (drv->ifindex == 0 || drv->if_removed) 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()
134 struct bsd_driver_data *drv = priv; in bsd_get80211() local
137 os_strlcpy(ireq->i_name, drv->ifname, sizeof(ireq->i_name)); 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()
153 get80211var(struct bsd_driver_data *drv, int op, void *arg, int arg_len) in get80211var() argument
157 if (bsd_get80211(drv, &ireq, op, arg, arg_len) < 0) in get80211var()
163 set80211var(struct bsd_driver_data *drv, int op, const void *arg, int arg_len) in set80211var() argument
165 return bsd_set80211(drv, op, 0, arg, arg_len); in set80211var()
169 set80211param(struct bsd_driver_data *drv, int op, int arg) in set80211param() argument
171 return bsd_set80211(drv, op, arg, NULL, 0); in set80211param()
177 struct bsd_driver_data *drv = priv; in bsd_get_ssid() local
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()
191 return get80211var(drv, IEEE80211_IOC_SSID, ssid, IEEE80211_NWID_LEN); in bsd_get_ssid()
198 struct bsd_driver_data *drv = priv; in bsd_set_ssid() local
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()
210 return set80211var(drv, IEEE80211_IOC_SSID, ssid, ssid_len); in bsd_set_ssid()
217 struct bsd_driver_data *drv = priv; in bsd_get_if_media() local
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()
235 struct bsd_driver_data *drv = priv; in bsd_set_if_media() local
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()
299 struct bsd_driver_data *drv = priv; in bsd_ctrl_iface() local
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()
310 drv->flags = ifr.ifr_flags; in bsd_ctrl_iface()
323 if (ioctl(drv->global->sock, SIOCSIFFLAGS, &ifr) < 0) { 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()
346 struct bsd_driver_data *drv = priv; in bsd_set_key() local
427 if (drv->opmode == IEEE80211_M_IBSS || in bsd_set_key()
428 drv->opmode == IEEE80211_M_AHDEMO) in bsd_set_key()
626 struct bsd_driver_data *drv = priv; in bsd_send_eapol() local
630 return l2_packet_send(drv->sock_xmit, addr, ETH_P_EAPOL, data, in bsd_send_eapol()
637 struct bsd_driver_data *drv = priv; in bsd_set_freq() local
656 if (bsd_set_mediaopt(drv, IFM_MMASK, mode) < 0) { in bsd_set_freq()
664 os_strlcpy(creq.i_name, drv->ifname, sizeof(creq.i_name)); in bsd_set_freq()
666 return ioctl(drv->global->sock, SIOCS80211CHANNEL, &creq); in bsd_set_freq()
691 struct bsd_driver_data *drv; in bsd_route_overflow() local
713 drv = bsd_get_drvname(global, ifa->ifa_name); in bsd_route_overflow()
714 if (drv != NULL && in bsd_route_overflow()
715 (drv->ifindex != sdl->sdl_index || drv->if_removed)) { in bsd_route_overflow()
718 drv->ifname); in bsd_route_overflow()
719 drv->ifindex = sdl->sdl_index; in bsd_route_overflow()
720 drv->if_removed = 0; in bsd_route_overflow()
724 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
727 if (!drv && in bsd_route_overflow()
728 (drv = bsd_get_drvindex(global, sdl->sdl_index)) != NULL) { in bsd_route_overflow()
732 drv->ifname); in bsd_route_overflow()
733 drv->if_removed = 1; in bsd_route_overflow()
735 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
737 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
743 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_route_overflow()
749 if (os_strcmp(drv->ifname, ifa->ifa_name) == 0) in bsd_route_overflow()
752 if (ifa == NULL && !drv->if_removed) { in bsd_route_overflow()
755 drv->ifname); in bsd_route_overflow()
756 drv->if_removed = 1; in bsd_route_overflow()
758 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
760 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
767 (drv->flags & IFF_UP) != 0) { in bsd_route_overflow()
769 drv->ifname); in bsd_route_overflow()
770 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_route_overflow()
773 (drv->flags & IFF_UP) == 0) { in bsd_route_overflow()
775 drv->ifname); in bsd_route_overflow()
776 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_route_overflow()
779 drv->flags = ifa->ifa_flags; in bsd_route_overflow()
791 struct bsd_driver_data *drv; in bsd_wireless_event_receive() local
823 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
824 if (drv == NULL) in bsd_wireless_event_receive()
829 if (drv->is_ap) in bsd_wireless_event_receive()
831 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, NULL); in bsd_wireless_event_receive()
834 if (drv->is_ap) in bsd_wireless_event_receive()
836 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL); in bsd_wireless_event_receive()
839 if (drv->is_ap) in bsd_wireless_event_receive()
841 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, in bsd_wireless_event_receive()
846 drv_event_disassoc(drv->ctx, leave->iev_addr); in bsd_wireless_event_receive()
853 bsd_new_sta(drv, drv->ctx, join->iev_addr); in bsd_wireless_event_receive()
868 wpa_supplicant_event(drv->ctx, in bsd_wireless_event_receive()
877 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
878 if (drv) in bsd_wireless_event_receive()
879 drv->if_removed = 1; in bsd_wireless_event_receive()
883 drv = bsd_get_drvname(global, ifan->ifan_name); in bsd_wireless_event_receive()
884 if (drv) { in bsd_wireless_event_receive()
885 drv->ifindex = ifan->ifan_index; in bsd_wireless_event_receive()
886 drv->if_removed = 0; in bsd_wireless_event_receive()
900 if (drv) { in bsd_wireless_event_receive()
901 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_wireless_event_receive()
908 drv->ifindex = 0; in bsd_wireless_event_receive()
917 drv = bsd_get_drvindex(global, ifm->ifm_index); in bsd_wireless_event_receive()
918 if (drv == NULL) in bsd_wireless_event_receive()
922 (drv->flags & IFF_UP) != 0 && in bsd_wireless_event_receive()
923 (drv->flags & IFF_RUNNING) != 0) { in bsd_wireless_event_receive()
925 drv->ifname); in bsd_wireless_event_receive()
926 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_wireless_event_receive()
930 ((drv->flags & IFF_UP) == 0 || in bsd_wireless_event_receive()
931 (drv->flags & IFF_RUNNING) == 0)) { in bsd_wireless_event_receive()
933 drv->ifname); in bsd_wireless_event_receive()
934 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_wireless_event_receive()
937 drv->flags = ifm->ifm_flags; in bsd_wireless_event_receive()
1064 struct bsd_driver_data *drv = ctx; in handle_read() local
1065 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1071 struct bsd_driver_data *drv; in bsd_init() local
1073 drv = os_zalloc(sizeof(struct bsd_driver_data)); in bsd_init()
1074 if (drv == NULL) { in bsd_init()
1079 drv->ifindex = if_nametoindex(params->ifname); in bsd_init()
1080 if (drv->ifindex == 0) { in bsd_init()
1086 drv->ctx = hapd; in bsd_init()
1087 drv->is_ap = 1; in bsd_init()
1088 drv->global = params->global_priv; in bsd_init()
1089 os_strlcpy(drv->ifname, params->ifname, sizeof(drv->ifname)); in bsd_init()
1091 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in bsd_init()
1092 handle_read, drv, 0); in bsd_init()
1093 if (drv->sock_xmit == NULL) in bsd_init()
1095 if (l2_packet_get_own_addr(drv->sock_xmit, params->own_addr)) in bsd_init()
1099 if (bsd_ctrl_iface(drv, 0) < 0) in bsd_init()
1102 if (bsd_set_mediaopt(drv, IFM_OMASK, IFM_IEEE80211_HOSTAP) < 0) { in bsd_init()
1108 dl_list_add(&drv->global->ifaces, &drv->list); in bsd_init()
1110 return drv; in bsd_init()
1112 if (drv->sock_xmit != NULL) in bsd_init()
1113 l2_packet_deinit(drv->sock_xmit); in bsd_init()
1114 os_free(drv); in bsd_init()
1122 struct bsd_driver_data *drv = priv; in bsd_deinit() local
1124 if (drv->ifindex != 0) in bsd_deinit()
1125 bsd_ctrl_iface(drv, 0); in bsd_deinit()
1126 if (drv->sock_xmit != NULL) in bsd_deinit()
1127 l2_packet_deinit(drv->sock_xmit); in bsd_deinit()
1128 os_free(drv); in bsd_deinit()
1154 get80211param(struct bsd_driver_data *drv, int op) in get80211param() argument
1158 if (bsd_get80211(drv, &ireq, op, NULL, 0) < 0) in get80211param()
1166 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_bssid() local
1170 os_strlcpy(bs.i_name, drv->ifname, sizeof(bs.i_name)); in wpa_driver_bsd_get_bssid()
1171 if (ioctl(drv->global->sock, SIOCG80211BSSID, &bs) < 0) in wpa_driver_bsd_get_bssid()
1176 return get80211var(drv, IEEE80211_IOC_BSSID, in wpa_driver_bsd_get_bssid()
1184 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_ssid() local
1185 return bsd_get_ssid(drv, ssid, 0); in wpa_driver_bsd_get_ssid()
1189 wpa_driver_bsd_set_wpa_ie(struct bsd_driver_data *drv, const u8 *wpa_ie, in wpa_driver_bsd_set_wpa_ie() argument
1193 return bsd_set_opt_ie(drv, wpa_ie, wpa_ie_len); in wpa_driver_bsd_set_wpa_ie()
1195 return set80211var(drv, IEEE80211_IOC_OPTIE, wpa_ie, wpa_ie_len); in wpa_driver_bsd_set_wpa_ie()
1266 struct bsd_driver_data *drv = ctx; in handle_read() local
1268 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1272 wpa_driver_bsd_set_rsn_wpa_ie(struct bsd_driver_data * drv, in wpa_driver_bsd_set_rsn_wpa_ie() argument
1279 if (wpa_driver_bsd_set_wpa_ie(drv, ie, ie_len) < 0) in wpa_driver_bsd_set_rsn_wpa_ie()
1288 if (set80211param(drv, IEEE80211_IOC_PRIVACY, privacy) < 0) in wpa_driver_bsd_set_rsn_wpa_ie()
1292 set80211param(drv, IEEE80211_IOC_WPA, in wpa_driver_bsd_set_rsn_wpa_ie()
1302 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_associate() local
1335 if (bsd_set_mediaopt(drv, IFM_OMASK, mode) < 0) { in wpa_driver_bsd_associate()
1342 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in wpa_driver_bsd_associate()
1343 handle_read, drv, 0); in wpa_driver_bsd_associate()
1344 if (drv->sock_xmit == NULL) in wpa_driver_bsd_associate()
1346 drv->is_ap = 1; in wpa_driver_bsd_associate()
1350 if (wpa_driver_bsd_set_drop_unencrypted(drv, params->drop_unencrypted) in wpa_driver_bsd_associate()
1353 if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0) in wpa_driver_bsd_associate()
1360 if (wpa_driver_bsd_set_rsn_wpa_ie(drv, params, in wpa_driver_bsd_associate()
1368 if (wpa_driver_bsd_set_rsn_wpa_ie(drv, params, in wpa_driver_bsd_associate()
1379 if (bsd_ctrl_iface(drv, 1) < 0) in wpa_driver_bsd_associate()
1389 if (set80211var(drv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme)) < 0) in wpa_driver_bsd_associate()
1397 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_scan() local
1403 if (bsd_set_mediaopt(drv, IFM_OMASK, 0 /* STA */) < 0) { in wpa_driver_bsd_scan()
1409 if (set80211param(drv, IEEE80211_IOC_ROAMING, in wpa_driver_bsd_scan()
1417 if (wpa_driver_bsd_set_wpa(drv, 1) < 0) { in wpa_driver_bsd_scan()
1424 if (bsd_ctrl_iface(drv, 1) < 0) in wpa_driver_bsd_scan()
1450 return set80211var(drv, IEEE80211_IOC_SCAN_REQ, &sr, sizeof(sr)); in wpa_driver_bsd_scan()
1453 if (bsd_set_ssid(drv, params->ssids[0].ssid, in wpa_driver_bsd_scan()
1458 return set80211param(drv, IEEE80211_IOC_SCAN_REQ, 0); in wpa_driver_bsd_scan()
1566 static int wpa_driver_bsd_capa(struct bsd_driver_data *drv) in wpa_driver_bsd_capa() argument
1581 if (get80211var(drv, IEEE80211_IOC_DEVCAPS, &devcaps, in wpa_driver_bsd_capa()
1592 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1595 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | in wpa_driver_bsd_capa()
1599 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1602 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP; in wpa_driver_bsd_capa()
1604 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP; in wpa_driver_bsd_capa()
1606 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP_256; in wpa_driver_bsd_capa()
1608 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_GCMP; in wpa_driver_bsd_capa()
1610 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_GCMP_256; in wpa_driver_bsd_capa()
1612 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_BIP; in wpa_driver_bsd_capa()
1615 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1627 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1631 drv->capa.enc = WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1635 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1638 drv->capa.max_scan_ssids = IEEE80211_IOC_SCAN_MAX_SSID; in wpa_driver_bsd_capa()
1640 drv->capa.max_scan_ssids = 1; in wpa_driver_bsd_capa()
1642 drv->capa.auth = WPA_DRIVER_AUTH_OPEN | in wpa_driver_bsd_capa()
1649 get80211opmode(struct bsd_driver_data *drv) in get80211opmode() argument
1654 (void) os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name)); in get80211opmode()
1656 if (ioctl(drv->global->sock, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) { in get80211opmode()
1680 #define GETPARAM(drv, param, v) \ in wpa_driver_bsd_init() argument
1681 (((v) = get80211param(drv, param)) != -1) in wpa_driver_bsd_init()
1682 struct bsd_driver_data *drv; in wpa_driver_bsd_init() local
1685 drv = os_zalloc(sizeof(*drv)); in wpa_driver_bsd_init()
1686 if (drv == NULL) in wpa_driver_bsd_init()
1689 drv->ifindex = if_nametoindex(ifname); in wpa_driver_bsd_init()
1690 if (drv->ifindex == 0) { in wpa_driver_bsd_init()
1696 drv->ctx = ctx; in wpa_driver_bsd_init()
1697 drv->global = priv; in wpa_driver_bsd_init()
1698 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); in wpa_driver_bsd_init()
1701 drv->if_removed = 1; in wpa_driver_bsd_init()
1703 if (!GETPARAM(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming)) { in wpa_driver_bsd_init()
1708 if (!GETPARAM(drv, IEEE80211_IOC_PRIVACY, drv->prev_privacy)) { in wpa_driver_bsd_init()
1713 if (!GETPARAM(drv, IEEE80211_IOC_WPA, drv->prev_wpa)) { in wpa_driver_bsd_init()
1719 if (wpa_driver_bsd_capa(drv)) in wpa_driver_bsd_init()
1724 drv->capa.key_mgmt_iftype[i] = drv->capa.key_mgmt; in wpa_driver_bsd_init()
1727 if (bsd_ctrl_iface(drv, 0) < 0) in wpa_driver_bsd_init()
1731 drv->if_removed = 0; in wpa_driver_bsd_init()
1733 drv->opmode = get80211opmode(drv); in wpa_driver_bsd_init()
1734 dl_list_add(&drv->global->ifaces, &drv->list); in wpa_driver_bsd_init()
1736 return drv; in wpa_driver_bsd_init()
1738 os_free(drv); in wpa_driver_bsd_init()
1746 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_deinit() local
1748 if (drv->ifindex != 0 && !drv->if_removed) { in wpa_driver_bsd_deinit()
1749 wpa_driver_bsd_set_wpa(drv, 0); in wpa_driver_bsd_deinit()
1752 bsd_ctrl_iface(drv, 0); in wpa_driver_bsd_deinit()
1754 wpa_driver_bsd_set_wpa_internal(drv, drv->prev_wpa, in wpa_driver_bsd_deinit()
1755 drv->prev_privacy); in wpa_driver_bsd_deinit()
1757 if (set80211param(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming) in wpa_driver_bsd_deinit()
1764 if (drv->sock_xmit != NULL) in wpa_driver_bsd_deinit()
1765 l2_packet_deinit(drv->sock_xmit); in wpa_driver_bsd_deinit()
1766 dl_list_del(&drv->list); in wpa_driver_bsd_deinit()
1767 os_free(drv); in wpa_driver_bsd_deinit()
1773 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_capa() local
1775 os_memcpy(capa, &drv->capa, sizeof(*capa)); in wpa_driver_bsd_get_capa()