summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-08-16 17:33:51 -0500
committerDan Williams <dcbw@redhat.com>2012-08-16 17:49:31 -0500
commit1c2819e1cbecd3cea867ffd14bdd3dc674fe9868 (patch)
tree7fde7f94f302119d141696c7b2efbac8f3a9831c
parent5ee6c6138844cffc3bcc54095d2b6a19e10b9df8 (diff)
supplicant: add option to build internal libeapHEADmaster
Some really icky stuff going on here, so only use the internal supplicant build for development or testing. Probably doesn't play well with distro packaging.
-rw-r--r--InfraStack/OSAgnostic/Product/AppSrvInfra/Makefile.am2
-rw-r--r--Makefile.am7
-rw-r--r--configure.ac48
-rw-r--r--supplicant/Makefile.am29
-rw-r--r--supplicant/wpa_supplicant-0.7.2-generate-libeap-peer.patch401
-rw-r--r--supplicant/wpa_supplicant-1.0-rc3.tar.gzbin0 -> 1944830 bytes
6 files changed, 462 insertions, 25 deletions
diff --git a/InfraStack/OSAgnostic/Product/AppSrvInfra/Makefile.am b/InfraStack/OSAgnostic/Product/AppSrvInfra/Makefile.am
index eaf3f68..275836e 100644
--- a/InfraStack/OSAgnostic/Product/AppSrvInfra/Makefile.am
+++ b/InfraStack/OSAgnostic/Product/AppSrvInfra/Makefile.am
@@ -123,7 +123,7 @@ if ! BINDB_ENABLED
endif
if WPA_SUP_ENABLE
-sup_lib_path=@LIBEAP0_PREFIX@/lib/libeap.so.0
+sup_lib_path=@LIBEAP0_LIBDIR@/libeap.so.0
else
sup_lib_path=$(libdir)/wimax/libwpa_wimax_supplicant.so
endif
diff --git a/Makefile.am b/Makefile.am
index 6339004..600f41c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,10 @@
+SUBDIRS=$(NULL)
-SUBDIRS = \
+if WPA_SUP_INTERNAL
+SUBDIRS += supplicant
+endif
+
+SUBDIRS += \
InfraStack/OSDependent/Linux/OSAL \
InfraStack/OSDependent/Linux/InfraStackModules/IPCs \
InfraStack/OSAgnostic/Common/CommonServices \
diff --git a/configure.ac b/configure.ac
index 0620cd6..b87b57b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -156,43 +156,44 @@ fi
AC_SUBST(WIMAX_DB_BIN, $with_wimax_db_bin)
AC_SUBST(VER_INFO_BIN, $with_ver_info_bin)
+AC_ARG_WITH(supplicant,
+ AC_HELP_STRING([--with-supplicant=external|internal|devicescape],
+ [Specify which supplicant to use; "external" means
+ pkg-config will be used to autodetect the prefix
+ for libeap0 (use PKG_CONFIG_PATH to override the
+ .pc file location). "internal" builds an internal
+ copy of libeap0. "devicescape" uses the external
+ binary DeviceScape supplicant library.]))
+
AC_ARG_ENABLE(sup-ds,
AC_HELP_STRING([--enable-sup-ds],
[Enable usage of the DS binary
- supplicant (disabled by default)]),
- [], [enable_sup_ds=no])
-
-AC_ARG_WITH(sup-wpa,
- AC_HELP_STRING([--with-sup-wpa],
- [Specify prefix where the WPA supplicant
- can be found. USE ABSOLUTE PATHS.]),
- [
- test -z "$with_sup_wpa" && with_sup_wpa=/usr
- test x"$with_sup_wpa" = xyes && with_sup_wpa=/usr
- enable_sup_wpa=yes
- enable_sup_ds=no
- export PKG_CONFIG_PATH="$with_sup_wpa:$with_sup_wpa/lib/pkgconfig:$PKG_CONFIG_PATH"
- ],
- [
- with_sup_wpa=/usr
- ])
+ supplicant (disabled by default). Overrides
+ any --with-supplicant value.]),
+ [], [enable_sup_ds=no])
-if test x$enable_sup_ds = xyes
-then
+if test x$enable_sup_ds = xyes -o x$with_supplicant = xdevicescape; then
AC_MSG_RESULT([supplicant: configured DS binary supplicant])
enable_sup_wpa=no
+elif test x$with_supplicant = xinternal; then
+ enable_sup_wpa=yes
+ AC_MSG_RESULT(supplicant: using internal EAP library)
+ build_path="$ac_abs_confdir/supplicant/wpa_supplicant-1.0-rc3/"
+ AC_SUBST(LIBEAP0_CFLAGS, "-I$build_path/src")
+ AC_SUBST(LIBEAP0_LIBS, "-R$DESTDIR$libdir/wimax -L$build_path/src/eap_peer -leap")
+ AC_SUBST(LIBEAP0_LIBDIR, "$libdir/wimax")
else
enable_sup_wpa=yes
PKG_CHECK_MODULES(LIBEAP0, libeap0 >= 0.7.0)
- libeap0_prefix=`pkg-config libeap0 --variable=prefix`
- AC_MSG_RESULT(Using EAP library from $libeap0_prefix)
+ libeap0_libdir=`pkg-config libeap0 --variable=libdir`
+ AC_MSG_RESULT(supplicant: using EAP library from $libeap0_libdir)
AC_SUBST(LIBEAP0_CFLAGS)
AC_SUBST(LIBEAP0_LIBS)
- AC_SUBST(LIBEAP0_PREFIX, $libeap0_prefix)
+ AC_SUBST(LIBEAP0_LIBDIR, $libeap0_libdir)
fi
AC_SUBST(WPA_SUP_PREFIX, $with_sup_wpa)
AM_CONDITIONAL(WPA_SUP_ENABLE, test x$enable_sup_wpa = xyes)
-
+AM_CONDITIONAL(WPA_SUP_INTERNAL, test x$with_supplicant = xinternal)
curr_dir=`pwd`
mkdir -p InfraStack/OSDependent/Linux/InfraStackModules/CommonAPIHeaders
@@ -210,6 +211,7 @@ AC_CONFIG_FILES([
Makefile
wns-version.h
wimax.spec
+ supplicant/Makefile
InfraStack/OSDependent/Linux/OSAL/Makefile
InfraStack/OSDependent/Linux/InfraStackModules/IPCs/Makefile
InfraStack/OSAgnostic/Common/CommonServices/Makefile
diff --git a/supplicant/Makefile.am b/supplicant/Makefile.am
new file mode 100644
index 0000000..dd953cb
--- /dev/null
+++ b/supplicant/Makefile.am
@@ -0,0 +1,29 @@
+sup_gz = wpa_supplicant-1.0-rc3.tar.gz
+sup_patch = wpa_supplicant-0.7.2-generate-libeap-peer.patch
+sup_path = $(abs_srcdir)/wpa_supplicant-1.0-rc3
+
+libeap.stamp:
+ rm -rf $(sup_path)
+ tar -xzf $(sup_gz)
+ patch -p0 -b --suffix .wimax < $(sup_patch)
+ cd $(sup_path)/src/eap_peer && ln -sf ../utils util
+ cd $(sup_path)/src/eap_peer && ln -sf ../crypto crypto
+ cd $(sup_path)/src/eap_peer && ln -sf ../common common
+ cd $(sup_path)/wpa_supplicant && \
+ make -C ../src/eap_peer && \
+ cd $(sup_path)/src/eap_peer && \
+ ln -sf libeap.so.0.0.0 libeap.so && \
+ ln -sf libeap.so.0.0.0 libeap.so.0 && \
+ touch $(abs_srcdir)/libeap.stamp
+
+all: libeap.stamp
+
+install-exec-local: libeap.stamp
+ mkdir -p $(libdir)/wimax/
+ cp $(sup_path)/src/eap_peer/libeap.so $(DESTDIR)$(libdir)/wimax/
+ cp $(sup_path)/src/eap_peer/libeap.so.0 $(DESTDIR)$(libdir)/wimax/
+
+CLEANFILES = libeap.stamp $(sup_path)/src/eap_peer/*.so*
+
+EXTRA_DIST = $(sup_gz) $(sup_patch)
+
diff --git a/supplicant/wpa_supplicant-0.7.2-generate-libeap-peer.patch b/supplicant/wpa_supplicant-0.7.2-generate-libeap-peer.patch
new file mode 100644
index 0000000..7db79fc
--- /dev/null
+++ b/supplicant/wpa_supplicant-0.7.2-generate-libeap-peer.patch
@@ -0,0 +1,401 @@
+From 3de5e59b291b6f58317bb16736f8c0271754378e Mon Sep 17 00:00:00 2001
+From: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
+Date: Sat, 2 Oct 2010 00:11:51 -0700
+Subject: [PATCH] eap_peer: create a libeap library, with header files and pkg-config [v2]
+
+This adds infrastructe in src/eap_peer to make libeap.so and install
+the needed header files and pkg-config files.
+
+Now, this is quite dirty and probably not what we want in the long
+term, but serves as an starting point:
+
+ - we don't build from the wpa_supplicant directory because the
+ objects the .so have to be built with -fPIC. So if you need to
+ build both the binary and the library:
+
+ make -C wpa_supplicant
+ make -C src/eap_peer clean
+ make -C src/eap_peer
+
+ As I said, it's dirty -- we'd need either wpa_supplicant linking
+ against the library properly (but that seems not to be desirable)
+ or a multiple object build approach ala automake.
+
+ - need to use 'override CFLAGS' in src/eap_peer/Makefile, otherwise
+ any CFLAGS setting will kill the build infrastructure. I miss
+ AM_CFLAGS.
+
+ - adds 'eap_register_methods()' that will register every compiled in
+ method.
+
+Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
+---
+ build_release | 12 +++
+ src/eap_peer/Makefile | 191 ++++++++++++++++++++++++++++++++++++++++++--
+ src/eap_peer/eap_methods.c | 114 ++++++++++++++++++++++++++
+ src/eap_peer/eap_methods.h | 1 +
+ src/eap_peer/libeap0.pc | 10 +++
+ 5 files changed, 320 insertions(+), 8 deletions(-)
+ create mode 100644 src/eap_peer/libeap0.pc
+
+diff --git wpa_supplicant-1.0-rc3/src/eap_peer/Makefile wpa_supplicant-1.0-rc3/src/eap_peer/Makefile
+index 3651056..58c067a 100644
+--- wpa_supplicant-1.0-rc3/src/eap_peer/Makefile
++++ wpa_supplicant-1.0-rc3/src/eap_peer/Makefile
+@@ -1,11 +1,192 @@
+-all:
+- @echo Nothing to be made.
++LIBEAP_NAME = libeap
++LIBEAP_CURRENT = 0
++LIBEAP_REVISION = 0
++LIBEAP_AGE = 0
++
++LIBEAP = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT).$(LIBEAP_REVISION).$(LIBEAP_AGE)
++LIBEAP_SO = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT)
++
++.PHONY: all clean install uninstall
++
++all: $(LIBEAP)
++
++ifndef CC
++CC=gcc
++endif
++
++ifndef CFLAGS
++CFLAGS = -MMD -O0 -Wall -g
++endif
++
++CONFIG_TLS=openssl
++
++INCLUDE_INSTALL_DIR=/usr/include/eap_peer
++
++ifndef LIB
++LIB = lib
++endif
++
++# Got to use override all across the board, otherwise a 'make
++# CFLAGS=XX' will kill us because the command line's CFLAGS will
++# overwrite Make's and we'll loose all the infrastructure it sets.
++override CFLAGS += -I. -I.. -I../crypto -I../utils -I../common
++
++# at least for now, need to include config_ssid.h and config_blob.h from
++# wpa_supplicant directory
++override CFLAGS += -I ../../wpa_supplicant
++
++OBJS_both += ../utils/common.o
++OBJS_both += ../utils/eloop.o
++OBJS_both += ../utils/os_unix.o
++OBJS_both += ../utils/wpa_debug.o
++OBJS_both += ../utils/base64.o
++OBJS_both += ../utils/wpabuf.o
++OBJS_both += ../crypto/md5.o
++OBJS_both += ../crypto/sha1.o
++OBJS_both += ../crypto/sha1-tlsprf.o
++OBJS_both += ../crypto/aes-encblock.o
++OBJS_both += ../crypto/aes-wrap.o
++OBJS_both += ../crypto/aes-ctr.o
++OBJS_both += ../crypto/aes-eax.o
++OBJS_both += ../crypto/aes-omac1.o
++OBJS_both += ../crypto/ms_funcs.o
++OBJS_both += ../crypto/sha256.o
++OBJS_both += ../crypto/random.o
++
++
++OBJS_both += ../eap_common/eap_peap_common.o
++OBJS_both += ../eap_common/eap_psk_common.o
++OBJS_both += ../eap_common/eap_pax_common.o
++OBJS_both += ../eap_common/eap_sake_common.o
++OBJS_both += ../eap_common/eap_gpsk_common.o
++OBJS_both += ../eap_common/chap.o
++
++OBJS_peer += ../eap_peer/eap_tls.o
++OBJS_peer += ../eap_peer/eap_peap.o
++OBJS_peer += ../eap_peer/eap_ttls.o
++OBJS_peer += ../eap_peer/eap_md5.o
++OBJS_peer += ../eap_peer/eap_mschapv2.o
++OBJS_peer += ../eap_peer/mschapv2.o
++OBJS_peer += ../eap_peer/eap_otp.o
++OBJS_peer += ../eap_peer/eap_gtc.o
++OBJS_peer += ../eap_peer/eap_leap.o
++OBJS_peer += ../eap_peer/eap_psk.o
++OBJS_peer += ../eap_peer/eap_pax.o
++OBJS_peer += ../eap_peer/eap_sake.o
++OBJS_peer += ../eap_peer/eap_gpsk.o
++OBJS_peer += ../eap_peer/eap.o
++OBJS_peer += ../eap_common/eap_common.o
++OBJS_peer += ../eap_peer/eap_methods.o
++OBJS_peer += ../eap_peer/eap_tls_common.o
++
++override CFLAGS += -DEAP_TLS
++override CFLAGS += -DEAP_PEAP
++override CFLAGS += -DEAP_TTLS
++override CFLAGS += -DEAP_MD5
++override CFLAGS += -DEAP_MSCHAPv2
++override CFLAGS += -DEAP_GTC
++override CFLAGS += -DEAP_OTP
++override CFLAGS += -DEAP_LEAP
++override CFLAGS += -DEAP_PSK
++override CFLAGS += -DEAP_PAX
++override CFLAGS += -DEAP_SAKE
++override CFLAGS += -DEAP_GPSK -DEAP_GPSK_SHA256
++override CFLAGS += -DEAP_TLS_FUNCS
++
++override CFLAGS += -DIEEE8021X_EAPOL
++
++ifeq ($(CONFIG_TLS), openssl)
++override CFLAGS += -DEAP_TLS_OPENSSL
++OBJS_both += ../crypto/tls_openssl.o
++OBJS_both += ../crypto/crypto_openssl.o
++LIBS += -lssl -lcrypto
++override CFLAGS += -DINTERNAL_SHA256
++endif
++
++ifeq ($(CONFIG_TLS), internal)
++OBJS_both += ../crypto/tls_internal.o
++OBJS_both += ../tls/tlsv1_common.o ../../tls/tlsv1_record.o
++OBJS_both += ../tls/tlsv1_cred.o
++OBJS_both += ../tls/asn1.o ../../tls/x509v3.o
++OBJS_both += ../crypto/crypto_internal.o ../../tls/rsa.o ../../tls/bignum.o
++
++OBJS_peer += ../tls/tlsv1_client.o
++OBJS_peer += ../tls/tlsv1_client_write.o ../../tls/tlsv1_client_read.o
++override CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
++
++OBJS_server += ../tls/tlsv1_server.o
++OBJS_server += ../tls/tlsv1_server_write.o ../../tls/tlsv1_server_read.o
++override CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
++
++override CFLAGS += -DCONFIG_TLS_INTERNAL
++override CFLAGS += -DCONFIG_CRYPTO_INTERNAL
++override CFLAGS += -DCONFIG_INTERNAL_X509
++override CFLAGS += -DINTERNAL_AES
++override CFLAGS += -DINTERNAL_SHA1
++override CFLAGS += -DINTERNAL_SHA256
++override CFLAGS += -DINTERNAL_MD5
++override CFLAGS += -DINTERNAL_MD4
++override CFLAGS += -DINTERNAL_DES
++ifdef CONFIG_INTERNAL_LIBTOMMATH
++override CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
++else
++LIBS += -ltommath
++endif
++endif
++
++ifndef LDO
++LDO=$(CC)
++endif
++
++
++OBJS_lib=$(OBJS_both) $(OBJS_peer)
++
++ #$(OBJS_server)
++
++override CFLAGS += -fPIC -DPIC
++LDFLAGS += -shared
++
++$(LIBEAP): $(OBJS_lib)
++ $(LDO) $(LDFLAGS) $(OBJS_lib) -Wl,-soname -Wl,$(LIBEAP_SO) -o $(LIBEAP) $(LIBS)
++
++
++UTIL_HEADERS = ../utils/includes.h ../utils/common.h \
++ ../utils/wpabuf.h ../utils/build_config.h \
++ ../utils/os.h ../utils/wpa_debug.h
++COMMON_HEADERS = ../common/defs.h
++EAP_COMMON_HEADERS = ../eap_common/eap_defs.h
++MAIN_HEADERS = eap.h eap_methods.h eap_config.h
++CRYPTO_HEADERS = ../crypto/tls.h
++
++install:
++
++ mkdir -p $(DESTDIR)/usr/$(LIB)
++# copy the lib file to std lib location
++ cp $(LIBEAP) $(DESTDIR)/usr/$(LIB)
++ ln -fs $(LIBEAP_SO) $(DESTDIR)/usr/$(LIB)/$(LIBEAP_NAME).so
++
++# copy the headers reqd by apps using eap peer library in its own subfolder under /usr/include
++ mkdir -p \
++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common \
++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common \
++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util \
++ $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
++ install -m 0644 $(EAP_COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common
++ install -m 0644 $(COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common
++ install -m 0644 $(CRYPTO_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
++ install -m 0644 $(UTIL_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util
++ install -m 0644 $(MAIN_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/
++
++ mkdir -p $(DESTDIR)/usr/$(LIB)/pkgconfig
++ cp libeap0.pc $(DESTDIR)/usr/$(LIB)/pkgconfig
++
++uninstall:
++
++ rm $(DESTDIR)/usr/$(LIB)/$(LIBEAP)
++ rm -fr $(DESTDIR)/$(INCLUDE_INSTALL_DIR)
++ rm -f $(DESTDIR)/usr/$(LIB)/pkgconfig/libeap0.pc
+
+ clean:
+- rm -f *~ *.o *.so *.d
++ rm -f *~ *.o *.so *.d libeap.a $(LIBEAP) $(OBJS_lib)
+
+-install:
+- if ls *.so >/dev/null 2>&1; then \
+- install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \
+- cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \
+- ; fi
++-include $(OBJS:%.o=%.d)
+diff --git wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.c wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.c
+index 3b0af05..092f266 100644
+--- wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.c
++++ wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.c
+@@ -340,6 +340,120 @@ int eap_peer_method_register(struct eap_method *method)
+
+
+ /**
++ * eap_peer_register_methods - Register all known EAP peer methods
++ *
++ * This function is called at program start to register all compiled
++ * in EAP peer methods.
++ */
++int eap_peer_register_methods(void)
++{
++ int ret = 0;
++
++#ifdef EAP_MD5
++ if (ret == 0)
++ ret = eap_peer_md5_register();
++#endif /* EAP_MD5 */
++
++#ifdef EAP_TLS
++ if (ret == 0)
++ ret = eap_peer_tls_register();
++#endif /* EAP_TLS */
++
++#ifdef EAP_MSCHAPv2
++ if (ret == 0)
++ ret = eap_peer_mschapv2_register();
++#endif /* EAP_MSCHAPv2 */
++
++#ifdef EAP_PEAP
++ if (ret == 0)
++ ret = eap_peer_peap_register();
++#endif /* EAP_PEAP */
++
++#ifdef EAP_TTLS
++ if (ret == 0)
++ ret = eap_peer_ttls_register();
++#endif /* EAP_TTLS */
++
++#ifdef EAP_GTC
++ if (ret == 0)
++ ret = eap_peer_gtc_register();
++#endif /* EAP_GTC */
++
++#ifdef EAP_OTP
++ if (ret == 0)
++ ret = eap_peer_otp_register();
++#endif /* EAP_OTP */
++
++#ifdef EAP_SIM
++ if (ret == 0)
++ ret = eap_peer_sim_register();
++#endif /* EAP_SIM */
++
++#ifdef EAP_LEAP
++ if (ret == 0)
++ ret = eap_peer_leap_register();
++#endif /* EAP_LEAP */
++
++#ifdef EAP_PSK
++ if (ret == 0)
++ ret = eap_peer_psk_register();
++#endif /* EAP_PSK */
++
++#ifdef EAP_AKA
++ if (ret == 0)
++ ret = eap_peer_aka_register();
++#endif /* EAP_AKA */
++
++#ifdef EAP_AKA_PRIME
++ if (ret == 0)
++ ret = eap_peer_aka_prime_register();
++#endif /* EAP_AKA_PRIME */
++
++#ifdef EAP_FAST
++ if (ret == 0)
++ ret = eap_peer_fast_register();
++#endif /* EAP_FAST */
++
++#ifdef EAP_PAX
++ if (ret == 0)
++ ret = eap_peer_pax_register();
++#endif /* EAP_PAX */
++
++#ifdef EAP_SAKE
++ if (ret == 0)
++ ret = eap_peer_sake_register();
++#endif /* EAP_SAKE */
++
++#ifdef EAP_GPSK
++ if (ret == 0)
++ ret = eap_peer_gpsk_register();
++#endif /* EAP_GPSK */
++
++#ifdef EAP_WSC
++ if (ret == 0)
++ ret = eap_peer_wsc_register();
++#endif /* EAP_WSC */
++
++#ifdef EAP_IKEV2
++ if (ret == 0)
++ ret = eap_peer_ikev2_register();
++#endif /* EAP_IKEV2 */
++
++#ifdef EAP_VENDOR_TEST
++ if (ret == 0)
++ ret = eap_peer_vendor_test_register();
++#endif /* EAP_VENDOR_TEST */
++
++#ifdef EAP_TNC
++ if (ret == 0)
++ ret = eap_peer_tnc_register();
++#endif /* EAP_TNC */
++
++ return ret;
++}
++
++
++/**
+ * eap_peer_unregister_methods - Unregister EAP peer methods
+ *
+ * This function is called at program termination to unregister all EAP peer
+diff --git wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.h wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.h
+index 384c61b..b83a46f 100644
+--- wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.h
++++ wpa_supplicant-1.0-rc3/src/eap_peer/eap_methods.h
+@@ -32,6 +32,7 @@ EapType eap_peer_get_type(const char *name, int *vendor);
+ const char * eap_get_name(int vendor, EapType type);
+ size_t eap_get_names(char *buf, size_t buflen);
+ char ** eap_get_names_as_string_array(size_t *num);
++int eap_peer_register_methods(void);
+ void eap_peer_unregister_methods(void);
+
+ #else /* IEEE8021X_EAPOL */
+diff --git wpa_supplicant-1.0-rc3/src/eap_peer/libeap0.pc wpa_supplicant-1.0-rc3/src/eap_peer/libeap0.pc
+new file mode 100644
+index 0000000..2f8463a
+--- /dev/null
++++ wpa_supplicant-1.0-rc3/src/eap_peer/libeap0.pc
+@@ -0,0 +1,10 @@
++prefix=/usr
++exec_prefix=/usr
++libdir=/usr/lib
++includedir=${prefix}/include/eap_peer
++
++Name: libeap0
++Description: EAP Peer Library API
++Version: 0.7.2
++Libs: -L${libdir} -leap
++Cflags: -I${includedir}
+--
+1.6.6.1
+
diff --git a/supplicant/wpa_supplicant-1.0-rc3.tar.gz b/supplicant/wpa_supplicant-1.0-rc3.tar.gz
new file mode 100644
index 0000000..d7bd584
--- /dev/null
+++ b/supplicant/wpa_supplicant-1.0-rc3.tar.gz
Binary files differ