130 lines
4.3 KiB
Diff
130 lines
4.3 KiB
Diff
? eapol_version.patch
|
|
Index: config.c
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/contrib/hostapd/config.c,v
|
|
retrieving revision 1.1.1.3
|
|
diff -u -r1.1.1.3 config.c
|
|
--- config.c 7 Mar 2006 05:46:42 -0000 1.1.1.3
|
|
+++ config.c 27 Mar 2006 05:28:09 -0000
|
|
@@ -29,6 +29,7 @@
|
|
#include "sha1.h"
|
|
#include "eap.h"
|
|
#include "radius_client.h"
|
|
+#include "ieee802_1x.h" /* XXX for EAPOL_VERSION */
|
|
|
|
|
|
static struct hostapd_config *hostapd_config_defaults(void)
|
|
@@ -60,6 +61,7 @@
|
|
conf->logger_stdout = (unsigned int) -1;
|
|
|
|
conf->auth_algs = HOSTAPD_AUTH_OPEN | HOSTAPD_AUTH_SHARED_KEY;
|
|
+ conf->eapol_version = EAPOL_VERSION; /* NB: default version */
|
|
|
|
conf->wpa_group_rekey = 600;
|
|
conf->wpa_gmk_rekey = 86400;
|
|
@@ -855,6 +857,17 @@
|
|
}
|
|
} else if (strcmp(buf, "eapol_key_index_workaround") == 0) {
|
|
conf->eapol_key_index_workaround = atoi(pos);
|
|
+ } else if (strcmp(buf, "eapol_version") == 0) {
|
|
+ conf->eapol_version = atoi(pos);
|
|
+ if (conf->eapol_version < 1 ||
|
|
+ conf->eapol_version > 2) {
|
|
+ printf("Line %d: invalid EAPOL "
|
|
+ "version (%d): '%s'.\n",
|
|
+ line, conf->eapol_version, pos);
|
|
+ errors++;
|
|
+ } else
|
|
+ wpa_printf(MSG_DEBUG, "eapol_version=%d",
|
|
+ conf->eapol_version);
|
|
#ifdef CONFIG_IAPP
|
|
} else if (strcmp(buf, "iapp_interface") == 0) {
|
|
conf->ieee802_11f = 1;
|
|
Index: config.h
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/contrib/hostapd/config.h,v
|
|
retrieving revision 1.1.1.2
|
|
diff -u -r1.1.1.2 config.h
|
|
--- config.h 7 Mar 2006 05:46:42 -0000 1.1.1.2
|
|
+++ config.h 27 Mar 2006 05:28:09 -0000
|
|
@@ -73,6 +73,7 @@
|
|
* EAP Request-Identity */
|
|
size_t eap_req_id_text_len;
|
|
int eapol_key_index_workaround;
|
|
+ int eapol_version;
|
|
|
|
size_t default_wep_key_len;
|
|
int individual_wep_key_len;
|
|
Index: hostapd.conf
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/contrib/hostapd/hostapd.conf,v
|
|
retrieving revision 1.1.1.2
|
|
diff -u -r1.1.1.2 hostapd.conf
|
|
--- hostapd.conf 7 Mar 2006 05:46:50 -0000 1.1.1.2
|
|
+++ hostapd.conf 27 Mar 2006 05:28:09 -0000
|
|
@@ -106,6 +106,14 @@
|
|
# Require IEEE 802.1X authorization
|
|
#ieee8021x=1
|
|
|
|
+# IEEE 802.1X/EAPOL version
|
|
+# hostapd is implemented based on IEEE Std 802.1X-2004 which defines EAPOL
|
|
+# version 2. However, there are some clients that do not handle
|
|
+# the new version number correctly (they seem to drop the frames completely).
|
|
+# In order to make hostapd interoperate with these clients, the version number
|
|
+# can be set to the older version (1) with this configuration value.
|
|
+#eapol_version=2
|
|
+
|
|
# Optional displayable message sent with EAP Request-Identity. The first \0
|
|
# in this string will be converted to ASCII-0 (nul). This can be used to
|
|
# separate network info (comma separated list of attribute=value pairs); see,
|
|
Index: ieee802_1x.c
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/contrib/hostapd/ieee802_1x.c,v
|
|
retrieving revision 1.4
|
|
diff -u -r1.4 ieee802_1x.c
|
|
--- ieee802_1x.c 7 Mar 2006 05:51:52 -0000 1.4
|
|
+++ ieee802_1x.c 27 Mar 2006 05:28:10 -0000
|
|
@@ -76,7 +76,7 @@
|
|
#endif
|
|
|
|
xhdr = (struct ieee802_1x_hdr *) buf;
|
|
- xhdr->version = EAPOL_VERSION;
|
|
+ xhdr->version = hapd->conf->eapol_version;
|
|
xhdr->type = type;
|
|
xhdr->length = htons(datalen);
|
|
|
|
@@ -324,7 +324,7 @@
|
|
|
|
/* This header is needed here for HMAC-MD5, but it will be regenerated
|
|
* in ieee802_1x_send() */
|
|
- hdr->version = EAPOL_VERSION;
|
|
+ hdr->version = hapd->conf->eapol_version;
|
|
hdr->type = IEEE802_1X_TYPE_EAPOL_KEY;
|
|
hdr->length = htons(len);
|
|
hmac_md5(sm->eapol_key_sign, sm->eapol_key_sign_len,
|
|
@@ -1665,7 +1665,7 @@
|
|
"dot1xPaePortInitialize=%d\n"
|
|
"dot1xPaePortReauthenticate=FALSE\n",
|
|
sta->aid,
|
|
- EAPOL_VERSION,
|
|
+ hapd->conf->eapol_version,
|
|
sm->initialize);
|
|
|
|
/* dot1xAuthConfigTable */
|
|
Index: wpa.c
|
|
===================================================================
|
|
RCS file: /home/ncvs/src/contrib/hostapd/wpa.c,v
|
|
retrieving revision 1.4
|
|
diff -u -r1.4 wpa.c
|
|
--- wpa.c 7 Mar 2006 05:51:52 -0000 1.4
|
|
+++ wpa.c 27 Mar 2006 05:28:12 -0000
|
|
@@ -1855,7 +1855,7 @@
|
|
if (hdr == NULL)
|
|
return;
|
|
memset(hdr, 0, len);
|
|
- hdr->version = EAPOL_VERSION;
|
|
+ hdr->version = hapd->conf->eapol_version;
|
|
hdr->type = IEEE802_1X_TYPE_EAPOL_KEY;
|
|
hdr->length = htons(len - sizeof(*hdr));
|
|
key = (struct wpa_eapol_key *) (hdr + 1);
|