Lines Matching refs:drv

82 	struct bsd_driver_data *drv;  in bsd_get_drvindex()  local
84 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_get_drvindex()
85 if (drv->ifindex == ifindex) in bsd_get_drvindex()
86 return drv; in bsd_get_drvindex()
95 struct bsd_driver_data *drv; in bsd_get_drvname() local
97 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_get_drvname()
98 if (os_strcmp(drv->ifname, ifname) == 0) in bsd_get_drvname()
99 return drv; in bsd_get_drvname()
107 struct bsd_driver_data *drv = priv; in bsd_set80211() local
110 if (drv->ifindex == 0 || drv->if_removed) in bsd_set80211()
114 os_strlcpy(ireq.i_name, drv->ifname, sizeof(ireq.i_name)); in bsd_set80211()
120 if (ioctl(drv->global->sock, SIOCS80211, &ireq) < 0) { in bsd_set80211()
133 struct bsd_driver_data *drv = priv; in bsd_get80211() local
136 os_strlcpy(ireq->i_name, drv->ifname, sizeof(ireq->i_name)); in bsd_get80211()
141 if (ioctl(drv->global->sock, SIOCG80211, ireq) < 0) { in bsd_get80211()
142 int level = drv->if_removed ? MSG_DEBUG : MSG_ERROR; in bsd_get80211()
152 get80211var(struct bsd_driver_data *drv, int op, void *arg, int arg_len) in get80211var() argument
156 if (bsd_get80211(drv, &ireq, op, arg, arg_len) < 0) in get80211var()
162 set80211var(struct bsd_driver_data *drv, int op, const void *arg, int arg_len) in set80211var() argument
164 return bsd_set80211(drv, op, 0, arg, arg_len); in set80211var()
168 set80211param(struct bsd_driver_data *drv, int op, int arg) in set80211param() argument
170 return bsd_set80211(drv, op, arg, NULL, 0); in set80211param()
176 struct bsd_driver_data *drv = priv; in bsd_get_ssid() local
182 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_get_ssid()
184 if (ioctl(drv->global->sock, SIOCG80211NWID, &ifr) < 0 || in bsd_get_ssid()
190 return get80211var(drv, IEEE80211_IOC_SSID, ssid, IEEE80211_NWID_LEN); in bsd_get_ssid()
197 struct bsd_driver_data *drv = priv; in bsd_set_ssid() local
205 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_set_ssid()
207 return ioctl(drv->global->sock, SIOCS80211NWID, &ifr); in bsd_set_ssid()
209 return set80211var(drv, IEEE80211_IOC_SSID, ssid, ssid_len); in bsd_set_ssid()
216 struct bsd_driver_data *drv = priv; in bsd_get_if_media() local
220 os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name)); in bsd_get_if_media()
222 if (ioctl(drv->global->sock, SIOCGIFMEDIA, &ifmr) < 0) { in bsd_get_if_media()
234 struct bsd_driver_data *drv = priv; in bsd_set_if_media() local
238 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_set_if_media()
241 if (ioctl(drv->global->sock, SIOCSIFMEDIA, &ifr) < 0) { in bsd_set_if_media()
296 bsd_get_iface_flags(struct bsd_driver_data *drv) in bsd_get_iface_flags() argument
301 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name)); in bsd_get_iface_flags()
303 if (ioctl(drv->global->sock, SIOCGIFFLAGS, &ifr) < 0) { in bsd_get_iface_flags()
308 drv->flags = ifr.ifr_flags; in bsd_get_iface_flags()
317 struct bsd_driver_data *drv = priv; in bsd_set_key() local
386 if (drv->opmode == IEEE80211_M_IBSS || in bsd_set_key()
387 drv->opmode == IEEE80211_M_AHDEMO) in bsd_set_key()
563 struct bsd_driver_data *drv = priv; in bsd_send_eapol() local
567 return l2_packet_send(drv->sock_xmit, addr, ETH_P_EAPOL, data, in bsd_send_eapol()
574 struct bsd_driver_data *drv = priv; in bsd_set_freq() local
592 if (bsd_set_mediaopt(drv, IFM_MMASK, mode) < 0) { in bsd_set_freq()
600 os_strlcpy(creq.i_name, drv->ifname, sizeof(creq.i_name)); in bsd_set_freq()
602 return ioctl(drv->global->sock, SIOCS80211CHANNEL, &creq); in bsd_set_freq()
627 struct bsd_driver_data *drv; in bsd_route_overflow() local
649 drv = bsd_get_drvname(global, ifa->ifa_name); in bsd_route_overflow()
650 if (drv != NULL && in bsd_route_overflow()
651 (drv->ifindex != sdl->sdl_index || drv->if_removed)) { in bsd_route_overflow()
654 drv->ifname); in bsd_route_overflow()
655 drv->ifindex = sdl->sdl_index; in bsd_route_overflow()
656 drv->if_removed = 0; in bsd_route_overflow()
660 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
663 if (!drv && in bsd_route_overflow()
664 (drv = bsd_get_drvindex(global, sdl->sdl_index)) != NULL) { in bsd_route_overflow()
668 drv->ifname); in bsd_route_overflow()
669 drv->if_removed = 1; in bsd_route_overflow()
671 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
673 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
679 dl_list_for_each(drv, &global->ifaces, struct bsd_driver_data, list) { in bsd_route_overflow()
685 if (os_strcmp(drv->ifname, ifa->ifa_name) == 0) in bsd_route_overflow()
688 if (ifa == NULL && !drv->if_removed) { in bsd_route_overflow()
691 drv->ifname); in bsd_route_overflow()
692 drv->if_removed = 1; in bsd_route_overflow()
694 os_strlcpy(event.interface_status.ifname, drv->ifname, in bsd_route_overflow()
696 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_route_overflow()
703 (drv->flags & IFF_UP) != 0) { in bsd_route_overflow()
705 drv->ifname); in bsd_route_overflow()
706 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_route_overflow()
709 (drv->flags & IFF_UP) == 0) { in bsd_route_overflow()
711 drv->ifname); in bsd_route_overflow()
712 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_route_overflow()
715 drv->flags = ifa->ifa_flags; in bsd_route_overflow()
727 struct bsd_driver_data *drv; in bsd_wireless_event_receive() local
759 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
760 if (drv == NULL) in bsd_wireless_event_receive()
765 if (drv->is_ap) in bsd_wireless_event_receive()
767 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, NULL); in bsd_wireless_event_receive()
770 if (drv->is_ap) in bsd_wireless_event_receive()
772 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL); in bsd_wireless_event_receive()
775 if (drv->is_ap) in bsd_wireless_event_receive()
777 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, in bsd_wireless_event_receive()
782 drv_event_disassoc(drv->ctx, leave->iev_addr); in bsd_wireless_event_receive()
789 bsd_new_sta(drv, drv->ctx, join->iev_addr); in bsd_wireless_event_receive()
804 wpa_supplicant_event(drv->ctx, in bsd_wireless_event_receive()
813 drv = bsd_get_drvindex(global, ifan->ifan_index); in bsd_wireless_event_receive()
814 if (drv) in bsd_wireless_event_receive()
815 drv->if_removed = 1; in bsd_wireless_event_receive()
819 drv = bsd_get_drvname(global, ifan->ifan_name); in bsd_wireless_event_receive()
820 if (drv) { in bsd_wireless_event_receive()
821 drv->ifindex = ifan->ifan_index; in bsd_wireless_event_receive()
822 drv->if_removed = 0; in bsd_wireless_event_receive()
836 if (drv) { in bsd_wireless_event_receive()
837 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, in bsd_wireless_event_receive()
844 drv->ifindex = 0; in bsd_wireless_event_receive()
853 drv = bsd_get_drvindex(global, ifm->ifm_index); in bsd_wireless_event_receive()
854 if (drv == NULL) in bsd_wireless_event_receive()
857 (drv->flags & IFF_UP) != 0) { in bsd_wireless_event_receive()
859 drv->ifname); in bsd_wireless_event_receive()
860 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, in bsd_wireless_event_receive()
863 (drv->flags & IFF_UP) == 0) { in bsd_wireless_event_receive()
865 drv->ifname); in bsd_wireless_event_receive()
866 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in bsd_wireless_event_receive()
869 drv->flags = ifm->ifm_flags; in bsd_wireless_event_receive()
996 struct bsd_driver_data *drv = ctx; in handle_read() local
997 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1003 struct bsd_driver_data *drv; in bsd_init() local
1005 drv = os_zalloc(sizeof(struct bsd_driver_data)); in bsd_init()
1006 if (drv == NULL) { in bsd_init()
1011 drv->ifindex = if_nametoindex(params->ifname); in bsd_init()
1012 if (drv->ifindex == 0) { in bsd_init()
1018 drv->ctx = hapd; in bsd_init()
1019 drv->is_ap = 1; in bsd_init()
1020 drv->global = params->global_priv; in bsd_init()
1021 os_strlcpy(drv->ifname, params->ifname, sizeof(drv->ifname)); in bsd_init()
1023 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in bsd_init()
1024 handle_read, drv, 0); in bsd_init()
1025 if (drv->sock_xmit == NULL) in bsd_init()
1027 if (l2_packet_get_own_addr(drv->sock_xmit, params->own_addr)) in bsd_init()
1030 if (bsd_get_iface_flags(drv) < 0) in bsd_init()
1033 if (bsd_set_mediaopt(drv, IFM_OMASK, IFM_IEEE80211_HOSTAP) < 0) { in bsd_init()
1039 dl_list_add(&drv->global->ifaces, &drv->list); in bsd_init()
1041 return drv; in bsd_init()
1043 if (drv->sock_xmit != NULL) in bsd_init()
1044 l2_packet_deinit(drv->sock_xmit); in bsd_init()
1045 os_free(drv); in bsd_init()
1053 struct bsd_driver_data *drv = priv; in bsd_deinit() local
1055 if (drv->sock_xmit != NULL) in bsd_deinit()
1056 l2_packet_deinit(drv->sock_xmit); in bsd_deinit()
1057 os_free(drv); in bsd_deinit()
1084 get80211param(struct bsd_driver_data *drv, int op) in get80211param() argument
1088 if (bsd_get80211(drv, &ireq, op, NULL, 0) < 0) in get80211param()
1096 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_bssid() local
1100 os_strlcpy(bs.i_name, drv->ifname, sizeof(bs.i_name)); in wpa_driver_bsd_get_bssid()
1101 if (ioctl(drv->global->sock, SIOCG80211BSSID, &bs) < 0) in wpa_driver_bsd_get_bssid()
1106 return get80211var(drv, IEEE80211_IOC_BSSID, in wpa_driver_bsd_get_bssid()
1114 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_ssid() local
1115 return bsd_get_ssid(drv, ssid, 0); in wpa_driver_bsd_get_ssid()
1119 wpa_driver_bsd_set_wpa_ie(struct bsd_driver_data *drv, const u8 *wpa_ie, in wpa_driver_bsd_set_wpa_ie() argument
1123 return bsd_set_opt_ie(drv, wpa_ie, wpa_ie_len); in wpa_driver_bsd_set_wpa_ie()
1125 return set80211var(drv, IEEE80211_IOC_OPTIE, wpa_ie, wpa_ie_len); in wpa_driver_bsd_set_wpa_ie()
1196 struct bsd_driver_data *drv = ctx; in handle_read() local
1198 drv_event_eapol_rx(drv->ctx, src_addr, buf, len); in handle_read()
1204 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_associate() local
1234 if (bsd_set_mediaopt(drv, IFM_OMASK, mode) < 0) { in wpa_driver_bsd_associate()
1241 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL, in wpa_driver_bsd_associate()
1242 handle_read, drv, 0); in wpa_driver_bsd_associate()
1243 if (drv->sock_xmit == NULL) in wpa_driver_bsd_associate()
1245 drv->is_ap = 1; in wpa_driver_bsd_associate()
1249 if (wpa_driver_bsd_set_drop_unencrypted(drv, params->drop_unencrypted) in wpa_driver_bsd_associate()
1252 if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0) in wpa_driver_bsd_associate()
1255 if (wpa_driver_bsd_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0) in wpa_driver_bsd_associate()
1264 if (set80211param(drv, IEEE80211_IOC_PRIVACY, privacy) < 0) in wpa_driver_bsd_associate()
1268 set80211param(drv, IEEE80211_IOC_WPA, in wpa_driver_bsd_associate()
1279 if (set80211var(drv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme)) < 0) in wpa_driver_bsd_associate()
1287 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_scan() local
1293 if (bsd_set_mediaopt(drv, IFM_OMASK, 0 /* STA */) < 0) { in wpa_driver_bsd_scan()
1299 if (set80211param(drv, IEEE80211_IOC_ROAMING, in wpa_driver_bsd_scan()
1307 if (wpa_driver_bsd_set_wpa(drv, 1) < 0) { in wpa_driver_bsd_scan()
1314 if (!(drv->flags & IFF_UP)) { in wpa_driver_bsd_scan()
1343 return set80211var(drv, IEEE80211_IOC_SCAN_REQ, &sr, sizeof(sr)); in wpa_driver_bsd_scan()
1346 if (bsd_set_ssid(drv, params->ssids[0].ssid, in wpa_driver_bsd_scan()
1351 return set80211param(drv, IEEE80211_IOC_SCAN_REQ, 0); in wpa_driver_bsd_scan()
1459 static int wpa_driver_bsd_capa(struct bsd_driver_data *drv) in wpa_driver_bsd_capa() argument
1474 if (get80211var(drv, IEEE80211_IOC_DEVCAPS, &devcaps, in wpa_driver_bsd_capa()
1485 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1488 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | in wpa_driver_bsd_capa()
1492 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1495 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP; in wpa_driver_bsd_capa()
1497 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP; in wpa_driver_bsd_capa()
1500 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1512 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_bsd_capa()
1516 drv->capa.enc = WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_bsd_capa()
1520 drv->capa.flags |= WPA_DRIVER_FLAGS_AP; in wpa_driver_bsd_capa()
1523 drv->capa.max_scan_ssids = IEEE80211_IOC_SCAN_MAX_SSID; in wpa_driver_bsd_capa()
1525 drv->capa.max_scan_ssids = 1; in wpa_driver_bsd_capa()
1527 drv->capa.auth = WPA_DRIVER_AUTH_OPEN | in wpa_driver_bsd_capa()
1534 get80211opmode(struct bsd_driver_data *drv) in get80211opmode() argument
1539 (void) os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name)); in get80211opmode()
1541 if (ioctl(drv->global->sock, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) { in get80211opmode()
1563 #define GETPARAM(drv, param, v) \ in wpa_driver_bsd_init() argument
1564 (((v) = get80211param(drv, param)) != -1) in wpa_driver_bsd_init()
1565 struct bsd_driver_data *drv; in wpa_driver_bsd_init() local
1568 drv = os_zalloc(sizeof(*drv)); in wpa_driver_bsd_init()
1569 if (drv == NULL) in wpa_driver_bsd_init()
1572 drv->ifindex = if_nametoindex(ifname); in wpa_driver_bsd_init()
1573 if (drv->ifindex == 0) { in wpa_driver_bsd_init()
1579 drv->ctx = ctx; in wpa_driver_bsd_init()
1580 drv->global = priv; in wpa_driver_bsd_init()
1581 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); in wpa_driver_bsd_init()
1584 drv->if_removed = 1; in wpa_driver_bsd_init()
1586 if (!GETPARAM(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming)) { in wpa_driver_bsd_init()
1591 if (!GETPARAM(drv, IEEE80211_IOC_PRIVACY, drv->prev_privacy)) { in wpa_driver_bsd_init()
1596 if (!GETPARAM(drv, IEEE80211_IOC_WPA, drv->prev_wpa)) { in wpa_driver_bsd_init()
1602 if (wpa_driver_bsd_capa(drv)) in wpa_driver_bsd_init()
1607 drv->capa.key_mgmt_iftype[i] = drv->capa.key_mgmt; in wpa_driver_bsd_init()
1610 if (bsd_get_iface_flags(drv) < 0) in wpa_driver_bsd_init()
1614 drv->if_removed = 0; in wpa_driver_bsd_init()
1616 drv->opmode = get80211opmode(drv); in wpa_driver_bsd_init()
1617 dl_list_add(&drv->global->ifaces, &drv->list); in wpa_driver_bsd_init()
1619 return drv; in wpa_driver_bsd_init()
1621 os_free(drv); in wpa_driver_bsd_init()
1629 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_deinit() local
1631 if (drv->ifindex != 0 && !drv->if_removed) { in wpa_driver_bsd_deinit()
1632 wpa_driver_bsd_set_wpa(drv, 0); in wpa_driver_bsd_deinit()
1634 wpa_driver_bsd_set_wpa_internal(drv, drv->prev_wpa, in wpa_driver_bsd_deinit()
1635 drv->prev_privacy); in wpa_driver_bsd_deinit()
1637 if (set80211param(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming) in wpa_driver_bsd_deinit()
1644 if (drv->sock_xmit != NULL) in wpa_driver_bsd_deinit()
1645 l2_packet_deinit(drv->sock_xmit); in wpa_driver_bsd_deinit()
1646 dl_list_del(&drv->list); in wpa_driver_bsd_deinit()
1647 os_free(drv); in wpa_driver_bsd_deinit()
1653 struct bsd_driver_data *drv = priv; in wpa_driver_bsd_get_capa() local
1655 os_memcpy(capa, &drv->capa, sizeof(*capa)); in wpa_driver_bsd_get_capa()