Home | History | Annotate | Download | only in wpa_supplicant_lib

Lines Matching refs:drv

54 static void wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv);
55 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv);
58 static int wpa_driver_wext_send_oper_ifla(struct wpa_driver_wext_data *drv,
80 req.ifinfo.ifi_index = drv->ifindex;
107 ret = send(drv->ioctl_sock, &req, req.hdr.nlmsg_len, 0);
226 struct wpa_driver_wext_data *drv, const char *ev, size_t len)
247 wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE, &data);
254 struct wpa_driver_wext_data *drv, const char *ev, int len)
262 os_free(drv->assoc_req_ies);
263 drv->assoc_req_ies = os_malloc(len);
264 if (drv->assoc_req_ies == NULL) {
265 drv->assoc_req_ies_len = 0;
268 os_memcpy(drv->assoc_req_ies, ev, len);
269 drv->assoc_req_ies_len = len;
276 struct wpa_driver_wext_data *drv, const char *ev, int len)
284 os_free(drv->assoc_resp_ies);
285 drv->assoc_resp_ies = os_malloc(len);
286 if (drv->assoc_resp_ies == NULL) {
287 drv->assoc_resp_ies_len = 0;
290 os_memcpy(drv->assoc_resp_ies, ev, len);
291 drv->assoc_resp_ies_len = len;
297 static void wpa_driver_wext_event_assoc_ies(struct wpa_driver_wext_data *drv)
301 if (drv->assoc_req_ies == NULL && drv->assoc_resp_ies == NULL) {
306 if (drv->assoc_req_ies) {
307 data.assoc_info.req_ies = drv->assoc_req_ies;
308 drv->assoc_req_ies = NULL;
309 data.assoc_info.req_ies_len = drv->assoc_req_ies_len;
311 if (drv->assoc_resp_ies) {
312 data.assoc_info.resp_ies = drv->assoc_resp_ies;
313 drv->assoc_resp_ies = NULL;
314 data.assoc_info.resp_ies_len = drv->assoc_resp_ies_len;
317 wpa_supplicant_event(drv->ctx, EVENT_ASSOCINFO, &data);
324 static void wpa_driver_wext_event_wireless(struct wpa_driver_wext_data *drv,
344 if (drv->we_version_compiled > 18 &&
370 os_free(drv->assoc_req_ies);
371 drv->assoc_req_ies = NULL;
372 os_free(drv->assoc_resp_ies);
373 drv->assoc_resp_ies = NULL;
375 if (!drv->skip_disconnect) {
376 drv->skip_disconnect = 1;
381 wpa_driver_wext_disconnect(drv);
387 drv->skip_disconnect = 0;
389 wpa_driver_wext_event_assoc_ies(drv);
418 drv->scan_complete_events = 1;
420 drv, ctx);
430 drv, custom, iwe->u.data.length);
439 drv, custom, iwe->u.data.length);
448 drv, custom, iwe->u.data.length);
457 static void wpa_driver_wext_event_link(struct wpa_driver_wext_data *drv,
476 if (os_strcmp(drv->ifname, event.interface_status.ifname) == 0) {
478 drv->if_removed = 1;
480 drv->if_removed = 0;
488 static int wpa_driver_wext_own_ifname(struct wpa_driver_wext_data *drv,
509 if (os_strcmp(((char *) attr) + rta_len, drv->ifname)
523 static int wpa_driver_wext_own_ifindex(struct wpa_driver_wext_data *drv,
526 if (drv->ifindex == ifindex || drv->ifindex2 == ifindex) {
530 if (drv->if_removed && wpa_driver_wext_own_ifname(drv, h)) {
531 drv->ifindex = if_nametoindex(drv->ifname);
534 wpa_driver_wext_finish_drv_init(drv);
542 static void wpa_driver_wext_event_rtm_newlink(struct wpa_driver_wext_data *drv,
556 if (!wpa_driver_wext_own_ifindex(drv, ifi->ifi_index, h)) {
564 drv->operstate, ifi->ifi_flags,
575 if (drv->operstate == 1 &&
578 wpa_driver_wext_send_oper_ifla(drv, -1, IF_OPER_UP);
594 drv, ctx, ((char *) attr) + rta_len,
597 wpa_driver_wext_event_link(drv, ctx,
606 static void wpa_driver_wext_event_rtm_dellink(struct wpa_driver_wext_data *drv,
632 wpa_driver_wext_event_link(drv, ctx,
708 static int wpa_driver_wext_get_ifflags_ifname(struct wpa_driver_wext_data *drv,
715 if (ioctl(drv->ioctl_sock, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
724 static void wpa_driver_wext_finish_drv_init(struct wpa_driver_wext_data *drv)
728 if (wpa_driver_wext_get_ifflags(drv, &flags) != 0) {
729 printf("Could not get interface '%s' flags\n", drv->ifname);
731 if (wpa_driver_wext_set_ifflags(drv, flags | IFF_UP) != 0) {
733 drv->ifname);
743 "initialization", drv->ifname);
751 wpa_driver_wext_flush_pmkid(drv);
753 if (wpa_driver_wext_set_mode(drv, 0) < 0) {
757 wpa_driver_wext_get_range(drv);
764 wpa_driver_wext_disconnect(drv);
766 drv->ifindex = if_nametoindex(drv->ifname);
768 if (os_strncmp(drv->ifname, "wlan", 4) == 0) {
778 os_strlcpy(ifname2, drv->ifname, sizeof(ifname2));
780 wpa_driver_wext_alternative_ifindex(drv, ifname2);
783 wpa_driver_wext_send_oper_ifla(drv, 1, IF_OPER_DORMANT);
796 struct wpa_driver_wext_data *drv = priv;
801 if (drv->scan_complete_events) {
811 eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx);
812 eloop_register_timeout(timeout, 0, wpa_driver_wext_scan_timeout, drv,
813 drv->ctx);
817 static u8 * wpa_driver_wext_giwscan(struct wpa_driver_wext_data *drv,
831 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
835 if (ioctl(drv->ioctl_sock, SIOCGIWSCAN, &iwr) == 0) {
1089 static int wext_19_iw_point(struct wpa_driver_wext_data *drv, u16 cmd)
1091 return drv->we_version_compiled > 18 &&
1174 struct wpa_driver_wext_data *drv = priv;
1191 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1198 if (ioctl(drv->ioctl_sock, SIOCGIWRANGE, &iwr) < 0) {
1209 drv->has_capability = 1;
1210 drv->we_version_compiled = range->we_version_compiled;
1212 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA |
1216 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA2 |
1219 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 |
1222 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP;
1225 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP;
1228 drv->capa.flags |= WPA_DRIVER_FLAGS_4WAY_HANDSHAKE;
1230 drv->capa.auth = WPA_DRIVER_AUTH_OPEN |
1236 drv->capa.key_mgmt, drv->capa.enc, drv->capa.flags);
1249 struct wpa_driver_wext_data *drv = priv;
1252 return wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED,
1257 static int wpa_driver_wext_set_psk(struct wpa_driver_wext_data *drv,
1266 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE)) {
1275 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1288 ret = ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr);
1304 struct wpa_driver_wext_data *drv = priv;
1320 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1380 if (ioctl(drv->ioctl_sock, SIOCSIWENCODEEXT, &iwr) < 0) {
1400 struct wpa_driver_wext_data *drv = priv;
1402 return wpa_driver_wext_set_auth_param(drv,
1411 struct wpa_driver_wext_data *drv = priv;
1413 drv->use_crypt = enabled;
1414 return wpa_driver_wext_set_auth_param(drv, IW_AUTH_DROP_UNENCRYPTED,
1419 static int wpa_driver_wext_mlme(struct wpa_driver_wext_data *drv,
1427 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1436 if (ioctl(drv->ioctl_sock, SIOCSIWMLME, &iwr) < 0) {
1445 static void wpa_driver_wext_disconnect(struct wpa_driver_wext_data *drv)
1460 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1461 if (ioctl(drv->ioctl_sock, SIOCGIWMODE, &iwr) < 0) {
1473 wpa_driver_wext_set_bssid(drv, null_bssid);
1477 wpa_driver_wext_set_ssid(drv, ssid, 32);
1486 struct wpa_driver_wext_data *drv = priv;
1489 ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DEAUTH, reason_code);
1490 wpa_driver_wext_disconnect(drv);
1498 struct wpa_driver_wext_data *drv = priv;
1501 ret = wpa_driver_wext_mlme(drv, addr, IW_MLME_DISASSOC, reason_code);
1502 wpa_driver_wext_disconnect(drv);
1510 struct wpa_driver_wext_data *drv = priv;
1515 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1519 if (ioctl(drv->ioctl_sock, SIOCSIWGENIE, &iwr) < 0) {
1529 wpa_driver_wext_auth_alg_fallback(struct wpa_driver_wext_data *drv,
1539 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1554 if (!drv->use_crypt) {
1565 if (ioctl(drv->ioctl_sock, SIOCSIWENCODE, &iwr) < 0) {
1575 struct wpa_driver_wext_data *drv = priv;
1592 res = wpa_driver_wext_set_auth_param(drv, IW_AUTH_80211_AUTH_ALG,
1594 drv->auth_alg_fallback = res == -2;
1598 static int wpa_driver_wext_pmksa(struct wpa_driver_wext_data *drv,
1606 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1619 if (ioctl(drv->ioctl_sock, SIOCSIWPMKSA, &iwr) < 0) {
1633 struct wpa_driver_wext_data *drv = priv;
1634 return wpa_driver_wext_pmksa(drv, IW_PMKSA_ADD, bssid, pmkid);
1641 struct wpa_driver_wext_data *drv = priv;
1642 return wpa_driver_wext_pmksa(drv, IW_PMKSA_REMOVE, bssid, pmkid);
1648 struct wpa_driver_wext_data *drv = priv;
1649 return wpa_driver_wext_pmksa(drv, IW_PMKSA_FLUSH, NULL, NULL);
1657 struct wpa_driver_wext_data *drv = priv;
1662 os_strncpy(ifr.ifr_name, drv->ifname, IFNAMSIZ);
1664 if (ioctl(drv->ioctl_sock, SIOCGIFHWADDR, &ifr) < 0) {
1678 struct wpa_driver_wext_data *drv = priv;
1687 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1689 if (ioctl(drv->ioctl_sock, SIOCGIWSTATS, &iwr) < 0) {
1707 struct wpa_driver_wext_data *drv = priv;
1711 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
1713 if (ioctl(drv->ioctl_sock, SIOCGIWRATE, &iwr) < 0) {
1980 struct wpa_driver_wext_data *drv = priv;
1981 struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx);
1987 if ((wpa_driver_wext_get_ifflags(drv, &flags) == 0) &&
1989 wpa_driver_wext_set_ifflags(drv, flags & ~IFF_UP);
1993 if ((wpa_driver_wext_get_ifflags(drv, &flags) == 0) &&
1995 wpa_driver_wext_set_ifflags(drv, flags | IFF_UP);
2045 ret = wpa_driver_set_power_save(drv->ifname, 0);
2047 ret = wpa_driver_set_power_save(drv->ifname, 1);
2077 ret = wpa_driver_set_country(drv->ifname, cmd + 8);
2100 struct wpa_driver_wext_data *drv = priv;
2105 struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx);
2116 os_strlcpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
2143 if (ioctl(drv->ioctl_sock, SIOCSIWSCAN, &iwr) < 0) {