nl80211: Remove unuset set_privacy() and set_internal_bridge()
[wpasupplicant] / hostapd / driver_bsd.c
index a138d4e..2f16d7d 100644 (file)
@@ -341,28 +341,28 @@ bsd_del_key(void *priv, const u8 *addr, int key_idx)
 }
 
 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;
        }
@@ -594,9 +594,8 @@ bsd_wireless_event_receive(int sock, void *ctx, void *sock_ctx)
 }
 
 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;
@@ -613,16 +612,12 @@ bsd_wireless_event_init(void *priv)
 }
 
 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);
 }
 
 
@@ -724,6 +719,8 @@ bsd_init(struct hostapd_data *hapd)
                goto bad;
 
        bsd_set_iface_flags(drv, 0);    /* mark down during setup */
+       if (bsd_wireless_event_init(drv))
+               goto bad;
 
        return drv;
 bad:
@@ -742,6 +739,7 @@ bsd_deinit(void *priv)
 {
        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);
@@ -750,18 +748,16 @@ bsd_deinit(void *priv)
        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,