diff -rduN wpa_supplicant-0.5.4/.config wpa_supplicant-0.5.4-kre/.config
--- wpa_supplicant-0.5.4/.config	1970-01-01 01:00:00.000000000 +0100
+++ wpa_supplicant-0.5.4-kre/.config	2007-03-15 20:45:45.669285000 +0100
@@ -0,0 +1,4 @@
+CONFIG_IEEE8021X_EAPOL=y
+CONFIG_EAP_TTLS=y
+CONFIG_EAPOL_TEST=y
+CONFIG_SOLARIS=yes
diff -rduN wpa_supplicant-0.5.4/Makefile wpa_supplicant-0.5.4-kre/Makefile
--- wpa_supplicant-0.5.4/Makefile	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/Makefile	2007-03-15 20:45:06.629152000 +0100
@@ -1,15 +1,11 @@
-ifndef CC
 CC=gcc
-endif
-
-ifndef CFLAGS
 CFLAGS = -MMD -O2 -Wall -g
-endif
 
 # Include directories for CVS version
 CFLAGS += -I. -I../utils -I../hostapd
 
-ALL=wpa_supplicant wpa_passphrase wpa_cli dynamic_eap_methods
+#ALL=wpa_supplicant wpa_passphrase wpa_cli dynamic_eap_methods
+ALL=eapol_test
 
 all: verify_config $(ALL)
 
@@ -27,9 +23,10 @@
 		echo '.config exists - did not replace it'; \
 		exit 1; \
 	fi
-	echo CONFIG_DRIVER_HOSTAP=y >> .config
-	echo CONFIG_DRIVER_WEXT=y >> .config
-	echo CONFIG_WIRELESS_EXTENSION=y >> .config
+	echo 'CONFIG_IEEE8021X_EAPOL=y' >> .config
+	echo 'CONFIG_EAP_TTLS=y' >> .config
+	echo 'CONFIG_EAPOL_TEST=y' >> .config
+	echo '##CONFIG_SOLARIS=yes' >> .config
 
 install: all
 	mkdir -p $(DESTDIR)/usr/local/sbin/
@@ -63,7 +60,7 @@
 
 
 ifdef CONFIG_EAPOL_TEST
-CFLAGS += -Werror -DEAPOL_TEST
+CFLAGS += -DEAPOL_TEST
 endif
 
 ifndef CONFIG_BACKEND
@@ -83,6 +80,16 @@
 OBJS += config_none.o
 endif
 
+ifdef CONFIG_SOLARIS
+CONFIG_L2_PACKET=none
+CFLAGS += -DCONFIG_USE_INTTYPES_H -I/opt/local/include -I/usr/local/ssl/include
+LIBS += -lnsl -lsocket -lresolv
+endif
+
+ifdef CONFIG_EAPOL_OLD
+CFLAGS += -DEAPOL_OLD
+endif
+
 ifdef CONFIG_DRIVER_HOSTAP
 CFLAGS += -DCONFIG_DRIVER_HOSTAP
 OBJS_d += driver_hostap.o
diff -rduN wpa_supplicant-0.5.4/common.c wpa_supplicant-0.5.4-kre/common.c
--- wpa_supplicant-0.5.4/common.c	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/common.c	2007-03-15 20:37:48.765070000 +0100
@@ -18,6 +18,9 @@
 
 
 int wpa_debug_level = MSG_INFO;
+#ifndef EAPOL_OLD
+int wpa_msg_dumps = 0;
+#endif
 int wpa_debug_show_keys = 0;
 int wpa_debug_timestamp = 0;
 
diff -rduN wpa_supplicant-0.5.4/config.h wpa_supplicant-0.5.4-kre/config.h
--- wpa_supplicant-0.5.4/config.h	2006-04-28 05:50:12.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/config.h	2007-02-19 22:37:02.000000000 +0100
@@ -296,7 +296,11 @@
  *
  * Each configuration backend needs to implement this function.
  */
+#ifdef EAPOL_OLD
 struct wpa_config * wpa_config_read(const char *name);
+#else
+struct wpa_config * wpa_config_read(char *cfgv[]);
+#endif /* EAPOL_OLD */
 
 /**
  * wpa_config_write - Write or update configuration data
diff -rduN wpa_supplicant-0.5.4/config_file.c wpa_supplicant-0.5.4-kre/config_file.c
--- wpa_supplicant-0.5.4/config_file.c	2006-06-01 04:29:31.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/config_file.c	2007-02-20 12:20:24.000000000 +0100
@@ -26,12 +26,22 @@
 #include "eap_methods.h"
 
 
+#ifdef EAPOL_OLD
 static char * wpa_config_get_line(char *s, int size, FILE *stream, int *line,
 				  char **_pos)
+#else
+static char * wpa_config_get_line(char *s, int size, char *cfgv[], int *line,
+				char **_pos)
+#endif /* EAPOL_OLD */
 {
 	char *pos, *end, *sstart;
 
+#ifdef EAPOL_OLD
 	while (fgets(s, size, stream)) {
+#else
+	while (cfgv[*line] != NULL) {
+		strncpy(s, cfgv[*line], size);
+#endif
 		(*line)++;
 		s[size - 1] = '\0';
 		pos = s;
@@ -73,7 +83,12 @@
 }
 
 
+#ifdef EAPOL_OLD
 static struct wpa_ssid * wpa_config_read_network(FILE *f, int *line, int id)
+#else
+static struct wpa_ssid * wpa_config_read_network(char *cfgv[], int *line,
+						int id)
+#endif
 {
 	struct wpa_ssid *ssid;
 	int errors = 0, end = 0;
@@ -88,7 +103,11 @@
 
 	wpa_config_set_network_defaults(ssid);
 
+#ifdef EAPOL_OLD
 	while (wpa_config_get_line(buf, sizeof(buf), f, line, &pos)) {
+#else
+	while (wpa_config_get_line(buf, sizeof(buf), cfgv, line, &pos)) {
+#endif
 		if (strcmp(pos, "}") == 0) {
 			end = 1;
 			break;
@@ -159,6 +178,7 @@
 static struct wpa_config_blob * wpa_config_read_blob(FILE *f, int *line,
 						     const char *name)
 {
+#ifdef EAPOL_OLD
 	struct wpa_config_blob *blob;
 	char buf[256], *pos;
 	unsigned char *encoded = NULL, *nencoded;
@@ -209,12 +229,19 @@
 	}
 
 	return blob;
+#endif
 }
 
 
+#ifdef EAPOL_OLD
 struct wpa_config * wpa_config_read(const char *name)
+#else
+struct wpa_config * wpa_config_read(char *cfgv[])
+#endif
 {
+#ifdef EAPOL_OLD
 	FILE *f;
+#endif
 	char buf[256], *pos;
 	int errors = 0, line = 0;
 	struct wpa_ssid *ssid, *tail = NULL, *head = NULL;
@@ -224,16 +251,26 @@
 	config = wpa_config_alloc_empty(NULL, NULL);
 	if (config == NULL)
 		return NULL;
+#ifdef EAPOL_OLD
 	wpa_printf(MSG_DEBUG, "Reading configuration file '%s'", name);
 	f = fopen(name, "r");
 	if (f == NULL) {
 		free(config);
 		return NULL;
 	}
+#endif
 
+#ifdef EAPOL_OLD
 	while (wpa_config_get_line(buf, sizeof(buf), f, &line, &pos)) {
+#else
+	while (wpa_config_get_line(buf, sizeof(buf), cfgv, &line, &pos)) {
+#endif
 		if (strcmp(pos, "network={") == 0) {
+#ifdef EAPOL_OLD
 			ssid = wpa_config_read_network(f, &line, id++);
+#else
+			ssid = wpa_config_read_network(cfgv, &line, id++);
+#endif
 			if (ssid == NULL) {
 				wpa_printf(MSG_ERROR, "Line %d: failed to "
 					   "parse network block.", line);
@@ -253,6 +290,7 @@
 				errors++;
 				continue;
 			}
+#ifdef EAPOL_OLD
 		} else if (strncmp(pos, "blob-base64-", 12) == 0) {
 			char *name = pos + 12, *name_end;
 			struct wpa_config_blob *blob;
@@ -274,6 +312,7 @@
 				continue;
 			}
 			wpa_config_set_blob(config, blob);
+#endif
 #ifdef CONFIG_CTRL_IFACE
 		} else if (strncmp(pos, "ctrl_interface=", 15) == 0) {
 			free(config->ctrl_interface);
@@ -393,7 +432,9 @@
 		}
 	}
 
+#ifdef EAPOL_OLD
 	fclose(f);
+#endif
 
 	config->ssid = head;
 	for (prio = 0; prio < config->num_prio; prio++) {
diff -rduN wpa_supplicant-0.5.4/eap.c wpa_supplicant-0.5.4-kre/eap.c
--- wpa_supplicant-0.5.4/eap.c	2006-06-10 18:48:43.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/eap.c	2007-02-19 20:30:03.000000000 +0100
@@ -51,6 +51,7 @@
 static const char * eap_sm_decision_txt(EapDecision decision);
 #endif /* CONFIG_CTRL_IFACE || !CONFIG_NO_STDOUT_DEBUG */
 
+extern int radiusClientTimeout;
 
 
 static Boolean eapol_get_bool(struct eap_sm *sm, enum eapol_bool_var var)
@@ -1151,7 +1152,11 @@
 	sm->eapol_ctx = eapol_ctx;
 	sm->eapol_cb = eapol_cb;
 	sm->msg_ctx = msg_ctx;
+#ifdef EAPOL_OLD
 	sm->ClientTimeout = 60;
+#else
+	sm->ClientTimeout = radiusClientTimeout;
+#endif /* EAPOL_OLD */
 
 	memset(&tlsconf, 0, sizeof(tlsconf));
 	tlsconf.opensc_engine_path = conf->opensc_engine_path;
diff -rduN wpa_supplicant-0.5.4/eapol_test.c wpa_supplicant-0.5.4-kre/eapol_test.c
--- wpa_supplicant-0.5.4/eapol_test.c	2006-04-16 19:03:36.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/eapol_test.c	2007-03-15 20:42:50.035596000 +0100
@@ -35,6 +35,9 @@
 
 
 extern int wpa_debug_level;
+#ifndef EAPOL_OLD
+int wpa_msg_dumps;
+#endif
 extern int wpa_debug_show_keys;
 
 struct wpa_driver_ops *wpa_supplicant_drivers[] = { NULL };
@@ -48,6 +51,9 @@
 	int num_mppe_ok, num_mppe_mismatch;
 
 	u8 radius_identifier;
+#ifndef EAPOL_OLD
+	long request_id;
+#endif
 	struct radius_msg *last_recv_radius;
 	struct in_addr own_ip_addr;
 	struct radius_client_data *radius;
@@ -72,6 +78,9 @@
 
 static struct eapol_test_data eapol_test;
 
+#ifndef EAPOL_OLD
+int radiusClientTimeout;
+#endif
 
 static void send_eap_request_identity(void *eloop_ctx, void *timeout_ctx);
 
@@ -83,6 +92,11 @@
 	int maxlen;
 	va_list ap;
 
+#ifndef EAPOL_OLD
+	if (level < wpa_debug_level)
+		return;
+#endif
+
 	maxlen = strlen(fmt) + 100;
 	format = malloc(maxlen);
 	if (!format)
@@ -139,9 +153,15 @@
 	wpa_printf(MSG_DEBUG, "Encapsulating EAP message into a RADIUS "
 		   "packet");
 
+#ifdef EAPOL_OLD
 	e->radius_identifier = radius_client_get_id(e->radius);
 	msg = radius_msg_new(RADIUS_CODE_ACCESS_REQUEST,
 			     e->radius_identifier);
+#else
+	e->request_id = e->radius_conf->request_id;
+	msg = radius_msg_new(RADIUS_CODE_ACCESS_REQUEST,
+			     e->request_id);
+#endif /* EAPOL_OLD */
 	if (msg == NULL) {
 		printf("Could not create net RADIUS packet\n");
 		return;
@@ -651,9 +671,16 @@
 }
 
 
+#ifdef EAPOL_OLD
 static void wpa_init_conf(struct eapol_test_data *e,
 			  struct wpa_supplicant *wpa_s, const char *authsrv,
 			  int port, const char *secret)
+#else
+static void wpa_init_conf(struct eapol_test_data *e,
+			  struct wpa_supplicant *wpa_s, const char *authsrv,
+			  int local_port, const char *secret, int remote_port,
+			  int radius_id)
+#endif /* EAPOL_OLD */
 {
 	struct hostapd_radius_server *as;
 	int res;
@@ -683,12 +710,22 @@
 	inet_aton(authsrv, &as->addr.u.v4);
 #endif /* CONFIG_NATIVE_WINDOWS or CONFIG_ANSI_C_EXTRA */
 	as->addr.af = AF_INET;
+#ifdef EAPOL_OLD
 	as->port = port;
+#else
+	as->port = local_port;
+	as->remote_port = remote_port;
+	e->radius_conf->request_id = radius_id;
+#endif
 	as->shared_secret = (u8 *) strdup(secret);
 	as->shared_secret_len = strlen(secret);
 	e->radius_conf->auth_server = as;
 	e->radius_conf->auth_servers = as;
+#ifdef EAPOL_OLD
 	e->radius_conf->msg_dumps = 1;
+#else
+	e->radius_conf->msg_dumps = wpa_msg_dumps;
+#endif
 
 	e->radius = radius_client_init(wpa_s, e->radius_conf);
 	assert(e->radius != NULL);
@@ -881,6 +918,7 @@
 
 static void usage(void)
 {
+#ifdef EAPOL_OLD
 	printf("usage:\n"
 	       "eapol_test [-nWS] -c<conf> [-a<AS IP>] [-p<AS port>] "
 	       "[-s<AS secret>] \\\n"
@@ -907,6 +945,37 @@
 	       "  -M<client MAC address> = Set own MAC address "
 	       "(Calling-Station-Id,\n"
 	       "                           default: 02:00:00:00:00:01)\n");
+#else
+	printf("usage:\n"
+	       "eapol_test [-ndqWSx] [-a<AS IP>] [-s<AS secret>] [-p<remote AS port>]\n"
+		   "           [-l<local port>] [-i<request ID>] [-u<user name>]\n"
+		   "           [-w<user password>] [-r<count>] [-t<client timeout>]\n"
+		   "           [-C<Connect-Info>] [-M<client MAC address>]\n"
+	       "eapol_test scard\n"
+	       "eapol_test sim <PIN> <num triplets> [debug]\n"
+	       "\n");
+	printf("options:\n"
+	       "  -a<AS IP> = IP address of the authentication server (default 127.0.0.1)\n"
+	       "  -s<AS secret> = shared secret with the authentication server (default 'radius')\n"
+	       "  -p<remote AS port> = UDP port of the remote authentication server (default 1812)\n"
+	       "  -l<local port> = UDP port of the local authentication peer (default 1812)\n"
+	       "  -i<request ID> = RADIUS request ID (default 0)\n"
+	       "  -u<user name> = RADIUS request User-Name attribute (default 'anonymous')\n"
+	       "  -w<user password> = RADIUS request User-Password attribute (default 'anonymous')\n"
+	       "  -t<timeout> = sets timeout in seconds (default: 30)\n"
+	       "  -n = no MPPE keys expected\n"
+	       "  -d = debug communication (verbose dump of communication)\n"
+	       "  -q = quiet (return value indicates success or failure)\n"
+	       "  -x = verbosely print RADIUS attributes\n"
+	       "  -r<count> = number of re-authentications\n"
+	       "  -W = wait for a control interface monitor before starting\n"
+	       "  -S = save configuration after authentiation\n"
+	       "  -C<Connect-Info> = RADIUS Connect-Info (default: "
+	       "CONNECT 11Mbps 802.11b)\n"
+	       "  -M<client MAC address> = Set own MAC address "
+	       "(Calling-Station-Id,\n"
+	       "                           default: 02:00:00:00:00:01)\n");
+#endif
 }
 
 
@@ -915,7 +984,24 @@
 	struct wpa_supplicant wpa_s;
 	int c, ret = 1, wait_for_monitor = 0, save_config = 0;
 	char *as_addr = "127.0.0.1";
+#ifdef EAPOL_OLD
 	int as_port = 1812;
+#else
+	int local_port = 1812;
+	int remote_port = 1812;
+	int radiusId = 0;
+	char *userName = NULL, *userPwd = NULL, uname[128], upwd[128];
+	char *cfgv[] = {
+		"network={",
+			NULL,NULL,
+			"key_mgmt=WPA-EAP",
+			"eap=TTLS",
+			"phase2=\"auth=PAP\"",
+			"eap_workaround=0",
+		"}",
+		NULL 
+	};
+#endif
 	char *as_secret = "radius";
 	char *conf = NULL;
 	int timeout = 30;
@@ -927,11 +1013,21 @@
 	eapol_test.connect_info = "CONNECT 11Mbps 802.11b";
 	memcpy(eapol_test.own_addr, "\x02\x00\x00\x00\x00\x01", ETH_ALEN);
 
+#ifdef EAPOL_OLD
 	wpa_debug_level = 0;
 	wpa_debug_show_keys = 1;
+#else
+	wpa_debug_level = 99;
+	wpa_debug_show_keys = 0;
+	wpa_msg_dumps = 0;
+#endif
 
 	for (;;) {
+#ifdef EAPOL_OLD
 		c = getopt(argc, argv, "a:c:C:M:np:r:s:St:W");
+#else
+		c = getopt(argc, argv, "a:C:M:np:r:s:l:u:w:i:St:Wdqx");
+#endif
 		if (c < 0)
 			break;
 		switch (c) {
@@ -954,8 +1050,26 @@
 			eapol_test.no_mppe_keys++;
 			break;
 		case 'p':
+#ifdef EAPOL_OLD
 			as_port = atoi(optarg);
+#else
+			remote_port = atoi(optarg);
+#endif
+			break;
+#ifndef EAPOL_OLD
+		case 'l':
+			local_port = atoi(optarg);
 			break;
+		case 'u':
+			userName = optarg;
+			break;
+		case 'w':
+			userPwd = optarg;
+			break;
+		case 'i':
+			radiusId = atoi(optarg);
+			break;
+#endif
 		case 'r':
 			eapol_test.eapol_test_num_reauths = atoi(optarg);
 			break;
@@ -966,17 +1080,47 @@
 			save_config++;
 			break;
 		case 't':
+#ifdef EAPOL_OLD
 			timeout = atoi(optarg);
+#else
+			radiusClientTimeout = atoi(optarg);
+#endif
 			break;
 		case 'W':
 			wait_for_monitor++;
 			break;
+#ifndef EAPOL_OLD
+		case 'd':
+			wpa_debug_level = MSG_DEBUG;
+			wpa_debug_show_keys = 1;
+			break;
+		case 'x':
+			wpa_msg_dumps = 1;
+			break;
+		case 'q':
+			freopen("/dev/null", "a", stdout);
+			freopen("/dev/null", "a", stderr);
+			break;
+#endif
 		default:
 			usage();
 			return -1;
 		}
 	}
 
+#ifndef EAPOL_OLD
+	if (userName == NULL)
+		userName = strdup("anonymous");
+	if (userPwd == NULL)
+		userPwd = strdup("anonymous");
+
+	sprintf(uname, "identity=\"%s\"", userName);
+	sprintf(upwd, "password=\"%s\"", userPwd);
+	cfgv[1] = uname;
+	cfgv[2] = upwd;
+
+#endif
+
 	if (argc > optind && strcmp(argv[optind], "scard") == 0) {
 		return scard_test();
 	}
@@ -986,11 +1130,13 @@
 					  &argv[optind + 1]);
 	}
 
+#ifdef EAPOL_OLD
 	if (conf == NULL) {
 		usage();
 		printf("Configuration file is required.\n");
 		return -1;
 	}
+#endif
 
 	if (eap_peer_register_methods()) {
 		wpa_printf(MSG_ERROR, "Failed to register EAP methods");
@@ -1004,7 +1150,11 @@
 
 	memset(&wpa_s, 0, sizeof(wpa_s));
 	eapol_test.wpa_s = &wpa_s;
+#ifdef EAPOL_OLD
 	wpa_s.conf = wpa_config_read(conf);
+#else
+	wpa_s.conf = wpa_config_read(cfgv);
+#endif
 	if (wpa_s.conf == NULL) {
 		printf("Failed to parse configuration file '%s'.\n", conf);
 		return -1;
@@ -1014,7 +1164,12 @@
 		return -1;
 	}
 
+#ifdef EAPOL_OLD
 	wpa_init_conf(&eapol_test, &wpa_s, as_addr, as_port, as_secret);
+#else
+	wpa_init_conf(&eapol_test, &wpa_s, as_addr, local_port, as_secret,
+			remote_port, radiusId);
+#endif
 	wpa_s.ctrl_iface = wpa_supplicant_ctrl_iface_init(&wpa_s);
 	if (wpa_s.ctrl_iface == NULL) {
 		printf("Failed to initialize control interface '%s'.\n"
diff -rduN wpa_supplicant-0.5.4/os_unix.c wpa_supplicant-0.5.4-kre/os_unix.c
--- wpa_supplicant-0.5.4/os_unix.c	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/os_unix.c	2007-02-20 11:40:23.000000000 +0100
@@ -138,16 +138,24 @@
 
 int os_setenv(const char *name, const char *value, int overwrite)
 {
+#if defined (__solaris__) || (defined __sun__)
+	return 0;
+#else
 	return setenv(name, value, overwrite);
+#endif
 }
 
 
 int os_unsetenv(const char *name)
 {
+#if defined (__solaris__) || (defined __sun__)
+	return 0;
+#else
 #if defined(__FreeBSD__) || defined(__NetBSD__)
 	unsetenv(name);
 	return 0;
 #else
 	return unsetenv(name);
 #endif
+#endif
 }
diff -rduN wpa_supplicant-0.5.4/radius.c wpa_supplicant-0.5.4-kre/radius.c
--- wpa_supplicant-0.5.4/radius.c	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/radius.c	2007-02-20 01:15:22.000000000 +0100
@@ -230,8 +230,11 @@
 
 	case RADIUS_ATTR_IP:
 		if (len == 4) {
+			char buf[128];
+			const char *atxt;
 			struct in_addr *addr = (struct in_addr *) pos;
-			printf("      Value: %s\n", inet_ntoa(*addr));
+			atxt = inet_ntop(AF_INET, addr, buf, sizeof(buf));
+			printf("      Value: %s\n", atxt ? atxt : "?");
 		} else
 			printf("      Invalid IP address length %d\n", len);
 		break;
diff -rduN wpa_supplicant-0.5.4/radius_client.c wpa_supplicant-0.5.4-kre/radius_client.c
--- wpa_supplicant-0.5.4/radius_client.c	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/radius_client.c	2007-03-15 20:21:20.543113000 +0100
@@ -25,9 +25,13 @@
 #define RADIUS_CLIENT_MAX_RETRIES 10 /* maximum number of retransmit attempts
 				      * before entry is removed from retransmit
 				      * list */
-#define RADIUS_CLIENT_MAX_ENTRIES 30 /* maximum number of entries in retransmit
+#ifdef EAPOL_OLD
+# define RADIUS_CLIENT_MAX_ENTRIES 30 /* maximum number of entries in retransmit
 				      * list (oldest will be removed, if this
 				      * limit is exceeded) */
+#else
+# define RADIUS_CLIENT_MAX_ENTRIES 1
+#endif
 #define RADIUS_CLIENT_NUM_FAILOVER 4 /* try to change RADIUS server after this
 				      * many failed retry attempts */
 
@@ -781,7 +785,11 @@
 		memset(&serv, 0, sizeof(serv));
 		serv.sin_family = AF_INET;
 		serv.sin_addr.s_addr = nserv->addr.u.v4.s_addr;
+#ifdef EAPOL_OLD
 		serv.sin_port = htons(nserv->port);
+#else
+		serv.sin_port = htons(nserv->remote_port);
+#endif
 		addr = (struct sockaddr *) &serv;
 		addrlen = sizeof(serv);
 		sel_sock = sock;
diff -rduN wpa_supplicant-0.5.4/radius_client.h wpa_supplicant-0.5.4-kre/radius_client.h
--- wpa_supplicant-0.5.4/radius_client.h	2006-06-21 03:21:17.000000000 +0200
+++ wpa_supplicant-0.5.4-kre/radius_client.h	2007-02-19 22:13:25.000000000 +0100
@@ -24,6 +24,9 @@
 	 * @ = radiusAuth or radiusAcc depending on the type of the server */
 	struct hostapd_ip_addr addr; /* @ServerAddress */
 	int port; /* @ClientServerPortNumber */
+#ifndef EAPOL_OLD
+	int remote_port;
+#endif
 	u8 *shared_secret;
 	size_t shared_secret_len;
 
@@ -57,6 +60,9 @@
 	int acct_interim_interval;
 
 	int msg_dumps;
+#ifndef EAPOL_OLD
+	long request_id;
+#endif
 };
 
 
