• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/wpa_supplicant-0.7.3/src/drivers/

Lines Matching refs:drv

40 static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv);
41 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv);
45 int wpa_driver_wext_set_auth_param(struct wpa_driver_wext_data *drv,
52 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
56 if (ioctl(drv->ioctl_sock, SIOCSIWAUTH, &iwr) < 0) {
77 struct wpa_driver_wext_data *drv = priv;
82 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
84 if (ioctl(drv->ioctl_sock, SIOCGIWAP, &iwr) < 0) {
102 struct wpa_driver_wext_data *drv = priv;
107 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
114 if (ioctl(drv->ioctl_sock, SIOCSIWAP, &iwr) < 0) {
131 struct wpa_driver_wext_data *drv = priv;
136 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
140 if (ioctl(drv->ioctl_sock, SIOCGIWESSID, &iwr) < 0) {
152 drv->we_version_compiled < 21)
169 struct wpa_driver_wext_data *drv = priv;
178 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
184 if (drv->we_version_compiled < 21) {
198 if (ioctl(drv->ioctl_sock, SIOCSIWESSID, &iwr) < 0) {
215 struct wpa_driver_wext_data *drv = priv;
220 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
224 if (ioctl(drv->ioctl_sock, SIOCSIWFREQ, &iwr) < 0) {
330 struct wpa_driver_wext_data *drv, const char *ev, size_t len)
350 wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE, &data);
357 struct wpa_driver_wext_data *drv, const char *ev, int len)
364 os_free(drv->assoc_req_ies);
365 drv->assoc_req_ies = os_malloc(len);
366 if (drv->assoc_req_ies == NULL) {
367 drv->assoc_req_ies_len = 0;
370 os_memcpy(drv->assoc_req_ies, ev, len);
371 drv->assoc_req_ies_len = len;
378 struct wpa_driver_wext_data *drv, const char *ev, int len)
385 os_free(drv->assoc_resp_ies);
386 drv->assoc_resp_ies = os_malloc(len);
387 if (drv->assoc_resp_ies == NULL) {
388 drv->assoc_resp_ies_len = 0;
391 os_memcpy(drv->assoc_resp_ies, ev, len);
392 drv->assoc_resp_ies_len = len;
398 static void wpa_driver_wext_event_assoc_ies(struct wpa_driver_wext_data *drv)
402 if (drv->assoc_req_ies == NULL && drv->assoc_resp_ies == NULL)
406 if (drv->assoc_req_ies) {
407 data.assoc_info.req_ies = drv->assoc_req_ies;
408 data.assoc_info.req_ies_len = drv->assoc_req_ies_len;
410 if (drv->assoc_resp_ies) {
411 data.assoc_info.resp_ies = drv->assoc_resp_ies;
412 data.assoc_info.resp_ies_len = drv->assoc_resp_ies_len;
415 wpa_supplicant_event(drv->ctx, EVENT_ASSOCINFO, &data);
417 os_free(drv->assoc_req_ies);
418 drv->assoc_req_ies = NULL;
419 os_free(drv->assoc_resp_ies);
420 drv->assoc_resp_ies = NULL;
424 static void wpa_driver_wext_event_wireless(struct wpa_driver_wext_data *drv,
443 if (drv->we_version_compiled > 18 &&
469 os_free(drv->assoc_req_ies);
470 drv->assoc_req_ies = NULL;
471 os_free(drv->assoc_resp_ies);
472 drv->assoc_resp_ies = NULL;
473 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC,
477 wpa_driver_wext_event_assoc_ies(drv);
478 wpa_supplicant_event(drv->ctx, EVENT_ASSOC,
489 drv->ctx, custom, iwe->u.data.length);
502 wpa_driver_wext_event_wireless_custom(drv->ctx, buf);
506 drv->scan_complete_events = 1;
508 drv, drv->ctx);
509 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS,
519 drv, custom, iwe->u.data.length);
528 drv, custom, iwe->u.data.length);
537 drv, custom, iwe->u.data.length);
546 static void wpa_driver_wext_event_link(struct wpa_driver_wext_data *drv,
563 if (os_strcmp(drv->ifname, event.interface_status.ifname) == 0) {
565 drv->if_removed = 1;
567 drv->if_removed = 0;
570 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, &event);
574 static int wpa_driver_wext_own_ifname(struct wpa_driver_wext_data *drv,
586 if (os_strcmp(((char *) attr) + rta_len, drv->ifname)
599 static int wpa_driver_wext_own_ifindex(struct wpa_driver_wext_data *drv,
602 if (drv->ifindex == ifindex || drv->ifindex2 == ifindex)
605 if (drv->if_removed && wpa_driver_wext_own_ifname(drv, buf, len)) {
606 drv->ifindex = if_nametoindex(drv->ifname);
609 wpa_driver_wext_finish_drv_init(drv);
620 struct wpa_driver_wext_data *drv = ctx;
624 if (!wpa_driver_wext_own_ifindex(drv, ifi->ifi_index, buf, len)) {
632 drv->operstate, ifi->ifi_flags,
643 if (drv->operstate == 1 &&
646 netlink_send_oper_ifla(drv->netlink, drv->ifindex,
656 drv, ((char *) attr) + rta_len,
659 wpa_driver_wext_event_link(drv,
671 struct wpa_driver_wext_data *drv = ctx;
681 wpa_driver_wext_event_link(drv,
699 struct wpa_driver_wext_data *drv;
704 drv = os_zalloc(sizeof(*drv));
705 if (drv == NULL)
707 drv->ctx = ctx;
708 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
713 drv->cfg80211 = 1;
716 drv->ioctl_sock = socket(PF_INET, SOCK_DGRAM, 0);
717 if (drv->ioctl_sock < 0) {
725 cfg->ctx = drv;
728 drv->netlink = netlink_init(cfg);
729 if (drv->netlink == NULL) {
734 drv->mlme_sock = -1;
736 if (wpa_driver_wext_finish_drv_init(drv) < 0)
739 wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED, 1);
741 return drv;
744 netlink_deinit(drv->netlink);
746 close(drv->ioctl_sock);
748 os_free(drv);
753 static int wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv)
755 if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1) < 0)
761 wpa_driver_wext_flush_pmkid(drv);
763 if (wpa_driver_wext_set_mode(drv, 0) < 0) {
769 wpa_driver_wext_get_range(drv);
776 wpa_driver_wext_disconnect(drv);
778 drv->ifindex = if_nametoindex(drv->ifname);
780 if (os_strncmp(drv->ifname, "wlan", 4) == 0) {
790 os_strlcpy(ifname2, drv->ifname, sizeof(ifname2));
792 wpa_driver_wext_alternative_ifindex(drv, ifname2);
795 netlink_send_oper_ifla(drv->netlink, drv->ifindex,
811 struct wpa_driver_wext_data *drv = priv;
813 wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED, 0);
815 eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx);
821 wpa_driver_wext_disconnect(drv);
823 netlink_send_oper_ifla(drv->netlink, drv->ifindex, 0, IF_OPER_UP);
824 netlink_deinit(drv->netlink);
826 if (drv->mlme_sock >= 0)
827 eloop_unregister_read_sock(drv->mlme_sock);
829 (void) linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 0);
831 close(drv->ioctl_sock);
832 if (drv->mlme_sock >= 0)
833 close(drv->mlme_sock);
834 os_free(drv->assoc_req_ies);
835 os_free(drv->assoc_resp_ies);
836 os_free(drv);
863 struct wpa_driver_wext_data *drv = priv;
877 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
890 if (ioctl(drv->ioctl_sock, SIOCSIWSCAN, &iwr) < 0) {
898 if (drv->scan_complete_events) {
908 eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx);
909 eloop_register_timeout(timeout, 0, wpa_driver_wext_scan_timeout, drv,
910 drv->ctx);
916 static u8 * wpa_driver_wext_giwscan(struct wpa_driver_wext_data *drv,
929 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
933 if (ioctl(drv->ioctl_sock, SIOCGIWSCAN, &iwr) == 0)
1184 static int wext_19_iw_point(struct wpa_driver_wext_data *drv, u16 cmd)
1186 return drv->we_version_compiled > 18 &&
1267 struct wpa_driver_wext_data *drv = priv;
1276 res_buf = wpa_driver_wext_giwscan(drv, &len);
1301 if (wext_19_iw_point(drv, iwe->cmd)) {
1365 struct wpa_driver_wext_data *drv = priv;
1381 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1388 if (ioctl(drv->ioctl_sock, SIOCGIWRANGE, &iwr) < 0) {
1399 drv->has_capability = 1;
1400 drv->we_version_compiled = range->we_version_compiled;
1402 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA |
1406 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA2 |
1409 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 |
1412 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP;
1414 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP;
1416 drv->capa.flags |= WPA_DRIVER_FLAGS_4WAY_HANDSHAKE;
1417 drv->capa.auth = WPA_DRIVER_AUTH_OPEN |
1420 drv->capa.max_scan_ssids = 1;
1424 drv->capa.key_mgmt, drv->capa.enc, drv->capa.flags);
1435 static int wpa_driver_wext_set_psk(struct wpa_driver_wext_data *drv,
1444 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE))
1451 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1463 ret = ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr);
1478 struct wpa_driver_wext_data *drv = priv;
1493 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1549 if (ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr) < 0) {
1597 struct wpa_driver_wext_data *drv = priv;
1606 ret = wpa_driver_wext_set_key_ext(drv, alg, addr, key_idx, set_tx,
1623 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1631 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) {
1638 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1643 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) {
1656 struct wpa_driver_wext_data *drv = priv;
1658 return wpa_driver_wext_set_auth_param(drv,
1667 struct wpa_driver_wext_data *drv = priv;
1669 drv->use_crypt = enabled;
1670 return wpa_driver_wext_set_auth_param(drv, IW_AUTH_DROP_UNENCRYPTED,
1675 static int wpa_driver_wext_mlme(struct wpa_driver_wext_data *drv,
1683 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1692 if (ioctl(drv->ioctl_sock, SIOCSIWMLME, &iwr) < 0) {
1701 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv)
1714 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1715 if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) {
1721 if (drv->cfg80211) {
1727 if (wpa_driver_wext_set_bssid(drv, null_bssid) < 0 ||
1728 wpa_driver_wext_set_ssid(drv, (u8 *) "", 0) < 0) {
1742 if (wpa_driver_wext_set_bssid(drv, null_bssid) < 0 ||
1743 wpa_driver_wext_set_ssid(drv, ssid, 32) < 0) {
1754 struct wpa_driver_wext_data *drv = priv;
1757 ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DEAUTH, reason_code);
1758 wpa_driver_wext_disconnect(drv);
1766 struct wpa_driver_wext_data *drv = priv;
1769 ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DISASSOC, reason_code);
1770 wpa_driver_wext_disconnect(drv);
1778 struct wpa_driver_wext_data *drv = priv;
1783 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1787 if (ioctl(drv->ioctl_sock, SIOCSIWGENIE, &iwr) < 0) {
1830 wpa_driver_wext_auth_alg_fallback(struct wpa_driver_wext_data *drv,
1840 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1855 if (!drv->use_crypt) {
1864 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) {
1876 struct wpa_driver_wext_data *drv = priv;
1883 if (drv->cfg80211) {
1888 wpa_driver_wext_set_ssid(drv, (u8 *) "", 0);
1891 if (wpa_driver_wext_set_drop_unencrypted(drv, params->drop_unencrypted)
1894 if (wpa_driver_wext_set_auth_alg(drv, params->auth_alg) < 0)
1896 if (wpa_driver_wext_set_mode(drv, params->mode) < 0)
1903 if (drv->auth_alg_fallback &&
1904 wpa_driver_wext_auth_alg_fallback(drv, params) < 0)
1908 wpa_driver_wext_set_bssid(drv, NULL) < 0)
1914 if (wpa_driver_wext_set_gen_ie(drv, params->wpa_ie, params->wpa_ie_len)
1923 if (wpa_driver_wext_set_auth_param(drv,
1927 if (wpa_driver_wext_set_auth_param(drv,
1931 if (wpa_driver_wext_set_auth_param(drv,
1935 if (wpa_driver_wext_set_auth_param(drv,
1942 if (wpa_driver_wext_set_auth_param(drv,
1955 if (wpa_driver_wext_set_psk(drv, params->psk) < 0)
1957 if (wpa_driver_wext_set_auth_param(drv,
1973 if (wpa_driver_wext_set_auth_param(drv, IW_AUTH_MFP, value) < 0)
1976 if (params->freq && wpa_driver_wext_set_freq(drv, params->freq) < 0)
1978 if (!drv->cfg80211 &&
1979 wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0)
1982 wpa_driver_wext_set_bssid(drv, params->bssid) < 0)
1984 if (drv->cfg80211 &&
1985 wpa_driver_wext_set_ssid(drv, params->ssid, params->ssid_len) < 0)
1994 struct wpa_driver_wext_data *drv = priv;
2008 res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG,
2010 drv->auth_alg_fallback = res == -2;
2023 struct wpa_driver_wext_data *drv = priv;
2029 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
2031 if (ioctl(drv->ioctl_sock, SIOCSIWMODE, &iwr) == 0) {
2045 if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) {
2055 if (linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 0) == 0) {
2058 if (ioctl(drv->ioctl_sock, SIOCSIWMODE, &iwr) < 0)
2063 (void) linux_set_iface_flags(drv->ioctl_sock, drv->ifname, 1);
2071 static int wpa_driver_wext_pmksa(struct wpa_driver_wext_data *drv,
2079 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
2090 if (ioctl(drv->ioctl_sock, SIOCSIWPMKSA, &iwr) < 0) {
2103 struct wpa_driver_wext_data *drv = priv;
2104 return wpa_driver_wext_pmksa(drv, IW_PMKSA_ADD, bssid, pmkid);
2111 struct wpa_driver_wext_data *drv = priv;
2112 return wpa_driver_wext_pmksa(drv, IW_PMKSA_REMOVE, bssid, pmkid);
2118 struct wpa_driver_wext_data *drv = priv;
2119 return wpa_driver_wext_pmksa(drv, IW_PMKSA_FLUSH, NULL, NULL);
2125 struct wpa_driver_wext_data *drv = priv;
2126 if (!drv->has_capability)
2128 os_memcpy(capa, &drv->capa, sizeof(*capa));
2133 int wpa_driver_wext_alternative_ifindex(struct wpa_driver_wext_data *drv,
2137 drv->ifindex2 = -1;
2141 drv->ifindex2 = if_nametoindex(ifname);
2142 if (drv->ifindex2 <= 0)
2146 "wireless events", drv->ifindex2, ifname);
2154 struct wpa_driver_wext_data *drv = priv;
2157 __func__, drv->operstate, state, state ? "UP" : "DORMANT");
2158 drv->operstate = state;
2159 return netlink_send_oper_ifla(drv->netlink, drv->ifindex, -1,
2164 int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv)
2166 return drv->we_version_compiled;