Home | History | Annotate | Download | only in drivers

Lines Matching refs:drv

70 get80211opmode(struct bsd_driver_data *drv)
75 (void) strncpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name));
77 if (ioctl(drv->sock, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) {
98 struct bsd_driver_data *drv = priv;
102 os_strlcpy(ireq.i_name, drv->ifname, sizeof(ireq.i_name));
108 if (ioctl(drv->sock, SIOCS80211, &ireq) < 0) {
121 struct bsd_driver_data *drv = priv;
124 os_strlcpy(ireq->i_name, drv->ifname, sizeof(ireq->i_name));
129 if (ioctl(drv->sock, SIOCG80211, ireq) < 0) {
138 get80211var(struct bsd_driver_data *drv, int op, void *arg, int arg_len)
142 if (bsd_get80211(drv, &ireq, op, arg, arg_len) < 0)
148 set80211var(struct bsd_driver_data *drv, int op, const void *arg, int arg_len)
150 return bsd_set80211(drv, op, 0, arg, arg_len);
154 set80211param(struct bsd_driver_data *drv, int op, int arg)
156 return bsd_set80211(drv, op, arg, NULL, 0);
162 struct bsd_driver_data *drv = priv;
168 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name));
170 if (ioctl(drv->sock, SIOCG80211NWID, &ifr) < 0 ||
176 return get80211var(drv, IEEE80211_IOC_SSID, ssid, IEEE80211_NWID_LEN);
183 struct bsd_driver_data *drv = priv;
191 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name));
193 return ioctl(drv->sock, SIOCS80211NWID, &ifr);
195 return set80211var(drv, IEEE80211_IOC_SSID, ssid, ssid_len);
202 struct bsd_driver_data *drv = priv;
206 os_strlcpy(ifmr.ifm_name, drv->ifname, sizeof(ifmr.ifm_name));
208 if (ioctl(drv->sock, SIOCGIFMEDIA, &ifmr) < 0) {
220 struct bsd_driver_data *drv = priv;
224 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name));
227 if (ioctl(drv->sock, SIOCSIFMEDIA, &ifr) < 0) {
284 struct bsd_driver_data *drv = priv;
288 os_strlcpy(ifr.ifr_name, drv->ifname, sizeof(ifr.ifr_name));
290 if (ioctl(drv->sock, SIOCGIFFLAGS, &ifr) < 0) {
305 if (ioctl(drv->sock, SIOCSIFFLAGS, &ifr) < 0) {
327 struct bsd_driver_data *drv = priv;
386 if (drv->opmode == IEEE80211_M_IBSS ||
387 drv->opmode == IEEE80211_M_AHDEMO)
578 struct bsd_driver_data *drv = priv;
582 return l2_packet_send(drv->sock_xmit, addr, ETH_P_EAPOL, data,
589 struct bsd_driver_data *drv = priv;
611 if (bsd_set_mediaopt(drv, IFM_MMASK, mode) < 0) {
619 os_strlcpy(creq.i_name, drv->ifname, sizeof(creq.i_name));
621 return ioctl(drv->sock, SIOCS80211CHANNEL, &creq);
775 struct bsd_driver_data *drv = ctx;
820 drv_event_disassoc(drv->hapd, leave->iev_addr);
827 bsd_new_sta(drv, drv->hapd, join->iev_addr);
841 wpa_supplicant_event(drv->hapd,
853 struct bsd_driver_data *drv = ctx;
854 drv_event_eapol_rx(drv->hapd, src_addr, buf, len);
860 struct bsd_driver_data *drv;
862 drv = os_zalloc(sizeof(struct bsd_driver_data));
863 if (drv == NULL) {
868 drv->hapd = hapd;
869 drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
870 if (drv->sock < 0) {
874 os_strlcpy(drv->ifname, params->ifname, sizeof(drv->ifname));
876 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL,
877 handle_read, drv, 0);
878 if (drv->sock_xmit == NULL)
880 if (l2_packet_get_own_addr(drv->sock_xmit, params->own_addr))
884 if (bsd_ctrl_iface(drv, 0) < 0)
887 drv->route = socket(PF_ROUTE, SOCK_RAW, 0);
888 if (drv->route < 0) {
892 eloop_register_read_sock(drv->route, bsd_wireless_event_receive, drv,
895 if (bsd_set_mediaopt(drv, IFM_OMASK, IFM_IEEE80211_HOSTAP) < 0) {
901 return drv;
903 if (drv->sock_xmit != NULL)
904 l2_packet_deinit(drv->sock_xmit);
905 if (drv->sock >= 0)
906 close(drv->sock);
907 if (drv != NULL)
908 os_free(drv);
916 struct bsd_driver_data *drv = priv;
918 if (drv->route >= 0) {
919 eloop_unregister_read_sock(drv->route);
920 close(drv->route);
922 bsd_ctrl_iface(drv, 0);
923 if (drv->sock >= 0)
924 close(drv->sock);
925 if (drv->sock_xmit != NULL)
926 l2_packet_deinit(drv->sock_xmit);
927 os_free(drv);
933 get80211param(struct bsd_driver_data *drv, int op)
937 if (bsd_get80211(drv, &ireq, op, NULL, 0) < 0)
945 struct bsd_driver_data *drv = priv;
949 os_strlcpy(bs.i_name, drv->ifname, sizeof(bs.i_name));
950 if (ioctl(drv->sock, SIOCG80211BSSID, &bs) < 0)
955 return get80211var(drv, IEEE80211_IOC_BSSID,
963 struct bsd_driver_data *drv = priv;
964 return bsd_get_ssid(drv, ssid, 0);
968 wpa_driver_bsd_set_wpa_ie(struct bsd_driver_data *drv, const u8 *wpa_ie,
972 return bsd_set_opt_ie(drv, wpa_ie, wpa_ie_len);
974 return set80211var(drv, IEEE80211_IOC_OPTIE, wpa_ie, wpa_ie_len);
1045 struct bsd_driver_data *drv = ctx;
1047 drv_event_eapol_rx(drv->ctx, src_addr, buf, len);
1053 struct bsd_driver_data *drv = priv;
1083 if (bsd_set_mediaopt(drv, IFM_OMASK, mode) < 0) {
1090 drv->sock_xmit = l2_packet_init(drv->ifname, NULL, ETH_P_EAPOL,
1091 handle_read, drv, 0);
1092 if (drv->sock_xmit == NULL)
1094 drv->is_ap = 1;
1098 if (wpa_driver_bsd_set_drop_unencrypted(drv, params->drop_unencrypted)
1101 if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0)
1104 if (wpa_driver_bsd_set_wpa_ie(drv, params->wpa_ie, params->wpa_ie_len) < 0)
1113 if (set80211param(drv, IEEE80211_IOC_PRIVACY, privacy) < 0)
1117 set80211param(drv, IEEE80211_IOC_WPA,
1128 if (set80211var(drv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme)) < 0)
1136 struct bsd_driver_data *drv = priv;
1142 if (bsd_set_mediaopt(drv, IFM_OMASK, 0 /* STA */) < 0) {
1148 if (set80211param(drv, IEEE80211_IOC_ROAMING,
1156 if (wpa_driver_bsd_set_wpa(drv, 1) < 0) {
1163 if (bsd_ctrl_iface(drv, 1) < 0)
1189 return set80211var(drv, IEEE80211_IOC_SCAN_REQ, &sr, sizeof(sr));
1192 if (bsd_set_ssid(drv, params->ssids[0].ssid,
1197 return set80211param(drv, IEEE80211_IOC_SCAN_REQ, 0);
1204 struct bsd_driver_data *drv = sock_ctx;
1243 if (ifan->ifan_index != drv->ifindex)
1245 os_strlcpy(event.interface_status.ifname, drv->ifname,
1262 if (ifan->ifan_index != drv->ifindex)
1267 if (drv->is_ap)
1272 if (drv->is_ap)
1277 if (drv->is_ap)
1290 bsd_new_sta(drv, ctx, join->iev_addr);
1312 if (ifm->ifm_index != drv->ifindex)
1315 os_strlcpy(event.interface_status.ifname, drv->ifname,
1421 static int wpa_driver_bsd_capa(struct bsd_driver_data *drv)
1436 if (get80211var(drv, IEEE80211_IOC_DEVCAPS, &devcaps,
1447 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA |
1450 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA2 |
1454 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 |
1457 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP;
1459 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP;
1462 drv->capa.flags |= WPA_DRIVER_FLAGS_AP;
1474 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA |
1478 drv->capa.enc = WPA_DRIVER_CAPA_ENC_WEP40 |
1482 drv->capa.flags |= WPA_DRIVER_FLAGS_AP;
1485 drv->capa.max_scan_ssids = IEEE80211_IOC_SCAN_MAX_SSID;
1487 drv->capa.max_scan_ssids = 1;
1489 drv->capa.auth = WPA_DRIVER_AUTH_OPEN |
1498 #define GETPARAM(drv, param, v) \
1499 (((v) = get80211param(drv, param)) != -1)
1500 struct bsd_driver_data *drv;
1502 drv = os_zalloc(sizeof(*drv));
1503 if (drv == NULL)
1511 drv->ifindex = if_nametoindex(ifname);
1512 if (drv->ifindex == 0) {
1517 drv->sock = socket(PF_INET, SOCK_DGRAM, 0);
1518 if (drv->sock < 0)
1521 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
1523 if (bsd_ctrl_iface(drv, 0) < 0)
1526 drv->route = socket(PF_ROUTE, SOCK_RAW, 0);
1527 if (drv->route < 0)
1529 eloop_register_read_sock(drv->route,
1530 wpa_driver_bsd_event_receive, ctx, drv);
1532 drv->ctx = ctx;
1534 if (!GETPARAM(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming)) {
1539 if (!GETPARAM(drv, IEEE80211_IOC_PRIVACY, drv->prev_privacy)) {
1544 if (!GETPARAM(drv, IEEE80211_IOC_WPA, drv->prev_wpa)) {
1550 if (wpa_driver_bsd_capa(drv))
1553 drv->opmode = get80211opmode(drv);
1555 return drv;
1557 close(drv->sock);
1559 os_free(drv);
1567 struct bsd_driver_data *drv = priv;
1569 wpa_driver_bsd_set_wpa(drv, 0);
1570 eloop_unregister_read_sock(drv->route);
1573 bsd_ctrl_iface(drv, 0);
1575 wpa_driver_bsd_set_wpa_internal(drv, drv->prev_wpa, drv->prev_privacy);
1576 if (set80211param(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming) < 0)
1580 if (drv->sock_xmit != NULL)
1581 l2_packet_deinit(drv->sock_xmit);
1582 (void) close(drv->route); /* ioctl socket */
1583 (void) close(drv->sock); /* event socket */
1584 os_free(drv);
1590 struct bsd_driver_data *drv = priv;
1592 os_memcpy(capa, &drv->capa, sizeof(*capa));