Lines Matching full:drv
37 static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv);
38 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv);
42 int wpa_driver_wext_set_auth_param(struct wpa_driver_wext_data *drv, in wpa_driver_wext_set_auth_param() argument
49 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_auth_param()
53 if (ioctl(drv->ioctl_sock, SIOCSIWAUTH, &iwr) < 0) { in wpa_driver_wext_set_auth_param()
74 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_get_bssid() local
79 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_get_bssid()
81 if (ioctl(drv->ioctl_sock, SIOCGIWAP, &iwr) < 0) { in wpa_driver_wext_get_bssid()
99 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_bssid() local
104 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_bssid()
111 if (ioctl(drv->ioctl_sock, SIOCSIWAP, &iwr) < 0) { in wpa_driver_wext_set_bssid()
128 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_get_ssid() local
133 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_get_ssid()
137 if (ioctl(drv->ioctl_sock, SIOCGIWESSID, &iwr) < 0) { in wpa_driver_wext_get_ssid()
150 drv->we_version_compiled < 21) in wpa_driver_wext_get_ssid()
167 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_ssid() local
176 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_ssid()
182 if (drv->we_version_compiled < 21) { in wpa_driver_wext_set_ssid()
196 if (ioctl(drv->ioctl_sock, SIOCSIWESSID, &iwr) < 0) { in wpa_driver_wext_set_ssid()
214 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_freq() local
219 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_freq()
223 if (ioctl(drv->ioctl_sock, SIOCSIWFREQ, &iwr) < 0) { in wpa_driver_wext_set_freq()
321 struct wpa_driver_wext_data *drv, const char *ev, size_t len) in wpa_driver_wext_event_wireless_pmkidcand() argument
341 wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE, &data); in wpa_driver_wext_event_wireless_pmkidcand()
348 struct wpa_driver_wext_data *drv, const char *ev, int len) in wpa_driver_wext_event_wireless_assocreqie() argument
355 os_free(drv->assoc_req_ies); in wpa_driver_wext_event_wireless_assocreqie()
356 drv->assoc_req_ies = os_memdup(ev, len); in wpa_driver_wext_event_wireless_assocreqie()
357 if (drv->assoc_req_ies == NULL) { in wpa_driver_wext_event_wireless_assocreqie()
358 drv->assoc_req_ies_len = 0; in wpa_driver_wext_event_wireless_assocreqie()
361 drv->assoc_req_ies_len = len; in wpa_driver_wext_event_wireless_assocreqie()
368 struct wpa_driver_wext_data *drv, const char *ev, int len) in wpa_driver_wext_event_wireless_assocrespie() argument
375 os_free(drv->assoc_resp_ies); in wpa_driver_wext_event_wireless_assocrespie()
376 drv->assoc_resp_ies = os_memdup(ev, len); in wpa_driver_wext_event_wireless_assocrespie()
377 if (drv->assoc_resp_ies == NULL) { in wpa_driver_wext_event_wireless_assocrespie()
378 drv->assoc_resp_ies_len = 0; in wpa_driver_wext_event_wireless_assocrespie()
381 drv->assoc_resp_ies_len = len; in wpa_driver_wext_event_wireless_assocrespie()
387 static void wpa_driver_wext_event_assoc_ies(struct wpa_driver_wext_data *drv) in wpa_driver_wext_event_assoc_ies() argument
391 if (drv->assoc_req_ies == NULL && drv->assoc_resp_ies == NULL) in wpa_driver_wext_event_assoc_ies()
395 if (drv->assoc_req_ies) { in wpa_driver_wext_event_assoc_ies()
396 data.assoc_info.req_ies = drv->assoc_req_ies; in wpa_driver_wext_event_assoc_ies()
397 data.assoc_info.req_ies_len = drv->assoc_req_ies_len; in wpa_driver_wext_event_assoc_ies()
399 if (drv->assoc_resp_ies) { in wpa_driver_wext_event_assoc_ies()
400 data.assoc_info.resp_ies = drv->assoc_resp_ies; in wpa_driver_wext_event_assoc_ies()
401 data.assoc_info.resp_ies_len = drv->assoc_resp_ies_len; in wpa_driver_wext_event_assoc_ies()
404 wpa_supplicant_event(drv->ctx, EVENT_ASSOCINFO, &data); in wpa_driver_wext_event_assoc_ies()
406 os_free(drv->assoc_req_ies); in wpa_driver_wext_event_assoc_ies()
407 drv->assoc_req_ies = NULL; in wpa_driver_wext_event_assoc_ies()
408 os_free(drv->assoc_resp_ies); in wpa_driver_wext_event_assoc_ies()
409 drv->assoc_resp_ies = NULL; in wpa_driver_wext_event_assoc_ies()
413 static void wpa_driver_wext_event_wireless(struct wpa_driver_wext_data *drv, in wpa_driver_wext_event_wireless() argument
432 if (drv->we_version_compiled > 18 && in wpa_driver_wext_event_wireless()
459 os_free(drv->assoc_req_ies); in wpa_driver_wext_event_wireless()
460 drv->assoc_req_ies = NULL; in wpa_driver_wext_event_wireless()
461 os_free(drv->assoc_resp_ies); in wpa_driver_wext_event_wireless()
462 drv->assoc_resp_ies = NULL; in wpa_driver_wext_event_wireless()
463 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, in wpa_driver_wext_event_wireless()
467 wpa_driver_wext_event_assoc_ies(drv); in wpa_driver_wext_event_wireless()
468 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, in wpa_driver_wext_event_wireless()
479 drv->ctx, custom, iwe->u.data.length); in wpa_driver_wext_event_wireless()
490 wpa_driver_wext_event_wireless_custom(drv->ctx, buf); in wpa_driver_wext_event_wireless()
494 drv->scan_complete_events = 1; in wpa_driver_wext_event_wireless()
496 drv, drv->ctx); in wpa_driver_wext_event_wireless()
497 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, in wpa_driver_wext_event_wireless()
507 drv, custom, iwe->u.data.length); in wpa_driver_wext_event_wireless()
516 drv, custom, iwe->u.data.length); in wpa_driver_wext_event_wireless()
525 drv, custom, iwe->u.data.length); in wpa_driver_wext_event_wireless()
534 static void wpa_driver_wext_event_link(struct wpa_driver_wext_data *drv, in wpa_driver_wext_event_link() argument
551 if (os_strcmp(drv->ifname, event.interface_status.ifname) == 0) { in wpa_driver_wext_event_link()
553 if (drv->if_removed) { in wpa_driver_wext_event_link()
558 drv->if_removed = 1; in wpa_driver_wext_event_link()
560 if (if_nametoindex(drv->ifname) == 0) { in wpa_driver_wext_event_link()
564 drv->ifname); in wpa_driver_wext_event_link()
567 if (!drv->if_removed) { in wpa_driver_wext_event_link()
572 drv->if_removed = 0; in wpa_driver_wext_event_link()
576 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, &event); in wpa_driver_wext_event_link()
580 static int wpa_driver_wext_own_ifname(struct wpa_driver_wext_data *drv, in wpa_driver_wext_own_ifname() argument
592 if (os_strcmp(((char *) attr) + rta_len, drv->ifname) in wpa_driver_wext_own_ifname()
605 static int wpa_driver_wext_own_ifindex(struct wpa_driver_wext_data *drv, in wpa_driver_wext_own_ifindex() argument
608 if (drv->ifindex == ifindex || drv->ifindex2 == ifindex) in wpa_driver_wext_own_ifindex()
611 if (drv->if_removed && wpa_driver_wext_own_ifname(drv, buf, len)) { in wpa_driver_wext_own_ifindex()
612 drv->ifindex = if_nametoindex(drv->ifname); in wpa_driver_wext_own_ifindex()
615 wpa_driver_wext_finish_drv_init(drv); in wpa_driver_wext_own_ifindex()
626 struct wpa_driver_wext_data *drv = ctx; in wpa_driver_wext_event_rtm_newlink() local
631 if (!wpa_driver_wext_own_ifindex(drv, ifi->ifi_index, buf, len)) { in wpa_driver_wext_event_rtm_newlink()
639 drv->operstate, ifi->ifi_flags, in wpa_driver_wext_event_rtm_newlink()
645 if (!drv->if_disabled && !(ifi->ifi_flags & IFF_UP)) { in wpa_driver_wext_event_rtm_newlink()
647 drv->if_disabled = 1; in wpa_driver_wext_event_rtm_newlink()
648 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, NULL); in wpa_driver_wext_event_rtm_newlink()
651 if (drv->if_disabled && (ifi->ifi_flags & IFF_UP)) { in wpa_driver_wext_event_rtm_newlink()
653 linux_iface_up(drv->ioctl_sock, drv->ifname) == 0) { in wpa_driver_wext_event_rtm_newlink()
657 } else if (if_nametoindex(drv->ifname) == 0) { in wpa_driver_wext_event_rtm_newlink()
660 drv->ifname); in wpa_driver_wext_event_rtm_newlink()
661 } else if (drv->if_removed) { in wpa_driver_wext_event_rtm_newlink()
664 "removed", drv->ifname); in wpa_driver_wext_event_rtm_newlink()
667 drv->if_disabled = 0; in wpa_driver_wext_event_rtm_newlink()
668 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, in wpa_driver_wext_event_rtm_newlink()
679 if (drv->operstate == 1 && in wpa_driver_wext_event_rtm_newlink()
682 netlink_send_oper_ifla(drv->netlink, drv->ifindex, in wpa_driver_wext_event_rtm_newlink()
692 drv, ((char *) attr) + rta_len, in wpa_driver_wext_event_rtm_newlink()
695 wpa_driver_wext_event_link(drv, in wpa_driver_wext_event_rtm_newlink()
707 struct wpa_driver_wext_data *drv = ctx; in wpa_driver_wext_event_rtm_dellink() local
717 wpa_driver_wext_event_link(drv, in wpa_driver_wext_event_rtm_dellink()
738 struct wpa_driver_wext_data *drv = ctx; in wpa_driver_wext_rfkill_unblocked() local
740 if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1)) { in wpa_driver_wext_rfkill_unblocked()
749 static void wext_get_phy_name(struct wpa_driver_wext_data *drv) in wext_get_phy_name() argument
755 drv->phyname[0] = '\0'; in wext_get_phy_name()
757 drv->ifname); in wext_get_phy_name()
765 rv = read(f, drv->phyname, sizeof(drv->phyname) - 1); in wext_get_phy_name()
773 drv->phyname[rv] = '\0'; in wext_get_phy_name()
774 pos = os_strchr(drv->phyname, '\n'); in wext_get_phy_name()
778 drv->ifname, drv->phyname); in wext_get_phy_name()
791 struct wpa_driver_wext_data *drv; in wpa_driver_wext_init() local
797 drv = os_zalloc(sizeof(*drv)); in wpa_driver_wext_init()
798 if (drv == NULL) in wpa_driver_wext_init()
800 drv->ctx = ctx; in wpa_driver_wext_init()
801 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname)); in wpa_driver_wext_init()
806 drv->cfg80211 = 1; in wpa_driver_wext_init()
807 wext_get_phy_name(drv); in wpa_driver_wext_init()
810 drv->ioctl_sock = socket(PF_INET, SOCK_DGRAM, 0); in wpa_driver_wext_init()
811 if (drv->ioctl_sock < 0) { in wpa_driver_wext_init()
820 cfg->ctx = drv; in wpa_driver_wext_init()
823 drv->netlink = netlink_init(cfg); in wpa_driver_wext_init()
824 if (drv->netlink == NULL) { in wpa_driver_wext_init()
832 rcfg->ctx = drv; in wpa_driver_wext_init()
836 drv->rfkill = rfkill_init(rcfg); in wpa_driver_wext_init()
837 if (drv->rfkill == NULL) { in wpa_driver_wext_init()
842 drv->mlme_sock = -1; in wpa_driver_wext_init()
844 if (wpa_driver_wext_finish_drv_init(drv) < 0) in wpa_driver_wext_init()
847 wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED, 1); in wpa_driver_wext_init()
849 return drv; in wpa_driver_wext_init()
852 rfkill_deinit(drv->rfkill); in wpa_driver_wext_init()
853 netlink_deinit(drv->netlink); in wpa_driver_wext_init()
855 close(drv->ioctl_sock); in wpa_driver_wext_init()
857 os_free(drv); in wpa_driver_wext_init()
868 static int wext_hostap_ifname(struct wpa_driver_wext_data *drv, in wext_hostap_ifname() argument
879 drv->ifname, ifname); in wext_hostap_ifname()
896 wpa_driver_wext_alternative_ifindex(drv, ifname); in wext_hostap_ifname()
903 static int wext_add_hostap(struct wpa_driver_wext_data *drv) in wext_add_hostap() argument
910 snprintf(buf, sizeof(buf), "/sys/class/net/%s/device/net", drv->ifname); in wext_add_hostap()
916 if (ret < 0 && wext_hostap_ifname(drv, names[n]->d_name) == 0) in wext_add_hostap()
926 static void wext_check_hostap(struct wpa_driver_wext_data *drv) in wext_check_hostap() argument
944 drv->ifname); in wext_check_hostap()
955 wext_add_hostap(drv) == 0) in wext_check_hostap()
960 if (os_strncmp(drv->ifname, "wlan", 4) == 0) { in wext_check_hostap()
962 os_strlcpy(ifname2, drv->ifname, sizeof(ifname2)); in wext_check_hostap()
964 wpa_driver_wext_alternative_ifindex(drv, ifname2); in wext_check_hostap()
969 static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv) in wpa_driver_wext_finish_drv_init() argument
974 if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1) < 0) { in wpa_driver_wext_finish_drv_init()
975 if (rfkill_is_blocked(drv->rfkill)) { in wpa_driver_wext_finish_drv_init()
978 drv->ifname); in wpa_driver_wext_finish_drv_init()
979 drv->if_disabled = 1; in wpa_driver_wext_finish_drv_init()
983 "interface '%s' UP", drv->ifname); in wpa_driver_wext_finish_drv_init()
991 wpa_driver_wext_flush_pmkid(drv); in wpa_driver_wext_finish_drv_init()
993 if (wpa_driver_wext_set_mode(drv, 0) < 0) { in wpa_driver_wext_finish_drv_init()
999 wpa_driver_wext_get_range(drv); in wpa_driver_wext_finish_drv_init()
1003 drv->capa.key_mgmt_iftype[i] = drv->capa.key_mgmt; in wpa_driver_wext_finish_drv_init()
1010 wpa_driver_wext_disconnect(drv); in wpa_driver_wext_finish_drv_init()
1012 drv->ifindex = if_nametoindex(drv->ifname); in wpa_driver_wext_finish_drv_init()
1014 wext_check_hostap(drv); in wpa_driver_wext_finish_drv_init()
1016 netlink_send_oper_ifla(drv->netlink, drv->ifindex, in wpa_driver_wext_finish_drv_init()
1021 drv, drv->ctx); in wpa_driver_wext_finish_drv_init()
1037 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_deinit() local
1039 wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED, 0); in wpa_driver_wext_deinit()
1041 eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx); in wpa_driver_wext_deinit()
1042 eloop_cancel_timeout(wpa_driver_wext_send_rfkill, drv, drv->ctx); in wpa_driver_wext_deinit()
1048 wpa_driver_wext_disconnect(drv); in wpa_driver_wext_deinit()
1050 netlink_send_oper_ifla(drv->netlink, drv->ifindex, 0, IF_OPER_UP); in wpa_driver_wext_deinit()
1051 netlink_deinit(drv->netlink); in wpa_driver_wext_deinit()
1052 rfkill_deinit(drv->rfkill); in wpa_driver_wext_deinit()
1054 if (drv->mlme_sock >= 0) in wpa_driver_wext_deinit()
1055 eloop_unregister_read_sock(drv->mlme_sock); in wpa_driver_wext_deinit()
1057 (void) linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 0); in wpa_driver_wext_deinit()
1059 close(drv->ioctl_sock); in wpa_driver_wext_deinit()
1060 if (drv->mlme_sock >= 0) in wpa_driver_wext_deinit()
1061 close(drv->mlme_sock); in wpa_driver_wext_deinit()
1062 os_free(drv->assoc_req_ies); in wpa_driver_wext_deinit()
1063 os_free(drv->assoc_resp_ies); in wpa_driver_wext_deinit()
1064 os_free(drv); in wpa_driver_wext_deinit()
1091 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_scan() local
1105 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_scan()
1118 if (ioctl(drv->ioctl_sock, SIOCSIWSCAN, &iwr) < 0) { in wpa_driver_wext_scan()
1127 if (drv->scan_complete_events) { in wpa_driver_wext_scan()
1137 eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx); in wpa_driver_wext_scan()
1138 eloop_register_timeout(timeout, 0, wpa_driver_wext_scan_timeout, drv, in wpa_driver_wext_scan()
1139 drv->ctx); in wpa_driver_wext_scan()
1145 static u8 * wpa_driver_wext_giwscan(struct wpa_driver_wext_data *drv, in wpa_driver_wext_giwscan() argument
1158 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_giwscan()
1162 if (ioctl(drv->ioctl_sock, SIOCGIWSCAN, &iwr) == 0) in wpa_driver_wext_giwscan()
1273 static void wext_get_scan_qual(struct wpa_driver_wext_data *drv, in wext_get_scan_qual() argument
1290 (iwe->u.qual.level > drv->max_level))) { in wext_get_scan_qual()
1423 static int wext_19_iw_point(struct wpa_driver_wext_data *drv, u16 cmd) in wext_19_iw_point() argument
1425 return drv->we_version_compiled > 18 && in wext_19_iw_point()
1506 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_get_scan_results() local
1515 res_buf = wpa_driver_wext_giwscan(drv, &len); in wpa_driver_wext_get_scan_results()
1539 if (wext_19_iw_point(drv, iwe->cmd)) { in wpa_driver_wext_get_scan_results()
1570 wext_get_scan_qual(drv, iwe, &data); in wpa_driver_wext_get_scan_results()
1603 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_get_range() local
1619 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_get_range()
1626 if (ioctl(drv->ioctl_sock, SIOCGIWRANGE, &iwr) < 0) { in wpa_driver_wext_get_range()
1638 drv->has_capability = 1; in wpa_driver_wext_get_range()
1639 drv->we_version_compiled = range->we_version_compiled; in wpa_driver_wext_get_range()
1641 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA | in wpa_driver_wext_get_range()
1645 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA2 | in wpa_driver_wext_get_range()
1648 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 | in wpa_driver_wext_get_range()
1650 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP128; in wpa_driver_wext_get_range()
1652 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP; in wpa_driver_wext_get_range()
1654 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP; in wpa_driver_wext_get_range()
1656 drv->capa.flags |= WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK | in wpa_driver_wext_get_range()
1658 drv->capa.auth = WPA_DRIVER_AUTH_OPEN | in wpa_driver_wext_get_range()
1661 drv->capa.max_scan_ssids = 1; in wpa_driver_wext_get_range()
1665 drv->capa.key_mgmt, drv->capa.enc, in wpa_driver_wext_get_range()
1666 (unsigned long long) drv->capa.flags); in wpa_driver_wext_get_range()
1672 drv->max_level = range->max_qual.level; in wpa_driver_wext_get_range()
1679 static int wpa_driver_wext_set_psk(struct wpa_driver_wext_data *drv, in wpa_driver_wext_set_psk() argument
1688 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X)) in wpa_driver_wext_set_psk()
1695 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_psk()
1707 ret = ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr); in wpa_driver_wext_set_psk()
1724 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_key_ext() local
1739 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_key_ext()
1793 if (ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr) < 0) { in wpa_driver_wext_set_key_ext()
1823 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_key() local
1841 ret = wpa_driver_wext_set_key_ext(drv, alg, addr, key_idx, set_tx, in wpa_driver_wext_set_key()
1858 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_key()
1866 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) { in wpa_driver_wext_set_key()
1874 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_key()
1879 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) { in wpa_driver_wext_set_key()
1894 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_countermeasures() local
1896 return wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_set_countermeasures()
1905 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_drop_unencrypted() local
1907 drv->use_crypt = enabled; in wpa_driver_wext_set_drop_unencrypted()
1908 return wpa_driver_wext_set_auth_param(drv, IW_AUTH_DROP_UNENCRYPTED, in wpa_driver_wext_set_drop_unencrypted()
1913 static int wpa_driver_wext_mlme(struct wpa_driver_wext_data *drv, in wpa_driver_wext_mlme() argument
1921 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_mlme()
1930 if (ioctl(drv->ioctl_sock, SIOCSIWMLME, &iwr) < 0) { in wpa_driver_wext_mlme()
1940 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv) in wpa_driver_wext_disconnect() argument
1953 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_disconnect()
1954 if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) { in wpa_driver_wext_disconnect()
1962 if (wpa_driver_wext_set_bssid(drv, null_bssid) < 0) { in wpa_driver_wext_disconnect()
1967 if (drv->cfg80211) { in wpa_driver_wext_disconnect()
1973 if (wpa_driver_wext_set_ssid(drv, (u8 *) "", 0) < 0) { in wpa_driver_wext_disconnect()
1988 if (wpa_driver_wext_set_ssid(drv, ssid, SSID_MAX_LEN) < 0) { in wpa_driver_wext_disconnect()
1999 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_deauthenticate() local
2002 ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DEAUTH, reason_code); in wpa_driver_wext_deauthenticate()
2003 wpa_driver_wext_disconnect(drv); in wpa_driver_wext_deauthenticate()
2011 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_gen_ie() local
2016 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_gen_ie()
2020 if (ioctl(drv->ioctl_sock, SIOCSIWGENIE, &iwr) < 0) { in wpa_driver_wext_set_gen_ie()
2064 wpa_driver_wext_auth_alg_fallback(struct wpa_driver_wext_data *drv, in wpa_driver_wext_auth_alg_fallback() argument
2074 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_auth_alg_fallback()
2089 if (!drv->use_crypt) { in wpa_driver_wext_auth_alg_fallback()
2098 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) { in wpa_driver_wext_auth_alg_fallback()
2111 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_associate() local
2118 if (drv->cfg80211) { in wpa_driver_wext_associate()
2123 if (wpa_driver_wext_set_ssid(drv, (u8 *) "", 0) < 0) { in wpa_driver_wext_associate()
2130 if (wpa_driver_wext_set_drop_unencrypted(drv, params->drop_unencrypted) in wpa_driver_wext_associate()
2133 if (wpa_driver_wext_set_auth_alg(drv, params->auth_alg) < 0) in wpa_driver_wext_associate()
2135 if (wpa_driver_wext_set_mode(drv, params->mode) < 0) in wpa_driver_wext_associate()
2142 if (drv->auth_alg_fallback && in wpa_driver_wext_associate()
2143 wpa_driver_wext_auth_alg_fallback(drv, params) < 0) in wpa_driver_wext_associate()
2147 wpa_driver_wext_set_bssid(drv, NULL) < 0) in wpa_driver_wext_associate()
2153 if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len) in wpa_driver_wext_associate()
2162 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2166 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2170 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2174 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2181 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2194 if (wpa_driver_wext_set_psk(drv, params->psk) < 0) in wpa_driver_wext_associate()
2196 if (wpa_driver_wext_set_auth_param(drv, in wpa_driver_wext_associate()
2211 if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0) in wpa_driver_wext_associate()
2214 wpa_driver_wext_set_freq(drv, params->freq.freq) < 0) in wpa_driver_wext_associate()
2216 if (!drv->cfg80211 && in wpa_driver_wext_associate()
2217 wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) in wpa_driver_wext_associate()
2220 wpa_driver_wext_set_bssid(drv, params->bssid) < 0) in wpa_driver_wext_associate()
2222 if (drv->cfg80211 && in wpa_driver_wext_associate()
2223 wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0) in wpa_driver_wext_associate()
2232 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_auth_alg() local
2246 res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG, in wpa_driver_wext_set_auth_alg()
2248 drv->auth_alg_fallback = res == -2; in wpa_driver_wext_set_auth_alg()
2261 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_mode() local
2267 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_set_mode()
2269 if (ioctl(drv->ioctl_sock, SIOCSIWMODE, &iwr) == 0) { in wpa_driver_wext_set_mode()
2284 if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) { in wpa_driver_wext_set_mode()
2295 if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 0) == 0) { in wpa_driver_wext_set_mode()
2298 if (ioctl(drv->ioctl_sock, SIOCSIWMODE, &iwr) < 0) in wpa_driver_wext_set_mode()
2304 (void) linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1); in wpa_driver_wext_set_mode()
2312 static int wpa_driver_wext_pmksa(struct wpa_driver_wext_data *drv, in wpa_driver_wext_pmksa() argument
2320 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_pmksa()
2331 if (ioctl(drv->ioctl_sock, SIOCSIWPMKSA, &iwr) < 0) { in wpa_driver_wext_pmksa()
2345 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_add_pmkid() local
2346 return wpa_driver_wext_pmksa(drv, IW_PMKSA_ADD, params->bssid, in wpa_driver_wext_add_pmkid()
2354 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_remove_pmkid() local
2355 return wpa_driver_wext_pmksa(drv, IW_PMKSA_REMOVE, params->bssid, in wpa_driver_wext_remove_pmkid()
2362 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_flush_pmkid() local
2363 return wpa_driver_wext_pmksa(drv, IW_PMKSA_FLUSH, NULL, NULL); in wpa_driver_wext_flush_pmkid()
2369 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_get_capa() local
2370 if (!drv->has_capability) in wpa_driver_wext_get_capa()
2372 os_memcpy(capa, &drv->capa, sizeof(*capa)); in wpa_driver_wext_get_capa()
2377 int wpa_driver_wext_alternative_ifindex(struct wpa_driver_wext_data *drv, in wpa_driver_wext_alternative_ifindex() argument
2381 drv->ifindex2 = -1; in wpa_driver_wext_alternative_ifindex()
2385 drv->ifindex2 = if_nametoindex(ifname); in wpa_driver_wext_alternative_ifindex()
2386 if (drv->ifindex2 <= 0) in wpa_driver_wext_alternative_ifindex()
2390 "wireless events", drv->ifindex2, ifname); in wpa_driver_wext_alternative_ifindex()
2398 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_set_operstate() local
2401 __func__, drv->operstate, state, state ? "UP" : "DORMANT"); in wpa_driver_wext_set_operstate()
2402 drv->operstate = state; in wpa_driver_wext_set_operstate()
2403 return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1, in wpa_driver_wext_set_operstate()
2408 int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv) in wpa_driver_wext_get_version() argument
2410 return drv->we_version_compiled; in wpa_driver_wext_get_version()
2416 struct wpa_driver_wext_data *drv = priv; in wext_get_radio_name() local
2417 return drv->phyname; in wext_get_radio_name()
2423 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_signal_poll() local
2433 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ); in wpa_driver_wext_signal_poll()
2438 if (ioctl(drv->ioctl_sock, SIOCGIWSTATS, &iwr) < 0) { in wpa_driver_wext_signal_poll()
2454 struct wpa_driver_wext_data *drv = priv; in wpa_driver_wext_status() local
2462 if (linux_get_ifhwaddr(drv->ioctl_sock, drv->ifname, addr)) in wpa_driver_wext_status()
2469 drv->ifindex, in wpa_driver_wext_status()
2470 drv->ifname, in wpa_driver_wext_status()