}
static int
-bsd_set_key(const char *ifname, void *priv, const char *alg,
- const u8 *addr, int key_idx,
- const u8 *key, size_t key_len, int txkey)
+bsd_set_key(const char *ifname, void *priv, wpa_alg alg,
+ const u8 *addr, int key_idx, int set_tx, const u8 *seq,
+ size_t seq_len, const u8 *key, size_t key_len)
{
struct bsd_driver_data *drv = priv;
struct ieee80211req_key wk;
u_int8_t cipher;
- if (strcmp(alg, "none") == 0)
+ if (alg == WPA_ALG_NONE)
return bsd_del_key(drv, addr, key_idx);
- wpa_printf(MSG_DEBUG, "%s: alg=%s addr=%s key_idx=%d",
+ wpa_printf(MSG_DEBUG, "%s: alg=%d addr=%s key_idx=%d",
__func__, alg, ether_sprintf(addr), key_idx);
- if (strcmp(alg, "WEP") == 0)
+ if (alg == WPA_ALG_WEP)
cipher = IEEE80211_CIPHER_WEP;
- else if (strcmp(alg, "TKIP") == 0)
+ else if (alg == WPA_ALG_TKIP)
cipher = IEEE80211_CIPHER_TKIP;
- else if (strcmp(alg, "CCMP") == 0)
+ else if (alg == WPA_ALG_CCMP)
cipher = IEEE80211_CIPHER_AES_CCM;
else {
- printf("%s: unknown/unsupported algorithm %s\n",
+ printf("%s: unknown/unsupported algorithm %d\n",
__func__, alg);
return -1;
}
}
static int
-bsd_wireless_event_init(void *priv)
+bsd_wireless_event_init(struct bsd_driver_data *drv)
{
- struct bsd_driver_data *drv = priv;
int s;
drv->wext_sock = -1;
}
static void
-bsd_wireless_event_deinit(void *priv)
+bsd_wireless_event_deinit(struct bsd_driver_data *drv)
{
- struct bsd_driver_data *drv = priv;
-
- if (drv != NULL) {
- if (drv->wext_sock < 0)
- return;
- eloop_unregister_read_sock(drv->wext_sock);
- close(drv->wext_sock);
- }
+ if (drv->wext_sock < 0)
+ return;
+ eloop_unregister_read_sock(drv->wext_sock);
+ close(drv->wext_sock);
}
goto bad;
bsd_set_iface_flags(drv, 0); /* mark down during setup */
+ if (bsd_wireless_event_init(drv))
+ goto bad;
return drv;
bad:
{
struct bsd_driver_data *drv = priv;
+ bsd_wireless_event_deinit(drv);
(void) bsd_set_iface_flags(drv, 0);
if (drv->ioctl_sock >= 0)
close(drv->ioctl_sock);
free(drv);
}
-const struct wpa_driver_ops wpa_driver_bsd_ops = {
+const struct hapd_driver_ops wpa_driver_bsd_ops = {
.name = "bsd",
.init = bsd_init,
.deinit = bsd_deinit,
.set_ieee8021x = bsd_set_ieee8021x,
.set_privacy = bsd_set_privacy,
- .set_encryption = bsd_set_key,
+ .set_key = bsd_set_key,
.get_seqnum = bsd_get_seqnum,
.flush = bsd_flush,
.set_generic_elem = bsd_set_opt_ie,
- .wireless_event_init = bsd_wireless_event_init,
- .wireless_event_deinit = bsd_wireless_event_deinit,
.sta_set_flags = bsd_sta_set_flags,
.read_sta_data = bsd_read_sta_driver_data,
.send_eapol = bsd_send_eapol,