aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2009-03-07 21:10:41 (GMT)
committerJouni Malinen <j@w1.fi>2009-03-11 19:24:59 (GMT)
commitf049abafc6fbfa190c5e7a12da3180494e76a8ca (patch)
tree13b54148079e4f48f0cc5f46e39b2362bd0c82ff
parent0415598fa2acdb89ec025caa1112f43853207cd2 (diff)
downloadhostap-06-f049abafc6fbfa190c5e7a12da3180494e76a8ca.zip
hostap-06-f049abafc6fbfa190c5e7a12da3180494e76a8ca.tar.gz
hostap-06-f049abafc6fbfa190c5e7a12da3180494e76a8ca.tar.bz2
driver_ndis: Add PAE group address to the multicast address
This is done with wired interfaces to fix IEEE 802.1X authentication when the authenticator uses the group address (which should be happening with wired Ethernet authentication). This allows wpa_supplicant to complete wired authentication successfully on Vista with a NDIS 6 driver, but the change is likely needed for Windows XP, too. (cherry picked from commit c472ef754d81792959f8d678a71b6f49a5856c2e) Conflicts: src/drivers/driver_ndis.c wpa_supplicant/ChangeLog
-rw-r--r--src/drivers/driver_ndis.c25
-rw-r--r--wpa_supplicant/ChangeLog4
2 files changed, 23 insertions, 6 deletions
diff --git a/src/drivers/driver_ndis.c b/src/drivers/driver_ndis.c
index b22109b..a90e277 100644
--- a/src/drivers/driver_ndis.c
+++ b/src/drivers/driver_ndis.c
@@ -56,6 +56,10 @@ static int wpa_driver_ndis_adapter_open(struct wpa_driver_ndis_data *drv);
static void wpa_driver_ndis_adapter_close(struct wpa_driver_ndis_data *drv);
+static const u8 pae_group_addr[ETH_ALEN] =
+{ 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03 };
+
+
/* FIX: to be removed once this can be compiled with the complete NDIS
* header files */
#ifndef OID_802_11_BSSID
@@ -610,12 +614,7 @@ static int wpa_driver_ndis_get_bssid(void *priv, u8 *bssid)
* Report PAE group address as the "BSSID" for wired
* connection.
*/
- bssid[0] = 0x01;
- bssid[1] = 0x80;
- bssid[2] = 0xc2;
- bssid[3] = 0x00;
- bssid[4] = 0x00;
- bssid[5] = 0x03;
+ os_memcpy(bssid, pae_group_addr, ETH_ALEN);
return 0;
}
@@ -2704,6 +2703,19 @@ static void wpa_driver_ndis_adapter_close(struct wpa_driver_ndis_data *drv)
}
+static int ndis_add_multicast(struct wpa_driver_ndis_data *drv)
+{
+ if (ndis_set_oid(drv, OID_802_3_MULTICAST_LIST,
+ (const char *) pae_group_addr, ETH_ALEN) < 0) {
+ wpa_printf(MSG_DEBUG, "NDIS: Failed to add PAE group address "
+ "to the multicast list");
+ return -1;
+ }
+
+ return 0;
+}
+
+
static void * wpa_driver_ndis_init(void *ctx, const char *ifname)
{
struct wpa_driver_ndis_data *drv;
@@ -2799,6 +2811,7 @@ static void * wpa_driver_ndis_init(void *ctx, const char *ifname)
"any wireless capabilities - assume it is "
"a wired interface");
drv->wired = 1;
+ ndis_add_multicast(drv);
}
}
diff --git a/wpa_supplicant/ChangeLog b/wpa_supplicant/ChangeLog
index 8f5b6fb..ec9b5e8 100644
--- a/wpa_supplicant/ChangeLog
+++ b/wpa_supplicant/ChangeLog
@@ -1,5 +1,9 @@
ChangeLog for wpa_supplicant
+????-??-?? - v0.6.9
+ * driver_ndis: add PAE group address to the multicast address list to
+ fix wired IEEE 802.1X authentication
+
2009-02-15 - v0.6.8
* increased wpa_cli ping interval to 5 seconds and made this
configurable with a new command line options (-G<seconds>)