Browse Source

update libnl to 3.2

Waldemar Brodkorb 12 years ago
parent
commit
41db567455

+ 1 - 0
mk/modules.mk

@@ -1252,6 +1252,7 @@ USBMODULES:=
 ifeq ($(KERNEL_BASE),3)
 ifeq ($(KERNEL_MAJ),3)
 USBMODULES+=drivers/usb/usb-common
+USBMODULES+=drivers/usb/core/usbcore
 else
 USBMODULES+=drivers/usb/core/usbcore
 endif

+ 9 - 14
package/hostapd/Makefile

@@ -4,9 +4,10 @@
 include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		hostapd
-PKG_VERSION:=		0.7.3
+# git version from 03.04.2012
+PKG_VERSION:=		1.0
 PKG_RELEASE:=		1
-PKG_MD5SUM:=		91a7c8d0f090b7104152d3455a84c112
+PKG_MD5SUM:=		2a93bb1ecfcdf23a9d7db1f272e5e764
 PKG_DESCR:=		an IEEE 802.11 AP, IEEE 802.1x/WPA/WPA2/EAP/RADIUS Authenticator
 PKG_SECTION:=		wifi
 PKG_DEPENDS:=		libnl
@@ -24,9 +25,6 @@ PKGCD_WITH_GNUTLS:=	use GnuTLS for crypto
 PKGCS_WITH_GNUTLS:=	libgnutls
 PKGCB_WITH_GNUTLS:=	gnutls
 
-PKG_FLAVOURS_HOSTAPD:=	WITH_DEBUG
-PKGFD_WITH_DEBUG:=	enable support for hostapd debugging
-
 WRKSRC=			${WRKDIST}/${PKG_NAME}
 
 include ${TOPDIR}/mk/package.mk
@@ -37,16 +35,13 @@ $(eval $(call PKG_template,HOSTAPD_UTILS,hostapd-utils,${PKG_VERSION}-${PKG_RELE
 CONFIG_STYLE:=		manual
 INSTALL_STYLE:=		manual
 
+TARGET_CFLAGS+=		-I$(STAGING_DIR)/usr/include/libnl3
+
 do-configure:
-	#${CP} ./files/hostapd.config ${WRKBUILD}/.config
-	${CP} ./files/hostapd.config.full ${WRKBUILD}/.config
-#ifneq (${ADK_PACKAGE_HOSTAPD_WITH_GNUTLS},)
-#	${SED} "s#openssl#gnutls#" ${WRKBUILD}/.config
-#endif
-#ifneq (${ADK_PACKAGE_HOSTAPD_WITH_DEBUG},)
-#	${SED} "s#CONFIG_NO_STDOUT_DEBUG=y#CONFIG_NO_STDOUT_DEBUG=n#" \
-#		${WRKBUILD}/.config
-#endif
+	${CP} ./files/hostapd.config ${WRKBUILD}/.config
+ifneq (${ADK_PACKAGE_HOSTAPD_WITH_GNUTLS},)
+	${SED} "s#openssl#gnutls#" ${WRKBUILD}/.config
+endif
 
 do-install:
 	${INSTALL_DIR} ${IDIR_HOSTAPD_UTILS}/usr/sbin

+ 222 - 7
package/hostapd/files/hostapd.config

@@ -9,28 +9,243 @@
 # be modified from here. In most cass, these lines should use += in order not
 # to override previous values of the variables.
 
-# use openssl by default
-CONFIG_TLS=openssl
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for wired authenticator
+#CONFIG_DRIVER_WIRED=y
+
+# Driver interface for madwifi driver
+#CONFIG_DRIVER_MADWIFI=y
+#CFLAGS += -I../../madwifi # change to the madwifi source directory
 
 # Driver interface for drivers using the nl80211 kernel interface
 CONFIG_DRIVER_NL80211=y
+CONFIG_LIBNL32=y
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for no driver (e.g., RADIUS server only)
+#CONFIG_DRIVER_NONE=y
+
+# IEEE 802.11F/IAPP
+CONFIG_IAPP=y
+
+# WPA2/IEEE 802.11i RSN pre-authentication
+CONFIG_RSN_PREAUTH=y
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Integrated EAP server
+#CONFIG_EAP=y
+
+# EAP-MD5 for the integrated EAP server
+#CONFIG_EAP_MD5=y
+
+# EAP-TLS for the integrated EAP server
+#CONFIG_EAP_TLS=y
+
+# EAP-MSCHAPv2 for the integrated EAP server
+#CONFIG_EAP_MSCHAPV2=y
+
+# EAP-PEAP for the integrated EAP server
+#CONFIG_EAP_PEAP=y
+
+# EAP-GTC for the integrated EAP server
+#CONFIG_EAP_GTC=y
+
+# EAP-TTLS for the integrated EAP server
+#CONFIG_EAP_TTLS=y
+
+# EAP-SIM for the integrated EAP server
+#CONFIG_EAP_SIM=y
+
+# EAP-AKA for the integrated EAP server
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' for the integrated EAP server
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# EAP-PAX for the integrated EAP server
+#CONFIG_EAP_PAX=y
+
+# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-pwd for the integrated EAP server (secure authentication with a password)
+#CONFIG_EAP_PWD=y
+
+# EAP-SAKE for the integrated EAP server
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK for the integrated EAP server
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-FAST for the integrated EAP server
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
+# to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# Wi-Fi Protected Setup (WPS)
+#CONFIG_WPS=y
+# Enable WSC 2.0 support
+#CONFIG_WPS2=y
+# Enable UPnP support for external WPS Registrars
+#CONFIG_WPS_UPNP=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# Trusted Network Connect (EAP-TNC)
+#CONFIG_EAP_TNC=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# RADIUS authentication server. This provides access to the integrated EAP
+# server from external hosts using RADIUS.
+#CONFIG_RADIUS_SERVER=y
+
+# Build IPv6 support for RADIUS operations
+CONFIG_IPV6=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Use the hostapd's IEEE 802.11 authentication (ACL), but without
+# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
+#CONFIG_DRIVER_RADIUS_ACL=y
+
+# IEEE 802.11n (High Throughput) support
+#CONFIG_IEEE80211N=y
 
 # Remove debugging code that is printing out debug messages to stdout.
 # This can be used to reduce the size of the hostapd considerably if debugging
 # code is not needed.
 CONFIG_NO_STDOUT_DEBUG=y
 
+# Add support for writing debug log to a file: -f /tmp/hostapd.log
+# Disabled by default.
+#CONFIG_DEBUG_FILE=y
+
 # Remove support for RADIUS accounting
-CONFIG_NO_ACCOUNTING=y
+#CONFIG_NO_ACCOUNTING=y
 
 # Remove support for RADIUS
-CONFIG_NO_RADIUS=y
+#CONFIG_NO_RADIUS=y
 
 # Remove support for VLANs
-CONFIG_NO_VLAN=y
+#CONFIG_NO_VLAN=y
+
+# Enable support for fully dynamic VLANs. This enables hostapd to
+# automatically create bridge and VLAN interfaces if necessary.
+#CONFIG_FULL_DYNAMIC_VLAN=y
 
 # Remove support for dumping state into a file on SIGUSR1 signal
 # This can be used to reduce binary size at the cost of disabling a debugging
 # option.
-CONFIG_NO_DUMP_STATE=y
-CONFIG_LIBNL20=y
+#CONFIG_NO_DUMP_STATE=y
+
+# Enable tracing code for developer debugging
+# This tracks use of memory allocations and other registrations and reports
+# incorrect use with a backtrace of call (or allocation) location.
+#CONFIG_WPA_TRACE=y
+# For BSD, comment out these.
+#LIBS += -lexecinfo
+#LIBS_p += -lexecinfo
+#LIBS_c += -lexecinfo
+
+# Use libbfd to get more details for developer debugging
+# This enables use of libbfd to get more detailed symbols for the backtraces
+# generated by CONFIG_WPA_TRACE=y.
+#CONFIG_WPA_TRACE_BFD=y
+# For BSD, comment out these.
+#LIBS += -lbfd -liberty -lz
+#LIBS_p += -lbfd -liberty -lz
+#LIBS_c += -lbfd -liberty -lz
+
+# hostapd depends on strong random number generation being available from the
+# operating system. os_get_random() function is used to fetch random data when
+# needed, e.g., for key generation. On Linux and BSD systems, this works by
+# reading /dev/urandom. It should be noted that the OS entropy pool needs to be
+# properly initialized before hostapd is started. This is important especially
+# on embedded devices that do not have a hardware random number generator and
+# may by default start up with minimal entropy available for random number
+# generation.
+#
+# As a safety net, hostapd is by default trying to internally collect
+# additional entropy for generating random data to mix in with the data
+# fetched from the OS. This by itself is not considered to be very strong, but
+# it may help in cases where the system pool is not initialized properly.
+# However, it is very strongly recommended that the system pool is initialized
+# with enough entropy either by using hardware assisted random number
+# generator or by storing state over device reboots.
+#
+# hostapd can be configured to maintain its own entropy store over restarts to
+# enhance random number generation. This is not perfect, but it is much more
+# secure than using the same sequence of random numbers after every reboot.
+# This can be enabled with -e<entropy file> command line option. The specified
+# file needs to be readable and writable by hostapd.
+#
+# If the os_get_random() is known to provide strong random data (e.g., on
+# Linux/BSD, the board in question is known to have reliable source of random
+# data from /dev/urandom), the internal hostapd random pool can be disabled.
+# This will save some in binary size and CPU use. However, this should only be
+# considered for builds that are known to be used on devices that meet the
+# requirements described above.
+#CONFIG_NO_RANDOM_POOL=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS
+# internal = Internal TLSv1 implementation (experimental)
+# none = Empty template
+CONFIG_TLS=openssl
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1)
+# can be enabled to get a stronger construction of messages when block ciphers
+# are used.
+#CONFIG_TLSV11=y
+
+# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.2)
+# can be enabled to enable use of stronger crypto algorithms.
+#CONFIG_TLSV12=y
+
+# If CONFIG_TLS=internal is used, additional library and include paths are
+# needed for LibTomMath. Alternatively, an integrated, minimal version of
+# LibTomMath can be used. See beginning of libtommath.c for details on benefits
+# and drawbacks of this option.
+#CONFIG_INTERNAL_LIBTOMMATH=y
+#ifndef CONFIG_INTERNAL_LIBTOMMATH
+#LTM_PATH=/usr/src/libtommath-0.39
+#CFLAGS += -I$(LTM_PATH)
+#LIBS += -L$(LTM_PATH)
+#LIBS_p += -L$(LTM_PATH)
+#endif
+# At the cost of about 4 kB of additional binary size, the internal LibTomMath
+# can be configured to include faster routines for exptmod, sqr, and div to
+# speed up DH and RSA calculation considerably
+#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
+
+# Interworking (IEEE 802.11u)
+# This can be used to enable functionality to improve interworking with
+# external networks.
+#CONFIG_INTERWORKING=y

+ 0 - 176
package/hostapd/files/hostapd.config.full

@@ -1,176 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-#CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-#CONFIG_DRIVER_WIRED=y
-
-# Driver interface for madwifi driver
-#CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../../madwifi # change to the madwifi source directory
-
-# Driver interface for drivers using the nl80211 kernel interface
-CONFIG_DRIVER_NL80211=y
-# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be
-# shipped with your distribution yet. If that is the case, you need to build
-# newer libnl version and point the hostapd build to use it.
-#LIBNL=/usr/src/libnl
-#CFLAGS += -I$(LIBNL)/include
-#LIBS += -L$(LIBNL)/lib
-CONFIG_LIBNL20=y
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-#LIBS_p += -L/usr/local/lib
-#LIBS_c += -L/usr/local/lib
-
-# Driver interface for no driver (e.g., RADIUS server only)
-#CONFIG_DRIVER_NONE=y
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
-CONFIG_PEERKEY=y
-
-# IEEE 802.11w (management frame protection)
-# This version is an experimental implementation based on IEEE 802.11w/D1.0
-# draft and is subject to change since the standard has not yet been finalized.
-# Driver support is also needed for IEEE 802.11w.
-#CONFIG_IEEE80211W=y
-
-# Integrated EAP server
-#CONFIG_EAP=y
-
-# EAP-MD5 for the integrated EAP server
-#CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP server
-#CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP server
-#CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP server
-#CONFIG_EAP_PEAP=y
-
-# EAP-GTC for the integrated EAP server
-#CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP server
-#CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP server
-#CONFIG_EAP_SIM=y
-
-# EAP-AKA for the integrated EAP server
-#CONFIG_EAP_AKA=y
-
-# EAP-AKA' for the integrated EAP server
-# This requires CONFIG_EAP_AKA to be enabled, too.
-#CONFIG_EAP_AKA_PRIME=y
-
-# EAP-PAX for the integrated EAP server
-#CONFIG_EAP_PAX=y
-
-# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
-#CONFIG_EAP_PSK=y
-
-# EAP-SAKE for the integrated EAP server
-#CONFIG_EAP_SAKE=y
-
-# EAP-GPSK for the integrated EAP server
-#CONFIG_EAP_GPSK=y
-# Include support for optional SHA256 cipher suite in EAP-GPSK
-#CONFIG_EAP_GPSK_SHA256=y
-
-# EAP-FAST for the integrated EAP server
-# Note: Default OpenSSL package does not include support for all the
-# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
-# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
-# to add the needed functions.
-#CONFIG_EAP_FAST=y
-
-# Wi-Fi Protected Setup (WPS)
-#CONFIG_WPS=y
-# Enable UPnP support for external WPS Registrars
-#CONFIG_WPS_UPNP=y
-
-# EAP-IKEv2
-#CONFIG_EAP_IKEV2=y
-
-# Trusted Network Connect (EAP-TNC)
-#CONFIG_EAP_TNC=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-#CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# server from external hosts using RADIUS.
-#CONFIG_RADIUS_SERVER=y
-
-# Build IPv6 support for RADIUS operations
-CONFIG_IPV6=y
-
-# IEEE Std 802.11r-2008 (Fast BSS Transition)
-#CONFIG_IEEE80211R=y
-
-# Use the hostapd's IEEE 802.11 authentication (ACL), but without
-# the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
-#CONFIG_DRIVER_RADIUS_ACL=y
-
-# IEEE 802.11n (High Throughput) support
-CONFIG_IEEE80211N=y
-
-# Remove debugging code that is printing out debug messages to stdout.
-# This can be used to reduce the size of the hostapd considerably if debugging
-# code is not needed.
-#CONFIG_NO_STDOUT_DEBUG=y
-
-# Remove support for RADIUS accounting
-#CONFIG_NO_ACCOUNTING=y
-
-# Remove support for RADIUS
-CONFIG_NO_RADIUS=y
-
-# Remove support for VLANs
-#CONFIG_NO_VLAN=y
-
-# Remove support for dumping state into a file on SIGUSR1 signal
-# This can be used to reduce binary size at the cost of disabling a debugging
-# option.
-#CONFIG_NO_DUMP_STATE=y
-
-# Enable tracing code for developer debugging
-# This tracks use of memory allocations and other registrations and reports
-# incorrect use with a backtrace of call (or allocation) location.
-#CONFIG_WPA_TRACE=y
-# For BSD, comment out these.
-#LIBS += -lexecinfo
-#LIBS_p += -lexecinfo
-#LIBS_c += -lexecinfo
-
-# Use libbfd to get more details for developer debugging
-# This enables use of libbfd to get more detailed symbols for the backtraces
-# generated by CONFIG_WPA_TRACE=y.
-#CONFIG_WPA_TRACE_BFD=y
-# For BSD, comment out these.
-#LIBS += -lbfd -liberty -lz
-#LIBS_p += -lbfd -liberty -lz
-#LIBS_c += -lbfd -liberty -lz

+ 0 - 141
package/hostapd/patches/001-fix-bssid-generation.patch

@@ -1,141 +0,0 @@
-Modified algorithm for generating BSSIDs. Always set locally
-administered bit. Calculate the mask after calculating the
-BSSIDs. This eliminates the "Invalid BSSID mask" caused when
-addr & mask != addr.
-
-Signed-off-by: Bill Jordan <bjordan <at> rajant.com>
----
-Taken from http://permalink.gmane.org/gmane.linux.drivers.hostap/22207
----
- src/ap/hostapd.c |   74 ++++++------------------------------------------------
- 1 files changed, 8 insertions(+), 66 deletions(-)
-
-diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
-index f4517f8..1dc6b66 100644
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -360,70 +360,26 @@ static int hostapd_validate_bssid_configuration(struct hostapd_iface *iface)
- {
- 	u8 mask[ETH_ALEN] = { 0 };
- 	struct hostapd_data *hapd = iface->bss[0];
--	unsigned int i = iface->conf->num_bss, bits = 0, j;
-+	unsigned int i, j;
- 	int res;
--	int auto_addr = 0;
-
- 	if (hostapd_drv_none(hapd))
- 		return 0;
-
- 	/* Generate BSSID mask that is large enough to cover the BSSIDs. */
-
--	/* Determine the bits necessary to cover the number of BSSIDs. */
--	for (i--; i; i >>= 1)
--		bits++;
--
- 	/* Determine the bits necessary to any configured BSSIDs,
- 	   if they are higher than the number of BSSIDs. */
- 	for (j = 0; j < iface->conf->num_bss; j++) {
--		if (hostapd_mac_comp_empty(iface->conf->bss[j].bssid) == 0) {
--			if (j)
--				auto_addr++;
--			continue;
--		}
--
- 		for (i = 0; i < ETH_ALEN; i++) {
- 			mask[i] |=
--				iface->conf->bss[j].bssid[i] ^
-+				iface->bss[j]->conf->bssid[i] ^
- 				hapd->own_addr[i];
- 		}
- 	}
-
--	if (!auto_addr)
--		goto skip_mask_ext;
--
--	for (i = 0; i < ETH_ALEN && mask[i] == 0; i++)
--		;
--	j = 0;
--	if (i < ETH_ALEN) {
--		j = (5 - i) * 8;
--
--		while (mask[i] != 0) {
--			mask[i] >>= 1;
--			j++;
--		}
--	}
--
--	if (bits < j)
--		bits = j;
--
--	if (bits > 40) {
--		wpa_printf(MSG_ERROR, "Too many bits in the BSSID mask (%u)",
--			   bits);
--		return -1;
--	}
--
--	os_memset(mask, 0xff, ETH_ALEN);
--	j = bits / 8;
--	for (i = 5; i > 5 - j; i--)
--		mask[i] = 0;
--	j = bits % 8;
--	while (j--)
--		mask[i] <<= 1;
--
--skip_mask_ext:
--	wpa_printf(MSG_DEBUG, "BSS count %lu, BSSID mask " MACSTR " (%d bits)",
--		   (unsigned long) iface->conf->num_bss, MAC2STR(mask), bits);
-+	wpa_printf(MSG_DEBUG, "BSS count %lu, BSSID mask " MACSTR ,
-+		   (unsigned long) iface->conf->num_bss, MAC2STR(mask));
-
- 	res = hostapd_valid_bss_mask(hapd, hapd->own_addr, mask);
- 	if (res == 0)
-@@ -436,21 +392,6 @@ skip_mask_ext:
- 		return -1;
- 	}
-
--	if (!auto_addr)
--		return 0;
--
--	for (i = 0; i < ETH_ALEN; i++) {
--		if ((hapd->own_addr[i] & mask[i]) != hapd->own_addr[i]) {
--			wpa_printf(MSG_ERROR, "Invalid BSSID mask " MACSTR
--				   " for start address " MACSTR ".",
--				   MAC2STR(mask), MAC2STR(hapd->own_addr));
--			wpa_printf(MSG_ERROR, "Start address must be the "
--				   "first address in the block (i.e., addr "
--				   "AND mask == addr).");
--			return -1;
--		}
--	}
--
- 	return 0;
- }
-
-@@ -492,6 +433,7 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first)
- 	if (!first) {
- 		if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0) {
- 			/* Allocate the next available BSSID. */
-+			hapd->own_addr[0] |= 2; /* locally administered address */
- 			do {
- 				inc_byte_array(hapd->own_addr, ETH_ALEN);
- 			} while (mac_in_conf(hapd->iconf, hapd->own_addr));
-@@ -672,9 +614,6 @@ static int setup_interface(struct hostapd_iface *iface)
- 		iface->bss[i]->drv_priv = hapd->drv_priv;
- 	}
-
--	if (hostapd_validate_bssid_configuration(iface))
--		return -1;
--
- 	if (hapd->iconf->country[0] && hapd->iconf->country[1]) {
- 		os_memcpy(country, hapd->iconf->country, 3);
- 		country[3] = '\0';
-@@ -774,6 +713,9 @@ int hostapd_setup_interface_complete(struct hostapd_iface *iface, int err)
- 			prev_addr = hapd->own_addr;
- 	}
-
-+	if (hostapd_validate_bssid_configuration(iface))
-+		return -1;
-+
- 	hostapd_tx_queue_params(iface);
-
- 	ap_list_init(iface);

+ 2 - 2
package/iw/Makefile

@@ -4,9 +4,9 @@
 include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		iw
-PKG_VERSION:=		0.9.21
+PKG_VERSION:=		3.4
 PKG_RELEASE:=		1
-PKG_MD5SUM:=		726db5f1fd6bc316434414770513ef81
+PKG_MD5SUM:=		a8ccfc936eb3603db7b60b67f4261f1f
 PKG_DESCR:=		Tools for setting up WiFi cards via netlink (nl80211)
 PKG_SECTION:=		wifi
 PKG_DEPENDS:=		libnl

+ 11 - 0
package/libnettle/patches/patch-Makefile_in

@@ -0,0 +1,11 @@
+--- nettle-2.4.orig/Makefile.in	2011-09-03 14:51:07.000000000 +0200
++++ nettle-2.4/Makefile.in	2012-04-03 15:14:44.000000000 +0200
+@@ -14,7 +14,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = $(INSTALL_PROGRAM) -s
+ MKDIR_P = @MKDIR_P@
+ 
+-SUBDIRS = tools testsuite examples
++SUBDIRS = tools testsuite
+ 
+ include config.make
+ 

+ 16 - 7
package/libnl/Makefile

@@ -4,9 +4,9 @@
 include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		libnl
-PKG_VERSION:=		2.0
-PKG_RELEASE:=		2
-PKG_MD5SUM:=		6aaf1e9802a17a7d702bb0638044ffa7
+PKG_VERSION:=		3.2.7
+PKG_RELEASE:=		1
+PKG_MD5SUM:=		6a233a9dffa0ee3a7f6110c95c5410ab
 PKG_DESCR:=		Netlink library
 PKG_SECTION:=		libs
 PKG_URL:=		http://www.infradead.org/~tgr/libnl/
@@ -23,11 +23,20 @@ $(eval $(call PKG_template,LIBNL,libnl,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPEN
 $(eval $(call PKG_template,LIBNL_DEV,libnl-dev,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIBNL_DEV},${PKGSC_LIBNL_DEV}))
 
 libnl-install:
+	${INSTALL_DIR} ${IDIR_LIBNL}/etc/libnl
+	$(CP) ${WRKINST}/etc/libnl/* ${IDIR_LIBNL}/etc/libnl
 	${INSTALL_DIR} ${IDIR_LIBNL}/usr/lib
-	${CP} ${WRKINST}/usr/lib/libnl.so* ${IDIR_LIBNL}/usr/lib
-	${CP} ${WRKINST}/usr/lib/libnl-genl.so* ${IDIR_LIBNL}/usr/lib
-	${CP} ${WRKINST}/usr/lib/libnl-cli.so* ${IDIR_LIBNL}/usr/lib
-	${CP} ${WRKINST}/usr/lib/libnl-route.so* ${IDIR_LIBNL}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libnl-3.so* ${IDIR_LIBNL}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libnl-genl-3.so* ${IDIR_LIBNL}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libnl-cli-3.so* ${IDIR_LIBNL}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libnl-route-3.so* ${IDIR_LIBNL}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libnl-nf-3.so* ${IDIR_LIBNL}/usr/lib
+	${INSTALL_DIR} ${IDIR_LIBNL}/usr/lib/libnl/cli/cls
+	$(CP) ${WRKINST}/usr/lib/libnl/cli/cls/*.so \
+		${IDIR_LIBNL}/usr/lib/libnl/cli/cls
+	${INSTALL_DIR} ${IDIR_LIBNL}/usr/lib/libnl/cli/qdisc
+	$(CP) ${WRKINST}/usr/lib/libnl/cli/qdisc/*.so \
+		${IDIR_LIBNL}/usr/lib/libnl/cli/qdisc
 
 libnl-dev-install:
 	${INSTALL_DIR} ${IDIR_LIBNL_DEV}/usr/include

+ 0 - 11
package/libnl/patches/patch-ltmain_sh

@@ -1,11 +0,0 @@
---- libnl-2.0.orig/ltmain.sh	2010-10-13 16:43:44.000000000 +0200
-+++ libnl-2.0/ltmain.sh	2011-01-15 21:22:48.000000000 +0100
-@@ -4765,7 +4765,7 @@ func_mode_link ()
-       # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-       # @file GCC response files
-       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
--      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-fstack-protector*|-flto)
-         func_quote_for_eval "$arg"
- 	arg="$func_quote_for_eval_result"
-         func_append compile_command " $arg"

+ 1 - 0
package/wpa_supplicant/Makefile

@@ -32,6 +32,7 @@ $(eval $(call PKG_template,WPA_SUPPLICANT,wpa-supplicant,${PKG_VERSION}-${PKG_RE
 
 CONFIG_STYLE:=          manual
 INSTALL_STYLE:=         manual
+TARGET_CFLAGS+=		-I$(STAGING_DIR)/usr/include/libnl3
 
 MAKE_FLAGS+=		CPPFLAGS='${TARGET_CPPFLAGS}' \
 			LDFLAGS='${TARGET_LDFLAGS}' \

+ 15 - 0
package/wpa_supplicant/patches/patch-src_drivers_drivers_mak

@@ -0,0 +1,15 @@
+--- wpa_supplicant-0.7.3.orig/src/drivers/drivers.mak	2010-09-07 17:43:39.000000000 +0200
++++ wpa_supplicant-0.7.3/src/drivers/drivers.mak	2012-04-03 16:08:09.000000000 +0200
+@@ -31,10 +31,10 @@ NEED_SME=y
+ NEED_AP_MLME=y
+ NEED_NETLINK=y
+ NEED_LINUX_IOCTL=y
+-DRV_LIBS += -lnl
++DRV_LIBS += -lnl-3
+ 
+ ifdef CONFIG_LIBNL20
+-DRV_LIBS += -lnl-genl
++DRV_LIBS += -lnl-genl-3
+ DRV_CFLAGS += -DCONFIG_LIBNL20
+ endif
+ endif