]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WEP: Remove VLAN support from hostapd
authorMichael Braun <michael-dev@fami-braun.de>
Wed, 7 Aug 2013 09:22:38 +0000 (12:22 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 7 Aug 2013 09:22:38 +0000 (12:22 +0300)
This removes WEP with VLAN support and thus avoids increasing
complexity for tagged VLANs.

Signed-hostap: Michael Braun <michael-dev@fami-braun.de>

src/ap/ap_config.c
src/ap/ap_config.h
src/ap/hostapd.c
src/ap/ieee802_1x.c

index fbc1ee05a421609f4f15accc73ffc634072d95ed..54a2e75077b1c991e16256183076cc00d9602616 100644 (file)
@@ -451,19 +451,6 @@ static void hostapd_config_free_bss(struct hostapd_bss_config *conf)
        os_free(conf->radius);
        os_free(conf->radius_das_shared_secret);
        hostapd_config_free_vlan(conf);
-       if (conf->ssid.dyn_vlan_keys) {
-               struct hostapd_ssid *ssid = &conf->ssid;
-               size_t i;
-               for (i = 0; i <= ssid->max_dyn_vlan_keys; i++) {
-                       if (ssid->dyn_vlan_keys[i] == NULL)
-                               continue;
-                       hostapd_config_free_wep(ssid->dyn_vlan_keys[i]);
-                       os_free(ssid->dyn_vlan_keys[i]);
-               }
-               os_free(ssid->dyn_vlan_keys);
-               ssid->dyn_vlan_keys = NULL;
-       }
-
        os_free(conf->time_zone);
 
 #ifdef CONFIG_IEEE80211R
index b340c1ee2412fc6e68918d1afdab08e5da9ad3dc..9b87686e30cd19018f221ba43d71a160d6b94aaa 100644 (file)
@@ -74,8 +74,6 @@ struct hostapd_ssid {
 #ifdef CONFIG_FULL_DYNAMIC_VLAN
        char *vlan_tagged_interface;
 #endif /* CONFIG_FULL_DYNAMIC_VLAN */
-       struct hostapd_wep_keys **dyn_vlan_keys;
-       size_t max_dyn_vlan_keys;
 };
 
 
index ac6700155d8e24b6cfe74023ee6fc6c4b0591151..7925a3ebef2e03e404899943e9d9348c2afd3177 100644 (file)
@@ -221,30 +221,6 @@ static int hostapd_broadcast_wep_set(struct hostapd_data *hapd)
                errors++;
        }
 
-       if (ssid->dyn_vlan_keys) {
-               size_t i;
-               for (i = 0; i <= ssid->max_dyn_vlan_keys; i++) {
-                       const char *ifname;
-                       struct hostapd_wep_keys *key = ssid->dyn_vlan_keys[i];
-                       if (key == NULL)
-                               continue;
-                       ifname = hostapd_get_vlan_id_ifname(hapd->conf->vlan,
-                                                           i);
-                       if (ifname == NULL)
-                               continue;
-
-                       idx = key->idx;
-                       if (hostapd_drv_set_key(ifname, hapd, WPA_ALG_WEP,
-                                               broadcast_ether_addr, idx, 1,
-                                               NULL, 0, key->key[idx],
-                                               key->len[idx])) {
-                               wpa_printf(MSG_WARNING, "Could not set "
-                                          "dynamic VLAN WEP encryption.");
-                               errors++;
-                       }
-               }
-       }
-
        return errors;
 }
 
index f758017775830258546931be8557248901247b03..d9f6b38f2df362404e4879fab81d3c3a6b3a6ea9 100644 (file)
@@ -186,112 +186,11 @@ static void ieee802_1x_tx_key_one(struct hostapd_data *hapd,
 }
 
 
-#ifndef CONFIG_NO_VLAN
-static struct hostapd_wep_keys *
-ieee802_1x_group_alloc(struct hostapd_data *hapd, const char *ifname)
-{
-       struct hostapd_wep_keys *key;
-
-       key = os_zalloc(sizeof(*key));
-       if (key == NULL)
-               return NULL;
-
-       key->default_len = hapd->conf->default_wep_key_len;
-
-       if (key->idx >= hapd->conf->broadcast_key_idx_max ||
-           key->idx < hapd->conf->broadcast_key_idx_min)
-               key->idx = hapd->conf->broadcast_key_idx_min;
-       else
-               key->idx++;
-
-       if (!key->key[key->idx])
-               key->key[key->idx] = os_malloc(key->default_len);
-       if (key->key[key->idx] == NULL ||
-           random_get_bytes(key->key[key->idx], key->default_len)) {
-               printf("Could not generate random WEP key (dynamic VLAN).\n");
-               os_free(key->key[key->idx]);
-               key->key[key->idx] = NULL;
-               os_free(key);
-               return NULL;
-       }
-       key->len[key->idx] = key->default_len;
-
-       wpa_printf(MSG_DEBUG, "%s: Default WEP idx %d for dynamic VLAN\n",
-                  ifname, key->idx);
-       wpa_hexdump_key(MSG_DEBUG, "Default WEP key (dynamic VLAN)",
-                       key->key[key->idx], key->len[key->idx]);
-
-       if (hostapd_drv_set_key(ifname, hapd, WPA_ALG_WEP,
-                               broadcast_ether_addr, key->idx, 1,
-                               NULL, 0, key->key[key->idx],
-                               key->len[key->idx]))
-               printf("Could not set dynamic VLAN WEP encryption key.\n");
-
-       hostapd_set_drv_ieee8021x(hapd, ifname, 1);
-
-       return key;
-}
-
-
-static struct hostapd_wep_keys *
-ieee802_1x_get_group(struct hostapd_data *hapd, struct hostapd_ssid *ssid,
-                    size_t vlan_id)
-{
-       const char *ifname;
-
-       if (vlan_id == 0)
-               return &ssid->wep;
-
-       if (vlan_id <= ssid->max_dyn_vlan_keys && ssid->dyn_vlan_keys &&
-           ssid->dyn_vlan_keys[vlan_id])
-               return ssid->dyn_vlan_keys[vlan_id];
-
-       wpa_printf(MSG_DEBUG, "IEEE 802.1X: Creating new group "
-                  "state machine for VLAN ID %lu",
-                  (unsigned long) vlan_id);
-
-       ifname = hostapd_get_vlan_id_ifname(hapd->conf->vlan, vlan_id);
-       if (ifname == NULL) {
-               wpa_printf(MSG_DEBUG, "IEEE 802.1X: Unknown VLAN ID %lu - "
-                          "cannot create group key state machine",
-                          (unsigned long) vlan_id);
-               return NULL;
-       }
-
-       if (ssid->dyn_vlan_keys == NULL) {
-               int size = (vlan_id + 1) * sizeof(ssid->dyn_vlan_keys[0]);
-               ssid->dyn_vlan_keys = os_zalloc(size);
-               if (ssid->dyn_vlan_keys == NULL)
-                       return NULL;
-               ssid->max_dyn_vlan_keys = vlan_id;
-       }
-
-       if (ssid->max_dyn_vlan_keys < vlan_id) {
-               struct hostapd_wep_keys **na;
-               int size = (vlan_id + 1) * sizeof(ssid->dyn_vlan_keys[0]);
-               na = os_realloc(ssid->dyn_vlan_keys, size);
-               if (na == NULL)
-                       return NULL;
-               ssid->dyn_vlan_keys = na;
-               os_memset(&ssid->dyn_vlan_keys[ssid->max_dyn_vlan_keys + 1], 0,
-                         (vlan_id - ssid->max_dyn_vlan_keys) *
-                         sizeof(ssid->dyn_vlan_keys[0]));
-               ssid->max_dyn_vlan_keys = vlan_id;
-       }
-
-       ssid->dyn_vlan_keys[vlan_id] = ieee802_1x_group_alloc(hapd, ifname);
-
-       return ssid->dyn_vlan_keys[vlan_id];
-}
-#endif /* CONFIG_NO_VLAN */
-
-
 void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta)
 {
        struct eapol_authenticator *eapol = hapd->eapol_auth;
        struct eapol_state_machine *sm = sta->eapol_sm;
 #ifndef CONFIG_NO_VLAN
-       struct hostapd_wep_keys *key = NULL;
        int vlan_id;
 #endif /* CONFIG_NO_VLAN */
 
@@ -307,12 +206,9 @@ void ieee802_1x_tx_key(struct hostapd_data *hapd, struct sta_info *sta)
                vlan_id = 0;
 
        if (vlan_id) {
-               key = ieee802_1x_get_group(hapd, sta->ssid, vlan_id);
-               if (key && key->key[key->idx])
-                       ieee802_1x_tx_key_one(hapd, sta, key->idx, 1,
-                                             key->key[key->idx],
-                                             key->len[key->idx]);
-       } else
+               wpa_printf(MSG_ERROR, "Using WEP with vlans is not supported.");
+               return;
+       }
 #endif /* CONFIG_NO_VLAN */
        if (eapol->default_wep_key) {
                ieee802_1x_tx_key_one(hapd, sta, eapol->default_wep_key_idx, 1,