packages: clean up the package folder
packages: clean up the package folder

Signed-off-by: John Crispin <blogic@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37007 3c298f89-4303-0410-b956-a3cf2f4a3e73

--- a/package/acx-mac80211/Makefile
+++ /dev/null
@@ -1,259 +1,1 @@
-#
-# Copyright (C) 2007-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=acx-mac80211
-PKG_REV:=v2012-09-23-WIP
-PKG_VERSION:=20121004
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=git://acx100.git.sourceforge.net/gitroot/acx100/acx-mac80211
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_MIRROR_MD5SUM:=8d6bc84239059fd938ff4d989579f622
-PKG_BUILD_DEPENDS:=mac80211
-
-PKG_CONFIG_DEPENDS:= \
-	CONFIG_PACKAGE_MAC80211_DEBUGFS \
-	CONFIG_PACKAGE_MAC80211_MESH \
-
-include $(INCLUDE_DIR)/package.mk
-
-define KernelPackage/acx-mac80211
-  SUBMENU:=Wireless Drivers
-  TITLE:=ACX1xx mac80211 driver
-  DEPENDS:=@(PCI_SUPPORT||TARGET_ar7) @mipsel +kmod-mac80211
-  FILES:=$(PKG_BUILD_DIR)/acx-mac80211.ko
-  AUTOLOAD:=$(call AutoLoad,50,acx-mac80211)
-  MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-  MENU:=1
-endef
-
-define KernelPackage/acx-mac80211/config
-	menu "Configuration"
-		depends on PACKAGE_kmod-acx-mac80211
-
-	config ACX_ID_0D
-		bool "ACX1xx Radio ID 0D firmware"
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 0D into /lib/firmware.
-
-	config ACX_ID_11
-		bool "ACX1xx Radio ID 11 firmware"
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 11 into /lib/firmware.
-
-	config ACX_ID_15
-		bool "ACX1xx Radio ID 15 firmware"
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 15 into /lib/firmware.
-
-	config ACX_ID_16
-		bool "ACX1xx Radio ID 16 firmware"
-		default y
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 16 into /lib/firmware.
-
-	choice
-		prompt "ACX111 firmware version"
-		depends on ACX_ID_16
-		default ACX_DEFAULT if !TARGET_adm5120
-		default ACX_1_2_1_34 if TARGET_adm5120
-		help
-		  This option allows you to select the version of the acx firmware.
-
-	config ACX_DEFAULT
-		bool "Default"
-		help
-		  Default firmware for ACX111 devices.
-
-		  If unsure, select this.
-
-	config ACX_1_2_1_34
-		bool "1.2.1_34"
-		help
-		  1.2.1_34 firmware for ACX111 devices. Works with Zyxel P-334WT.
-
-		  If unsure, select the "default" firmware.
-
-	endchoice
-
-	config ACX_ID_17
-		bool "ACX1xx Radio ID 17 firmware"
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 17 into /lib/firmware.
-
-	config ACX_ID_19
-		bool "ACX1xx Radio ID 19 firmware"
-		default y
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 19 into /lib/firmware.
-
-	config ACX_ID_1B
-		bool "ACX1xx Radio ID 1B firmware"
-		help
-		  Download and install firmware for:
-		    ACX1xx cards with Radio ID 1b into /lib/firmware.
-
-	endmenu
-endef
-
-define KernelPackage/acx-mac80211/description
-	Driver for acx111 cards (mac80211 version)
-endef
-
-define Download/tiacx100
-	FILE:=tiacx100
-	URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/
-	MD5SUM:=24a54fd30f7658fcbffc825b0dd7aa5b
-endef
-
-define Download/tiacx100r0d
-	FILE:=tiacx100r0D
-	URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/
-	MD5SUM:=1c7413e7b0be4ef7d1e424a132e17fab
-endef
-
-define Download/tiacx100r11
-	FILE:=tiacx100r11
-	URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/
-	MD5SUM:=a150750ad33c512edc4afee5270b37cb
-endef
-
-define Download/tiacx100r15
-	FILE:=tiacx100r15
-	URL:=http://acx100.erley.org/fw/acx100_1.9.8.b/
-	MD5SUM:=c99d01d4fcf0d6cc00441aff60690be4
-endef
-
-define Download/tiacx111c16
-	FILE:=tiacx111c16
-	URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/
-	MD5SUM:=7026826460376f6b174f9225bd7781b9
-endef
-
-define Download/tiacx111c16_1
-	FILE:=tiacx111c16_1.2.1_34
-	URL:=http://sites.google.com/site/atorkhov/files/
-	MD5SUM:=fcd07de4b25e1d2aaf3b78b27c5b7ee9
-endef
-
-define Download/tiacx111c17
-	FILE:=tiacx111c17
-	URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/
-	MD5SUM:=95552544ca6d2b4e8c6aeb80b8ae7fdf
-endef
-
-define Download/tiacx111c19
-	FILE:=tiacx111c19
-	URL:=http://acx100.erley.org/fw/acx111_2.3.1.31/
-	MD5SUM:=a1fa9681e297b4e36e257090fc12265a
-endef
-
-define Download/tiacx111usbc1b
-	FILE:=tiacx111usbc1B
-	URL:=http://acx100.erley.org/fw/acx111_2.4.0.70-USB/
-	MD5SUM:=c4edecd912b2417779d0b65e3a7dc86d
-endef
-
-PKG_EXTRA_KCONFIG:= \
-	CONFIG_ACX_MAC80211=m \
-	CONFIG_ACX_MAC80211_PCI=m \
-
-PKG_EXTRA_CFLAGS:= \
-	$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(PKG_EXTRA_KCONFIG)))) \
-	$(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(PKG_EXTRA_KCONFIG)))) \
-	$(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS) \
-	$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS), -DCONFIG_CFG80211_DEBUGFS -DCONFIG_MAC80211_DEBUGFS) \
-	$(if $(CONFIG_PACKAGE_MAC80211_MESH), -DCONFIG_MAC80211_MESH) \
-	-DBACKPORTED_KERNEL_NAME=\\\"$(PKG_SOURCE)\\\" \
-	-DBACKPORTED_KERNEL_VERSION=\\\"$(PKG_SOURCE_VERSION)\\\" \
-	-DBACKPORTS_VERSION=\\\"unknown\\\" \
-
-define Build/Compile
-	$(MAKE) -C "$(LINUX_DIR)" \
-		ARCH="$(LINUX_KARCH)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		SUBDIRS="$(PKG_BUILD_DIR)" \
-		$(PKG_EXTRA_KCONFIG) \
-		EXTRA_CFLAGS="$(PKG_EXTRA_CFLAGS) -DCONFIG_ACX_MAC80211_VERSION=\"KERNEL_VERSION(3,10,0)\"" \
-		LINUXINCLUDE="-I$(STAGING_DIR)/usr/include/mac80211-backport/uapi -I$(STAGING_DIR)/usr/include/mac80211-backport \
-			-I$(STAGING_DIR)/usr/include/mac80211/uapi -I$(STAGING_DIR)/usr/include/mac80211 \
-			-I$(LINUX_DIR)/include -I$(LINUX_DIR)/include/$(LINUX_UAPI_DIR) \
-			-I$(LINUX_DIR)/include/generated/uapi/ -Iarch/$(LINUX_KARCH)/include \
-			-Iarch/$(LINUX_KARCH)/include/$(LINUX_UAPI_DIR) \
-			-include generated/autoconf.h \
-			-include backport/backport.h " \
-		V="$(V)" \
-		modules
-endef
-
-define Build/Configure
-endef
-
-define KernelPackage/acx-mac80211/install
-	$(INSTALL_DIR) $(1)/lib/firmware
-
-ifneq ($(CONFIG_ACX_ID_0D)$(CONFIG_ACX_ID_11)$(CONFIG_ACX_ID_15),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx100 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_ID_0D),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx100r0D $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_ID_11),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx100r11 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_ID_15),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx100r15 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_DEFAULT),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx111c16 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_1_2_1_34),)
-	$(INSTALL_DATA)	$(DL_DIR)/tiacx111c16_1.2.1_34 $(1)/lib/firmware/tiacx111c16
-endif
-
-ifneq ($(CONFIG_ACX_ID_17),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx111c17 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_ID_19),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx111c19 $(1)/lib/firmware/
-endif
-
-ifneq ($(CONFIG_ACX_ID_1B),)
-	$(INSTALL_DATA) $(DL_DIR)/tiacx111usbc1B $(1)/lib/firmware/
-endif
-
-endef
-
-$(eval $(call KernelPackage,acx-mac80211))
-$(eval $(call Download,tiacx100))
-$(eval $(call Download,tiacx100r0d))
-$(eval $(call Download,tiacx100r11))
-$(eval $(call Download,tiacx100r15))
-$(eval $(call Download,tiacx111c16))
-$(eval $(call Download,tiacx111c16_1))
-$(eval $(call Download,tiacx111c17))
-$(eval $(call Download,tiacx111c19))
-$(eval $(call Download,tiacx111usbc1b))
-

--- a/package/acx-mac80211/patches/001-make-compatible-with-recent-mac80211.patch
+++ /dev/null
@@ -1,31 +1,1 @@
---- a/main.h
-+++ b/main.h
-@@ -44,8 +44,11 @@ int acx_e_op_get_tx_stats(struct ieee802
- 
- #if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(2, 6, 39)
- int acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb);
--#else
-+#elif CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 7, 0)
- void acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb);
-+#else
-+void acx_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
-+	       struct sk_buff *skb);
- #endif
- 
- 
---- a/main.c
-+++ b/main.c
-@@ -1024,7 +1024,12 @@ int acx_e_op_get_tx_stats(struct ieee802
-  * acx_compat, and hiding this #if/else.  OTOH, inclusion doesnt care
-  * about old kernels
-  */
-+#if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 7, 0)
- OP_TX_RET_TYPE acx_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
-+#else
-+void acx_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
-+	       struct sk_buff *skb)
-+#endif
- {
- 	acx_device_t *adev = ieee2adev(hw);
- 
 

--- a/package/acx-mac80211/patches/002-remove-usage-of__dev.patch
+++ /dev/null
@@ -1,86 +1,1 @@
---- a/mem.c
-+++ b/mem.c
-@@ -2002,7 +2002,7 @@ int acx100mem_ioctl_set_phy_amp_bias(str
-  *	  configuration
-  * id	- ptr to the device id entry that matched this device
-  */
--static int __devinit acxmem_probe(struct platform_device *pdev)
-+static int acxmem_probe(struct platform_device *pdev)
- {
- 	acx_device_t *adev = NULL;
- 	const char *chip_name;
-@@ -2268,7 +2268,7 @@ done:
-  * pdev - ptr to PCI device structure containing info about pci
-  * configuration
-  */
--static int __devexit acxmem_remove(struct platform_device *pdev)
-+static int acxmem_remove(struct platform_device *pdev)
- {
- 	struct ieee80211_hw *hw = (struct ieee80211_hw *)
- 		platform_get_drvdata(pdev);
-@@ -2470,7 +2470,7 @@ static struct platform_driver acxmem_dri
- 		.name = "acx-mem",
- 	},
- 	.probe = acxmem_probe,
--	.remove = __devexit_p(acxmem_remove),
-+	.remove = acxmem_remove,
- 
- #ifdef CONFIG_PM
- 	.suspend = acxmem_e_suspend,
---- a/pci.c
-+++ b/pci.c
-@@ -982,7 +982,7 @@ int acx100pci_ioctl_set_phy_amp_bias(str
-  * id	- ptr to the device id entry that matched this device
-  */
- #ifdef CONFIG_PCI
--static int __devinit acxpci_probe(struct pci_dev *pdev,
-+static int acxpci_probe(struct pci_dev *pdev,
- 				const struct pci_device_id *id)
- {
- 	acx111_ie_configoption_t co;
-@@ -1346,7 +1346,7 @@ done:
-  *
-  * pdev - ptr to PCI device structure containing info about pci configuration
-  */
--static void __devexit acxpci_remove(struct pci_dev *pdev)
-+static void acxpci_remove(struct pci_dev *pdev)
- {
- 	struct ieee80211_hw *hw
- 		= (struct ieee80211_hw *) pci_get_drvdata(pdev);
-@@ -1537,7 +1537,7 @@ static int acxpci_e_resume(struct pci_de
-  */
- 
- #if 0 // use later ?
--static struct acxpci_device_info acxpci_info_tbl[] __devinitdata = {
-+static struct acxpci_device_info acxpci_info_tbl[] = {
-         [0] = {
-                 .part_name      = "acx111",
-                 .helper_image   = "tiacx1111r16", // probly wrong !!
-@@ -1564,7 +1564,7 @@ static struct pci_driver acxpci_driver =
- 	.name		= "acx_pci",
- 	.id_table	= acxpci_id_tbl,
- 	.probe		= acxpci_probe,
--	.remove		= __devexit_p(acxpci_remove),
-+	.remove		= acxpci_remove,
- #ifdef CONFIG_PM
- 	.suspend	= acxpci_e_suspend,
- 	.resume		= acxpci_e_resume
-@@ -1662,7 +1662,7 @@ static struct vlynq_device_id acx_vlynq_
- };
- 
- 
--static __devinit int vlynq_probe(struct vlynq_device *vdev,
-+static int vlynq_probe(struct vlynq_device *vdev,
- 				 struct vlynq_device_id *id)
- {
- 	int result = -EIO, i;
-@@ -1971,7 +1971,7 @@ static struct vlynq_driver vlynq_acx = {
- 	.name = "acx_vlynq",
- 	.id_table = acx_vlynq_id,
- 	.probe = vlynq_probe,
--	.remove = __devexit_p(vlynq_remove),
-+	.remove = vlynq_remove,
- };
- #endif /* CONFIG_VLYNQ */
- 
 

--- a/package/acx-mac80211/patches/003-add-changes-for-3-10.patch
+++ /dev/null
@@ -1,28 +1,1 @@
---- a/main.c
-+++ b/main.c
-@@ -681,6 +681,7 @@ int acx_op_config(struct ieee80211_hw *h
- 	if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
- 		changed_not_done &= ~IEEE80211_CONF_CHANGE_CHANNEL;
- 
-+#if CONFIG_ACX_MAC80211_VERSION < KERNEL_VERSION(3, 10, 0)
- 		logf1(L_DEBUG, "IEEE80211_CONF_CHANGE_CHANNEL, "
- 			"channel->hw_value=%i\n", conf->channel->hw_value);
- 
-@@ -689,6 +690,16 @@ int acx_op_config(struct ieee80211_hw *h
- 
- 		acx_selectchannel(adev, conf->channel->hw_value,
- 				conf->channel->center_freq);
-+#else
-+		logf1(L_DEBUG, "IEEE80211_CONF_CHANGE_CHANNEL, "
-+			"channel->hw_value=%i\n", conf->chandef.chan->hw_value);
-+
-+		if (conf->chandef.chan->hw_value == adev->channel)
-+			goto change_channel_done;
-+
-+		acx_selectchannel(adev, conf->chandef.chan->hw_value,
-+				conf->chandef.chan->center_freq);
-+#endif
- 	}
- change_channel_done:
- 	if (changed_not_done)
 

--- a/package/acx-mac80211/patches/100-hw-queue-check-fix.patch
+++ /dev/null
@@ -1,43 +1,1 @@
---- a/mem.c
-+++ b/mem.c
-@@ -2036,7 +2036,7 @@ static int acxmem_probe(struct platform_
- 	 */
- 	ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION)
- 					| BIT(NL80211_IFTYPE_ADHOC);
--	ieee->queues = 1;
-+	ieee->queues = 4;
- 	/* OW TODO Check if RTS/CTS threshold can be included here */
- 
- 	/* TODO: although in the original driver the maximum value was
---- a/pci.c
-+++ b/pci.c
-@@ -1022,7 +1022,7 @@ static int acxpci_probe(struct pci_dev *
- 			BIT(NL80211_IFTYPE_STATION) |
- 			BIT(NL80211_IFTYPE_ADHOC) |
- 			BIT(NL80211_IFTYPE_AP);
--	ieee->queues = 1;
-+	ieee->queues = 4;
- 	/* OW TODO Check if RTS/CTS threshold can be included here */
- 
- 	/* TODO: although in the original driver the maximum value was
-@@ -1691,7 +1691,7 @@ static int vlynq_probe(struct vlynq_devi
- 			BIT(NL80211_IFTYPE_STATION)	|
- 			BIT(NL80211_IFTYPE_ADHOC) |
- 			BIT(NL80211_IFTYPE_AP);
--	ieee->queues = 1;
-+	ieee->queues = 4;
- 
- 	/* We base signal quality on winlevel approach of previous driver
- 	 * TODO OW 20100615 This should into a common init code
---- a/usb.c
-+++ b/usb.c
-@@ -1624,7 +1624,7 @@ acxusb_probe(struct usb_interface *intf,
- 	 */
- 	ieee->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION)
- 			| BIT(NL80211_IFTYPE_ADHOC);
--	ieee->queues = 1;
-+	ieee->queues = 4;
- 	// OW TODO Check if RTS/CTS threshold can be included here
- 
- 	// We base signal quality on winlevel approach of previous driver
 

--- a/package/acx-mac80211/patches/200-initial-macaddr.patch
+++ /dev/null
@@ -1,32 +1,1 @@
---- a/cardsetting.c
-+++ b/cardsetting.c
-@@ -710,12 +710,27 @@ static int acx1xx_get_station_id(acx_dev
- 	u8 stationID[4 + acx_ie_descs[ACX1xx_IE_DOT11_STATION_ID].len];
- 	const u8 *paddr;
- 	int i, res;
-+	const char *prom_addr;
-+	char *prom_getenv(const char *name);
- 
- 
- 
- 	res = acx_interrogate(adev, &stationID, ACX1xx_IE_DOT11_STATION_ID);
- 	paddr = &stationID[4];
--	for (i = 0; i < ETH_ALEN; i++) {
-+	prom_addr = NULL;
-+#ifdef CONFIG_VLYNQ
-+	prom_addr = prom_getenv("macwlan");
-+	if (prom_addr == NULL)
-+		prom_addr = prom_getenv("mac_ap");
-+#endif
-+	if (prom_addr)
-+		sscanf(prom_addr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", adev->dev_addr,
-+				adev->dev_addr + 1,
-+				adev->dev_addr + 2,
-+				adev->dev_addr + 3,
-+				adev->dev_addr + 4,
-+				adev->dev_addr + 5);
-+	else for (i = 0; i < ETH_ALEN; i++) {
- 		/* we copy the MAC address (reversed in the card) to
- 		 * the netdevice's MAC address, and on ifup it will be
- 		 * copied into iwadev->dev_addr */
 

--- a/package/admswconfig/Makefile
+++ /dev/null
@@ -1,53 +1,1 @@
-# 
-# Copyright (C) 2007 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=admswconfig
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
-PKG_MD5SUM:=faafd4618f970119a665b11b21ac6a26
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/admswconfig
-  SECTION:=utils
-  CATEGORY:=Utilities
-  TITLE:=ADM5120 Switch configuration tool
-  DEPENDS:=@TARGET_adm5120
-  URL:=http://sharon.esrac.ele.tue.nl/users/pe1rxq/linux-adm/admswconfig/
-  MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-endef
-
-define Package/admswconfig/description
- A program to configure the internal ethernet switch of an ADM5120 processor.
- You need the corresponding driver for the switch in the kernel. 
- With this program you can configure which ports of the switch belong 
- to the different ethernet devices.
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-	$(TARGET_CC) $(TARGET_CFLAGS) -Os $(PKG_BUILD_DIR)/admswconfig.c -o $(PKG_BUILD_DIR)/$(PKG_NAME)
-endef
-
-define Package/admswconfig/install
-	$(INSTALL_DIR) $(1)/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/admswconfig $(1)/sbin/
-	$(INSTALL_DIR) $(1)/lib/network/
-	$(INSTALL_DATA) ./files/admswswitch.sh $(1)/lib/network/admswswitch.sh
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_BIN) ./files/admswconfig $(1)/etc/init.d/admswconfig
-endef
-
-$(eval $(call BuildPackage,admswconfig))
-

--- a/package/admswconfig/files/admswconfig
+++ /dev/null
@@ -1,69 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
 
-START=05
-
-start() {
-	[ -e /etc/config/network ] && exit 0
-
-	mkdir -p /etc/config
-
-	board_name=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /system type/ {print $2}' /proc/cpuinfo)
-
-	case "$board_name" in
-	"Compex WP54"*)
-		board="Compex WP54";;
-	esac
-
-	echo "$board" |awk '
-	function p(cfgname, name) {
-		if (c[name] != "") print "	option " cfgname "	\"" c[name] "\""
-	}
-
-	BEGIN {
-		FS="="
-		c["lan_ifname"]="eth0"
-		c["wan_ifname"]="eth1"
-		c["eth0ports"]="1 2 3 4"
-		c["eth1ports"]="0"
-	}
-	END {
-		board=$1
-		if (board == "Compex WP54") {
-			c["eth0ports"]="0"
-			c["eth1ports"]="1"
-		}
-
-		print "#### VLAN configuration "
-		print "config switch"
-		p("eth0", "eth0ports")
-		p("eth1", "eth1ports")
-		print ""
-		print ""
-		print "#### Loopback configuration"
-		print "config interface loopback"
-		print "	option ifname	\"lo\""
-		print "	option proto	static"
-		print "	option ipaddr	127.0.0.1"
-		print "	option netmask	255.0.0.0"
-		print ""
-		print ""
-		print "#### LAN configuration"
-		print "config interface lan"
-		print "	option type 	bridge"
-		p("ifname", "lan_ifname")
-		p("macaddr", "lan_macaddr")
-		print "	option proto	static"
-		print "	option ipaddr	192.168.1.1"
-		print "	option netmask	255.255.255.0"
-		print ""
-		print ""
-		print "#### WAN configuration"
-		print "config interface	wan"
-		p("ifname", "wan_ifname")
-		p("macaddr", "wan_macaddr")
-		print "	option proto	dhcp"
-	}' > /etc/config/network
-}
-
-

--- a/package/admswconfig/files/admswswitch.sh
+++ /dev/null
@@ -1,29 +1,1 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
 
-setup_switch_vlan() {
-	config_get ports "$CONFIG_SECTION" "eth$1"
-	ports=`echo "$ports"| sed s/" "/""/g`
-	ifconfig eth$1 down
-	admswconfig eth$1 ${ports}c
-	ifconfig eth$1 up
-}
-
-setup_switch() {
-	config_cb() {
-		case "$1" in
-			switch)
-				option_cb() {
-					case "$1" in
-						eth*) setup_switch_vlan "${1##eth}";;
-					esac
-				}
-			;;
-			*)
-				option_cb() { return 0; }
-			;;
-		esac
-	}
-	config_load network
-}
-

--- a/package/admswconfig/patches/001-matrix.patch
+++ /dev/null
@@ -1,16 +1,1 @@
---- a/admswconfig.c
-+++ b/admswconfig.c
-@@ -111,9 +111,9 @@ int main(int argc, char **argv)
- 		}
- 	} else {
- 		/* display matrix */
--		printf("ethX\tport0\tport1\tport2\tport3\tport4");
--		if (info.ports == 6)
--			printf("\tport5");
-+		printf("ethX");
-+		for (i = 0; i < info.ports; i++)
-+			printf("\tport%d", i);
- 		printf("\tCPU\n");
- 		for (i = 0; i < info.ports; i++) {
- 			printf("%d", i);
 

file:a/package/apex/Makefile (deleted)
--- a/package/apex/Makefile
+++ /dev/null
@@ -1,59 +1,1 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=apex
-PKG_VERSION:=1.6.9
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://ftp.buici.com/pub/apex/ \
-	ftp://metalab.unc.edu/pub/Linux/system/boot/apex/
-PKG_MD5SUM:=9606cf2e3fd2c9a86fe0b61388509a30
-PKG_TARGETS:=bin
-
-include $(INCLUDE_DIR)/package.mk
-
-export GCC_HONOUR_COPTS=s
-
-define Package/apex
-  SECTION:=boot
-  CATEGORY:=Boot Loaders
-  DEPENDS:=@TARGET_ixp4xx
-  DEFAULT:=y
-  TITLE:=Boot loader for NSLU2, FSG3, NAS100D and others
-  URL:=http://wiki.buici.com/wiki/Apex_Bootloader
-endef
-
-define build_apex
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		ARCH=arm \
-		$(1)_config
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		$(TARGET_CONFIGURE_OPTS) \
-		KBUILD_HAVE_NLS=no \
-		ARCH=arm \
-		clean all
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/apex.bin $(PKG_BUILD_DIR)/out/apex-$(2).bin
-endef
-
-define Build/Compile
-	$(INSTALL_DIR) $(PKG_BUILD_DIR)/out
-	$(call build_apex,slugos-nslu2-armeb,nslu2-armeb)
-	$(call build_apex,slugos-nslu2-16mb-armeb,nslu2-16mb-armeb)
-	$(call build_apex,slugos-fsg3-armeb,fsg3-armeb)
-	$(call build_apex,slugos-nas100d-armeb,nas100d-armeb)
-endef
-
-define Package/apex/install
-	$(INSTALL_DIR) $(STAGING_DIR)/apex
-	$(CP) $(PKG_BUILD_DIR)/out/*.bin $(1)/
-endef
-
-$(eval $(call BuildPackage,apex))
-

--- a/package/apex/patches/001-compile_fix.patch
+++ /dev/null
@@ -1,21 +1,1 @@
---- a/Makefile
-+++ b/Makefile
-@@ -444,7 +444,7 @@ ifeq ($(config-targets),1)
- include $(srctree)/src/arch-$(SRCARCH)/Makefile
- export KBUILD_DEFCONFIG
- 
--config %config: scripts_basic outputmakefile FORCE
-+%config: scripts_basic outputmakefile FORCE
- 	$(Q)mkdir -p include/linux include/config
- 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
- 
-@@ -1585,7 +1585,7 @@ endif
- 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
- 
- # Modules
--/ %/: prepare scripts FORCE
-+%/: prepare scripts FORCE
- 	$(cmd_crmodverdir)
- 	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
- 	$(build)=$(build-dir)
 

--- a/package/apex/patches/100-openwrt_nslu2_armeb_config.patch
+++ /dev/null
@@ -1,24 +1,1 @@
---- a/src/mach-ixp42x/slugos-nslu2-armeb_config
-+++ b/src/mach-ixp42x/slugos-nslu2-armeb_config
-@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
- #
- # General Setup
- #
--CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2 (bigendian)"
-+CONFIG_TARGET_DESCRIPTION="OpenWRT NSLU2 (8MiB Flash)"
- CONFIG_CROSS_COMPILE=""
- CONFIG_AEABI=y
- # CONFIG_DRIVER_LONG_LONG_SIZE is not set
-@@ -163,9 +163,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
- # Overrides
- #
- CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
--CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
-+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
- CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
--CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
-+CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
- # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
- # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
- CONFIG_USES_NOR_BOOTFLASH=y
 

--- a/package/apex/patches/120-openwrt_nslu2_16mb_armeb_config.patch
+++ /dev/null
@@ -1,24 +1,1 @@
---- a/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
-+++ b/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
-@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
- #
- # General Setup
- #
--CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2/BE (16MiB Flash)"
-+CONFIG_TARGET_DESCRIPTION="OpenWRT NSLU2 (16MiB Flash)"
- CONFIG_CROSS_COMPILE=""
- CONFIG_AEABI=y
- # CONFIG_DRIVER_LONG_LONG_SIZE is not set
-@@ -163,9 +163,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
- # Overrides
- #
- CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
--CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
-+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
- CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
--CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
-+CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
- # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
- # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
- CONFIG_USES_NOR_BOOTFLASH=y
 

--- a/package/apex/patches/140-openwrt_fsg3_armeb_config.patch
+++ /dev/null
@@ -1,24 +1,1 @@
---- a/src/mach-ixp42x/slugos-fsg3-armeb_config
-+++ b/src/mach-ixp42x/slugos-fsg3-armeb_config
-@@ -17,7 +17,7 @@ CONFIG_EXPERIMENTAL=y
- #
- # General Setup
- #
--CONFIG_TARGET_DESCRIPTION="SlugOS FSG3/BE"
-+CONFIG_TARGET_DESCRIPTION="OpenWRT FSG3"
- CONFIG_CROSS_COMPILE=""
- CONFIG_AEABI=y
- CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-@@ -148,9 +148,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
- #    Overrides
- #
- CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
--CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/sda1 rootdelay=10 console=ttyS0,115200"
-+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/sda1 rootdelay=10 console=ttyS0,115200 init=/etc/preinit noinitrd"
- CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
--CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/sda2 rootdelay=10 console=ttyS0,115200"
-+CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock2 rootfstype=squashfs console=ttyS0,115200 init=/etc/preinit noinitrd"
- # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
- # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
- CONFIG_USES_NOR_BOOTFLASH=y
 

--- a/package/apex/patches/150-limit_ram_to_64mb.patch
+++ /dev/null
@@ -1,23 +1,1 @@
---- a/src/mach-ixp42x/slugos-nslu2-armeb_config
-+++ b/src/mach-ixp42x/slugos-nslu2-armeb_config
-@@ -137,7 +137,7 @@ CONFIG_AUTOBOOT_DELAY=10
- CONFIG_ENV_STARTUP_KERNEL_COPY=y
- # CONFIG_ENV_REGION_KERNEL_SWAP is not set
- CONFIG_ENV_STARTUP_PREFIX_P=y
--CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
-+CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+64m"
- 
- #
- #    Regions
---- a/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
-+++ b/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
-@@ -137,7 +137,7 @@ CONFIG_AUTOBOOT_DELAY=10
- CONFIG_ENV_STARTUP_KERNEL_COPY=y
- # CONFIG_ENV_REGION_KERNEL_SWAP is not set
- CONFIG_ENV_STARTUP_PREFIX_P=y
--CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
-+CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+64m"
- 
- #
- #    Regions
 

--- a/package/apex/patches/160-openwrt_nas100d_armeb_config.patch
+++ /dev/null
@@ -1,21 +1,1 @@
---- a/src/mach-ixp42x/slugos-nas100d-armeb_config
-+++ b/src/mach-ixp42x/slugos-nas100d-armeb_config
-@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
- #
- # General Setup
- #
--CONFIG_TARGET_DESCRIPTION="SlugOS NAS100D/BE"
-+CONFIG_TARGET_DESCRIPTION="OpenWRT NAS100D"
- CONFIG_CROSS_COMPILE=""
- CONFIG_AEABI=y
- # CONFIG_DRIVER_LONG_LONG_SIZE is not set
-@@ -158,7 +158,7 @@ CONFIG_ENV_REGION_KERNEL="fis://kernel"
- # Overrides
- #
- CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
--CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
-+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
- # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
- CONFIG_USES_NOR_BOOTFLASH=y
- CONFIG_RELOCATE_SIMPLE=y
 

--- /dev/null
+++ b/package/boot/apex/Makefile
@@ -1,1 +1,59 @@
+#
+# Copyright (C) 2006-2011 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
 
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=apex
+PKG_VERSION:=1.6.9
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=ftp://ftp.buici.com/pub/apex/ \
+	ftp://metalab.unc.edu/pub/Linux/system/boot/apex/
+PKG_MD5SUM:=9606cf2e3fd2c9a86fe0b61388509a30
+PKG_TARGETS:=bin
+
+include $(INCLUDE_DIR)/package.mk
+
+export GCC_HONOUR_COPTS=s
+
+define Package/apex
+  SECTION:=boot
+  CATEGORY:=Boot Loaders
+  DEPENDS:=@TARGET_ixp4xx
+  DEFAULT:=y
+  TITLE:=Boot loader for NSLU2, FSG3, NAS100D and others
+  URL:=http://wiki.buici.com/wiki/Apex_Bootloader
+endef
+
+define build_apex
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		ARCH=arm \
+		$(1)_config
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		$(TARGET_CONFIGURE_OPTS) \
+		KBUILD_HAVE_NLS=no \
+		ARCH=arm \
+		clean all
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/apex.bin $(PKG_BUILD_DIR)/out/apex-$(2).bin
+endef
+
+define Build/Compile
+	$(INSTALL_DIR) $(PKG_BUILD_DIR)/out
+	$(call build_apex,slugos-nslu2-armeb,nslu2-armeb)
+	$(call build_apex,slugos-nslu2-16mb-armeb,nslu2-16mb-armeb)
+	$(call build_apex,slugos-fsg3-armeb,fsg3-armeb)
+	$(call build_apex,slugos-nas100d-armeb,nas100d-armeb)
+endef
+
+define Package/apex/install
+	$(INSTALL_DIR) $(STAGING_DIR)/apex
+	$(CP) $(PKG_BUILD_DIR)/out/*.bin $(1)/
+endef
+
+$(eval $(call BuildPackage,apex))
+

--- /dev/null
+++ b/package/boot/apex/patches/001-compile_fix.patch
@@ -1,1 +1,21 @@
+--- a/Makefile
++++ b/Makefile
+@@ -444,7 +444,7 @@ ifeq ($(config-targets),1)
+ include $(srctree)/src/arch-$(SRCARCH)/Makefile
+ export KBUILD_DEFCONFIG
+ 
+-config %config: scripts_basic outputmakefile FORCE
++%config: scripts_basic outputmakefile FORCE
+ 	$(Q)mkdir -p include/linux include/config
+ 	$(Q)$(MAKE) $(build)=scripts/kconfig $@
+ 
+@@ -1585,7 +1585,7 @@ endif
+ 	$(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
+ 
+ # Modules
+-/ %/: prepare scripts FORCE
++%/: prepare scripts FORCE
+ 	$(cmd_crmodverdir)
+ 	$(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
+ 	$(build)=$(build-dir)
 

--- /dev/null
+++ b/package/boot/apex/patches/100-openwrt_nslu2_armeb_config.patch
@@ -1,1 +1,24 @@
+--- a/src/mach-ixp42x/slugos-nslu2-armeb_config
++++ b/src/mach-ixp42x/slugos-nslu2-armeb_config
+@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
+ #
+ # General Setup
+ #
+-CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2 (bigendian)"
++CONFIG_TARGET_DESCRIPTION="OpenWRT NSLU2 (8MiB Flash)"
+ CONFIG_CROSS_COMPILE=""
+ CONFIG_AEABI=y
+ # CONFIG_DRIVER_LONG_LONG_SIZE is not set
+@@ -163,9 +163,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
+ # Overrides
+ #
+ CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+-CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
++CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
+-CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
++CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+ # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
+ CONFIG_USES_NOR_BOOTFLASH=y
 

--- /dev/null
+++ b/package/boot/apex/patches/120-openwrt_nslu2_16mb_armeb_config.patch
@@ -1,1 +1,24 @@
+--- a/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
++++ b/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
+@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
+ #
+ # General Setup
+ #
+-CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2/BE (16MiB Flash)"
++CONFIG_TARGET_DESCRIPTION="OpenWRT NSLU2 (16MiB Flash)"
+ CONFIG_CROSS_COMPILE=""
+ CONFIG_AEABI=y
+ # CONFIG_DRIVER_LONG_LONG_SIZE is not set
+@@ -163,9 +163,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
+ # Overrides
+ #
+ CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+-CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
++CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
+-CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
++CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+ # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
+ CONFIG_USES_NOR_BOOTFLASH=y
 

--- /dev/null
+++ b/package/boot/apex/patches/140-openwrt_fsg3_armeb_config.patch
@@ -1,1 +1,24 @@
+--- a/src/mach-ixp42x/slugos-fsg3-armeb_config
++++ b/src/mach-ixp42x/slugos-fsg3-armeb_config
+@@ -17,7 +17,7 @@ CONFIG_EXPERIMENTAL=y
+ #
+ # General Setup
+ #
+-CONFIG_TARGET_DESCRIPTION="SlugOS FSG3/BE"
++CONFIG_TARGET_DESCRIPTION="OpenWRT FSG3"
+ CONFIG_CROSS_COMPILE=""
+ CONFIG_AEABI=y
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+@@ -148,9 +148,9 @@ CONFIG_ENV_REGION_KERNEL_ALT="fis://kern
+ #    Overrides
+ #
+ CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+-CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/sda1 rootdelay=10 console=ttyS0,115200"
++CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/sda1 rootdelay=10 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
+-CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/sda2 rootdelay=10 console=ttyS0,115200"
++CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock2 rootfstype=squashfs console=ttyS0,115200 init=/etc/preinit noinitrd"
+ # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+ # CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
+ CONFIG_USES_NOR_BOOTFLASH=y
 

--- /dev/null
+++ b/package/boot/apex/patches/150-limit_ram_to_64mb.patch
@@ -1,1 +1,23 @@
+--- a/src/mach-ixp42x/slugos-nslu2-armeb_config
++++ b/src/mach-ixp42x/slugos-nslu2-armeb_config
+@@ -137,7 +137,7 @@ CONFIG_AUTOBOOT_DELAY=10
+ CONFIG_ENV_STARTUP_KERNEL_COPY=y
+ # CONFIG_ENV_REGION_KERNEL_SWAP is not set
+ CONFIG_ENV_STARTUP_PREFIX_P=y
+-CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
++CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+64m"
+ 
+ #
+ #    Regions
+--- a/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
++++ b/src/mach-ixp42x/slugos-nslu2-16mb-armeb_config
+@@ -137,7 +137,7 @@ CONFIG_AUTOBOOT_DELAY=10
+ CONFIG_ENV_STARTUP_KERNEL_COPY=y
+ # CONFIG_ENV_REGION_KERNEL_SWAP is not set
+ CONFIG_ENV_STARTUP_PREFIX_P=y
+-CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+256m"
++CONFIG_ENV_STARTUP_PREFIX="sdram-init; memscan -u 0+64m"
+ 
+ #
+ #    Regions
 

--- /dev/null
+++ b/package/boot/apex/patches/160-openwrt_nas100d_armeb_config.patch
@@ -1,1 +1,21 @@
+--- a/src/mach-ixp42x/slugos-nas100d-armeb_config
++++ b/src/mach-ixp42x/slugos-nas100d-armeb_config
+@@ -19,7 +19,7 @@ CONFIG_EXPERIMENTAL=y
+ #
+ # General Setup
+ #
+-CONFIG_TARGET_DESCRIPTION="SlugOS NAS100D/BE"
++CONFIG_TARGET_DESCRIPTION="OpenWRT NAS100D"
+ CONFIG_CROSS_COMPILE=""
+ CONFIG_AEABI=y
+ # CONFIG_DRIVER_LONG_LONG_SIZE is not set
+@@ -158,7 +158,7 @@ CONFIG_ENV_REGION_KERNEL="fis://kernel"
+ # Overrides
+ #
+ CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+-CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 init=/linuxrc"
++CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 console=ttyS0,115200 init=/etc/preinit noinitrd"
+ # CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+ CONFIG_USES_NOR_BOOTFLASH=y
+ CONFIG_RELOCATE_SIMPLE=y
 

--- a/package/broadcom-diag/Makefile
+++ /dev/null
@@ -1,38 +1,1 @@
-#
-# Copyright (C) 2006-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=broadcom-diag
-PKG_RELEASE:=10
-
-include $(INCLUDE_DIR)/package.mk
-
-define KernelPackage/diag
-  SUBMENU:=Other modules
-  DEPENDS:=@TARGET_brcm47xx
-  TITLE:=Driver for router LEDs and Buttons
-  FILES:=$(PKG_BUILD_DIR)/diag.ko
-endef
-
-define Build/Prepare
-	mkdir -p $(PKG_BUILD_DIR)
-	$(CP) ./src/* $(PKG_BUILD_DIR)/
-endef
-
-define Build/Compile
-	$(MAKE) -C "$(LINUX_DIR)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		ARCH="$(LINUX_KARCH)" \
-		SUBDIRS="$(PKG_BUILD_DIR)" \
-		EXTRA_CFLAGS="$(BUILDFLAGS)" \
-		modules
-endef
-
-$(eval $(call KernelPackage,diag))
-

--- a/package/broadcom-diag/src/Makefile
+++ /dev/null
@@ -1,18 +1,1 @@
-#
-# Makefile for diag driver
-#
-# Copyright (C) 2005 Felix Fietkau <nbd@openwrt.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version
-# 2 of the License, or (at your option) any later version.
-#
 
-obj-m := diag.o
-
-ifeq ($(MAKING_MODULES),1)
-
--include $(TOPDIR)/Rules.make
-endif
-

--- a/package/broadcom-diag/src/diag.c
+++ /dev/null
@@ -1,1808 +1,1 @@
-/*
- * diag.c - GPIO interface driver for Broadcom boards
- *
- * Copyright (C) 2006 Mike Baker <mbm@openwrt.org>,
- * Copyright (C) 2006-2007 Felix Fietkau <nbd@openwrt.org>
- * Copyright (C) 2008 Andy Boyett <agb@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *
- */
-#include <linux/module.h>
-#include <linux/pci.h>
-#include <linux/kmod.h>
-#include <linux/proc_fs.h>
-#include <linux/timer.h>
-#include <linux/version.h>
-#include <asm/uaccess.h>
-#include <linux/workqueue.h>
-#include <linux/skbuff.h>
-#include <linux/netlink.h>
-#include <linux/kobject.h>
-#include <net/sock.h>
-#include <bcm47xx_board.h>
-extern u64 uevent_next_seqnum(void);
 
-#include "gpio.h"
-#include "diag.h"
-#define getvar(str) (nvram_get(str)?:"")
-
-static inline int startswith (char *source, char *cmp) { return !strncmp(source,cmp,strlen(cmp)); }
-static int fill_event(struct event_t *);
-static unsigned int gpiomask = 0;
-module_param(gpiomask, int, 0644);
-
-enum {
-	/* Linksys */
-	WAP54GV1,
-	WAP54GV2,
-	WAP54GV3,
-	WRT54GV1,
-	WRT54G,
-	WRTSL54GS,
-	WRT54G3G,
-	WRT54G3GV2_VF,
-	WRT150NV1,
-	WRT150NV11,
-	WRT160NV1,
-	WRT160NV3,
-	WRT300NV11,
-	WRT350N,
-	WRT600N,
-	WRT600NV11,
-	WRT610N,
-	WRT610NV2,
-	E1000V1,
-	E3000V1,
-	E3200V1,
-
-	/* ASUS */
-	WLHDD,
-	WL300G,
-	WL320GE,
-	WL330GE,
-	WL500G,
-	WL500GD,
-	WL500GP,
-	WL500GPV2,
-	WL500W,
-	WL520GC,
-	WL520GU,
-	ASUS_4702,
-	WL700GE,
-	RTN16,
-
-	/* Buffalo */
-	WBR2_G54,
-	WHR_G54S,
-	WHR_HP_G54,
-	WHR_G125,
-	WHR2_A54G54,
-	WLA2_G54L,
-	WZR_G300N,
-	WZR_RS_G54,
-	WZR_RS_G54HP,
-	BUFFALO_UNKNOWN,
-	BUFFALO_UNKNOWN_4710,
-
-	/* Siemens */
-	SE505V1,
-	SE505V2,
-
-	/* US Robotics */
-	USR5461,
-
-	/* Dell */
-	TM2300,
-	TM2300V2,
-
-	/* Motorola */
-	WE800G,
-	WR850GV1,
-	WR850GV2V3,
-	WR850GP,
-
-	/* Belkin */
-	BELKIN_UNKNOWN,
-	BELKIN_F7D4301,
-
-	/* Netgear */
-	WGT634U,
-	WNR834BV1,
-	WNR834BV2,
-	WNDR3400V1,
-	WNDR3700V3,
-
-	/* Trendware */
-	TEW411BRPP,
-
-	/* SimpleTech */
-	STI_NAS,
-
-	/* D-Link */
-	DIR130,
-	DIR320,
-	DIR330,
-	DWL3150,
-
-	/* Sitecom */
-	WL105B,
-
-	/* Western Digital */
-	WDNetCenter,
-
-	/* Askey */
-	RT210W,
-
-	/* OvisLink */
-	WL1600GL,
-
-	/* Microsoft */
-	MN700,
-
-	/* Edimax */
-	PS1208MFG,
-};
-
-static void __init bcm4780_init(void) {
-		int pin = 1 << 3;
-
-		/* Enables GPIO 3 that controls HDD and led power on ASUS WL-700gE */
-		printk(MODULE_NAME ": Spinning up HDD and enabling leds\n");
-		bcm47xx_gpio_outen(pin, pin);
-		bcm47xx_gpio_control(pin, 0);
-		bcm47xx_gpio_out(pin, pin);
-
-		/* Wait 5s, so the HDD can spin up */
-		set_current_state(TASK_INTERRUPTIBLE);
-		schedule_timeout(HZ * 5);
-}
-
-static void __init NetCenter_init(void) {
-		/* unset pin 6 (+12V) */
-		int pin = 1 << 6;
-		bcm47xx_gpio_outen(pin, pin);
-		bcm47xx_gpio_control(pin, 0);
-		bcm47xx_gpio_out(pin, pin);
-		/* unset pin 1 (turn off red led, blue will light alone if +5V comes up) */
-		pin = 1 << 1;
-		bcm47xx_gpio_outen(pin, pin);
-		bcm47xx_gpio_control(pin, 0);
-		bcm47xx_gpio_out(pin, pin);
-		/* unset pin 3 (+5V) and wait 5 seconds (harddisk spin up) */
-		bcm4780_init();
-}
-
-static void __init bcm57xx_init(void) {
-	int pin = 1 << 2;
-
-	/* FIXME: switch comes up, but port mappings/vlans not right */
-	bcm47xx_gpio_outen(pin, pin);
-	bcm47xx_gpio_control(pin, 0);
-	bcm47xx_gpio_out(pin, pin);
-}
-
-static struct platform_t __initdata platforms[] = {
-	/* Linksys */
-	[WAP54GV1] = {
-		.name		= "Linksys WAP54G V1",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 3 },
-			{ .name = "wlan",	.gpio = 1 << 4 },
-		},
-	},
-	[WAP54GV2] = {
-		.name		= "Linksys WAP54G V2",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 1 << 5, .polarity = REVERSE },
-			/* GPIO 6 is b44 (eth0, LAN) PHY power */
-		},
-	},
-	[WAP54GV3] = {
-		.name		= "Linksys WAP54G V3",
-		.buttons	= {
-			/* FIXME: verify this */
-			{ .name = "reset",	.gpio = 1 << 7 },
-			{ .name = "ses",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			/* FIXME: diag? */
-			{ .name = "ses",	.gpio = 1 << 1 },
-		},
-	},
-	[WRT54GV1] = {
-		.name		= "Linksys WRT54G V1.x",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 0x13 | GPIO_TYPE_EXTIF, .polarity = NORMAL },
-			{ .name = "dmz",	.gpio = 0x12 | GPIO_TYPE_EXTIF, .polarity = NORMAL },
-		},
-	},
-	[WRT54G] = {
-		.name		= "Linksys WRT54G/GS/GL",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "dmz",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "ses_white",	.gpio = 1 << 2, .polarity = REVERSE },
-			{ .name = "ses_orange",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WRTSL54GS] = {
-		.name		= "Linksys WRTSL54GS",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "dmz",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "ses_white",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "ses_orange",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	[WRT54G3G] = {
-		.name		= "Linksys WRT54G3G",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "3g",		.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "dmz",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "3g_green",	.gpio = 1 << 2, .polarity = NORMAL },
-			{ .name = "3g_blue",	.gpio = 1 << 3, .polarity = NORMAL },
-			{ .name = "3g_blink",	.gpio = 1 << 5, .polarity = NORMAL },
-		},
-	},
-	[WRT54G3GV2_VF] = {
-		.name		= "Linksys WRT54G3GV2-VF",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "3g",		.gpio = 1 << 5 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "3g_green",	.gpio = 1 << 2, .polarity = NORMAL },
-			{ .name = "3g_blue",	.gpio = 1 << 3, .polarity = NORMAL },
-		},
-	},
-	[WRT150NV1] = {
-		.name		= "Linksys WRT150N V1",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_green",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "ses_amber", .gpio = 1 << 3, .polarity = REVERSE },
-		},
-	},
-	[WRT150NV11] = {
-		.name		= "Linksys WRT150N V1.1",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_green",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "ses_amber", .gpio = 1 << 3, .polarity = REVERSE },
-		},
-	},
-	[WRT160NV1] = {
-		.name		= "Linksys WRT160N v1.x",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_blue",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "ses_orange", .gpio = 1 << 3, .polarity = REVERSE },
-		},
-	},
-	[WRT160NV3] = {
-		.name		= "Linksys WRT160N V3",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 5 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_blue",	.gpio = 1 << 4, .polarity = REVERSE },
-			{ .name = "ses_orange", .gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WRT300NV11] = {
-		.name           = "Linksys WRT300N V1.1",
-		.buttons        = {
-			{ .name = "reset",     .gpio = 1 << 6 }, // "Reset" on back panel
-			{ .name = "ses",       .gpio = 1 << 4 }, // "Reserved" on top panel
-		},
-		.leds           = {
-			{ .name = "power",     .gpio = 1 << 1, .polarity = NORMAL  }, // "Power"
-			{ .name = "ses_amber", .gpio = 1 << 3, .polarity = REVERSE }, // "Security" Amber
-			{ .name = "ses_green", .gpio = 1 << 5, .polarity = REVERSE }, // "Security" Green
-		},
-		.platform_init = bcm57xx_init,
-	},
-	[WRT350N] = {
-		.name		= "Linksys WRT350N",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 8 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_amber",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "ses_green",	.gpio = 1 << 9, .polarity = REVERSE },
-			{ .name = "usb_blink",	.gpio = 1 << 10, .polarity = REVERSE },
-			{ .name = "usb",	.gpio = 1 << 11, .polarity = REVERSE },
-		},
-		.platform_init = bcm57xx_init,
-	},
-	[WRT600N] = {
-		.name           = "Linksys WRT600N",
-		.buttons        = {
-			{ .name = "reset",      .gpio = 1 << 6 },
-			{ .name = "ses",        .gpio = 1 << 7 },
-		},
-		.leds           = {
-			{ .name = "power",              .gpio = 1 << 2,  .polarity = REVERSE }, // Power LED
-			{ .name = "usb",                .gpio = 1 << 3,  .polarity = REVERSE }, // USB LED
-			{ .name = "wl0_ses_amber",      .gpio = 1 << 8,  .polarity = REVERSE }, // 2.4Ghz LED Amber
-			{ .name = "wl0_ses_green",      .gpio = 1 << 9,  .polarity = REVERSE }, // 2.4Ghz LED Green
-			{ .name = "wl1_ses_amber",      .gpio = 1 << 10, .polarity = REVERSE }, // 5.6Ghz LED Amber
-			{ .name = "wl1_ses_green",      .gpio = 1 << 11, .polarity = REVERSE }, // 5.6Ghz LED Green
-		},
-		.platform_init = bcm57xx_init,
-	},
-	[WRT600NV11] = {
-		.name           = "Linksys WRT600N V1.1",
-		.buttons        = {
-			{ .name = "reset",      .gpio = 1 << 6 },
-			{ .name = "ses",        .gpio = 1 << 7 },
-		},
-		.leds           = {
-			{ .name = "power",             .gpio = 1 << 2,  .polarity = REVERSE }, // Power LED
-			{ .name = "usb",                .gpio = 1 << 3,  .polarity = REVERSE }, // USB LED
-			{ .name = "wl0_ses_amber",      .gpio = 1 << 8,  .polarity = REVERSE }, // 2.4Ghz LED Amber
-			{ .name = "wl0_ses_green",     .gpio = 1 << 9,  .polarity = REVERSE }, // 2.4Ghz LED Green
-			{ .name = "wl1_ses_amber",      .gpio = 1 << 10, .polarity = REVERSE }, // 5.6Ghz LED Amber
-			{ .name = "wl1_ses_green",      .gpio = 1 << 11, .polarity = REVERSE }, // 5.6Ghz LED Green
-		},
-		.platform_init = bcm57xx_init,
-	},
-	[WRT610N] = {
-		.name           = "Linksys WRT610N",
-		.buttons        = {
-			{ .name = "reset",      .gpio = 1 << 6 },
-			{ .name = "ses",        .gpio = 1 << 8 },
-		},
-		.leds           = {
-			{ .name = "power",      .gpio = 1 << 1,  .polarity = NORMAL }, // Power LED
-			{ .name = "usb",        .gpio = 1 << 0,  .polarity = REVERSE }, // USB LED
-			{ .name = "ses_amber",  .gpio = 1 << 3,  .polarity = REVERSE }, // WiFi protected setup LED amber
-			{ .name = "ses_blue",   .gpio = 1 << 9,  .polarity = REVERSE }, // WiFi protected setup LED blue
-		},
-	},
-	[WRT610NV2] = {
-		.name		= "Linksys WRT610N V2",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5,	.polarity = NORMAL },	// Power LED
-			{ .name = "usb",	.gpio = 1 << 7,	.polarity = NORMAL },	// USB LED
-			{ .name = "ses_amber",	.gpio = 1 << 0,	.polarity = REVERSE },	// WiFi protected setup LED amber
-			{ .name = "ses_blue",	.gpio = 1 << 3,	.polarity = REVERSE },	// WiFi protected setup LED blue
-			{ .name = "wlan",	.gpio = 1 << 1,	.polarity = NORMAL },	// Wireless LED
-		},
-	},
-	/* same hardware as WRT160NV3 and Cisco Valet M10V1, but different board detection, combine? */
-	[E1000V1] = {
-		.name           = "Linksys E1000 V1",
-		.buttons        = {
-			{ .name = "reset",      .gpio = 1 << 6 },
-			{ .name = "wps",        .gpio = 1 << 5 }, /* nvram get gpio5=wps_button */
-		},
-		.leds           = {
-			/** turns on leds for all ethernet ports (wan too)
-			 *  this also disconnects some, or maybe all, ethernet ports 
-			 *  1: leds work normally
-			 *  0: all lit all the time */
-			/* nvram get gpio3=robo_reset */
-			{ .name = "wlan",       .gpio = 1 << 0, .polarity = NORMAL },
-			{ .name = "power",      .gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "ses_blue",   .gpio = 1 << 4, .polarity = REVERSE }, /* nvram get gpio4=wps_led */
-			{ .name = "ses_orange", .gpio = 1 << 2, .polarity = REVERSE }, /* nvram get gpio2=wps_status_led */
-		},
-	},
-	[E3000V1] = {
-		.name		= "Linksys E3000 V1",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5,	.polarity = NORMAL },	// Power LED
-			{ .name = "usb",	.gpio = 1 << 7,	.polarity = NORMAL },	// USB LED
-			{ .name = "ses_amber",	.gpio = 1 << 0,	.polarity = REVERSE },	// WiFi protected setup LED amber
-			{ .name = "ses_blue",	.gpio = 1 << 3,	.polarity = REVERSE },	// WiFi protected setup LED blue
-			{ .name = "wlan",	.gpio = 1 << 1,	.polarity = NORMAL },	// Wireless LED
-		},
-	},
-	[E3200V1] = {
-		.name		= "Linksys E3200 V1",
-		.buttons	= {
-			/* { .name = "switch",	.gpio = 1 << 4 },*/	/* nvram get gpio4=robo_reset */
-			{ .name = "reset",	.gpio = 1 << 5 },	/* nvram get reset_gpio=5 */
-			{ .name = "wps",	.gpio = 1 << 8 },	/* nvram get gpio8=wps_button */
-			/* { .name = "wombo",	.gpio = 1 << 23 },*/	/* nvram get gpio23=wombo_reset - wireless on motherboard */
-		},
-		.leds	= {
-			{ .name = "power",	.gpio = 1 << 3, .polarity = REVERSE },	/* Power LED */
-		},
-	},
-	/* Asus */
-	[WLHDD] = {
-		.name		= "ASUS WL-HDD",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "usb",	.gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WL300G] = {
-		.name		= "ASUS WL-300g",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WL320GE] = {
-		.name		= "ASUS WL-320gE/WL-320gP",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "power",	.gpio = 1 << 2, .polarity = REVERSE },
-			{ .name = "link",	.gpio = 1 << 11, .polarity = REVERSE },
-		},
-	},
-	[WL330GE] = {
-		.name		= "ASUS WL-330gE",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 2 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WL500G] = {
-		.name		= "ASUS WL-500g",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WL500GD] = {
-		.name		= "ASUS WL-500g Deluxe",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WL500GP] = {
-		.name		= "ASUS WL-500g Premium",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WL500GPV2] = {
-		.name		= "ASUS WL-500g Premium V2",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 2 },
-			{ .name = "ses",	.gpio = 1 << 3 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WL500W] = {
-		.name		= "ASUS WL-500W",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "ses",	.gpio = 1 << 7 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5, .polarity = REVERSE },
-		},
-	},
-	[WL520GC] = {
-		.name		= "ASUS WL-520GC",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 2 },
-			{ .name = "ses",	.gpio = 1 << 3 },
-		},
-		.leds		= {
-		{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WL520GU] = {
-		.name		= "ASUS WL-520gU",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 2 },
-			{ .name = "ses",	.gpio = 1 << 3 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[ASUS_4702] = {
-		.name		= "ASUS (unknown, BCM4702)",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	[WL700GE] = {
-		.name		= "ASUS WL-700gE",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7 }, // on back, hardwired, always resets device regardless OS state
-			{ .name = "ses",	.gpio = 1 << 4 }, // on back, actual name ezsetup
-			{ .name = "power",	.gpio = 1 << 0 }, // on front
-			{ .name = "copy",	.gpio = 1 << 6 }, // on front
-		},
-		.leds		= {
-#if 0
-			// GPIO that controls power led also enables/disables some essential functions
-			// - power to HDD
-			// - switch leds
-			{ .name = "power",	.gpio = 1 << 3, .polarity = NORMAL },  // actual name power
-#endif
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE }, // actual name ready
-		},
-		.platform_init = bcm4780_init,
-	},
-	[RTN16] = {
-		.name		= "ASUS RT-N16",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 8 },
-			{ .name = "ses",	.gpio = 1 << 5 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 7, .polarity = NORMAL },
-		},
-	},
-	/* Buffalo */
-	[WHR_G54S] = {
-		.name		= "Buffalo WHR-G54S",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-			{ .name = "bridge",	.gpio = 1 << 5 },
-			{ .name = "ses",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "internal",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "bridge",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WBR2_G54] = {
-		.name		= "Buffalo WBR2-G54",
-		/* FIXME: verify */
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WHR_HP_G54] = {
-		.name		= "Buffalo WHR-HP-G54",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-			{ .name = "bridge",	.gpio = 1 << 5 },
-			{ .name = "ses",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "internal",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "bridge",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WHR_G125] = {
-		.name		= "Buffalo WHR-G125",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-			{ .name = "bridge",	.gpio = 1 << 5 },
-			{ .name = "ses",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "internal",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "bridge",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WHR2_A54G54] = {
-		.name		= "Buffalo WHR2-A54G54",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	[WLA2_G54L] = {
-		.name		= "Buffalo WLA2-G54L",
-		/* FIXME: verify */
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WZR_G300N] = {
-		.name		= "Buffalo WZR-G300N",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "bridge",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-		},
-	},
-	[WZR_RS_G54] = {
-		.name		= "Buffalo WZR-RS-G54",
-		.buttons	= {
-			{ .name = "ses",	.gpio = 1 << 0 },
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "vpn",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[WZR_RS_G54HP] = {
-		.name		= "Buffalo WZR-RS-G54HP",
-		.buttons	= {
-			{ .name = "ses",	.gpio = 1 << 0 },
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-			{ .name = "ses",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "vpn",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[BUFFALO_UNKNOWN] = {
-		.name		= "Buffalo (unknown)",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	[BUFFALO_UNKNOWN_4710] = {
-		.name		= "Buffalo (unknown, BCM4710)",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	/* Siemens */
-	[SE505V1] = {
-		.name		= "Siemens SE505 V1",
-		.buttons	= {
-			/* No usable buttons */
-		},
-		.leds		= {
-//			{ .name = "power",	.gpio = 1 << 0  .polarity = REVERSE },	// Usable when retrofitting D26 (?)
-			{ .name = "dmz",	.gpio = 1 << 4, .polarity = REVERSE },	// actual name WWW
-			{ .name = "wlan",	.gpio = 1 << 3, .polarity = REVERSE },
-		},
-	},
-	[SE505V2] = {
-		.name		= "Siemens SE505 V2",
-		.buttons	= {
-			/* No usable buttons */
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "dmz",	.gpio = 1 << 0, .polarity = REVERSE },	// actual name WWW
-			{ .name = "wlan",	.gpio = 1 << 3, .polarity = REVERSE },
-		},
-	},
-	/* US Robotics */
-	[USR5461] = {
-		.name		= "U.S. Robotics USR5461",
-		.buttons	= {
-			/* No usable buttons */
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "printer",	.gpio = 1 << 1, .polarity = REVERSE },
-		},
-	},
-	/* Dell */
-	[TM2300] = {
-		.name		= "Dell TrueMobile 2300",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "power",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	[TM2300V2] = {
-		.name		= "Dell TrueMobile 2300 v2",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "power",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	/* Motorola */
-	[WE800G] = {
-		.name		= "Motorola WE800G",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 4, .polarity = NORMAL },
-			{ .name = "diag",	.gpio = 1 << 2, .polarity = REVERSE },
-			{ .name = "wlan_amber",	.gpio = 1 << 1, .polarity = NORMAL },
-		},
-	},
-	[WR850GV1] = {
-		.name		= "Motorola WR850G V1",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 0 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 4, .polarity = NORMAL },
-			{ .name = "diag",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "dmz",	.gpio = 1 << 6, .polarity = NORMAL },
-			{ .name = "wlan_red",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "wlan_green",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	[WR850GV2V3] = {
-		.name		= "Motorola WR850G V2/V3",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 5 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "wan",	.gpio = 1 << 6, .polarity = INPUT },
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-	[WR850GP] = {
-		.name		= "Motorola WR850GP",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 5 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "dmz",	.gpio = 1 << 6, .polarity = REVERSE },
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = REVERSE },
-		},
-	},
-
-	/* Belkin */
-	[BELKIN_UNKNOWN] = {
-		.name		= "Belkin (unknown)",
-		/* FIXME: verify & add detection */
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5, .polarity = NORMAL },
-			{ .name = "wlan",	.gpio = 1 << 3, .polarity = NORMAL },
-			{ .name = "connected",	.gpio = 1 << 0, .polarity = NORMAL },
-		},
-	},
-	[BELKIN_F7D4301] = {
-		.name		= "Belkin PlayMax F7D4301",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-			{ .name = "wps",	.gpio = 1 << 8 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 11, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 13, .polarity = REVERSE },
-			{ .name = "led0",	.gpio = 1 << 14, .polarity = REVERSE },
-			{ .name = "led1",	.gpio = 1 << 15, .polarity = REVERSE },
-		},
-	},
-	/* Netgear */
-	[WGT634U] = {
-		.name		= "Netgear WGT634U",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 2 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 3, .polarity = NORMAL },
-		},
-	},
-	/* Netgear */
-	[WNR834BV1] = {
-		.name		= "Netgear WNR834B V1",
-		.buttons	= { /* TODO: add reset button and confirm LEDs - GPIO from dd-wrt */ },
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 4, .polarity = REVERSE },
-			{ .name = "diag",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 6, .polarity = REVERSE },
-		},
-	},
-	/* Netgear */
-	[WNR834BV2] = {
-		.name	 	= "Netgear WNR834B V2",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 6 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 2, .polarity = NORMAL },
-			{ .name = "diag",	.gpio = 1 << 3, .polarity = NORMAL },
-			{ .name = "connected",	.gpio = 1 << 7, .polarity = NORMAL },
-		},
-	},
-	[WNDR3400V1] = {
-		.name		= "Netgear WNDR3400 V1",
-		.buttons	= {
-			/* nvram get gpio5=robo_reset */
-			{ .name = "reset",	.gpio = 1 << 4 },
-			{ .name = "wps",	.gpio = 1 << 6 },
-			{ .name = "wlan",	.gpio = 1 << 8 },
-		},
-		.leds		= {
-			{ .name = "wlan",	.gpio = 0 << 0, .polarity = NORMAL },
-			{ .name = "connected",	.gpio = 1 << 0, .polarity = NORMAL },
-			{ .name = "power",	.gpio = 1 << 3, .polarity = NORMAL },
-			{ .name = "diag",	.gpio = 1 << 7, .polarity = NORMAL },
-			{ .name = "usb",	.gpio = 1 << 2, .polarity = REVERSE },
-		},
-	},
-	[WNDR3700V3] = {
-		.name		= "Netgear WNDR3700 V3",
-		.buttons	= {
-			/* { .name = "usb",	.gpio = 1 << 1 }, */ /* this button doesn't seem to exist. */
-			{ .name = "wlan",	.gpio = 1 << 2 },
-			{ .name = "reset",	.gpio = 1 << 3 },
-			{ .name = "wps",	.gpio = 1 << 4 },
-			/* { .name = "switch",	.gpio = 1 << 5 },*/	/* nvram get gpio5=robo_reset */
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = (1 << 0) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			{ .name = "diag",	.gpio = (1 << 1) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			/* WAN LED doesn't respond to GPIO control. The switch is probably driving it.
-			 * { .name = "wan",	.gpio = (1 << 2) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			 */
-			{ .name = "wlan2g",	.gpio = (1 << 3) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			{ .name = "wlan5g",	.gpio = (1 << 4) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			{ .name = "usb",	.gpio = (1 << 5) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			{ .name = "wps",	.gpio = (1 << 6) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = (1 << 7) | GPIO_TYPE_SHIFT, .polarity = REVERSE },
-		},
-	},
-	/* Trendware */
-	[TEW411BRPP] = {
-		.name           = "Trendware TEW411BRP+",
-		.buttons        = {
-			{ /* No usable buttons */ },
-		},
-		.leds           = {
-			{ .name = "power",      .gpio = 1 << 7, .polarity = NORMAL },
-			{ .name = "wlan",       .gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "bridge",     .gpio = 1 << 6, .polarity = NORMAL },
-		},
-	},
-	/* SimpleTech */
-	[STI_NAS] = {
-		.name	   = "SimpleTech SimpleShare NAS",
-		.buttons	= {
-			{ .name = "reset",      .gpio = 1 << 0 }, // Power button on back, named reset to enable failsafe.
-		},
-		.leds	   = {
-			{ .name = "diag",       .gpio = 1 << 1, .polarity = REVERSE }, // actual name ready
-		},
-		.platform_init = bcm4780_init,
-	},
-	/* D-Link */
-	[DIR130] = {
-		.name	  = "D-Link DIR-130",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 3},
-			{ .name = "reserved",	.gpio = 1 << 7},
-		},
-		.leds	   = {
-			{ .name = "diag",	.gpio = 1 << 0},
-			{ .name = "blue",	.gpio = 1 << 6},
-		},
-	},
-	[DIR320] = {
-		.name	  = "D-Link DIR-320",
-		.buttons	= {
-			{ .name = "reserved",	.gpio = 1 << 6},
-			{ .name = "reset",	.gpio = 1 << 7},
-		},
-		.leds	   = {
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = NORMAL },
-			{ .name = "diag",	.gpio = 1 << 1, .polarity = NORMAL }, /* "status led */
-			{ .name = "red",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "blue",	.gpio = 1 << 4, .polarity = REVERSE },
-			{ .name = "usb",	.gpio = 1 << 5, .polarity = NORMAL },
-		},
-	},
-	[DIR330] = {
-		.name	  = "D-Link DIR-330",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 3},
-			{ .name = "reserved",	.gpio = 1 << 7},
-		},
-		.leds	   = {
-			{ .name = "diag",	.gpio = 1 << 0},
-			{ .name = "usb",	.gpio = 1 << 4},
-			{ .name = "blue",	.gpio = 1 << 6},
-		},
-	},
-	[DWL3150] = {
-		.name	= "D-Link DWL-3150",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 7},
-		},
-		.leds	  = {
-			{ .name = "diag",	.gpio = 1 << 2},
-			{ .name = "status",	.gpio = 1 << 1},
-		},
-	},
-	/* Double check */
-	[WL105B] = {
-		.name	= "Sitecom WL-105b",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 10},
-		},
-		.leds	  = {
-			{ .name = "wlan",	.gpio = 1 << 4},
-			{ .name = "power",	.gpio = 1 << 3},
-		},
-	},
-	/* Western Digital Net Center */
-	[WDNetCenter] = {
-		.name   = "Western Digital NetCenter",
-		.buttons        = {
-			{ .name = "power",	.gpio = 1 << 0},
-			{ .name = "reset",	.gpio = 1 << 7},
-		},
-		.platform_init = NetCenter_init,
-	},
-	/* Askey (and clones) */
-	[RT210W] = {
-		.name		= "Askey RT210W",
-		.buttons	= {
-			/* Power button is hard-wired to hardware reset */
-			/* but is also connected to GPIO 7 (probably for bootloader recovery)  */
-			{ .name = "power",	.gpio = 1 << 7},
-		},
-		.leds		= {
-		 	/* These were verified and named based on Belkin F5D4230-4 v1112 */
-			{ .name = "connected",	.gpio = 1 << 0, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 3, .polarity = REVERSE },
-			{ .name = "power",	.gpio = 1 << 5, .polarity = REVERSE },
-		},
-	},
-	[WL1600GL] = {
-		.name		= "OvisLink WL-1600GL",
-		.buttons	= {
-			{ .name = "reset",	.gpio = 1 << 3 },
-			{ .name = "ses",	.gpio = 1 << 4 },
-		},
-		.leds		= {
-			{ .name = "power",	.gpio = 1 << 5, .polarity = REVERSE },
-			{ .name = "wps",	.gpio = 1 << 2, .polarity = REVERSE },
-			{ .name = "wlan",	.gpio = 1 << 1, .polarity = REVERSE },
-			{ .name = "connected",	.gpio = 1 << 0, .polarity = REVERSE },
-		},
-	},
-	/* Microsoft */
-	[MN700] = {
-		.name   = "Microsoft MN-700",
-		.buttons        = {
-			{ .name = "reset",	.gpio = 1 << 7 },
-		},
-		.leds     = {
-			{ .name = "power",	.gpio = 1 << 6, .polarity = NORMAL },
-		},
-	},
-	/* Edimax */
-	[PS1208MFG] = {
-		.name   = "Edimax PS-1208MFG",
-		.buttons        = {
-			{ .name = "reset",	.gpio = 1 << 4 },
-		},
-		.leds     = {
-			{ .name = "status",	.gpio = 1 << 1, .polarity = NORMAL },
-			{ .name = "wlan",	.gpio = 1 << 0, .polarity = NORMAL },
-		},
-	},
-};
-
-static struct platform_t __init *platform_detect_legacy(void)
-{
-	char *boardnum, *boardtype, *buf;
-
-	if (strcmp(getvar("nvram_type"), "cfe") == 0)
-		return &platforms[WGT634U];
-
-
-	/* no easy model number, attempt to guess */
-	boardnum = getvar("boardnum");
-	boardtype = getvar("boardtype");
-
-	if (!strcmp(boardnum, "20070615")) { /* Linksys WRT600N  v1/V1.1 */
-		if (!strcmp(boardtype, "0x478") && !strcmp(getvar("cardbus"), "0") && !strcmp(getvar("switch_type"),"BCM5395"))
-			return &platforms[WRT600NV11];
-
-	if (!strcmp(boardtype, "0x478") && !strcmp(getvar("cardbus"), "0"))
-			return &platforms[WRT600N];
-	}
-
-	if (startswith(getvar("pmon_ver"), "CFE")) {
-		/* CFE based - newer hardware */
-		if (!strcmp(boardnum, "42")) { /* Linksys */
-			if (!strcmp(boardtype, "0x478") && !strcmp(getvar("cardbus"), "1"))
-				return &platforms[WRT350N];
-
-			if (!strcmp(boardtype, "0x0101") && !strcmp(getvar("boot_ver"), "v3.6"))
-				return &platforms[WRT54G3G];
-
-			if (!strcmp(getvar("et1phyaddr"),"5") && !strcmp(getvar("et1mdcport"), "1"))
-				return &platforms[WRTSL54GS];
-
-			/* default to WRT54G */
-			return &platforms[WRT54G];
-		}
-		if (!strcmp(boardnum, "1024") && !strcmp(boardtype, "0x0446"))
-			return &platforms[WAP54GV2];
-
-		if (!strcmp(boardnum, "8") && !strcmp(boardtype, "0x048e"))
-			return &platforms[WL1600GL];
-
-
-		if (!strcmp(boardnum, "44") || !strcmp(boardnum, "44\r")) {
-			if (!strcmp(boardtype,"0x0101") || !strcmp(boardtype, "0x0101\r"))
-				return &platforms[TM2300V2]; /* Dell TrueMobile 2300 v2 */
-		}
-
-		if (!strcmp(boardnum, "45")) { /* ASUS */
-			if (!strcmp(boardtype,"0x0472"))
-				return &platforms[WL500W];
-			else if (!strcmp(boardtype,"0x467"))
-				return &platforms[WL320GE];
-			else
-				return &platforms[WL500GD];
-		}
-
-		if (!strcmp(boardnum, "10496"))
-			return &platforms[USR5461];
-
-		if (!strcmp(getvar("boardtype"), "0x0101") && !strcmp(getvar("boardrev"), "0x10")) /* SE505V2 With Modified CFE */
-			return &platforms[SE505V2];
-
-		if (!strcmp(boardtype, "0x048e") && !strcmp(getvar("boardrev"),"0x35") &&
-				!strcmp(getvar("boardflags"), "0x750")) /* D-Link DIR-320 */
-			return &platforms[DIR320];
-
-		if (!strncmp(boardnum, "TH",2) && !strcmp(boardtype,"0x042f")) {
-			return &platforms[WDNetCenter];
-		}
-
-		if (!strcmp(boardtype,"0x0472") && !strcmp(getvar("cardbus"), "1")) { /* Netgear WNR834B  V1 and V2*/
-			if (!strcmp(boardnum, "08") || !strcmp(boardnum, "8"))
-				return &platforms[WNR834BV1];
-			if (!strcmp(boardnum, "01") || !strcmp(boardnum, "1"))
-				return &platforms[WNR834BV2];
-		}
-
-	} else { /* PMON based - old stuff */
-		if ((simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 9) &&
-			(simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 30)) {
-			return &platforms[WR850GV1];
-		}
-		if (startswith(boardtype, "bcm94710dev")) {
-			if (!strcmp(boardnum, "42"))
-				return &platforms[WRT54GV1];
-			if (simple_strtoul(boardnum, NULL, 0) == 2)
-				return &platforms[WAP54GV1];
-		}
-		/* MN-700 has also hardware_version 'WL500-...', so use boardnum */
-		if (startswith(getvar("hardware_version"), "WL500-")) {
-			if (!strcmp(getvar("boardnum"), "mn700"))
-				return &platforms[MN700];
-			else
-				return &platforms[WL500G];
-		}
-		if (startswith(getvar("hardware_version"), "WL300-")) {
-			/* Either WL-300g or WL-HDD, do more extensive checks */
-			if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
-				(simple_strtoul(getvar("et1phyaddr"), NULL, 0) == 1))
-				return &platforms[WLHDD];
-			if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
-				(simple_strtoul(getvar("et1phyaddr"), NULL, 0) == 10))
-				return &platforms[WL300G];
-		}
-		/* Sitecom WL-105b */
-		if (startswith(boardnum, "2") && simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 1)
-			return &platforms[WL105B];
-
-		/* unknown asus stuff, probably bcm4702 */
-		if (startswith(boardnum, "asusX"))
-			return &platforms[ASUS_4702];
-
-		/* bcm4702 based Askey RT210W clones, Including:
-		 * Askey RT210W (duh?)
-		 * Siemens SE505v1
-		 * Belkin F5D7230-4 before version v1444 (MiniPCI slot, not integrated)
-		 */
-		if (!strcmp(boardtype,"bcm94710r4")
-		 && !strcmp(boardnum ,"100")
-		 && !strcmp(getvar("pmon_ver"),"v1.03.12.bk")
-		   ){
-			return &platforms[RT210W];
-		}
-	}
-
-	if (buf || !strcmp(boardnum, "00")) {/* probably buffalo */
-		if (startswith(boardtype, "bcm94710ap"))
-			return &platforms[BUFFALO_UNKNOWN_4710];
-		else
-			return &platforms[BUFFALO_UNKNOWN];
-	}
-
-	if (startswith(getvar("CFEver"), "MotoWRv2") ||
-		startswith(getvar("CFEver"), "MotoWRv3") ||
-		!strcmp(getvar("MOTO_BOARD_TYPE"), "WR_FEM1")) {
-
-		return &platforms[WR850GV2V3];
-	}
-
-	if (!strcmp(boardnum, "44") && !strcmp(getvar("boardflags"),"0x0388")) {  /* Trendware TEW-411BRP+ */
-		return &platforms[TEW411BRPP];
-	}
-
-	if (startswith(boardnum, "04FN")) /* SimpleTech SimpleShare */
-		return &platforms[STI_NAS];
-
-	if (!strcmp(boardnum, "10") && !strcmp(getvar("boardrev"), "0x13")) /* D-Link DWL-3150 */
-		return &platforms[DWL3150];
-
-	if (!strcmp(boardnum, "01") && !strcmp(boardtype, "0x048e") && /* Edimax PS1208MFG */
-		!strcmp(getvar("status_gpio"), "1")) /* gpio based detection */
-		return &platforms[PS1208MFG];
-
-	/* not found */
-	return NULL;
-}
-
-static struct platform_t __init *platform_detect(void)
-{
-	enum bcm47xx_board board;
-	const char *board_name;
-
-
-	board = bcm47xx_board_get();
-	board_name = bcm47xx_board_get_name();
-	if (board != BCM47XX_BOARD_UNKNOWN && board != BCM47XX_BOARD_NON)
-		printk(MODULE_NAME ": kernel found a \"%s\"\n", board_name);
-
-	switch(board) {
-	case BCM47XX_BOARD_ASUS_RTN16:
-		return &platforms[RTN16];
-	case BCM47XX_BOARD_ASUS_WL330GE:
-		return &platforms[WL330GE];
-	case BCM47XX_BOARD_ASUS_WL500GPV1:
-		return &platforms[WL500GP];
-	case BCM47XX_BOARD_ASUS_WL500GPV2:
-		return &platforms[WL500GPV2];
-	case BCM47XX_BOARD_ASUS_WL520GC:
-		return &platforms[WL520GC];
-	case BCM47XX_BOARD_ASUS_WL520GU:
-		return &platforms[WL520GU];
-	case BCM47XX_BOARD_ASUS_WL700GE:
-		return &platforms[WL700GE];
-	case BCM47XX_BOARD_BELKIN_F7D4301:
-		return &platforms[BELKIN_F7D4301];
-	case BCM47XX_BOARD_BUFFALO_WBR2_G54:
-		return &platforms[WBR2_G54];
-	case BCM47XX_BOARD_BUFFALO_WHR2_A54G54:
-		return &platforms[WHR2_A54G54];
-	case BCM47XX_BOARD_BUFFALO_WHR_G125:
-		return &platforms[WHR_G125];
-	case BCM47XX_BOARD_BUFFALO_WHR_G54S:
-		return &platforms[WHR_G54S];
-	case BCM47XX_BOARD_BUFFALO_WHR_HP_G54:
-		return &platforms[WHR_HP_G54];
-	case BCM47XX_BOARD_BUFFALO_WLA2_G54L:
-		return &platforms[WLA2_G54L];
-	case BCM47XX_BOARD_BUFFALO_WZR_G300N:
-		return &platforms[WZR_G300N];
-	case BCM47XX_BOARD_BUFFALO_WZR_RS_G54:
-		return &platforms[WZR_RS_G54];
-	case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP:
-		return &platforms[WZR_RS_G54HP];
-	case BCM47XX_BOARD_DELL_TM2300:
-		return &platforms[TM2300];
-	case BCM47XX_BOARD_DLINK_DIR130:
-		return &platforms[DIR130];
-	case BCM47XX_BOARD_DLINK_DIR330:
-		return &platforms[DIR330];
-	case BCM47XX_BOARD_LINKSYS_E1000V1:
-		return &platforms[E1000V1];
-	case BCM47XX_BOARD_LINKSYS_E3000V1:
-		return &platforms[E3000V1];
-	case BCM47XX_BOARD_LINKSYS_E3200V1:
-		return &platforms[E3200V1];
-	case BCM47XX_BOARD_LINKSYS_WRT150NV1:
-		return &platforms[WRT150NV1];
-	case BCM47XX_BOARD_LINKSYS_WRT150NV11:
-		return &platforms[WRT150NV11];
-	case BCM47XX_BOARD_LINKSYS_WRT160NV1:
-		return &platforms[WRT160NV1];
-	case BCM47XX_BOARD_LINKSYS_WRT160NV3:
-		return &platforms[WRT160NV3];
-	case BCM47XX_BOARD_LINKSYS_WRT300NV11:
-		return &platforms[WRT300NV11];
-	case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
-		return &platforms[WRT54G3GV2_VF];
-	case BCM47XX_BOARD_LINKSYS_WRT610NV1:
-		return &platforms[WRT610N];
-	case BCM47XX_BOARD_LINKSYS_WRT610NV2:
-		return &platforms[WRT610NV2];
-	case BCM47XX_BOARD_MOTOROLA_WE800G:
-		return &platforms[WE800G];
-	case BCM47XX_BOARD_MOTOROLA_WR850GP:
-		return &platforms[WR850GP];
-	case BCM47XX_BOARD_MOTOROLA_WR850GV2V3:
-		return &platforms[WR850GV2V3];
-	case BCM47XX_BOARD_NETGEAR_WNDR3400V1:
-		return &platforms[WNDR3400V1];
-	case BCM47XX_BOARD_NETGEAR_WNDR3700V3:
-		return &platforms[WNDR3700V3];
-	case BCM47XX_BOARD_UNKNOWN:
-	case BCM47XX_BOARD_NON:
-		printk(MODULE_NAME ": unknown board found, try legacy detect\n");
-		printk(MODULE_NAME ": please open a ticket at https://dev.openwrt.org and attach the complete nvram\n");
-		return platform_detect_legacy();
-	default:
-		printk(MODULE_NAME ": board was detected as \"%s\", but not gpio configuration available\n", board_name);
-		printk(MODULE_NAME ": now trying legacy detect\n");
-		return platform_detect_legacy();
-	}
-}
-
-static inline void ssb_maskset32(struct ssb_device *dev,
-				  u16 offset, u32 mask, u32 set)
-{
-	ssb_write32(dev, offset, (ssb_read32(dev, offset) & mask) | set);
-}
-
-static void gpio_set_irqenable(int enabled, irqreturn_t (*handler)(int, void *))
-{
-	int irq;
-
-	irq = gpio_to_irq(0);
-	if (irq == -EINVAL) return;
-	
-	if (enabled) {
-		if (request_irq(irq, handler, IRQF_SHARED, "gpio", handler))
-			return;
-	} else {
-		free_irq(irq, handler);
-	}
-
-	switch (bcm47xx_bus_type) {
-#ifdef CONFIG_BCM47XX_SSB
-	case BCM47XX_BUS_TYPE_SSB:
-		if (bcm47xx_bus.ssb.chipco.dev)
-			ssb_maskset32(bcm47xx_bus.ssb.chipco.dev, SSB_CHIPCO_IRQMASK, ~SSB_CHIPCO_IRQ_GPIO, (enabled ? SSB_CHIPCO_IRQ_GPIO : 0));
-		break;
-#endif
-#ifdef CONFIG_BCM47XX_BCMA
-	case BCM47XX_BUS_TYPE_BCMA:
-		if (bcm47xx_bus.bcma.bus.drv_cc.core)
-			bcma_maskset32(bcm47xx_bus.bcma.bus.drv_cc.core, BCMA_CC_IRQMASK, ~BCMA_CC_IRQ_GPIO, (enabled ? BCMA_CC_IRQ_GPIO : 0));
-		break;
-#endif
-	}
-}
-
-static void register_buttons(struct button_t *b)
-{
-	for (; b->name; b++)
-		platform.button_mask |= b->gpio;
-
-	platform.button_mask &= ~gpiomask;
-
-	bcm47xx_gpio_outen(platform.button_mask, 0);
-	bcm47xx_gpio_control(platform.button_mask, 0);
-	platform.button_polarity = bcm47xx_gpio_in(~0) & platform.button_mask;
-	bcm47xx_gpio_polarity(platform.button_mask, platform.button_polarity);
-	bcm47xx_gpio_intmask(platform.button_mask, platform.button_mask);
-
-	gpio_set_irqenable(1, button_handler);
-}
-
-static void unregister_buttons(struct button_t *b)
-{
-	bcm47xx_gpio_intmask(platform.button_mask, 0);
-
-	gpio_set_irqenable(0, button_handler);
-}
-
-
-static void add_msg(struct event_t *event, char *msg, int argv)
-{
-	char *s;
-
-	if (argv)
-		return;
-
-	s = skb_put(event->skb, strlen(msg) + 1);
-	strcpy(s, msg);
-}
-
-static void hotplug_button(struct work_struct *work)
-{
-	struct event_t *event = container_of(work, struct event_t, wq);
-	char *s;
-
-	event->skb = alloc_skb(2048, GFP_KERNEL);
-
-	s = skb_put(event->skb, strlen(event->action) + 2);
-	sprintf(s, "%s@", event->action);
-	fill_event(event);
-
-	NETLINK_CB(event->skb).dst_group = 1;
-	broadcast_uevent(event->skb, 0, 1, GFP_KERNEL);
-
-	kfree(event);
-}
-
-
-static int fill_event (struct event_t *event)
-{
-	static char buf[128];
-
-	add_msg(event, "HOME=/", 0);
-	add_msg(event, "PATH=/sbin:/bin:/usr/sbin:/usr/bin", 0);
-	add_msg(event, "SUBSYSTEM=button", 0);
-	snprintf(buf, 128, "ACTION=%s", event->action);
-	add_msg(event, buf, 0);
-	snprintf(buf, 128, "BUTTON=%s", event->name);
-	add_msg(event, buf, 0);
-	snprintf(buf, 128, "SEEN=%ld", event->seen);
-	add_msg(event, buf, 0);
-	snprintf(buf, 128, "SEQNUM=%llu", uevent_next_seqnum());
-	add_msg(event, buf, 0);
-
-	return 0;
-}
-
-
-static irqreturn_t button_handler(int irq, void *dev_id)
-{
-	struct button_t *b;
-	u32 in, changed;
-
-	in = bcm47xx_gpio_in(~0) & platform.button_mask;
-	bcm47xx_gpio_polarity(platform.button_mask, in);
-	changed = platform.button_polarity ^ in;
-	platform.button_polarity = in;
-
-	changed &= ~bcm47xx_gpio_outen(0, 0);
-
-	for (b = platform.buttons; b->name; b++) {
-		struct event_t *event;
-
-		if (!(b->gpio & changed)) continue;
-
-		b->pressed ^= 1;
-
-		if ((event = (struct event_t *)kzalloc (sizeof(struct event_t), GFP_ATOMIC))) {
-			event->seen = (jiffies - b->seen)/HZ;
-			event->name = b->name;
-			event->action = b->pressed ? "pressed" : "released";
-			INIT_WORK(&event->wq, (void *)(void *)hotplug_button);
-			schedule_work(&event->wq);
-		}
-
-		b->seen = jiffies;
-	}
-	return IRQ_HANDLED;
-}
-
-static void register_leds(struct led_t *l)
-{
-	struct proc_dir_entry *p;
-	u32 mask = 0;
-	u32 oe_mask = 0;
-	u32 val = 0;
-
-	leds = proc_mkdir("led", diag);
-	if (!leds)
-		return;
-
-	for(; l->name; l++) {
-		if (l->gpio & gpiomask)
-			continue;
-
-		switch (l->gpio & GPIO_TYPE_MASK) {
-		case GPIO_TYPE_EXTIF:
-			l->state = 0;
-			set_led_extif(l);
-			break;
-		case GPIO_TYPE_SHIFT:
-			mask |= (SHIFTREG_DATA | SHIFTREG_CLK);
-			oe_mask |= (SHIFTREG_DATA | SHIFTREG_CLK);
-			l->state = (l->polarity != NORMAL);
-			set_led_shift(l);
-			break;
-		case GPIO_TYPE_NORMAL:
-		default:
-			if (l->polarity != INPUT) oe_mask |= l->gpio;
-			mask |= l->gpio;
-			val |= (l->polarity == NORMAL)?0:l->gpio;
-			break;
-		}
-
-		if (l->polarity == INPUT) continue;
-
-		if ((p = create_proc_entry(l->name, S_IRUSR, leds))) {
-			l->proc.type = PROC_LED;
-			l->proc.ptr = l;
-			p->data = (void *) &l->proc;
-			p->proc_fops = &diag_proc_fops;
-		}
-	}
-
-	bcm47xx_gpio_outen(mask, oe_mask);
-	bcm47xx_gpio_control(mask, 0);
-	bcm47xx_gpio_out(mask, val);
-	bcm47xx_gpio_intmask(mask, 0);
-}
-
-static void unregister_leds(struct led_t *l)
-{
-	for(; l->name; l++)
-		remove_proc_entry(l->name, leds);
-
-	remove_proc_entry("led", diag);
-}
-
-static void set_led_extif(struct led_t *led)
-{
-	volatile u8 *addr = (volatile u8 *) KSEG1ADDR(EXTIF_UART) + (led->gpio & ~GPIO_TYPE_MASK);
-	if (led->state)
-		*addr = 0xFF;
-	else
-		*addr;
-}
-
-/*
- * This should be extended to allow the platform to specify the pins and width
- * of the shift register. They're hardcoded for now because only the WNDR3700v3
- * uses it.
- */
-static void shiftreg_output(unsigned int val)
-{
-	unsigned int mask;
-
-	bcm47xx_gpio_out(SHIFTREG_DATA, SHIFTREG_DATA); /* init off, pull high */
-	bcm47xx_gpio_out(SHIFTREG_CLK, 0); /* init reset */
-
-	/* shift 8 times */
-	for(mask = 1 << (SHIFTREG_MAX_BITS-1); mask; mask >>= 1)
-	{
-		bcm47xx_gpio_out(SHIFTREG_DATA, (val & mask) ? SHIFTREG_DATA : 0);
-		bcm47xx_gpio_out(SHIFTREG_CLK, SHIFTREG_CLK); /* pull high to trigger */
-		bcm47xx_gpio_out(SHIFTREG_CLK, 0); /* reset to low */
-	}
-}
-
-static void set_led_shift(struct led_t *led)
-{
-	static u32	shiftreg = 0;
-	u32			old = shiftreg;
-	u32			pin = (led->gpio & ~GPIO_TYPE_MASK);
-
-	if (led->state) {
-		shiftreg |= pin;
-	} else {
-		shiftreg &= ~pin;
-	}
-
-	/* Clock the bits out. */
-	if (shiftreg != old) {
-		shiftreg_output(shiftreg);
-	}
-}
-
-
-static void led_flash(unsigned long dummy) {
-	struct led_t *l;
-	u32 mask = 0;
-	u8 extif_blink = 0;
-
-	for (l = platform.leds; l->name; l++) {
-		if (!l->flash) continue;
-		switch (l->gpio & GPIO_TYPE_MASK) {
-		case GPIO_TYPE_EXTIF:
-			extif_blink = 1;
-			l->state = !l->state;
-			set_led_extif(l);
-			break;
-		case GPIO_TYPE_SHIFT:
-			extif_blink = 1;
-			l->state = !l->state;
-			set_led_shift(l);
-			break;
-		case GPIO_TYPE_NORMAL:
-		default:
-			mask |= l->gpio;
-			break;
-		}
-	}
-
-	mask &= ~gpiomask;
-	if (mask) {
-		u32 val = ~bcm47xx_gpio_in(~0);
-
-		bcm47xx_gpio_outen(mask, mask);
-		bcm47xx_gpio_control(mask, 0);
-		bcm47xx_gpio_out(mask, val);
-	}
-	if (mask || extif_blink) {
-		mod_timer(&led_timer, jiffies + FLASH_TIME);
-	}
-}
-
-static ssize_t diag_proc_read(struct file *file, char *buf, size_t count, loff_t *ppos)
-{
-	struct proc_dir_entry *dent = PDE(file->f_dentry->d_inode);
-	char *page;
-	int len = 0;
-
-	if ((page = kmalloc(1024, GFP_KERNEL)) == NULL)
-		return -ENOBUFS;
-
-	if (dent->data != NULL) {
-		struct prochandler_t *handler = (struct prochandler_t *) dent->data;
-		switch (handler->type) {
-			case PROC_LED: {
-				struct led_t * led = (struct led_t *) handler->ptr;
-				u8 p = (led->polarity == NORMAL ? 0 : 1);
-				if (led->flash) {
-					len = sprintf(page, "f\n");
-				} else if ((led->gpio & GPIO_TYPE_MASK) != GPIO_TYPE_NORMAL) {
-					len = sprintf(page, "%d\n", ((led->state ^ p) ? 1 : 0));
-				} else {
-					u32 in = (bcm47xx_gpio_in(~0) & led->gpio ? 1 : 0);
-					len = sprintf(page, "%d\n", ((in ^ p) ? 1 : 0));
-				}
-				break;
-			}
-			case PROC_MODEL:
-				len = sprintf(page, "%s\n", platform.name);
-				break;
-			case PROC_GPIOMASK:
-				len = sprintf(page, "0x%04x\n", gpiomask);
-				break;
-		}
-	}
-	len += 1;
-
-	if (*ppos < len) {
-		len = min_t(int, len - *ppos, count);
-		if (copy_to_user(buf, (page + *ppos), len)) {
-			kfree(page);
-			return -EFAULT;
-		}
-		*ppos += len;
-	} else {
-		len = 0;
-	}
-
-	kfree(page);
-	return len;
-}
-
-
-static ssize_t diag_proc_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
-{
-	struct proc_dir_entry *dent = PDE(file->f_dentry->d_inode);
-	char *page;
-	int ret = -EINVAL;
-
-	if ((page = kmalloc(count + 1, GFP_KERNEL)) == NULL)
-		return -ENOBUFS;
-
-	if (copy_from_user(page, buf, count)) {
-		kfree(page);
-		return -EINVAL;
-	}
-	page[count] = 0;
-
-	if (dent->data != NULL) {
-		struct prochandler_t *handler = (struct prochandler_t *) dent->data;
-		switch (handler->type) {
-			case PROC_LED: {
-				struct led_t *led = (struct led_t *) handler->ptr;
-				int p = (led->polarity == NORMAL ? 0 : 1);
-
-				if (page[0] == 'f') {
-					led->flash = 1;
-					led_flash(0);
-				} else {
-					led->flash = 0;
-					if ((led->gpio & GPIO_TYPE_MASK) == GPIO_TYPE_EXTIF) {
-						led->state = p ^ ((page[0] == '1') ? 1 : 0);
-						set_led_extif(led);
-					} else if ((led->gpio & GPIO_TYPE_MASK) == GPIO_TYPE_SHIFT) {
-						led->state = p ^ ((page[0] == '1') ? 1 : 0);
-						set_led_shift(led);
-					} else {
-						bcm47xx_gpio_outen(led->gpio, led->gpio);
-						bcm47xx_gpio_control(led->gpio, 0);
-						bcm47xx_gpio_out(led->gpio, ((p ^ (page[0] == '1')) ? led->gpio : 0));
-					}
-				}
-				break;
-			}
-			case PROC_GPIOMASK:
-				gpiomask = simple_strtoul(page, NULL, 0);
-
-				if (platform.buttons) {
-					unregister_buttons(platform.buttons);
-					register_buttons(platform.buttons);
-				}
-
-				if (platform.leds) {
-					unregister_leds(platform.leds);
-					register_leds(platform.leds);
-				}
-				break;
-		}
-		ret = count;
-	}
-
-	kfree(page);
-	return ret;
-}
-
-static int __init diag_init(void)
-{
-	static struct proc_dir_entry *p;
-	static struct platform_t *detected;
-
-	detected = platform_detect();
-	if (!detected) {
-		printk(MODULE_NAME ": Router model not detected.\n");
-		return -ENODEV;
-	}
-	memcpy(&platform, detected, sizeof(struct platform_t));
-
-	printk(MODULE_NAME ": Detected '%s'\n", platform.name);
-	if (platform.platform_init != NULL) {
-		platform.platform_init();
-	}
-
-	if (!(diag = proc_mkdir("diag", NULL))) {
-		printk(MODULE_NAME ": proc_mkdir on /proc/diag failed\n");
-		return -EINVAL;
-	}
-
-	if ((p = create_proc_entry("model", S_IRUSR, diag))) {
-		p->data = (void *) &proc_model;
-		p->proc_fops = &diag_proc_fops;
-	}
-
-	if ((p = create_proc_entry("gpiomask", S_IRUSR | S_IWUSR, diag))) {
-		p->data = (void *) &proc_gpiomask;
-		p->proc_fops = &diag_proc_fops;
-	}
-
-	if (platform.buttons)
-		register_buttons(platform.buttons);
-
-	if (platform.leds)
-		register_leds(platform.leds);
-
-	return 0;
-}
-
-static void __exit diag_exit(void)
-{
-	del_timer(&led_timer);
-
-	if (platform.buttons)
-		unregister_buttons(platform.buttons);
-
-	if (platform.leds)
-		unregister_leds(platform.leds);
-
-	remove_proc_entry("model", diag);
-	remove_proc_entry("gpiomask", diag);
-	remove_proc_entry("diag", NULL);
-}
-
-module_init(diag_init);
-module_exit(diag_exit);
-
-MODULE_AUTHOR("Mike Baker, Felix Fietkau / OpenWrt.org");
-MODULE_LICENSE("GPL");
-

--- a/package/broadcom-diag/src/diag.h
+++ /dev/null
@@ -1,136 +1,1 @@
-/*
- * diag.h - GPIO interface driver for Broadcom boards
- *
- * Copyright (C) 2006 Mike Baker <mbm@openwrt.org>,
- *                    Felix Fietkau <nbd@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *
- */
 
-#include <linux/irq.h>
-#define MODULE_NAME "diag"
-
-#define MAX_GPIO 16
-#define FLASH_TIME HZ/6
-
-enum polarity_t {
-	REVERSE = 0,
-	NORMAL = 1,
-	INPUT = 2,
-};
-
-enum {
-	PROC_BUTTON,
-	PROC_LED,
-	PROC_MODEL,
-	PROC_GPIOMASK
-};
-
-struct prochandler_t {
-	int type;
-	void *ptr;
-};
-
-struct button_t {
-	struct prochandler_t proc;
-	char *name;
-	u32 gpio;
-	unsigned long seen;
-	u8 pressed;
-};
-
-struct led_t {
-	struct prochandler_t proc;
-	char *name;
-	u32 gpio;
-	u8 polarity;
-	u8 flash;
-	u8 state;
-};
-
-struct platform_t {
-	char *name;
-
-	struct button_t buttons[MAX_GPIO];
-	u32 button_mask;
-	u32 button_polarity;
-	void (*platform_init)(void);
-
-	struct led_t leds[MAX_GPIO];
-};
-
-struct event_t {
-	struct work_struct wq;
-	unsigned long seen;
-	char *name, *action;
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0)
-	struct sk_buff *skb;
-#else
-	char *scratch;
-	char *argv[4];
-	char *envp[7];
-	u8 enr, anr;
-#endif
-};
-
-extern char *nvram_get(char *str);
-
-static struct platform_t platform;
-
-/* buttons */
-
-static void register_buttons(struct button_t *b);
-static void unregister_buttons(struct button_t *b);
-
-static void hotplug_button(struct work_struct *work);
-static irqreturn_t button_handler(int irq, void *dev_id);
-
-/* leds */
-
-static void register_leds(struct led_t *l);
-static void unregister_leds(struct led_t *l);
-
-static void set_led_extif(struct led_t *led);
-static void set_led_shift(struct led_t *led);
-static void led_flash(unsigned long dummy);
-
-/* 2.4 compatibility */
-#ifndef TIMER_INITIALIZER
-#define TIMER_INITIALIZER(_function, _expires, _data) \
-	{ \
-		/* _expires and _data currently unused */ \
-		function: _function \
-	}
-#endif
-
-static struct timer_list led_timer = TIMER_INITIALIZER(&led_flash, 0, 0);
-
-/* proc */
-
-static struct proc_dir_entry *diag, *leds;
-
-static ssize_t diag_proc_read(struct file *file, char *buf, size_t count, loff_t *ppos);
-static ssize_t diag_proc_write(struct file *file, const char *buf, size_t count, loff_t *ppos);
-
-static struct file_operations diag_proc_fops = {
-	read: diag_proc_read,
-	write: diag_proc_write
-};
-
-static struct prochandler_t proc_model = { .type = PROC_MODEL };
-static struct prochandler_t proc_gpiomask = { .type = PROC_GPIOMASK };
-
-

--- a/package/broadcom-diag/src/gpio.h
+++ /dev/null
@@ -1,23 +1,1 @@
-#ifndef __DIAG_GPIO_H
-#define __DIAG_GPIO_H
 
-#include <linux/interrupt.h>
-#include <linux/ssb/ssb_embedded.h>
-#include <linux/gpio.h>
-#include <bcm47xx.h>
-
-#define EXTIF_ADDR 0x1f000000
-#define EXTIF_UART (EXTIF_ADDR + 0x00800000)
-
-/* GPIO pins driving LEDs through a shift register */
-#define SHIFTREG_DATA		(1 << 6)
-#define SHIFTREG_CLK		(1 << 7)
-#define SHIFTREG_MAX_BITS	8
-
-#define GPIO_TYPE_NORMAL	(0x0 << 24)
-#define GPIO_TYPE_EXTIF 	(0x1 << 24)
-#define GPIO_TYPE_SHIFT		(0x2 << 24)
-#define GPIO_TYPE_MASK  	(0xf << 24)
-
-#endif /* __DIAG_GPIO_H */
-

--- a/package/broadcom-wl/Makefile
+++ /dev/null
@@ -1,176 +1,1 @@
-#
-# Copyright (C) 2006-2012 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=broadcom-wl
-PKG_VERSION:=5.10.56.27.3
-PKG_RELEASE:=5
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)_$(ARCH).tar.bz2
-PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
-
-PKG_MD5SUM.mipsel:=3363e3a6b3d9d73c49dea870c7834eac
-PKG_MD5SUM.mips:=f8de63debc75333d6b4e28193eb051ff
-PKG_MD5SUM:=$(PKG_MD5SUM.$(ARCH))
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/broadcom-wl/Default
-  SECTION:=kernel
-  CATEGORY:=Kernel modules
-  DEPENDS:=@PACKAGE_kmod-brcm-wl||PACKAGE_kmod-brcm-wl-mini
-  SUBMENU:=Proprietary BCM43xx WiFi driver
-  SUBMENUDEP:=@TARGET_brcm47xx||TARGET_brcm63xx
-endef
-
-define KernelPackage/brcm-wl/Default
-  $(call Package/broadcom-wl/Default)
-  SECTION:=kernel
-  DEPENDS:=@TARGET_brcm47xx||TARGET_brcm63xx +wireless-tools
-  TITLE:=Kernel driver for BCM43xx chipsets
-  FILES:=$(PKG_BUILD_DIR)/driver$(1)/wl.ko $(PKG_BUILD_DIR)/glue/wl_glue.ko
-  AUTOLOAD:=$(call AutoLoad,30,wl_glue wl)
-endef
-
-define KernelPackage/brcm-wl/Default/description
- This package contains the proprietary wireless driver for the Broadcom 
- BCM43xx chipset.
-endef
-
-define KernelPackage/brcm-wl
-$(call KernelPackage/brcm-wl/Default,)
-  TITLE+= (normal version)
-endef
-
-define KernelPackage/brcm-wl/description
-$(call KernelPackage/brcm-wl/Default/description)
-endef
-
-define KernelPackage/brcm-wl-mini
-$(call KernelPackage/brcm-wl/Default,-mini)
-  TITLE+= (Legacy version)
-endef
-
-define KernelPackage/brcm-wl-mini/description
-$(call KernelPackage/brcm-wl/Default/description)
-endef
-
-define Package/wlc
-$(call Package/broadcom-wl/Default)
-  TITLE:=wl driver setup utility
-endef
-
-define Package/wlc/description
- This package contains an utility for initializing the proprietary Broadcom 
- wl driver.
-endef
-
-define Package/wl
-$(call Package/broadcom-wl/Default)
-  TITLE:=Proprietary Broadcom wl driver config utility
-endef
-
-define Package/wl/description
- This package contains the proprietary utility (wl) for configuring the 
- proprietary Broadcom wl driver.
-endef
-
-define Package/nas
-$(call Package/broadcom-wl/Default)
-  TITLE:=Proprietary Broadcom WPA/WPA2 authenticator
-endef
-
-define Package/nas/description
- This package contains the proprietary WPA/WPA2 authenticator (nas) for the 
- proprietary Broadcom wl driver.
-endef
-
-MAKE_KMOD := $(MAKE) -C "$(LINUX_DIR)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		ARCH="$(LINUX_KARCH)" \
-		PATH="$(TARGET_PATH)" \
-		SUBDIRS="$(PKG_BUILD_DIR)/kmod" \
-
-define Build/Prepare
-	$(call Build/Prepare/Default)
-	$(CP) $(PKG_BUILD_DIR)/driver $(PKG_BUILD_DIR)/driver-mini
-	$(CP) ./src/glue $(PKG_BUILD_DIR)/glue
-endef
-
-define Build/Compile
-	# Compile the kernel part
-	$(MAKE_KMOD) \
-		SUBDIRS="$(PKG_BUILD_DIR)/driver" \
-		MODFLAGS="-DMODULE -mlong-calls" \
-		modules
-
-	$(MAKE_KMOD) \
-		SUBDIRS="$(PKG_BUILD_DIR)/driver-mini" \
-		MODFLAGS="-DMODULE -mlong-calls" \
-		BUILD_TYPE="wl_apsta_mini" \
-		modules
-
-	# Compile glue driver
-	$(MAKE_KMOD) -C "$(LINUX_DIR)" \
-		SUBDIRS="$(PKG_BUILD_DIR)/glue" \
-		modules                                        
-
-	# Compile libshared
-	$(MAKE) -C $(PKG_BUILD_DIR)/shared \
-		$(TARGET_CONFIGURE_OPTS) \
-		CFLAGS="$(TARGET_CFLAGS) -I. -I$(PKG_BUILD_DIR)/driver/include" \
-		all
-
-	$(TARGET_CC) -o $(PKG_BUILD_DIR)/wlc \
-		-I$(PKG_BUILD_DIR)/shared -I$(PKG_BUILD_DIR)/driver/include \
-		./src/wlc.c $(PKG_BUILD_DIR)/shared/libshared.a
-
-	$(TARGET_CC) -o $(PKG_BUILD_DIR)/nas \
-		$(PKG_BUILD_DIR)/nas_exe.o \
-		$(PKG_BUILD_DIR)/shared/libshared.a
-
-	$(TARGET_CC) -o $(PKG_BUILD_DIR)/wl \
-		$(PKG_BUILD_DIR)/wl_exe.o \
-		$(PKG_BUILD_DIR)/shared/libshared.a
-endef
-
-define Build/InstallDev
-	$(INSTALL_DIR) $(1)/usr/lib
-	$(CP) $(PKG_BUILD_DIR)/shared/libshared.a $(1)/usr/lib/
-endef
-
-define Package/wlc/install
-	$(CP) ./files/* $(1)/
-	$(INSTALL_DIR) $(1)/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/wlc $(1)/sbin/
-endef
-
-define Package/wlc/postinst
-#!/bin/sh
-[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/wlunbind enable || true
-endef
-
-define Package/wl/install
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/wl $(1)/usr/sbin/
-endef
-
-define Package/nas/install
-	$(INSTALL_DIR) $(1)/usr/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/nas $(1)/usr/sbin/
-	ln -sf nas $(1)/usr/sbin/nas4not
-	ln -sf nas $(1)/usr/sbin/nas4wds
-endef
-
-$(eval $(call KernelPackage,brcm-wl))
-$(eval $(call KernelPackage,brcm-wl-mini))
-$(eval $(call BuildPackage,wlc))
-$(eval $(call BuildPackage,wl))
-$(eval $(call BuildPackage,nas))
-

--- a/package/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds
+++ /dev/null
@@ -1,62 +1,1 @@
-include /lib/wifi
 
-setup_broadcom_wds() {
-	local iface="$1"
-	local remote="$(wlc ifname "$iface" wdsmac)"
-
-	[ -z "$remote" ] && return
-	
-	config_cb() {
-		[ -z "$CONFIG_SECTION" ] && return
-	
-		config_get type "$CONFIG_SECTION" TYPE
-		[ "$type" = "wifi-iface" ] || return
-		
-		config_get network "$CONFIG_SECTION" network
-		[ -z "$network" ] && return
-		
-		config_get addr "$CONFIG_SECTION" bssid
-		addr=$(echo "$addr" | tr 'A-F' 'a-f')
-		[ "$addr" = "$remote" ] && {
-			local cfg="$CONFIG_SECTION"
-			
-			include /lib/network
-			scan_interfaces
-
-			for network in $network; do
-				setup_interface "$iface" "$network"
-			done
-			
-			config_get encryption "$cfg" encryption
-			config_get key "$cfg" key
-			config_get ssid "$cfg" ssid
-		
-			[ "$encryption" != "none" ] && {
-				sleep 5
-				case "$encryption" in
-					psk|PSK)
-						nas4not "$network" "$iface" up auto tkip psk "$key" "$ssid"
-						;;
-					psk2|PSK2)
-						nas4not "$network" "$iface" up auto aes psk "$key" "$ssid"
-						;;
-					psk+psk2|psk2+psk|PSK+PSK2|PSK2+PSK)
-						nas4not "$network" "$iface" up auto aes+tkip psk "$key" "$ssid"
-						;;
-					*)
-						nas4not lan "$iface" up auto aes "$encryption" "$key" "$ssid"
-						;;
-					esac
-			}
-		}
-	}
-
-	config_load wireless
-}
-
-case "$ACTION" in
-	add|register)
-		[ "${INTERFACE%%0.*}" = wds ] && setup_broadcom_wds "$INTERFACE"
-	;;
-esac
-

--- a/package/broadcom-wl/files/etc/init.d/wlunbind
+++ /dev/null
@@ -1,30 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2010-2011 OpenWrt.org
 
-START=09
-
-unbind_driver() {
-	local driver="$1"
-	local sysfs="/sys/bus/pci/drivers/$driver"
-	if [ -d "$sysfs" ]; then
-		local lnk
-		for lnk in $sysfs/*; do
-			[ -h "$lnk" ] || continue
-			case "${lnk##*/}" in
-				*:*:*.*)
-					logger "Unbinding WL PCI device ${lnk##*/} from $driver"
-					echo -n "${lnk##*/}" > "$sysfs/unbind"
-				;;
-			esac
-		done
-	fi
-}
-
-boot() {
-	unbind_driver b43-pci-bridge
-	unbind_driver bcma-pci-bridge
-}
-
-start() { :; }
-stop() { :; }
-

--- a/package/broadcom-wl/files/lib/wifi/broadcom.sh
+++ /dev/null
@@ -1,396 +1,1 @@
-append DRIVERS "broadcom"
 
-scan_broadcom() {
-	local device="$1"
-	local wds
-	local adhoc sta apmode mon disabled
-	local adhoc_if sta_if ap_if mon_if
-	local _c=0
-
-	config_get vifs "$device" vifs
-	for vif in $vifs; do
-		config_get_bool disabled "$vif" disabled 0
-		[ $disabled -eq 0 ] || continue
-
-		config_get mode "$vif" mode
-		_c=$(($_c + 1))
-		case "$mode" in
-			adhoc)
-				adhoc=1
-				adhoc_if="$vif"
-			;;
-			sta)
-				sta=1
-				sta_if="$vif"
-			;;
-			ap)
-				apmode=1
-				ap_if="${ap_if:+$ap_if }$vif"
-			;;
-			wds)
-				config_get addr "$vif" bssid
-				[ -z "$addr" ] || {
-					addr=$(echo "$addr" | tr 'A-F' 'a-f')
-					append wds "$addr"
-				}
-			;;
-			monitor)
-				mon=1
-				mon_if="$vif"
-			;;
-			*) echo "$device($vif): Invalid mode";;
-		esac
-	done
-	config_set "$device" wds "$wds"
-
-	local _c=
-	for vif in ${adhoc_if:-$sta_if $ap_if $mon_if}; do
-		config_set "$vif" ifname "${device}${_c:+.$_c}"
-		_c=$((${_c:-0} + 1))
-	done
-	config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}"
-
-	ifdown="down"
-	for vif in 0 1 2 3; do
-		append ifdown "vif $vif" "$N"
-		append ifdown "enabled 0" "$N"
-	done
-
-	ap=1
-	infra=1
-	if [ "$_c" -gt 1 ]; then
-		mssid=1
-	else
-		mssid=
-	fi
-	apsta=0
-	radio=1
-	monitor=0
-	case "$adhoc:$sta:$apmode:$mon" in
-		1*)
-			ap=0
-			mssid=
-			infra=0
-		;;
-		:1:1:)
-			apsta=1
-			wet=1
-		;;
-		:1::)
-			wet=1
-			ap=0
-			mssid=
-		;;
-		:::1)
-			wet=1
-			ap=0
-			mssid=
-			monitor=1
-		;;
-		::)
-			radio=0
-		;;
-	esac
-}
-
-disable_broadcom() {
-	local device="$1"
-	set_wifi_down "$device"
-	wlc ifname "$device" down
-	wlc ifname "$device" bssid `wlc ifname "$device" default_bssid`
-	(
-		include /lib/network
-
-		# make sure the interfaces are down and removed from all bridges
-		for dev in $device ${device}.1 ${device}.2 ${device}.3; do
-			ifconfig "$dev" down 2>/dev/null >/dev/null && {
-				unbridge "$dev"
-			}
-		done
-	)
-	true
-}
-
-enable_broadcom() {
-	local device="$1"
-	local _c
-	config_get channel "$device" channel
-	config_get country "$device" country
-	config_get maxassoc "$device" maxassoc
-	config_get wds "$device" wds
-	config_get vifs "$device" vifs
-	config_get distance "$device" distance
-	config_get slottime "$device" slottime
-	config_get rxantenna "$device" rxantenna
-	config_get txantenna "$device" txantenna
-	config_get_bool frameburst "$device" frameburst
-	config_get macfilter "$device" macfilter
-	config_get maclist "$device" maclist
-	config_get macaddr "$device" macaddr
-	config_get txpower "$device" txpower
-	config_get frag "$device" frag
-	config_get rts "$device" rts
-	config_get hwmode "$device" hwmode
-	local vif_pre_up vif_post_up vif_do_up vif_txpower
-	local doth=0
-	local wmm=1
-
-	_c=0
-	nas="$(which nas)"
-	nas_cmd=
-	if_up=
-
-	[ -z "$slottime" ] && {
-		[ -n "$distance" ] && {
-			# slottime = 9 + (distance / 150) + (distance % 150 ? 1 : 0)
-			slottime="$((9 + ($distance / 150) + 1 - (150 - ($distance % 150)) / 150 ))"
-		}
-	} || {
-		slottime="${slottime:--1}"
-	}
-
-	case "$macfilter" in
-		allow|2)
-			macfilter=2;
-		;;
-		deny|1)
-			macfilter=1;
-		;;
-		disable|none|0)
-			macfilter=0;
-		;;
-	esac
-
-	case "$hwmode" in
-		*b)   hwmode=0;;
-		*bg)  hwmode=1;;
-		*g)   hwmode=2;;
-		*gst) hwmode=4;;
-		*lrs) hwmode=5;;
-		*)    hwmode=1;;
-	esac
-
-	for vif in $vifs; do
-		config_get vif_txpower "$vif" txpower
-
-		config_get mode "$vif" mode
-		append vif_pre_up "vif $_c" "$N"
-		append vif_post_up "vif $_c" "$N"
-		append vif_do_up "vif $_c" "$N"
-
-		config_get_bool wmm "$vif" wmm "$wmm"
-		config_get_bool doth "$vif" doth "$doth"
-
-		[ "$mode" = "sta" ] || {
-			config_get_bool hidden "$vif" hidden 0
-			append vif_pre_up "closed $hidden" "$N"
-			config_get_bool isolate "$vif" isolate 0
-			append vif_pre_up "ap_isolate $isolate" "$N"
-		}
-
-		wsec_r=0
-		eap_r=0
-		wsec=0
-		auth=0
-		nasopts=
-		config_get enc "$vif" encryption
-		case "$enc" in
-			*wep*)
-				wsec_r=1
-				wsec=1
-				defkey=1
-				config_get key "$vif" key
-				case "$enc" in
-					*shared*) append vif_do_up "wepauth 1" "$N";;
-					*) append vif_do_up "wepauth 0" "$N";;
-				esac
-				case "$key" in
-					[1234])
-						defkey="$key"
-						for knr in 1 2 3 4; do
-							config_get k "$vif" key$knr
-							[ -n "$k" ] || continue
-							[ "$defkey" = "$knr" ] && def="=" || def=""
-							append vif_do_up "wepkey $def$knr,$k" "$N"
-						done
-					;;
-					"");;
-					*) append vif_do_up "wepkey =1,$key" "$N";;
-				esac
-			;;
-			*psk*)
-				wsec_r=1
-				config_get key "$vif" key
-
-				# psk version + default cipher
-				case "$enc" in
-					*mixed*|*psk+psk2*) auth=132; wsec=6;;
-					*psk2*) auth=128; wsec=4;;
-					*) auth=4; wsec=2;;
-				esac
-
-				# cipher override
-				case "$enc" in
-					*tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) wsec=6;;
-					*aes*|*ccmp*) wsec=4;;
-					*tkip*) wsec=2;;
-				esac
-
-				# group rekey interval
-				config_get rekey "$vif" wpa_group_rekey
-
-				eval "${vif}_key=\"\$key\""
-				nasopts="-k \"\$${vif}_key\"${rekey:+ -g $rekey}"
-			;;
-			*wpa*)
-				wsec_r=1
-				eap_r=1
-				config_get auth_server "$vif" auth_server
-				[ -z "$auth_server" ] && config_get auth_server "$vif" server
-				config_get auth_port "$vif" auth_port
-				[ -z "$auth_port" ] && config_get auth_port "$vif" port
-				config_get auth_secret "$vif" auth_secret
-				[ -z "$auth_secret" ] && config_get auth_secret "$vif" key
-
-				# wpa version + default cipher
-				case "$enc" in
-					*mixed*|*wpa+wpa2*) auth=66; wsec=6;;
-					*wpa2*) auth=64; wsec=4;;
-					*) auth=2; wsec=2;;
-				esac
-
-				# cipher override
-				case "$enc" in
-					*tkip+aes*|*tkip+ccmp*|*aes+tkip*|*ccmp+tkip*) wsec=6;;
-					*aes*|*ccmp*) wsec=4;;
-					*tkip*) wsec=2;;
-				esac
-
-				# group rekey interval
-				config_get rekey "$vif" wpa_group_rekey
-
-				eval "${vif}_key=\"\$auth_secret\""
-				nasopts="-r \"\$${vif}_key\" -h $auth_server -p ${auth_port:-1812}${rekey:+ -g $rekey}"
-			;;
-		esac
-		append vif_do_up "wsec $wsec" "$N"
-		append vif_do_up "wpa_auth $auth" "$N"
-		append vif_do_up "wsec_restrict $wsec_r" "$N"
-		append vif_do_up "eap_restrict $eap_r" "$N"
-
-		config_get ssid "$vif" ssid
-		append vif_post_up "vlan_mode 0" "$N"
-		append vif_post_up "ssid $ssid" "$N"
-		append vif_do_up "ssid $ssid" "$N"
-
-		[ "$mode" = "monitor" ] && {
-			append vif_post_up "monitor $monitor" "$N"
-		}
-
-		[ "$mode" = "adhoc" ] && {
-			config_get bssid "$vif" bssid
-			[ -n "$bssid" ] && {
-				append vif_pre_up "bssid $bssid" "$N"
-				append vif_pre_up "ibss_merge 0" "$N"
-			} || {
-				append vif_pre_up "ibss_merge 1" "$N"
-			}
-		}
-
-		append vif_post_up "enabled 1" "$N"
-
-		config_get ifname "$vif" ifname
-		#append if_up "ifconfig $ifname up" ";$N"
-
-		local net_cfg
-		net_cfg="$(find_net_config "$vif")"
-		[ -z "$net_cfg" ] || {
-			append if_up "set_wifi_up '$vif' '$ifname'" ";$N"
-			append if_up "start_net '$ifname' '$net_cfg'" ";$N"
-		}
-		[ -z "$nasopts" ] || {
-			eval "${vif}_ssid=\"\$ssid\""
-			nas_mode="-A"
-			[ "$mode" = "sta" ] && nas_mode="-S"
-			[ -z "$nas" ] || {
-				nas_cmd="${nas_cmd:+$nas_cmd$N}start-stop-daemon -S -b -p /var/run/nas.$ifname.pid -x $nas -- -P /var/run/nas.$ifname.pid -H 34954 -i $ifname $nas_mode -m $auth -w $wsec -s \"\$${vif}_ssid\" -g 3600 -F $nasopts"
-			}
-		}
-		_c=$(($_c + 1))
-	done
-	killall -KILL nas >&- 2>&-
-	wlc ifname "$device" stdin <<EOF
-$ifdown
-
-gmode ${hwmode:-1}
-apsta $apsta
-ap $ap
-${mssid:+mssid $mssid}
-infra $infra
-${wet:+wet 1}
-802.11d 0
-802.11h ${doth:-0}
-wme ${wmm:-1}
-rxant ${rxantenna:-3}
-txant ${txantenna:-3}
-fragthresh ${frag:-2346}
-rtsthresh ${rts:-2347}
-monitor ${monitor:-0}
-
-radio ${radio:-1}
-macfilter ${macfilter:-0}
-maclist ${maclist:-none}
-wds none
-${wds:+wds $wds}
-country ${country:-US}
-${channel:+channel $channel}
-maxassoc ${maxassoc:-128}
-slottime ${slottime:--1}
-${frameburst:+frameburst $frameburst}
-
-$vif_pre_up
-up
-$vif_post_up
-EOF
-	eval "$if_up"
-	wlc ifname "$device" stdin <<EOF
-$vif_do_up
-EOF
-
-	# use vif_txpower (from last wifi-iface) instead of txpower (from
-	# wifi-device) if the latter does not exist
-	txpower=${txpower:-$vif_txpower}
-	[ -z "$txpower" ] || iwconfig $device txpower ${txpower}dBm
-
-	eval "$nas_cmd"
-}
-
-
-detect_broadcom() {
-	local i=-1
-
-	while grep -qs "^ *wl$((++i)):" /proc/net/dev; do
-		local channel
-
-		config_get type wl${i} type
-		[ "$type" = broadcom ] && continue
-		channel=`wlc ifname wl${i} channel`
-		cat <<EOF
-config wifi-device  wl${i}
-	option type     broadcom
-	option channel  ${channel:-11}
-
-	# REMOVE THIS LINE TO ENABLE WIFI:
-	option disabled 1
-
-config wifi-iface
-	option device   wl${i}
-	option network	lan
-	option mode     ap
-	option ssid     OpenWrt${i#0}
-	option encryption none
-
-EOF
-	done
-}
-

--- a/package/broadcom-wl/patches/003-compat-2.6.35.patch
+++ /dev/null
@@ -1,40 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -2082,7 +2082,11 @@ static void
- _wl_set_multicast_list(struct net_device *dev)
- {
- 	wl_info_t *wl;
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
- 	struct dev_mc_list *mclist;
-+#else
-+	struct netdev_hw_addr *ha;
-+#endif
- 	int i;
- 
- 	if (!dev)
-@@ -2098,14 +2102,24 @@ _wl_set_multicast_list(struct net_device
- 		wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE;
- 
- 		/* copy the list of multicasts into our private table */
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
- 		for (i = 0, mclist = dev->mc_list; mclist && (i < dev->mc_count);
- 			i++, mclist = mclist->next) {
-+#else
-+		i = 0;
-+		netdev_for_each_mc_addr(ha, dev) {
-+#endif
- 			if (i >= MAXMULTILIST) {
- 				wl->pub->allmulti = TRUE;
- 				i = 0;
- 				break;
- 			}
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
- 			wl->pub->multicast[i] = *((struct ether_addr*) mclist->dmi_addr);
-+#else
-+			wl->pub->multicast[i] = *((struct ether_addr*) ha->addr);
-+			i++;
-+#endif
- 		}
- 		wl->pub->nmulticast = i;
- 		wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC));
 

--- a/package/broadcom-wl/patches/004-remove-pcmcia.patch
+++ /dev/null
@@ -1,23 +1,1 @@
---- a/driver/include/linuxver.h
-+++ b/driver/include/linuxver.h
-@@ -111,7 +111,7 @@ typedef irqreturn_t(*FN_ISR) (int irq, v
- #endif /* not SANDGATE2G */
- #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 67) */
- 
--#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE)
-+#if 0
- 
- #include <pcmcia/cs_types.h>
- #include <pcmcia/cs.h>
---- a/driver/linux_osl.c
-+++ b/driver/linux_osl.c
-@@ -62,7 +62,7 @@ struct osl_info {
- };
- 
- /* PCMCIA attribute space access macros */
--#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE)
-+#if 0
- struct pcmcia_dev {
- 	dev_link_t link;	/* PCMCIA device pointer */
- 	dev_node_t node;	/* PCMCIA node structure */
 

--- a/package/broadcom-wl/patches/005-fix-mem-leak-on-unload.patch
+++ /dev/null
@@ -1,32 +1,1 @@
-From: George Kashperko <george@znau.edu.ua>
 
-Release nvram variables buffer.
-Prevent block reserved by alloc_etherdev from being freed.
-Signed-off-by: George Kashperko <george@znau.edu.ua>
----
----
---- a/driver/siutils.c
-+++ b/driver/siutils.c
-@@ -647,7 +647,10 @@ si_detach(si_t *sih)
- #if !defined(BCMBUSTYPE) || (BCMBUSTYPE == SI_BUS)
- 	if (sii != &ksii)
- #endif	/* !BCMBUSTYPE || (BCMBUSTYPE == SI_BUS) */
--		MFREE(sii->osh, sii, sizeof(si_info_t));
-+		do {
-+			MFREE(sii->osh, sii, sizeof(si_info_t));
-+			nvram_exit((void *)&(sii->pub));
-+		} while (0);
- }
- 
- void *
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -1477,7 +1477,6 @@ wl_free_if(wl_info_t *wl, wl_if_t *wlif)
- 		free_netdev(wlif->dev);
- #endif
- 	}
--	MFREE(wl->osh, wlif, sizeof(wl_if_t));
- }
- 
- #ifdef AP
-

--- a/package/broadcom-wl/patches/006-generic-dma-api.patch
+++ /dev/null
@@ -1,89 +1,1 @@
-From: George Kashperko <george@znau.edu.ua>
 
-broadcom-wl driver bound to ssb device with ssb driver probe
-have osh handle struct pdev pointer value initialized with
-ssb_device pointer. Later on pdev is used with legacy pci
-dma api as pci_dev thus causing oops sometimes.
-
-The patch replaces legacy pci dma api and pass relevant
-device struct pointer to avoid crashes.
-Signed-off-by: George Kashperko <george@znau.edu.ua>
----
- driver/linux_osl.c |   28 +++++++++++++++++++++++-----
- 1 file changed, 23 insertions(+), 5 deletions(-)
---- a/driver/linux_osl.c
-+++ b/driver/linux_osl.c
-@@ -25,6 +25,9 @@
- #include <asm/paccess.h>
- #endif /* mips */
- #include <pcicfg.h>
-+#ifdef CONFIG_SSB
-+#include <linux/ssb/ssb.h>
-+#endif
- 
- #define PCI_CFG_RETRY 		10
- 
-@@ -364,12 +367,27 @@ osl_dma_consistent_align(void)
- 	return (PAGE_SIZE);
- }
- 
-+static struct device *
-+osl_get_dmadev(osl_t *osh)
-+{
-+#ifdef CONFIG_SSB
-+	if (osh->bustype == SI_BUS) {
-+		/* This can be SiliconBackplane emulated as pci with Broadcom or
-+		 * ssb device. Less harmful is to check for pci_bus_type and if
-+		 * no match then assume we got ssb */
-+		if (((struct pci_dev *)osh->pdev)->dev.bus != &pci_bus_type)
-+			return ((struct ssb_device *)osh->pdev)->dma_dev;
-+	}
-+#endif
-+	return &((struct pci_dev *)osh->pdev)->dev;
-+}
-+
- void*
- osl_dma_alloc_consistent(osl_t *osh, uint size, ulong *pap)
- {
- 	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
- 
--	return (pci_alloc_consistent(osh->pdev, size, (dma_addr_t*)pap));
-+	return (dma_alloc_coherent(osl_get_dmadev(osh), size, (dma_addr_t*)pap, GFP_ATOMIC));
- }
- 
- void
-@@ -377,7 +395,7 @@ osl_dma_free_consistent(osl_t *osh, void
- {
- 	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
- 
--	pci_free_consistent(osh->pdev, size, va, (dma_addr_t)pa);
-+	dma_free_coherent(osl_get_dmadev(osh), size, va, (dma_addr_t)pa);
- }
- 
- uint BCMFASTPATH
-@@ -386,13 +404,13 @@ osl_dma_map(osl_t *osh, void *va, uint s
- 	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
- 
- 	if (direction == DMA_TX)
--		return (pci_map_single(osh->pdev, va, size, PCI_DMA_TODEVICE));
-+		return (dma_map_single(osl_get_dmadev(osh), va, size, PCI_DMA_TODEVICE));
- 	else {
- #ifdef mips
- 		dma_cache_inv((uint)va, size);
- 		return (virt_to_phys(va));
- #else /* mips */
--		return (pci_map_single(osh->pdev, va, size, PCI_DMA_FROMDEVICE));
-+		return (dma_map_single(osl_get_dmadev(osh), va, size, PCI_DMA_FROMDEVICE));
- #endif /* mips */
- 	}
- }
-@@ -404,7 +422,7 @@ osl_dma_unmap(osl_t *osh, uint pa, uint 
- 
- 	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
- 	dir = (direction == DMA_TX)? PCI_DMA_TODEVICE: PCI_DMA_FROMDEVICE;
--	pci_unmap_single(osh->pdev, (uint32)pa, size, dir);
-+	dma_unmap_single(osl_get_dmadev(osh), (uint32)pa, size, dir);
- }
- 
- 
-

--- a/package/broadcom-wl/patches/007-use-glue-driver.patch
+++ /dev/null
@@ -1,185 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -85,10 +85,9 @@ typedef void wlc_hw_info_t;
- #include <bcmjtag.h>
- #endif	/* BCMJTAG */
- 
--
--#ifdef CONFIG_SSB
--#include <linux/ssb/ssb.h>
--#endif
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+#include <wl_glue.h>
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 
- /* Linux wireless extension support */
- #ifdef CONFIG_WIRELESS_EXT
-@@ -997,62 +996,32 @@ static struct pci_driver wl_pci_driver =
- #endif	/* CONFIG_PCI */
- #endif  
- 
-+#ifdef BCMJTAG
-+static bcmjtag_driver_t wl_jtag_driver = {
-+		wl_jtag_probe,
-+		wl_jtag_detach,
-+		wl_jtag_poll,
-+		};
-+#endif	/* BCMJTAG */
- 
--static int wl_ssb_probe(struct ssb_device *dev, const struct ssb_device_id *id)
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+static void * glue_attach_cb(u16 vendor, u16 device,
-+                                ulong mmio, void *dev, u32 irq)
- {
--	wl_info_t *wl;
--	void *mmio;
--
--	if (dev->bus->bustype != SSB_BUSTYPE_SSB) {
--		printk("Attaching to SSB behind PCI is not supported. Please remove the b43 ssb bridge\n");
--		return -EINVAL;
--	}
--
--	mmio = (void *) 0x18000000 + dev->core_index * 0x1000;
--	wl = wl_attach(id->vendor, id->coreid, (ulong) mmio, SI_BUS, dev, dev->irq);
--	if (!wl) {
--		printk("wl_attach failed\n");
--		return -ENODEV;
--	}
--
--	ssb_set_drvdata(dev, wl);
--
--	return 0;
-+	return wl_attach(vendor, device, mmio, SI_BUS, dev, irq);
- }
- 
--static void wl_ssb_remove(struct ssb_device *dev)
-+static void glue_remove_cb(void *wldev)
- {
--	wl_info_t *wl = (wl_info_t *) ssb_get_drvdata(dev);
-+	wl_info_t *wl = (wl_info_t *)wldev;
- 
- 	WL_LOCK(wl);
- 	WL_APSTA_UPDN(("wl%d (%s): wl_remove() -> wl_down()\n", wl->pub->unit, wl->dev->name));
- 	wl_down(wl);
- 	WL_UNLOCK(wl);
- 	wl_free(wl);
--	ssb_set_drvdata(dev, NULL);
- }
--
--static const struct ssb_device_id wl_ssb_tbl[] = {
--	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV),
--	SSB_DEVTABLE_END
--};
--
--#ifdef CONFIG_SSB
--static struct ssb_driver wl_ssb_driver = {
--	.name	= KBUILD_MODNAME,
--	.id_table = wl_ssb_tbl,
--	.probe = wl_ssb_probe,
--	.remove = wl_ssb_remove,
--};
--#endif
--
--#ifdef BCMJTAG
--static bcmjtag_driver_t wl_jtag_driver = {
--		wl_jtag_probe,
--		wl_jtag_detach,
--		wl_jtag_poll,
--		};
--#endif	/* BCMJTAG */
-+#endif/* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 
- 
- /** 
-@@ -1067,11 +1036,13 @@ wl_module_init(void)
- {
- 	int error = -ENODEV;
- 
--#ifdef CONFIG_SSB
--	error = ssb_driver_register(&wl_ssb_driver);
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+	wl_glue_set_attach_callback(&glue_attach_cb);
-+	wl_glue_set_remove_callback(&glue_remove_cb);
-+	error = wl_glue_register();
- 	if (error)
- 		return error;
--#endif	/* CONFIG_SSB */
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 
- #ifdef CONFIG_PCI
- 	error = pci_register_driver(&wl_pci_driver);
-@@ -1082,7 +1053,9 @@ wl_module_init(void)
- 	return 0;
- 
- error_pci:
--	ssb_driver_unregister(&wl_ssb_driver);
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+	wl_glue_unregister();
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 	return error;
- }
- 
-@@ -1099,9 +1072,9 @@ wl_module_exit(void)
- #ifdef CONFIG_PCI
- 	pci_unregister_driver(&wl_pci_driver);
- #endif	/* CONFIG_PCI */
--#ifdef CONFIG_SSB
--	ssb_driver_unregister(&wl_ssb_driver);
--#endif	/* CONFIG_SSB */
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+	wl_glue_unregister();
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- }
- 
- module_init(wl_module_init);
---- a/driver/linux_osl.c
-+++ b/driver/linux_osl.c
-@@ -25,9 +25,9 @@
- #include <asm/paccess.h>
- #endif /* mips */
- #include <pcicfg.h>
--#ifdef CONFIG_SSB
--#include <linux/ssb/ssb.h>
--#endif
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
-+#include <wl_glue.h>
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 
- #define PCI_CFG_RETRY 		10
- 
-@@ -370,15 +370,17 @@ osl_dma_consistent_align(void)
- static struct device *
- osl_get_dmadev(osl_t *osh)
- {
--#ifdef CONFIG_SSB
-+#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
- 	if (osh->bustype == SI_BUS) {
--		/* This can be SiliconBackplane emulated as pci with Broadcom or
--		 * ssb device. Less harmful is to check for pci_bus_type and if
--		 * no match then assume we got ssb */
-+		/* This can be SiliconBackplane emulated as pci with Broadcom,
-+		 * ssb or bcma device. Less harmful is to check for pci_bus_type and if
-+		 * no match then assume we got either ssb or bcma */
- 		if (((struct pci_dev *)osh->pdev)->dev.bus != &pci_bus_type)
--			return ((struct ssb_device *)osh->pdev)->dma_dev;
-+		{
-+			return wl_glue_get_dmadev(osh->pdev);
-+		}
- 	}
--#endif
-+#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
- 	return &((struct pci_dev *)osh->pdev)->dev;
- }
- 
---- a/driver/Makefile
-+++ b/driver/Makefile
-@@ -1,7 +1,7 @@
- BUILD_TYPE=wl_apsta
- include $(src)/$(BUILD_TYPE)/buildflags.mk
- 
--EXTRA_CFLAGS += -I$(src)/include -I$(src) -DBCMDRIVER $(WLFLAGS)
-+EXTRA_CFLAGS += -I$(src)/include -I$(src) -I$(realpath $(src)/../glue) -DBCMDRIVER $(WLFLAGS)
- 
- wl-objs := $(BUILD_TYPE)/wl_prebuilt.o wl_iw.o wl_linux.o linux_osl.o siutils.o aiutils.o hndpmu.o bcmutils.o sbutils.o nicpci.o hnddma.o bcmsrom.o nvram_stub.o
- 
 

--- a/package/broadcom-wl/patches/008-fix_virtual_interfaces.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -1541,6 +1541,8 @@ wl_add_if(wl_info_t *wl, struct wlc_if* 
- 		return NULL;
- 	}
- 
-+	wl_if_setup(wlif->dev);
-+
- 	sprintf(wlif->dev->name, "%s%d.%d", devname, wl->pub->unit, wlif->subunit);
- 	if (remote)
- 		bcopy(remote, &wlif->remote, ETHER_ADDR_LEN);
 

--- a/package/broadcom-wl/patches/009-fix_compile_3_2.patch
+++ /dev/null
@@ -1,28 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -462,6 +462,16 @@ wl_schedule_fn(wl_info_t *wl, void (*fn)
- }
- #endif /* DSLCPE_DELAY */
- 
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
-+#define WL_DEFAULT_OPS \
-+	.ndo_open = wl_open, \
-+	.ndo_stop = wl_close, \
-+	.ndo_start_xmit = wl_start, \
-+	.ndo_get_stats = wl_get_stats, \
-+	.ndo_set_mac_address = wl_set_mac_address, \
-+	.ndo_set_rx_mode = wl_set_multicast_list, \
-+	.ndo_do_ioctl = wl_ioctl
-+#else
- #define WL_DEFAULT_OPS \
- 	.ndo_open = wl_open, \
- 	.ndo_stop = wl_close, \
-@@ -470,6 +480,7 @@ wl_schedule_fn(wl_info_t *wl, void (*fn)
- 	.ndo_set_mac_address = wl_set_mac_address, \
- 	.ndo_set_multicast_list = wl_set_multicast_list, \
- 	.ndo_do_ioctl = wl_ioctl
-+#endif
- 
- static const struct net_device_ops wl_ops = {
- 	WL_DEFAULT_OPS,
 

--- a/package/broadcom-wl/patches/010-remove_irqf_samble_random.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/driver/wl_linux.c	2012-09-26 20:51:48.099454971 -0400
-+++ b/driver/wl_linux.c	2012-09-26 20:53:24.115453441 -0400
-@@ -691,7 +691,7 @@
- 	if (wl->bustype != JTAG_BUS)
- #endif	/* BCMJTAG */
- 	{
--		if (request_irq(irq, wl_isr, IRQF_SHARED|IRQF_SAMPLE_RANDOM, dev->name, wl)) {
-+		if (request_irq(irq, wl_isr, IRQF_SHARED, dev->name, wl)) {
- 			WL_ERROR(("wl%d: request_irq() failed\n", unit));
- 			goto fail;
- 		}
 

--- a/package/broadcom-wl/patches/011-fix_compile_3_4.patch
+++ /dev/null
@@ -1,13 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -49,7 +49,9 @@
- #include <linux/ieee80211.h>
- #endif
- 
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)
- #include <asm/system.h>
-+#endif
- #include <asm/io.h>
- #include <asm/irq.h>
- #include <asm/pgtable.h>
 

--- a/package/broadcom-wl/patches/100-fix_nvram_two_devices.patch
+++ /dev/null
@@ -1,33 +1,1 @@
---- a/driver/nvram_stub.c
-+++ b/driver/nvram_stub.c
-@@ -22,6 +22,7 @@ typedef struct _vars {
- #define	VARS_T_OH	sizeof(vars_t)
- 
- static vars_t *vars = NULL;
-+static int nvram_init_done = 0;
- extern char *nvram_buf[];
- 
- int
-@@ -33,6 +34,10 @@ BCMATTACHFN(nvram_init)(void *si)
- 	uint nvs, bufsz;
- 	vars_t *new;
- 
-+	nvram_init_done++;
-+	if (nvram_init_done != 1)
-+		return 0;
-+
- 	osh = si_osh(sih);
- 
- 	nvs = R_REG(osh, &nvh->len) - sizeof(struct nvram_header);
-@@ -79,6 +84,10 @@ BCMATTACHFN(nvram_exit)(void *si)
- 	vars_t *this, *next;
- 	si_t *sih;
- 
-+	nvram_init_done--;
-+	if (nvram_init_done != 0)
-+		return 0;
-+
- 	sih = (si_t *)si;
- 	this = vars;
- 	while (this) {
 

--- a/package/broadcom-wl/patches/110-add_number_to_dev_name.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/driver/wl_linux.c
-+++ b/driver/wl_linux.c
-@@ -1412,7 +1412,7 @@ wl_alloc_if(wl_info_t *wl, int iftype, u
- 	dev = alloc_etherdev(sizeof(wl_if_t));
- 	wlif = netdev_priv(dev);
- 	bzero(wlif, sizeof(wl_if_t));
--	strncpy(dev->name, name, IFNAMSIZ);
-+	snprintf(dev->name, IFNAMSIZ, name, subunit);
- 
- 	wlif->type = iftype;
- 	wlif->dev = dev;
 

--- a/package/broadcom-wl/patches/910-fallback-sprom.patch
+++ /dev/null
@@ -1,85 +1,1 @@
---- a/driver/bcmsrom.c
-+++ b/driver/bcmsrom.c
-@@ -39,6 +39,11 @@
- #include <sbsdpcmdev.h>
- #endif 
- 
-+#if defined(CONFIG_SSB_PCIHOST) && defined(CONFIG_BOARD_BCM963XX)
-+#include <linux/ssb/ssb.h>
-+extern struct ssb_sprom bcm63xx_sprom;
-+#endif
-+
- #ifdef WLTEST
- #include <sbsprom.h>
- #endif /* WLTEST */
-@@ -2058,6 +2063,10 @@ BCMATTACHFN(initvars_srom_pci)(si_t *sih
- 	bool flash = FALSE;
- 	int err = 0;
- 
-+#if defined(CONFIG_SSB_PCIHOST) && defined(CONFIG_BOARD_BCM963XX)
-+	char eabuf[18];
-+#endif
-+
- 	/*
- 	 * Apply CRC over SROM content regardless SROM is present or not,
- 	 * and use variable <devpath>sromrev's existance in flash to decide
-@@ -2120,6 +2129,58 @@ BCMATTACHFN(initvars_srom_pci)(si_t *sih
- 			goto varscont;
- 		}
- 
-+#if defined(CONFIG_SSB_PCIHOST) && defined(CONFIG_BOARD_BCM963XX)
-+		base = vp = MALLOC(osh, MAXSZ_NVRAM_VARS);
-+
-+		if( base != NULL )
-+		{
-+			varbuf_init(&b, base, MAXSZ_NVRAM_VARS);
-+
-+			printk("Got version %i SPROM from SSB\n", bcm63xx_sprom.revision);
-+
-+			varbuf_append(&b, vstr_sromrev, bcm63xx_sprom.revision);
-+			varbuf_append(&b, vstr_boardrev, bcm63xx_sprom.board_rev);
-+
-+			/* ToDo: map bcm63xx_sprom.country_code */
-+			varbuf_append(&b, vstr_noccode);
-+
-+			varbuf_append(&b, vstr_aa2g, bcm63xx_sprom.ant_available_bg);
-+
-+			varbuf_append(&b, vstr_pa0b[0], bcm63xx_sprom.pa0b0);
-+			varbuf_append(&b, vstr_pa1b[0], bcm63xx_sprom.pa1b0);
-+			varbuf_append(&b, vstr_pa0b[1], bcm63xx_sprom.pa0b1);
-+			varbuf_append(&b, vstr_pa1b[1], bcm63xx_sprom.pa1b1);
-+			varbuf_append(&b, vstr_pa0b[2], bcm63xx_sprom.pa0b2);
-+			varbuf_append(&b, vstr_pa1b[2], bcm63xx_sprom.pa1b2);
-+
-+			varbuf_append(&b, vstr_pa0maxpwr, bcm63xx_sprom.maxpwr_bg);
-+			varbuf_append(&b, vstr_pa0itssit, bcm63xx_sprom.itssi_bg);
-+
-+			varbuf_append(&b, vstr_boardflags, (bcm63xx_sprom.boardflags_hi << 16) | bcm63xx_sprom.boardflags_lo);
-+			varbuf_append(&b, vstr_boardflags2, (bcm63xx_sprom.boardflags2_hi << 16) | bcm63xx_sprom.boardflags2_lo);
-+
-+			snprintf(eabuf, sizeof(eabuf), "%02x:%02x:%02x:%02x:%02x:%02x",
-+				bcm63xx_sprom.il0mac[0], bcm63xx_sprom.il0mac[1], bcm63xx_sprom.il0mac[2],
-+				bcm63xx_sprom.il0mac[3], bcm63xx_sprom.il0mac[4], bcm63xx_sprom.il0mac[5]
-+			);
-+
-+			varbuf_append(&b, vstr_macaddr, eabuf);
-+
-+			/* final nullbyte terminator */
-+			ASSERT(b.size >= 1);
-+			vp = b.buf;
-+			*vp++ = '\0';
-+
-+			ASSERT((vp - base) <= MAXSZ_NVRAM_VARS);
-+			goto varsdone;
-+		}
-+		else
-+		{
-+			err = -2;
-+			goto errout;
-+		}
-+#endif
-+
- 		BS_ERROR(("SROM CRC Error\n"));
- 
- #if defined(WLTEST)
 

--- a/package/broadcom-wl/patches/912-pci-bus-nvram-hack.patch
+++ /dev/null
@@ -1,12 +1,1 @@
---- a/driver/siutils.c
-+++ b/driver/siutils.c
-@@ -1859,7 +1859,7 @@ BCMINITFN(si_devpath)(si_t *sih, char *p
- 	case PCI_BUS:
- 		ASSERT((SI_INFO(sih))->osh != NULL);
- 		slen = snprintf(path, (size_t)size, "pci/%u/%u/",
--		                OSL_PCI_BUS((SI_INFO(sih))->osh),
-+		                OSL_PCI_BUS((SI_INFO(sih))->osh) + 1,
- 		                OSL_PCI_SLOT((SI_INFO(sih))->osh));
- 		break;
- 	case PCMCIA_BUS:
 

--- a/package/broadcom-wl/patches/913-avoid-dbe-on-ifs_ctl-readw-hack.patch
+++ /dev/null
@@ -1,13 +1,1 @@
---- a/driver/linux_osl.c
-+++ b/driver/linux_osl.c
-@@ -723,6 +723,9 @@ osl_readl(volatile uint32 *r)
- uint16
- osl_readw(volatile uint16 *r)
- {
-+	uint32 addr = (uintptr)r & 0xffff3fff;
-+	if (addr == 0xa8000688)	/* ifs_ctl */
-+		readl(r);
- 	return (readw(r));
- }
- 
 

--- a/package/broadcom-wl/src/glue/Makefile
+++ /dev/null
@@ -1,18 +1,1 @@
-#
-# Makefile for wl_glue driver
-#
-# Copyright (C) 2011 Jo-Philipp Wich <jow@openwrt.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version
-# 2 of the License, or (at your option) any later version.
-#
 
-obj-m := wl_glue.o
-
-ifeq ($(MAKING_MODULES),1)
--include $(TOPDIR)/Rules.make
-endif
-
-

--- a/package/broadcom-wl/src/glue/wl_glue.c
+++ /dev/null
@@ -1,316 +1,1 @@
-/*
- * wl_glue.c: Broadcom WL support module providing a unified SSB/BCMA handling.
- * Copyright (C) 2011 Jo-Philipp Wich <jow@openwrt.org>
- */
 
-#include "wl_glue.h"
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/init.h>
-
-#ifdef CONFIG_BCM47XX
-#include <bcm47xx.h>
-#endif
-
-#ifdef CONFIG_SSB
-#include <linux/ssb/ssb.h>
-#endif
-
-#ifdef CONFIG_BCMA
-#include <linux/bcma/bcma.h>
-#endif
-
-MODULE_AUTHOR("Jo-Philipp Wich (jow@openwrt.org)");
-MODULE_DESCRIPTION("Broadcom WL SSB/BCMA compatibility layer");
-MODULE_LICENSE("GPL");
-
-static wl_glue_attach_cb_t attach_cb = NULL;
-static wl_glue_remove_cb_t remove_cb = NULL;
-static enum wl_glue_bus_type active_bus_type = WL_GLUE_BUS_TYPE_UNSPEC;
-static int wl_glue_attached = 0;
-
-
-#ifdef CONFIG_SSB
-static int wl_glue_ssb_probe(struct ssb_device *dev, const struct ssb_device_id *id)
-{
-	void *mmio;
-	void *wldev;
-
-	if (!attach_cb)
-	{
-		pr_err("No attach callback registered\n");
-		return -ENOSYS;
-	}
-
-	if (dev->bus->bustype != SSB_BUSTYPE_SSB)
-	{
-		pr_err("Attaching to SSB behind PCI is not supported. Please remove the b43 ssb bridge\n");
-		return -EINVAL;
-	}
-
-	mmio = (void *) 0x18000000 + dev->core_index * 0x1000;
-	wldev = attach_cb(id->vendor, id->coreid, (ulong)mmio, dev, dev->irq);
-
-	if (!wldev)
-	{
-		pr_err("The attach callback failed, SSB probe aborted\n");
-		return -ENODEV;
-	}
-
-	ssb_set_drvdata(dev, wldev);
-	return 0;
-}
-
-static void wl_glue_ssb_remove(struct ssb_device *dev)
-{
-	void *wldev = ssb_get_drvdata(dev);
-
-	if (remove_cb)
-		remove_cb(wldev);
-
-	ssb_set_drvdata(dev, NULL);
-}
-
-static const struct ssb_device_id wl_glue_ssb_tbl[] = {
-	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV),
-	SSB_DEVTABLE_END
-};
-
-static struct ssb_driver wl_glue_ssb_driver = {
-	.name     = KBUILD_MODNAME,
-	.id_table = wl_glue_ssb_tbl,
-	.probe    = wl_glue_ssb_probe,
-	.remove   = wl_glue_ssb_remove,
-};
-#endif /* CONFIG_SSB */
-
-#ifdef CONFIG_BCMA
-static int wl_glue_bcma_probe(struct bcma_device *dev)
-{
-	void *wldev;
-
-	if (!attach_cb)
-	{
-		pr_err("No attach callback registered\n");
-		return -ENOSYS;
-	}
-
-	if (dev->bus->hosttype != BCMA_HOSTTYPE_SOC)
-	{
-		pr_err("Unsupported BCMA bus type %d\n", dev->bus->hosttype);
-		return -EINVAL;
-	}
-
-	/*
-	 * NB:
-	 * 0x18000000 = BCMA_ADDR_BASE
-	 * 0x1000     = BCMA_CORE_SIZE
-	 */
-
-	wldev = attach_cb(dev->id.manuf, dev->id.id, (ulong)dev->addr, dev, dev->irq);
-
-	if (!wldev)
-	{
-		pr_err("The attach callback failed, BCMA probe aborted\n");
-		return -ENODEV;
-	}
-
-	bcma_set_drvdata(dev, wldev);
-	return 0;
-}
-
-static void wl_glue_bcma_remove(struct bcma_device *dev)
-{
-	void *wldev = bcma_get_drvdata(dev);
-
-	if (remove_cb)
-		remove_cb(wldev);
-
-	bcma_set_drvdata(dev, NULL);
-}
-
-static const struct bcma_device_id wl_glue_bcma_tbl[] = {
-	BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, BCMA_ANY_REV, BCMA_ANY_CLASS),
-	BCMA_CORETABLE_END
-};
-
-static struct bcma_driver wl_glue_bcma_driver = {
-	.name     = KBUILD_MODNAME,
-	.id_table = wl_glue_bcma_tbl,
-	.probe    = wl_glue_bcma_probe,
-	.remove   = wl_glue_bcma_remove,
-};
-#endif /* CONFIG_BCMA */
-
-
-void wl_glue_set_attach_callback(wl_glue_attach_cb_t cb)
-{
-	attach_cb = cb;
-}
-EXPORT_SYMBOL(wl_glue_set_attach_callback);
-
-void wl_glue_set_remove_callback(wl_glue_remove_cb_t cb)
-{
-	remove_cb = cb;
-}
-EXPORT_SYMBOL(wl_glue_set_remove_callback);
-
-int wl_glue_register(void)
-{
-	int err;
-
-	switch(active_bus_type)
-	{
-#ifdef CONFIG_SSB
-	case WL_GLUE_BUS_TYPE_SSB:
-		err = ssb_driver_register(&wl_glue_ssb_driver);
-		break;
-#endif /* CONFIG_SSB */
-
-#ifdef CONFIG_BCMA
-	case WL_GLUE_BUS_TYPE_BCMA:
-		err = bcma_driver_register(&wl_glue_bcma_driver);
-		break;
-#endif /* CONFIG_BCMA */
-
-	default:
-		pr_err("Not attaching through glue driver due to unsupported bus\n");
-		err = -ENOSYS;
-		break;
-	}
-
-	if (!err)
-	{
-		pr_info("SSB/BCMA glue driver successfully attached\n");
-		wl_glue_attached = 1;
-	}
-
-	return err;
-}
-EXPORT_SYMBOL(wl_glue_register);
-
-int wl_glue_unregister(void)
-{
-	int err;
-
-	if (!wl_glue_attached)
-		return -ENOSYS;
-
-	switch (active_bus_type)
-	{
-#ifdef CONFIG_SSB
-	case WL_GLUE_BUS_TYPE_SSB:
-		ssb_driver_unregister(&wl_glue_ssb_driver);
-		err = 0;
-		break;
-#endif /* CONFIG_SSB */
-
-#ifdef CONFIG_BCMA
-	case WL_GLUE_BUS_TYPE_BCMA:
-		bcma_driver_unregister(&wl_glue_bcma_driver);
-		err = 0;
-		break;
-#endif /* CONFIG_BCMA */
-
-	default:
-		pr_err("Not removing glue driver due to unsupported bus\n");
-		err = -ENOSYS;
-		break;
-	}
-
-	if (!err)
-	{
-		pr_info("SSB/BCMA glue driver successfully detached\n");
-		wl_glue_attached = 0;
-	}
-
-	return err;
-}
-EXPORT_SYMBOL(wl_glue_unregister);
-
-struct device * wl_glue_get_dmadev(void *dev)
-{
-	struct device *dma_dev;
-
-	switch (active_bus_type)
-	{
-#ifdef CONFIG_SSB
-	case WL_GLUE_BUS_TYPE_SSB:
-		dma_dev = ((struct ssb_device *)dev)->dma_dev;
-		break;
-#endif /* CONFIG_SSB */
-
-#ifdef CONFIG_BCMA
-	case WL_GLUE_BUS_TYPE_BCMA:
-		dma_dev = ((struct bcma_device *)dev)->dma_dev;
-		break;
-#endif /* CONFIG_BCMA */
-
-	default:
-		BUG();
-		dma_dev = NULL;
-		break;
-	}
-
-	return dma_dev;
-}
-EXPORT_SYMBOL(wl_glue_get_dmadev);
-
-
-static int __init wl_glue_init(void)
-{
-#ifdef CONFIG_BCM47XX
-	/*
-	 * BCM47xx currently supports either SSB or BCMA bus,
-	 * determine the used one from the info set by the
-	 * platform setup code.
-	 */
-	switch (bcm47xx_bus_type)
-	{
-#ifdef CONFIG_SSB
-	case BCM47XX_BUS_TYPE_SSB:
-		active_bus_type = WL_GLUE_BUS_TYPE_SSB;
-		break;
-#endif /* CONFIG_SSB */
-
-#ifdef CONFIG_BCMA
-	case BCM47XX_BUS_TYPE_BCMA:
-		active_bus_type = WL_GLUE_BUS_TYPE_BCMA;
-		break;
-#endif /* CONFIG_BCMA */
-	}
-#endif /* CONFIG_BCM47XX */
-
-#ifdef CONFIG_BCM63XX
-#ifdef CONFIG_SSB
-	/*
-	 * BCM63xx currently only uses SSB, so assume that.
-	 */
-	active_bus_type = WL_GLUE_BUS_TYPE_SSB;
-#endif /* CONFIG_SSB */
-#endif /* CONFIG_BCM63XX */
-
-	/* do not fail here, let wl_glue_register() return -ENOSYS later */
-	if (active_bus_type == WL_GLUE_BUS_TYPE_UNSPEC)
-		pr_err("Unable to determine used system bus type\n");
-
-	return 0;
-}
-
-static void __exit wl_glue_exit(void)
-{
-	if (wl_glue_attached)
-	{
-		if (wl_glue_unregister())
-			pr_err("Failed to unregister glue driver\n");
-
-		wl_glue_attached = 0;
-	}
-
-	return;
-}
-
-module_init(wl_glue_init);
-module_exit(wl_glue_exit);
-

--- a/package/broadcom-wl/src/glue/wl_glue.h
+++ /dev/null
@@ -1,23 +1,1 @@
-/*
- * wl_glue.h: Broadcom WL support module providing a unified SSB/BCMA handling.
- * Copyright (C) 2011 Jo-Philipp Wich <jow@openwrt.org>
- */
 
-#include <linux/types.h>
-
-typedef void * (*wl_glue_attach_cb_t)(u16, u16, ulong, void *, u32);
-typedef void (*wl_glue_remove_cb_t)(void *);
-
-enum wl_glue_bus_type {
-	WL_GLUE_BUS_TYPE_UNSPEC,
-	WL_GLUE_BUS_TYPE_SSB,
-	WL_GLUE_BUS_TYPE_BCMA
-};
-
-extern void wl_glue_set_attach_callback(wl_glue_attach_cb_t cb);
-extern void wl_glue_set_remove_callback(wl_glue_remove_cb_t cb);
-extern int wl_glue_register(void);
-extern int wl_glue_unregister(void);
-extern struct device * wl_glue_get_dmadev(void *);
-
-

--- a/package/broadcom-wl/src/wlc.c
+++ /dev/null
@@ -1,1087 +1,1 @@
-/*
- * wlc - Broadcom Wireless Driver Control Utility
- *
- * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
 
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <glob.h>
-#include <ctype.h>
-
-#include <typedefs.h>
-#include <wlutils.h>
-#include <proto/802.11.h>
-
-#define VERSION "0.1"
-#define BUFSIZE 8192
-#define PTABLE_MAGIC 0xbadc0ded
-#define PTABLE_SLT1 1
-#define PTABLE_SLT2 2
-#define PTABLE_ACKW 3
-#define PTABLE_ADHM 4
-#define PTABLE_END 0xffffffff
-
-/* 
- * Copy each token in wordlist delimited by space into word 
- * Taken from Broadcom shutils.h
- */
-#define foreach(word, wordlist, next) \
-	for (next = &wordlist[strspn(wordlist, " ")], \
-		 strncpy(word, next, sizeof(word)), \
-		 word[strcspn(word, " ")] = '\0', \
-		 word[sizeof(word) - 1] = '\0', \
-		 next = strchr(next, ' '); \
-		 strlen(word); \
-		 next = next ? &next[strspn(next, " ")] : "", \
-		 strncpy(word, next, sizeof(word)), \
-		 word[strcspn(word, " ")] = '\0', \
-		 word[sizeof(word) - 1] = '\0', \
-		 next = strchr(next, ' '))
-
-static char wlbuf[8192];
-static char interface[16] = "wl0";
-static unsigned long kmem_offset = 0;
-static int vif = 0, debug = 1, fromstdin = 0;
-
-typedef enum {
-	NONE =   0x00,
-
-	/* types */
-	PARAM_TYPE =    0x00f,
-	INT =    0x001,
-	STRING = 0x002,
-	MAC =    0x003,
-
-	/* options */
-	PARAM_OPTIONS = 0x0f0,
-	NOARG =  0x010,
-
-	/* modes */
-	PARAM_MODE =    0xf00,
-	GET =    0x100,
-	SET =    0x200,
-} wlc_param;
-
-struct wlc_call {
-	const char *name;
-	wlc_param param;
-	int (*handler)(wlc_param param, void *data, void *value);
-	union {
-		int num;
-		char *str;
-		void *ptr;
-	} data;
-	const char *desc;
-};
-
-/* can't use the system include because of the stupid broadcom header files */
-extern struct ether_addr *ether_aton(const char *asc);
-static inline int my_ether_ntoa(unsigned char *ea, char *buf)
-{
-	return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x",
-		ea[0], ea[1], ea[2], ea[3], ea[4], ea[5]);
-}
-
-static int wlc_ioctl(wlc_param param, void *data, void *value)
-{
-	unsigned int *var = ((unsigned int *) data);
-	unsigned int ioc = *var;
-
-	if (param & NOARG) {
-		return wl_ioctl(interface, ioc, NULL, 0);
-	}
-	switch(param & PARAM_TYPE) {
-		case MAC:
-			return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, 6);
-		case INT:
-			return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, sizeof(int));
-		case STRING:
-			return wl_ioctl(interface, ((param & SET) ? (ioc) : (ioc >> 16)) & 0xffff, value, BUFSIZE);
-	}
-	return 0;
-}
-
-static int wlc_iovar(wlc_param param, void *data, void *value)
-{
-	int *val = (int *) value;
-	char *iov = *((char **) data);
-	int ret = 0;
-	
-	if (param & SET) {
-		switch(param & PARAM_TYPE) {
-			case INT:
-				ret = wl_iovar_setint(interface, iov, *val);
-				break;
-			case MAC:
-				ret = wl_iovar_set(interface, iov, value, 6);
-				break;
-		}
-	}
-	if (param & GET) {
-		switch(param & PARAM_TYPE) {
-			case INT:
-				ret = wl_iovar_get(interface, iov, val, sizeof(int));
-				break;
-			case MAC:
-				ret = wl_iovar_get(interface, iov, value, 6);
-				break;
-		}
-	}
-
-	return ret;
-}
-
-static int wlc_bssiovar(wlc_param param, void *data, void *value)
-{
-	int *val = (int *) value;
-	char *iov = *((char **) data);
-	int ret = 0;
-	
-	if (param & SET) {
-		switch(param & PARAM_TYPE) {
-			case INT:
-				ret = wl_bssiovar_setint(interface, iov, vif, *val);
-		}
-	}
-	if (param & GET) {
-		switch(param & PARAM_TYPE) {
-			case INT:
-				ret = wl_bssiovar_get(interface, iov, vif, val, sizeof(int));
-		}
-	}
-
-	return ret;
-}
-
-static int wlc_vif_enabled(wlc_param param, void *data, void *value)
-{
-	int *val = (int *) value;
-	int buf[3];
-	int ret = 0;
-	
-	sprintf((char *) buf, "bss");
-	buf[1] = vif;
-	if (param & SET) {
-		buf[2] = (*val ? 1 : 0);
-		ret = wl_ioctl(interface, WLC_SET_VAR, buf, sizeof(buf));
-	} else if (param & GET) {
-		ret = wl_ioctl(interface, WLC_GET_VAR, buf, sizeof(buf));
-		*val = buf[0];
-	}
-
-	return ret;
-}
-
-static int wlc_ssid(wlc_param param, void *data, void *value)
-{
-	int ret = -1, ret2 = -1;
-	char *dest = (char *) value;
-	wlc_ssid_t ssid;
-	
-	if ((param & PARAM_MODE) == GET) {
-		ret = wl_bssiovar_get(interface, "ssid", vif, &ssid, sizeof(ssid));
-
-		if (ret)
-			/* if we can't get the ssid through the bssiovar, try WLC_GET_SSID */
-			ret = wl_ioctl(interface, WLC_GET_SSID, &ssid, sizeof(ssid));
-		
-		if (!ret) {
-			memcpy(dest, ssid.SSID, ssid.SSID_len);
-			dest[ssid.SSID_len] = 0;
-		}
-	} else if ((param & PARAM_MODE) == SET) {
-		strncpy(ssid.SSID, value, 32);
-		ssid.SSID_len = strlen(value);
-		
-		if (ssid.SSID_len > 32)
-			ssid.SSID_len = 32;
-		
-		if (vif == 0) {
-			/* for the main interface, also try the WLC_SET_SSID call */
-			ret2 = wl_ioctl(interface, WLC_SET_SSID, &ssid, sizeof(ssid));
-		}
-		
-		ret = wl_bssiovar_set(interface, "ssid", vif, &ssid, sizeof(ssid));
-		ret = (!ret2 ? 0 : ret);
-	}
-	
-	return ret;
-}
-
-static int wlc_int(wlc_param param, void *data, void *value)
-{
-	int *var = *((int **) data);
-	int *val = (int *) value;
-
-	if ((param & PARAM_MODE) == SET) {
-		*var = *val;
-	} else if ((param & PARAM_MODE) == GET) {
-		*val = *var;
-	}
-
-	return 0;
-}
-
-static int wlc_flag(wlc_param param, void *data, void *value)
-{
-	int *var = *((int **) data);
-
-	*var = 1;
-
-	return 0;
-}
-
-static int wlc_string(wlc_param param, void *data, void *value)
-{
-	char *var = *((char **) data);
-	
-	if ((param & PARAM_MODE) == GET) {
-		strcpy(value, var);
-	}
-
-	return 0;
-}
-
-static int wlc_afterburner(wlc_param param, void *data, void *value)
-{
-	int *val = (int *) value;
-	int ret = 0;
-
-	if ((param & PARAM_MODE) == GET) {
-		ret = wl_iovar_get(interface, "afterburner", val, sizeof(int));
-	} else {
-		wl_iovar_setint(interface, "wlfeatureflag", (*val ? 3 : 0));
-		ret = wl_iovar_setint(interface, "afterburner", (*val ? 1 : 0));
-		wl_iovar_setint(interface, "afterburner_override", *val);
-	}
-
-	return ret;
-}
-
-static int wlc_maclist(wlc_param param, void *data, void *value)
-{
-	unsigned int *var = ((unsigned int *) data);
-	unsigned int ioc = *var;
-	int limit = (sizeof(wlbuf) - 4) / sizeof(struct ether_addr);
-	struct maclist *list = (struct maclist *) wlbuf;
-	char *str = (char *) value;
-	char astr[30], *p;
-	struct ether_addr *addr;
-	int isset = 0;
-	int ret;
-
-	if ((param & PARAM_MODE) == GET) {
-		list->count = limit;
-		ret = wl_ioctl(interface, (ioc >> 16) & 0xffff, wlbuf, sizeof(wlbuf));
-		
-		if (!ret) 
-			while (list->count) {
-				str += sprintf(str, "%s", ((((char *) value) == str) ? "" : " "));
-				str += my_ether_ntoa((unsigned char *) &list->ea[list->count-- - 1], str);
-			}
-		
-		return ret;
-	} else {
-		while (*str && isspace(*str))
-			*str++;
-		
-		if (*str == '+') {
-			str++;
-
-			list->count = limit;
-			if (wl_ioctl(interface, (ioc >> 16) & 0xffff, wlbuf, sizeof(wlbuf)) == 0)
-				isset = 1;
-
-			while (*str && isspace(*str))
-				str++;
-		}
-		
-		if (!isset)
-			memset(wlbuf, 0, sizeof(wlbuf));
-		
-		foreach(astr, str, p) {
-			if (list->count >= limit)
-				break;
-			
-			if ((addr = ether_aton(astr)) != NULL)
-				memcpy(&list->ea[list->count++], addr, sizeof(struct ether_addr));
-		}
-
-		return wl_ioctl(interface, ioc & 0xffff, wlbuf, sizeof(wlbuf));
-	}
-}
-
-static int wlc_radio(wlc_param param, void *data, void *value)
-{
-	int *val = (int *) value;
-	int ret;
-
-	if ((param & PARAM_MODE) == GET) {
-		ret = wl_ioctl(interface, WLC_GET_RADIO, val, sizeof(int));
-		*val = ((*val & 1) ? 0 : 1);
-	} else {
-		*val = (1 << 16) | (*val ? 0 : 1); 
-		ret = wl_ioctl(interface, WLC_SET_RADIO, val, sizeof(int));
-	}
-
-	return ret;
-}
-
-static int wlc_wsec_key(wlc_param param, void *null, void *value)
-{
-	wl_wsec_key_t wsec_key;
-	unsigned char *index = value;
-	unsigned char *key;
-	unsigned char *data;
-	unsigned char hex[3];
-	
-	if ((param & PARAM_MODE) != SET)
-		return 0;
-
-	memset(&wsec_key, 0, sizeof(wsec_key));
-	if (index[0] == '=') {
-		wsec_key.flags = WL_PRIMARY_KEY;
-		index++;
-	}
-	
-	if ((index[0] < '1') || (index[0] > '4') || (index[1] != ','))
-		return -1;
-	
-	key = index + 2;
-	if (strncmp(key, "d:", 2) == 0) { /* delete key */
-	} else if (strncmp(key, "s:", 2) == 0) { /* ascii key */
-		key += 2;
-		wsec_key.len = strlen(key);
-
-		if ((wsec_key.len != 5) && (wsec_key.len != 13))
-			return -1;
-		
-		strcpy(wsec_key.data, key);
-	} else { /* hex key */
-		wsec_key.len = strlen(key);
-		if ((wsec_key.len != 10) && (wsec_key.len != 26))
-			return -1;
-		
-		wsec_key.len /= 2;
-		data = wsec_key.data;
-		hex[2] = 0;
-		do {
-			hex[0] = *(key++);
-			hex[1] = *(key++);
-			*(data++) = (unsigned char) strtoul(hex, NULL, 16);
-		} while (*key != 0);
-	}
-
-	return wl_bssiovar_set(interface, "wsec_key", vif, &wsec_key, sizeof(wsec_key));
-}
-
-static inline int cw2ecw(int cw)
-{
-	int i;	
-	for (cw++, i = 0; cw; i++) cw >>=1;
-	return i - 1;
-}
-
-static int wlc_wme_ac(wlc_param param, void *data, void *value)
-{
-	char *type = *((char **) data);
-	char *settings = (char *) value;
-	char cmd[100], *p, *val;
-	edcf_acparam_t params[AC_COUNT];
-	int ret;
-	int intval;
-	int cur = -1;
-	char *buf = wlbuf;
-
-	if ((param & PARAM_MODE) != SET)
-		return -1;
-	
-	memset(params, 0, sizeof(params));
-	ret = wl_iovar_get(interface, type, params, sizeof(params));
-	memset(buf, 0, BUFSIZE);
-	strcpy(buf, type);
-	buf += strlen(buf) + 1;
-	
-	foreach(cmd, settings, p) {
-		val = strchr(cmd, '=');
-		if (val == NULL) {
-			if (strcmp(cmd, "be") == 0)
-				cur = AC_BE;
-			else if (strcmp(cmd, "bk") == 0)
-				cur = AC_BK;
-			else if (strcmp(cmd, "vi") == 0)
-				cur = AC_VI;
-			else if (strcmp(cmd, "vo") == 0)
-				cur = AC_VO;
-			else
-				return -1;
-
-			/* just in case */
-			params[cur].ACI = (params[cur].ACI & (0x3 << 5)) | (cur << 5);
-		} else {
-			*(val++) = 0;
-			
-			intval = strtoul(val, NULL, 10);
-			if (strcmp(cmd, "cwmin") == 0)
-				params[cur].ECW = (params[cur].ECW & ~(0xf)) | cw2ecw(intval);
-			else if (strcmp(cmd, "ecwmin") == 0)
-				params[cur].ECW = (params[cur].ECW & ~(0xf)) | (intval & 0xf);
-			else if (strcmp(cmd, "cwmax") == 0)
-				params[cur].ECW = (params[cur].ECW & ~(0xf << 4)) | (cw2ecw(intval) << 4);
-			else if (strcmp(cmd, "ecwmax") == 0)
-				params[cur].ECW = (params[cur].ECW & ~(0xf << 4)) | ((intval & 0xf) << 4);
-			else if (strcmp(cmd, "aifsn") == 0)
-				params[cur].ACI = (params[cur].ACI & ~(0xf)) | (intval & 0xf);
-			else if (strcmp(cmd, "txop") == 0)
-				params[cur].TXOP = intval >> 5;
-			else if (strcmp(cmd, "force") == 0)
-				params[cur].ACI = (params[cur].ACI & ~(1 << 4)) | ((intval) ? (1 << 4) : 0);
-			else return -1;
-			
-			memcpy(buf, &params[cur], sizeof(edcf_acparam_t));
-			wl_ioctl(interface, WLC_SET_VAR, wlbuf, BUFSIZE);
-		}
-	}
-	return ret;
-}
-
-static int wlc_ifname(wlc_param param, void *data, void *value)
-{
-	char *val = (char *) value;
-	int ret = 0;
-	
-	if (param & SET) {
-		if (strlen(val) < 16)
-			strcpy(interface, val);
-		else ret = -1;
-	}
-	if (param & GET) {
-		strcpy(val, interface);
-	}
-
-	return ret;
-}
-
-static int wlc_wdsmac(wlc_param param, void *data, void *value)
-{
-	unsigned char mac[6];
-	int ret = 0;
-	
-	ret = wl_ioctl(interface, WLC_WDS_GET_REMOTE_HWADDR, &mac, 6);
-	if (ret == 0)
-		my_ether_ntoa(mac, value);
-
-	return ret;
-}
-
-static int wlc_pmk(wlc_param param, void *data, void *value)
-{
-	int ret = -1;
-	char *str = (char *) value;
-	wsec_pmk_t pmk;
-	
-	/* driver doesn't support GET */
-
-	if ((param & PARAM_MODE) == SET) {
-		strncpy(pmk.key, value, WSEC_MAX_PSK_LEN);
-		pmk.key_len = strlen(value);
-
-		if (pmk.key_len > WSEC_MAX_PSK_LEN)
-			pmk.key_len = WSEC_MAX_PSK_LEN;
-
-		pmk.flags = WSEC_PASSPHRASE;
-
-		ret = wl_ioctl(interface, WLC_SET_WSEC_PMK, &pmk, sizeof(pmk));
-	}
-	
-	return ret;
-}
-
-static const struct wlc_call wlc_calls[] = {
-	{
-		.name = "version",
-		.param = STRING|NOARG,
-		.handler = wlc_string,
-		.data.str = VERSION,
-		.desc = "Version of this program"
-	},
-	{
-		.name = "debug",
-		.param = INT,
-		.handler = wlc_int,
-		.data.ptr = &debug,
-		.desc = "wlc debug level"
-	},
-	{
-		.name = "stdin",
-		.param = NOARG,
-		.handler = wlc_flag,
-		.data.ptr = &fromstdin,
-		.desc = "Accept input from stdin"
-	},
-	{
-		.name = "ifname",
-		.param = STRING,
-		.handler = wlc_ifname,
-		.desc = "interface to send commands to"
-	},
-	{
-		.name = "up",
-		.param = NOARG,
-		.handler = wlc_ioctl,
-		.data.num = WLC_UP,
-		.desc = "Bring the interface up"
-	},
-	{
-		.name = "down",
-		.param = NOARG,
-		.handler = wlc_ioctl,
-		.data.num = WLC_DOWN,
-		.desc = "Bring the interface down"
-	},
-	{
-		.name = "radio",
-		.param = INT,
-		.handler = wlc_radio,
-		.desc = "Radio enabled flag"
-	},
-	{
-		.name = "ap",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_AP << 16) | WLC_SET_AP),
-		.desc = "Access Point mode"
-	},
-	{
-		.name = "mssid",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "mbss",
-		.desc = "Multi-ssid mode"
-	},
-	{
-		.name = "apsta",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "apsta",
-		.desc = "AP+STA mode"
-	},
-	{
-		.name = "infra",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_INFRA << 16) | WLC_SET_INFRA),
-		.desc = "Infrastructure mode"
-	},
-	{
-		.name = "wet",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_WET << 16) | WLC_SET_WET),
-		.desc = "Wireless repeater mode",
-	},
-	{
-		.name = "statimeout",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "sta_retry_time",
-		.desc = "STA connection timeout"
-	},
-	{
-		.name = "country",
-		.param = STRING,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_COUNTRY << 16) | WLC_SET_COUNTRY),
-		.desc = "Country code"
-	},
-	{
-		.name = "channel",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_CHANNEL << 16) | WLC_SET_CHANNEL),
-		.desc = "Channel",
-	},
-	{
-		.name = "vlan_mode",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "vlan_mode",
-		.desc = "Parse 802.1Q tags",
-	},
-	{
-		.name = "vif",
-		.param = INT,
-		.handler = wlc_int,
-		.data.ptr = &vif,
-		.desc = "Current vif index"
-	},
-	{
-		.name = "enabled",
-		.param = INT,
-		.handler = wlc_vif_enabled,
-		.desc = "vif enabled flag"
-	},
-	{
-		.name = "ssid",
-		.param = STRING,
-		.handler = wlc_ssid,
-		.desc = "Interface ESSID"
-	},
-	{
-		.name = "closed",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "closednet",
-		.desc = "Hidden ESSID flag"
-	},
-	{
-		.name = "wsec",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "wsec",
-		.desc = "Security mode flags"
-	},
-	{
-		.name = "wepkey",
-		.param = STRING,
-		.handler = wlc_wsec_key,
-		.desc = "Set/Remove WEP keys"
-	},
-	{
-		.name = "wepauth",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_AUTH << 16) | WLC_SET_AUTH),
-		.desc = "WEP authentication type. 0 = OpenSystem, 1 = SharedKey"
-	},
-	{
-		.name = "wsec_restrict",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "wsec_restrict",
-		.desc = "Drop unencrypted traffic"
-	},
-	{
-		.name = "eap_restrict",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "eap_restrict",
-		.desc = "Only allow 802.1X traffic until 802.1X authorized"
-	},
-	{
-		.name = "wpa_auth",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "wpa_auth",
-		.desc = "WPA authentication modes"
-	},
-	{
-		.name = "ap_isolate",
-		.param = INT,
-		.handler = wlc_bssiovar,
-		.data.str = "ap_isolate",
-		.desc = "Isolate connected clients"
-	},
-	{
-		.name = "supplicant",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "sup_wpa",
-		.desc = "Built-in WPA supplicant"
-	},
-	{
-		.name = "passphrase",
-		.param = STRING,
-		.handler = wlc_pmk,
-		.desc = "Passphrase for built-in WPA supplicant",
-	},
-	{
-		.name = "maxassoc",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "maxassoc",
-		.desc = "Max. number of associated clients",
-	},
-	{
-		.name = "wme",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "wme",
-		.desc = "WME enabled"
-	},
-	{
-		.name = "wme_ac_ap",
-		.param = STRING,
-		.handler = wlc_wme_ac,
-		.data.str = "wme_ac_ap",
-		.desc = "Set WME AC options for AP mode",
-	},
-	{
-		.name = "wme_ac_sta",
-		.param = STRING,
-		.handler = wlc_wme_ac,
-		.data.str = "wme_ac_sta",
-		.desc = "Set WME AC options for STA mode",
-	},
-	{
-		.name = "wme_noack",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "wme_noack",
-		.desc = "WME ACK disable request",
-	},
-	{
-		.name = "802.11d",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_REGULATORY << 16) | WLC_SET_REGULATORY),
-		.desc = "Enable/disable 802.11d regulatory management",
-	},
-	{
-		.name = "802.11h",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_SPECT_MANAGMENT << 16) | WLC_SET_SPECT_MANAGMENT),
-		.desc = "Enable/disable 802.11h spectrum management",
-	},
-	{
-		.name = "fragthresh",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "fragthresh",
-		.desc = "Fragmentation threshold",
-	},
-	{
-		.name = "rtsthresh",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "rtsthresh",
-		.desc = "RTS threshold"
-	},
-	{
-		.name = "slottime",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "acktiming",
-		.desc = "Slot time"
-	},
-	{
-		.name = "rxant",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_ANTDIV << 16) | WLC_SET_ANTDIV),
-		.desc = "Rx antenna selection"
-	},
-	{
-		.name = "txant",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_TXANT << 16) | WLC_SET_TXANT),
-		.desc = "Tx antenna selection"
-	},
-	{
-		.name = "dtim",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_DTIMPRD << 16) | WLC_SET_DTIMPRD),
-		.desc = "DTIM period",
-	},
-	{
-		.name = "bcn",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_BCNPRD << 16) | WLC_SET_BCNPRD),
-		.desc = "Beacon interval"
-	},
-	{
-		.name = "frameburst",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_FAKEFRAG << 16) | WLC_SET_FAKEFRAG),
-		.desc = "Framebursting"
-	},
-	{
-		.name = "monitor",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_MONITOR << 16) | WLC_SET_MONITOR),
-		.desc = "Monitor mode"
-	},
-	{
-		.name = "passive_scan",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_PASSIVE_SCAN << 16) | WLC_SET_PASSIVE_SCAN),
-		.desc = "Passive scan mode"
-	},
-	{
-		.name = "macfilter",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_MACMODE << 16) | WLC_SET_MACMODE),
-		.desc = "MAC filter mode (0:disabled, 1:deny, 2:allow)"
-	},
-	{
-		.name = "maclist",
-		.param = STRING,
-		.data.num = ((WLC_GET_MACLIST << 16) | WLC_SET_MACLIST),
-		.handler = wlc_maclist,
-		.desc = "MAC filter list"
-	},
-	{
-		.name = "autowds",
-		.param = INT,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_LAZYWDS << 16) | WLC_SET_LAZYWDS),
-		.desc = "Automatic WDS"
-	},
-	{
-		.name = "wds",
-		.param = STRING,
-		.data.num = ((WLC_GET_WDSLIST << 16) | WLC_SET_WDSLIST),
-		.handler = wlc_maclist,
-		.desc = "WDS connection list"
-	},
-	{
-		.name = "wdstimeout",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "wdstimeout",
-		.desc = "WDS link detection timeout"
-	},
-	{
-		.name = "wdsmac",
-		.param = STRING|NOARG,
-		.handler = wlc_wdsmac,
-		.desc = "MAC of the remote WDS endpoint (only with wds0.* interfaces)"
-	},
-	{
-		.name = "afterburner",
-		.param = INT,
-		.handler = wlc_afterburner,
-		.desc = "Broadcom Afterburner"
-	},
-	{
-		.name = "ibss_merge",
-		.param = INT,
-		.handler = wlc_iovar,
-		.data.str = "ibss_coalesce_allowed",
-		.desc = "Allow IBSS merges"
-	},
-	{
-		.name = "bssid",
-		.param = MAC,
-		.handler = wlc_ioctl,
-		.data.num = ((WLC_GET_BSSID << 16) | WLC_SET_BSSID),
-		.desc = "BSSID"
-	},
-	{
-		.name = "default_bssid",
-		.param = MAC,
-		.handler = wlc_iovar,
-		.data.str = "perm_etheraddr",
-		.desc = "Default BSSID (read-only)"
-	},
-	{
-		.name = "assoclist",
-		.param = STRING,
-		.data.num = (WLC_GET_ASSOCLIST << 16),
-		.handler = wlc_maclist,
-		.desc = "MACs of associated stations"
-	},
-	{
-		.name = "gmode",
-		.param = INT,
-		.data.num = ((WLC_GET_GMODE << 16) | WLC_SET_GMODE),
-		.handler = wlc_ioctl,
-		.desc = "G Mode"
-	},
-};
-#define wlc_calls_size (sizeof(wlc_calls) / sizeof(struct wlc_call))
-
-static void usage(char *cmd)
-{
-	int i;
-	fprintf(stderr, "Usage: %s <command> [<argument> ...]\n"
-					"\n"
-					"Available commands:\n", cmd);
-	for (i = 0; i < wlc_calls_size; i++) {
-		fprintf(stderr, "\t%-16s\t%s\n", wlc_calls[i].name ?: "", wlc_calls[i].desc ?: "");
-	}
-	fprintf(stderr, "\n");
-	exit(1);
-}
-
-static int do_command(const struct wlc_call *cmd, char *arg)
-{
-	static char buf[BUFSIZE];
-	int set;
-	int ret = 0;
-	char *format, *end;
-	int intval;
-	void *ptr = (void *) buf;
-
-	if (debug >= 10) {
-		fprintf(stderr, "do_command %-16s\t'%s'\n", cmd->name, arg);
-	}
-	
-	if ((arg == NULL) && ((cmd->param & PARAM_TYPE) != NONE)) {
-		set = 0;
-		ret = cmd->handler(cmd->param | GET, (void *) &cmd->data, (void *) buf);
-		if (ret == 0) {
-			switch(cmd->param & PARAM_TYPE) {
-				case INT:
-					intval = *((int *) buf);
-					
-					if (intval > 65535)
-						format = "0x%08x\n";
-					else if (intval > 255)
-						format = "0x%04x\n";
-					else
-						format = "%d\n";
-					
-					fprintf(stdout, format, intval);
-					break;
-				case STRING:
-					fprintf(stdout, "%s\n", buf);
-					break;
-				case MAC:
-					my_ether_ntoa(buf, buf + 6);
-					fprintf(stdout, "%s\n", buf + 6);
-					break;
-			}
-		}
-	} else { /* SET */
-		set = 1;
-		switch(cmd->param & PARAM_TYPE) {
-			case INT:
-				intval = strtoul(arg, &end, 10);
-				if (end && !(*end)) {
-					memcpy(buf, &intval, sizeof(intval));
-				} else {
-					fprintf(stderr, "%s: Invalid argument\n", cmd->name);
-					return -1;
-				}
-				break;
-			case STRING:
-				strncpy(buf, arg, BUFSIZE);
-				buf[BUFSIZE - 1] = 0;
-				break;
-			case MAC:
-				ptr = ether_aton(arg);
-				if (!ptr) {
-					fprintf(stderr, "%s: Invalid mac address '%s'\n", cmd->name, arg);
-					return -1;
-				}
-				break;
-		}
-
-		ret = cmd->handler(cmd->param | SET, (void *) &cmd->data, ptr);
-	}
-	
-	if ((debug > 0) && (ret != 0)) 
-		fprintf(stderr, "Command '%s %s' failed: %d\n", (set == 1 ? "set" : "get"), cmd->name, ret);
-	
-	return ret;
-}
-
-static struct wlc_call *find_cmd(char *name)
-{
-	int found = 0, i = 0;
-
-	while (!found && (i < wlc_calls_size)) {
-		if (strcmp(name, wlc_calls[i].name) == 0)
-			found = 1;
-		else
-			i++;
-	}
-
-	return (struct wlc_call *) (found ? &wlc_calls[i] : NULL);
-}
-
-int main(int argc, char **argv)
-{
-	static char buf[BUFSIZE];
-	char *s, *s2;
-	char *cmd = argv[0];
-	struct wlc_call *call;
-	int ret = 0;
-
-	if (argc < 2)
-		usage(argv[0]);
-
-	for(interface[2] = '0'; (interface[2] < '3') && (wl_probe(interface) != 0); interface[2]++);
-	if (interface[2] == '3') {
-		fprintf(stderr, "No Broadcom wl interface found!\n");
-		return -1;
-	}
-
-	argv++;
-	argc--;
-	while ((argc > 0) && (argv[0] != NULL)) {
-		if ((call = find_cmd(argv[0])) == NULL) {
-			fprintf(stderr, "Invalid command: %s\n\n", argv[0]);
-			usage(cmd);
-		}
-		if ((argc > 1) && (!(call->param & NOARG))) {
-			ret = do_command(call, argv[1]);
-			argv += 2;
-			argc -= 2;
-		} else {
-			ret = do_command(call, NULL);
-			argv++;
-			argc--;
-		}
-	}
-
-	while (fromstdin && !feof(stdin)) {
-		*buf = 0;
-		fgets(buf, BUFSIZE - 1, stdin);
-		
-		if (*buf == 0)
-			continue;
-		
-		if ((s = strchr(buf, '\r')) != NULL)
-			*s = 0;
-		if ((s = strchr(buf, '\n')) != NULL)
-			*s = 0;
-
-		s = buf;
-		while (isspace(*s))
-			s++;
-
-		if (!*s)
-			continue;
-	
-		if ((s2 = strchr(buf, ' ')) != NULL)
-			*(s2++) = 0;
-		
-		while (s2 && isspace(*s2))
-			s2++;
-		
-		if ((call = find_cmd(buf)) == NULL) {
-			fprintf(stderr, "Invalid command: %s\n", buf);
-			ret = -1;
-		} else
-			ret = do_command(call, ((call->param & NOARG) ? NULL : s2));
-	}
-
-	return ret;
-}
-

--- a/package/busybox/Config.in
+++ /dev/null
@@ -1,7 +1,1 @@
 
-if PACKAGE_busybox
-
-source "package/busybox/config/Config.in"
-
-endif
-

--- a/package/busybox/Makefile
+++ /dev/null
@@ -1,118 +1,1 @@
-# 
-# Copyright (C) 2006-2013 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=busybox
-PKG_VERSION:=1.19.4
-PKG_RELEASE:=6
-PKG_FLAGS:=essential
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://www.busybox.net/downloads \
-		http://distfiles.gentoo.org/distfiles/
-PKG_MD5SUM:=9c0cae5a0379228e7b55e5b29528df8e
-
-PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_FEATURE_HAVE_RPC:librpc
-PKG_BUILD_PARALLEL:=1
-
-PKG_LICENSE:=GPLv2 BSD-4c
-PKG_LICENSE_FILES:=LICENSE archival/libarchive/bz/LICENSE
-
-include $(INCLUDE_DIR)/package.mk
-
-ifeq ($(DUMP),)
-  STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) grep '^CONFIG_BUSYBOX_' $(TOPDIR)/.config | md5s)
-endif
-
-ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
-  BB_MAKE_VERBOSE := V=1
-else
-  BB_MAKE_VERBOSE :=
-endif
-
-init-y :=
-init-$(CONFIG_BUSYBOX_CONFIG_CROND) += cron
-init-$(CONFIG_BUSYBOX_CONFIG_TELNETD) += telnet
-
-define Package/busybox
-  SECTION:=base
-  CATEGORY:=Base system
-  MAINTAINER:=Nicolas Thill <nico@openwrt.org>
-  TITLE:=Core utilities for embedded Linux
-  URL:=http://busybox.net/
-  DEPENDS:=+BUSYBOX_CONFIG_FEATURE_HAVE_RPC:librpc
-  MENU:=1
-endef
-
-define Package/busybox/description
- The Swiss Army Knife of embedded Linux.
- It slices, it dices, it makes Julian Fries.
-endef
-
-define Package/busybox/config
-	source "$(SOURCE)/Config.in"
-endef
-
-define Build/Configure
-	rm -f $(PKG_BUILD_DIR)/.configured*
-	grep 'CONFIG_BUSYBOX_' $(TOPDIR)/.config | sed -e "s,\\(# \)\\?CONFIG_BUSYBOX_\\(.*\\),\\1\\2,g" > $(PKG_BUILD_DIR)/.config
-	yes 'n' | $(MAKE) -C $(PKG_BUILD_DIR) \
-		CC="$(TARGET_CC)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		KBUILD_HAVE_NLS=no \
-		ARCH="$(ARCH)" \
-		$(BB_MAKE_VERBOSE) \
-		oldconfig
-endef
-
-ifdef CONFIG_GCC_VERSION_LLVM
-  TARGET_CFLAGS += -fnested-functions
-endif
-
-LDLIBS:=m crypt
-ifdef CONFIG_BUSYBOX_CONFIG_FEATURE_HAVE_RPC
-  TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
-  export LDFLAGS=$(TARGET_LDFLAGS)
-  LDLIBS += rpc
-endif
-
-define Build/Compile
-	+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
-		CC="$(TARGET_CC)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		KBUILD_HAVE_NLS=no \
-		EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
-		ARCH="$(ARCH)" \
-		SKIP_STRIP=y \
-		LDLIBS="$(LDLIBS)" \
-		$(BB_MAKE_VERBOSE) \
-		all
-	rm -rf $(PKG_INSTALL_DIR)
-	$(FIND) $(PKG_BUILD_DIR) -lname "*busybox" -exec rm \{\} \;
-	$(MAKE) -C $(PKG_BUILD_DIR) \
-		CC="$(TARGET_CC)" \
-		CROSS_COMPILE="$(TARGET_CROSS)" \
-		EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
-		ARCH="$(ARCH)" \
-		CONFIG_PREFIX="$(PKG_INSTALL_DIR)" \
-		LDLIBS="$(LDLIBS)" \
-		$(BB_MAKE_VERBOSE) \
-		install
-endef
-
-define Package/busybox/install
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(CP) $(PKG_INSTALL_DIR)/* $(1)/
-	for tmp in $(init-y); do \
-		$(INSTALL_BIN) ./files/$$$$tmp $(1)/etc/init.d/$$$$tmp; \
-	done
-	-rm -rf $(1)/lib64
-endef
-
-$(eval $(call BuildPackage,busybox))
-

--- a/package/busybox/config/Config.in
+++ /dev/null
@@ -1,779 +1,1 @@
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-
-config BUSYBOX_CONFIG_HAVE_DOT_CONFIG
-	bool
-	default y
-
-menu "Busybox Settings"
-
-menu "General Configuration"
-
-config BUSYBOX_CONFIG_DESKTOP
-	bool "Enable options for full-blown desktop systems"
-	default n
-	help
-	  Enable options and features which are not essential.
-	  Select this only if you plan to use busybox on full-blown
-	  desktop machine with common Linux distro, not on an embedded box.
-
-config BUSYBOX_CONFIG_EXTRA_COMPAT
-	bool "Provide compatible behavior for rare corner cases (bigger code)"
-	default n
-	help
-	  This option makes grep, sed etc handle rare corner cases
-	  (embedded NUL bytes and such). This makes code bigger and uses
-	  some GNU extensions in libc. You probably only need this option
-	  if you plan to run busybox on desktop.
-
-config BUSYBOX_CONFIG_INCLUDE_SUSv2
-	bool "Enable obsolete features removed before SUSv3"
-	default y
-	help
-	  This option will enable backwards compatibility with SuSv2,
-	  specifically, old-style numeric options ('command -1 <file>')
-	  will be supported in head, tail, and fold. (Note: should
-	  affect renice too.)
-
-config BUSYBOX_CONFIG_USE_PORTABLE_CODE
-	bool "Avoid using GCC-specific code constructs"
-	default n
-	help
-	  Use this option if you are trying to compile busybox with
-	  compiler other than gcc.
-	  If you do use gcc, this option may needlessly increase code size.
-
-config BUSYBOX_CONFIG_PLATFORM_LINUX
-	bool "Enable Linux-specific applets and features"
-	default y
-	help
-	  For the most part, busybox requires only POSIX compatibility
-	  from the target system, but some applets and features use
-	  Linux-specific interfaces.
-
-	  Answering 'N' here will disable such applets and hide the
-	  corresponding configuration options.
-
-choice
-	prompt "Buffer allocation policy"
-	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
-	help
-	  There are 3 ways BusyBox can handle buffer allocations:
-	  - Use malloc. This costs code size for the call to xmalloc.
-	  - Put them on stack. For some very small machines with limited stack
-	    space, this can be deadly. For most folks, this works just fine.
-	  - Put them in BSS. This works beautifully for computers with a real
-	    MMU (and OS support), but wastes runtime RAM for uCLinux. This
-	    behavior was the only one available for BusyBox versions 0.48 and
-	    earlier.
-
-config BUSYBOX_CONFIG_FEATURE_BUFFERS_USE_MALLOC
-	bool "Allocate with Malloc"
-
-config BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
-	bool "Allocate on the Stack"
-
-config BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_IN_BSS
-	bool "Allocate in the .bss section"
-
-endchoice
-
-config BUSYBOX_CONFIG_SHOW_USAGE
-	bool "Show terse applet usage messages"
-	default y
-	help
-	  All BusyBox applets will show help messages when invoked with
-	  wrong arguments. You can turn off printing these terse usage
-	  messages if you say no here.
-	  This will save you up to 7k.
-
-config BUSYBOX_CONFIG_FEATURE_VERBOSE_USAGE
-	bool "Show verbose applet usage messages"
-	default y
-	depends on BUSYBOX_CONFIG_SHOW_USAGE
-	help
-	  All BusyBox applets will show more verbose help messages when
-	  busybox is invoked with --help. This will add a lot of text to the
-	  busybox binary. In the default configuration, this will add about
-	  13k, but it can add much more depending on your configuration.
-
-config BUSYBOX_CONFIG_FEATURE_COMPRESS_USAGE
-	bool "Store applet usage messages in compressed form"
-	default y
-	depends on BUSYBOX_CONFIG_SHOW_USAGE
-	help
-	  Store usage messages in compressed form, uncompress them on-the-fly
-	  when <applet> --help is called.
-
-	  If you have a really tiny busybox with few applets enabled (and
-	  bunzip2 isn't one of them), the overhead of the decompressor might
-	  be noticeable. Also, if you run executables directly from ROM
-	  and have very little memory, this might not be a win. Otherwise,
-	  you probably want this.
-
-config BUSYBOX_CONFIG_FEATURE_INSTALLER
-	bool "Support --install [-s] to install applet links at runtime"
-	default n
-	help
-	  Enable 'busybox --install [-s]' support. This will allow you to use
-	  busybox at runtime to create hard links or symlinks for all the
-	  applets that are compiled into busybox.
-
-config BUSYBOX_CONFIG_INSTALL_NO_USR
-	bool "Don't use /usr"
-	default n
-	help
-	  Disable use of /usr. busybox --install and "make install"
-	  will install applets only to /bin and /sbin,
-	  never to /usr/bin or /usr/sbin.
-
-config BUSYBOX_CONFIG_LOCALE_SUPPORT
-	bool "Enable locale support (system needs locale for this to work)"
-	default n
-	help
-	  Enable this if your system has locale support and you would like
-	  busybox to support locale settings.
-
-config BUSYBOX_CONFIG_UNICODE_SUPPORT
-	bool "Support Unicode"
-	default n
-	help
-	  This makes various applets aware that one byte is not
-	  one character on screen.
-
-	  Busybox aims to eventually work correctly with Unicode displays.
-	  Any older encodings are not guaranteed to work.
-	  Probably by the time when busybox will be fully Unicode-clean,
-	  other encodings will be mainly of historic interest.
-
-config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
-	bool "Use libc routines for Unicode (else uses internal ones)"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && BUSYBOX_CONFIG_LOCALE_SUPPORT
-	help
-	  With this option on, Unicode support is implemented using libc
-	  routines. Otherwise, internal implementation is used.
-	  Internal implementation is smaller.
-
-config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
-	bool "Check $LANG environment variable"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
-	help
-	  With this option on, Unicode support is activated
-	  only if LANG variable has the value of the form "xxxx.utf8"
-
-	  Otherwise, Unicode support will be always enabled and active.
-
-config BUSYBOX_CONFIG_SUBST_WCHAR
-	int "Character code to substitute unprintable characters with"
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
-	default 63
-	help
-	  Typical values are 63 for '?' (works with any output device),
-	  30 for ASCII substitute control code,
-	  65533 (0xfffd) for Unicode replacement character.
-
-config BUSYBOX_CONFIG_LAST_SUPPORTED_WCHAR
-	int "Range of supported Unicode characters"
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
-	default 767
-	help
-	  Any character with Unicode value bigger than this is assumed
-	  to be non-printable on output device. Many applets replace
-	  such chars with substitution character.
-
-	  The idea is that many valid printable Unicode chars are
-	  nevertheless are not displayed correctly. Think about
-	  combining charachers, double-wide hieroglyphs, obscure
-	  characters in dozens of ancient scripts...
-	  Many terminals, terminal emulators, xterms etc will fail
-	  to handle them correctly. Choose the smallest value
-	  which suits your needs.
-
-	  Typical values are:
-	  126 - ASCII only
-	  767 (0x2ff) - there are no combining chars in [0..767] range
-			(the range includes Latin 1, Latin Ext. A and B),
-			code is ~700 bytes smaller for this case.
-	  4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
-			code is ~300 bytes smaller for this case.
-	  12799 (0x31ff) - nearly all non-ideographic characters are
-			available in [0..12799] range, including
-			East Asian scripts like katakana, hiragana, hangul,
-			bopomofo...
-	  0 - off, any valid printable Unicode character will be printed.
-
-config BUSYBOX_CONFIG_UNICODE_COMBINING_WCHARS
-	bool "Allow zero-width Unicode characters on output"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
-	help
-	  With this option off, any Unicode char with width of 0
-	  is substituted on output.
-
-config BUSYBOX_CONFIG_UNICODE_WIDE_WCHARS
-	bool "Allow wide Unicode characters on output"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
-	help
-	  With this option off, any Unicode char with width > 1
-	  is substituted on output.
-
-config BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
-	bool "Bidirectional character-aware line input"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
-	help
-	  With this option on, right-to-left Unicode characters
-	  are treated differently on input (e.g. cursor movement).
-
-config BUSYBOX_CONFIG_UNICODE_NEUTRAL_TABLE
-	bool "In bidi input, support non-ASCII neutral chars too"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
-	help
-	  In most cases it's enough to treat only ASCII non-letters
-	  (i.e. punctuation, numbers and space) as characters
-	  with neutral directionality.
-	  With this option on, more extensive (and bigger) table
-	  of neutral chars will be used.
-
-config BUSYBOX_CONFIG_UNICODE_PRESERVE_BROKEN
-	bool "Make it possible to enter sequences of chars which are not Unicode"
-	default n
-	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
-	help
-	  With this option on, on line-editing input (such as used by shells)
-	  invalid UTF-8 bytes are not substituted with the selected
-	  substitution character.
-	  For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
-	  at shell prompt will list file named 0xff (single char name
-	  with char value 255), not file named '?'.
-
-config BUSYBOX_CONFIG_LONG_OPTS
-	bool "Support for --long-options"
-	default y
-	help
-	  Enable this if you want busybox applets to use the gnu --long-option
-	  style, in addition to single character -a -b -c style options.
-
-config BUSYBOX_CONFIG_FEATURE_DEVPTS
-	bool "Use the devpts filesystem for Unix98 PTYs"
-	default y
-	help
-	  Enable if you want BusyBox to use Unix98 PTY support. If enabled,
-	  busybox will use /dev/ptmx for the master side of the pseudoterminal
-	  and /dev/pts/<number> for the slave side. Otherwise, BSD style
-	  /dev/ttyp<number> will be used. To use this option, you should have
-	  devpts mounted.
-
-config BUSYBOX_CONFIG_FEATURE_CLEAN_UP
-	bool "Clean up all memory before exiting (usually not needed)"
-	default n
-	help
-	  As a size optimization, busybox normally exits without explicitly
-	  freeing dynamically allocated memory or closing files. This saves
-	  space since the OS will clean up for us, but it can confuse debuggers
-	  like valgrind, which report tons of memory and resource leaks.
-
-	  Don't enable this unless you have a really good reason to clean
-	  things up manually.
-
-config BUSYBOX_CONFIG_FEATURE_UTMP
-	bool "Support utmp file"
-	default n
-	help
-	  The file /var/run/utmp is used to track who is currently logged in.
-	  With this option on, certain applets (getty, login, telnetd etc)
-	  will create and delete entries there.
-	  "who" applet requires this option.
-
-config BUSYBOX_CONFIG_FEATURE_WTMP
-	bool "Support wtmp file"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_UTMP
-	help
-	  The file /var/run/wtmp is used to track when users have logged into
-	  and logged out of the system.
-	  With this option on, certain applets (getty, login, telnetd etc)
-	  will append new entries there.
-	  "last" applet requires this option.
-
-config BUSYBOX_CONFIG_FEATURE_PIDFILE
-	bool "Support writing pidfiles"
-	default y
-	help
-	  This option makes some applets (e.g. crond, syslogd, inetd) write
-	  a pidfile in /var/run. Some applications rely on them.
-
-config BUSYBOX_CONFIG_FEATURE_SUID
-	bool "Support for SUID/SGID handling"
-	default y
-	help
-	  With this option you can install the busybox binary belonging
-	  to root with the suid bit set, enabling some applets to perform
-	  root-level operations even when run by ordinary users
-	  (for example, mounting of user mounts in fstab needs this).
-
-	  Busybox will automatically drop priviledges for applets
-	  that don't need root access.
-
-	  If you are really paranoid and don't want to do this, build two
-	  busybox binaries with different applets in them (and the appropriate
-	  symlinks pointing to each binary), and only set the suid bit on the
-	  one that needs it.
-
-	  The applets which require root rights (need suid bit or
-	  to be run by root) and will refuse to execute otherwise:
-	  crontab, login, passwd, su, vlock, wall.
-
-	  The applets which will use root rights if they have them
-	  (via suid bit, or because run by root), but would try to work
-	  without root right nevertheless:
-	  findfs, ping[6], traceroute[6], mount.
-
-	  Note that if you DONT select this option, but DO make busybox
-	  suid root, ALL applets will run under root, which is a huge
-	  security hole (think "cp /some/file /etc/passwd").
-
-config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
-	bool "Runtime SUID/SGID configuration via /etc/busybox.conf"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_SUID
-	help
-	  Allow the SUID / SGID state of an applet to be determined at runtime
-	  by checking /etc/busybox.conf. (This is sort of a poor man's sudo.)
-	  The format of this file is as follows:
-
-	  APPLET = [Ssx-][Ssx-][x-] [USER.GROUP]
-
-	  s: USER or GROUP is allowed to execute APPLET.
-	     APPLET will run under USER or GROUP
-	     (reagardless of who's running it).
-	  S: USER or GROUP is NOT allowed to execute APPLET.
-	     APPLET will run under USER or GROUP.
-	     This option is not very sensical.
-	  x: USER/GROUP/others are allowed to execute APPLET.
-	     No UID/GID change will be done when it is run.
-	  -: USER/GROUP/others are not allowed to execute APPLET.
-
-	  An example might help:
-
-	  [SUID]
-	  su = ssx root.0 # applet su can be run by anyone and runs with
-	                  # euid=0/egid=0
-	  su = ssx        # exactly the same
-
-	  mount = sx- root.disk # applet mount can be run by root and members
-	                        # of group disk (but not anyone else)
-	                        # and runs with euid=0 (egid is not changed)
-
-	  cp = --- # disable applet cp for everyone
-
-	  The file has to be owned by user root, group root and has to be
-	  writeable only by root:
-	        (chown 0.0 /etc/busybox.conf; chmod 600 /etc/busybox.conf)
-	  The busybox executable has to be owned by user root, group
-	  root and has to be setuid root for this to work:
-	        (chown 0.0 /bin/busybox; chmod 4755 /bin/busybox)
-
-	  Robert 'sandman' Griebl has more information here:
-	  <url: http://www.softforge.de/bb/suid.html >.
-
-config BUSYBOX_CONFIG_FEATURE_SUID_CONFIG_QUIET
-	bool "Suppress warning message if /etc/busybox.conf is not readable"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_SUID_CONFIG
-	help
-	  /etc/busybox.conf should be readable by the user needing the SUID,
-	  check this option to avoid users to be notified about missing
-	  permissions.
-
-config BUSYBOX_CONFIG_SELINUX
-	bool "Support NSA Security Enhanced Linux"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Enable support for SELinux in applets ls, ps, and id. Also provide
-	  the option of compiling in SELinux applets.
-
-	  If you do not have a complete SELinux userland installed, this stuff
-	  will not compile. Go visit
-		http://www.nsa.gov/selinux/index.html
-	  to download the necessary stuff to allow busybox to compile with
-	  this option enabled. Specifially, libselinux 1.28 or better is
-	  directly required by busybox. If the installation is located in a
-	  non-standard directory, provide it by invoking make as follows:
-		CFLAGS=-I<libselinux-include-path> \
-		LDFLAGS=-L<libselinux-lib-path> \
-		make
-
-	  Most people will leave this set to 'N'.
-
-config BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
-	bool "exec prefers applets"
-	default y
-	help
-	  This is an experimental option which directs applets about to
-	  call 'exec' to try and find an applicable busybox applet before
-	  searching the PATH. This is typically done by exec'ing
-	  /proc/self/exe.
-	  This may affect shell, find -exec, xargs and similar applets.
-	  They will use applets even if /bin/<applet> -> busybox link
-	  is missing (or is not a link to busybox). However, this causes
-	  problems in chroot jails without mounted /proc and with ps/top
-	  (command name can be shown as 'exe' for applets started this way).
-
-config BUSYBOX_CONFIG_BUSYBOX_EXEC_PATH
-	string "Path to BusyBox executable"
-	default "/proc/self/exe"
-	help
-	  When Busybox applets need to run other busybox applets, BusyBox
-	  sometimes needs to exec() itself. When the /proc filesystem is
-	  mounted, /proc/self/exe always points to the currently running
-	  executable. If you haven't got /proc, set this to wherever you
-	  want to run BusyBox from.
-
-# These are auto-selected by other options
-
-config BUSYBOX_CONFIG_FEATURE_SYSLOG
-	bool #No description makes it a hidden option
-	default y
-	#help
-	#  This option is auto-selected when you select any applet which may
-	#  send its output to syslog. You do not need to select it manually.
-
-config BUSYBOX_CONFIG_FEATURE_HAVE_RPC
-	bool #No description makes it a hidden option
-	default n
-	#help
-	#  This is automatically selected if any of enabled applets need it.
-	#  You do not need to select it manually.
-
-endmenu
-
-menu 'Build Options'
-
-config BUSYBOX_CONFIG_STATIC
-	bool "Build BusyBox as a static binary (no shared libs)"
-	default n
-	help
-	  If you want to build a static BusyBox binary, which does not
-	  use or require any shared libraries, then enable this option.
-	  This can cause BusyBox to be considerably larger, so you should
-	  leave this option false unless you have a good reason (i.e.
-	  your target platform does not support shared libraries, or
-	  you are building an initrd which doesn't need anything but
-	  BusyBox, etc).
-
-	  Most people will leave this set to 'N'.
-
-config BUSYBOX_CONFIG_PIE
-	bool "Build BusyBox as a position independent executable"
-	default n
-	depends on !BUSYBOX_CONFIG_STATIC
-	help
-	  Hardened code option. PIE binaries are loaded at a different
-	  address at each invocation. This has some overhead,
-	  particularly on x86-32 which is short on registers.
-
-	  Most people will leave this set to 'N'.
-
-config BUSYBOX_CONFIG_NOMMU
-	bool "Force NOMMU build"
-	default n
-	help
-	  Busybox tries to detect whether architecture it is being
-	  built against supports MMU or not. If this detection fails,
-	  or if you want to build NOMMU version of busybox for testing,
-	  you may force NOMMU build here.
-
-	  Most people will leave this set to 'N'.
-
-# PIE can be made to work with BUILD_LIBBUSYBOX, but currently
-# build system does not support that
-config BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
-	bool "Build shared libbusybox"
-	default n
-	depends on !BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS && !BUSYBOX_CONFIG_PIE && !BUSYBOX_CONFIG_STATIC
-	help
-	  Build a shared library libbusybox.so.N.N.N which contains all
-	  busybox code.
-
-	  This feature allows every applet to be built as a tiny
-	  separate executable. Enabling it for "one big busybox binary"
-	  approach serves no purpose and increases code size.
-	  You should almost certainly say "no" to this.
-
-### config FEATURE_FULL_LIBBUSYBOX
-###	bool "Feature-complete libbusybox"
-###	default n if !FEATURE_SHARED_BUSYBOX
-###	depends on BUILD_LIBBUSYBOX
-###	help
-###	  Build a libbusybox with the complete feature-set, disregarding
-###	  the actually selected config.
-###
-###	  Normally, libbusybox will only contain the features which are
-###	  used by busybox itself. If you plan to write a separate
-###	  standalone application which uses libbusybox say 'Y'.
-###
-###	  Note: libbusybox is GPL, not LGPL, and exports no stable API that
-###	  might act as a copyright barrier. We can and will modify the
-###	  exported function set between releases (even minor version number
-###	  changes), and happily break out-of-tree features.
-###
-###	  Say 'N' if in doubt.
-
-config BUSYBOX_CONFIG_FEATURE_INDIVIDUAL
-	bool "Produce a binary for each applet, linked against libbusybox"
-	default n
-	depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
-	help
-	  If your CPU architecture doesn't allow for sharing text/rodata
-	  sections of running binaries, but allows for runtime dynamic
-	  libraries, this option will allow you to reduce memory footprint
-	  when you have many different applets running at once.
-
-	  If your CPU architecture allows for sharing text/rodata,
-	  having single binary is more optimal.
-
-	  Each applet will be a tiny program, dynamically linked
-	  against libbusybox.so.N.N.N.
-
-	  You need to have a working dynamic linker.
-
-config BUSYBOX_CONFIG_FEATURE_SHARED_BUSYBOX
-	bool "Produce additional busybox binary linked against libbusybox"
-	default n
-	depends on BUSYBOX_CONFIG_BUILD_LIBBUSYBOX
-	help
-	  Build busybox, dynamically linked against libbusybox.so.N.N.N.
-
-	  You need to have a working dynamic linker.
-
-### config BUILD_AT_ONCE
-###	bool "Compile all sources at once"
-###	default n
-###	help
-###	  Normally each source-file is compiled with one invocation of
-###	  the compiler.
-###	  If you set this option, all sources are compiled at once.
-###	  This gives the compiler more opportunities to optimize which can
-###	  result in smaller and/or faster binaries.
-###
-###	  Setting this option will consume alot of memory, e.g. if you
-###	  enable all applets with all features, gcc uses more than 300MB
-###	  RAM during compilation of busybox.
-###
-###	  This option is most likely only beneficial for newer compilers
-###	  such as gcc-4.1 and above.
-###
-###	  Say 'N' unless you know what you are doing.
-
-config BUSYBOX_CONFIG_LFS
-	bool
-	default y
-	help
-	  If you want to build BusyBox with large file support, then enable
-	  this option. This will have no effect if your kernel or your C
-	  library lacks large file support for large files. Some of the
-	  programs that can benefit from large file support include dd, gzip,
-	  cp, mount, tar, and many others. If you want to access files larger
-	  than 2 Gigabytes, enable this option. Otherwise, leave it set to 'N'.
-
-config BUSYBOX_CONFIG_CROSS_COMPILER_PREFIX
-	string "Cross Compiler prefix"
-	default ""
-	help
-	  If you want to build BusyBox with a cross compiler, then you
-	  will need to set this to the cross-compiler prefix, for example,
-	  "i386-uclibc-".
-
-	  Note that CROSS_COMPILE environment variable or
-	  "make CROSS_COMPILE=xxx ..." will override this selection.
-
-	  Native builds leave this empty.
-
-config BUSYBOX_CONFIG_EXTRA_CFLAGS
-	string "Additional CFLAGS"
-	default ""
-	help
-	  Additional CFLAGS to pass to the compiler verbatim.
-
-endmenu
-
-menu 'Debugging Options'
-
-config BUSYBOX_CONFIG_DEBUG
-	bool "Build BusyBox with extra Debugging symbols"
-	default n
-	help
-	  Say Y here if you wish to examine BusyBox internals while applets are
-	  running. This increases the size of the binary considerably, and
-	  should only be used when doing development. If you are doing
-	  development and want to debug BusyBox, answer Y.
-
-	  Most people should answer N.
-
-config BUSYBOX_CONFIG_DEBUG_PESSIMIZE
-	bool "Disable compiler optimizations"
-	default n
-	depends on BUSYBOX_CONFIG_DEBUG
-	help
-	  The compiler's optimization of source code can eliminate and reorder
-	  code, resulting in an executable that's hard to understand when
-	  stepping through it with a debugger. This switches it off, resulting
-	  in a much bigger executable that more closely matches the source
-	  code.
-
-config BUSYBOX_CONFIG_WERROR
-	bool "Abort compilation on any warning"
-	default n
-	help
-	  Selecting this will add -Werror to gcc command line.
-
-	  Most people should answer N.
-
-choice
-	prompt "Additional debugging library"
-	default BUSYBOX_CONFIG_NO_DEBUG_LIB
-	help
-	  Using an additional debugging library will make BusyBox become
-	  considerable larger and will cause it to run more slowly. You
-	  should always leave this option disabled for production use.
-
-	  dmalloc support:
-	  ----------------
-	  This enables compiling with dmalloc ( http://dmalloc.com/ )
-	  which is an excellent public domain mem leak and malloc problem
-	  detector. To enable dmalloc, before running busybox you will
-	  want to properly set your environment, for example:
-	    export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
-	  The 'debug=' value is generated using the following command
-	    dmalloc -p log-stats -p log-non-free -p log-bad-space \
-	       -p log-elapsed-time -p check-fence -p check-heap \
-	       -p check-lists -p check-blank -p check-funcs -p realloc-copy \
-	       -p allow-free-null
-
-	  Electric-fence support:
-	  -----------------------
-	  This enables compiling with Electric-fence support. Electric
-	  fence is another very useful malloc debugging library which uses
-	  your computer's virtual memory hardware to detect illegal memory
-	  accesses. This support will make BusyBox be considerable larger
-	  and run slower, so you should leave this option disabled unless
-	  you are hunting a hard to find memory problem.
-
-
-config BUSYBOX_CONFIG_NO_DEBUG_LIB
-	bool "None"
-
-config BUSYBOX_CONFIG_DMALLOC
-	bool "Dmalloc"
-
-config BUSYBOX_CONFIG_EFENCE
-	bool "Electric-fence"
-
-endchoice
-
-endmenu
-
-menu 'Installation Options ("make install" behavior)'
-
-choice
-	prompt "What kind of applet links to install"
-	default BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
-	help
-	  Choose what kind of links to applets are created by "make install".
-
-config BUSYBOX_CONFIG_INSTALL_APPLET_SYMLINKS
-	bool "as soft-links"
-	help
-	  Install applets as soft-links to the busybox binary. This needs some
-	  free inodes on the filesystem, but might help with filesystem
-	  generators that can't cope with hard-links.
-
-config BUSYBOX_CONFIG_INSTALL_APPLET_HARDLINKS
-	bool "as hard-links"
-	help
-	  Install applets as hard-links to the busybox binary. This might
-	  count on a filesystem with few inodes.
-
-config BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS
-	bool "as script wrappers"
-	help
-	  Install applets as script wrappers that call the busybox binary.
-
-config BUSYBOX_CONFIG_INSTALL_APPLET_DONT
-	bool "not installed"
-	help
-	  Do not install applet links. Useful when you plan to use
-	  busybox --install for installing links, or plan to use
-	  a standalone shell and thus don't need applet links.
-
-endchoice
-
-choice
-	prompt "/bin/sh applet link"
-	default BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK
-	depends on BUSYBOX_CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS
-	help
-	  Choose how you install /bin/sh applet link.
-
-config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SYMLINK
-	bool "as soft-link"
-	help
-	  Install /bin/sh applet as soft-link to the busybox binary.
-
-config BUSYBOX_CONFIG_INSTALL_SH_APPLET_HARDLINK
-	bool "as hard-link"
-	help
-	  Install /bin/sh applet as hard-link to the busybox binary.
-
-config BUSYBOX_CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER
-	bool "as script wrapper"
-	help
-	  Install /bin/sh applet as script wrapper that calls
-	  the busybox binary.
-
-endchoice
-
-config BUSYBOX_CONFIG_PREFIX
-	string "BusyBox installation prefix"
-	default "./_install"
-	help
-	  Define your directory to install BusyBox files/subdirs in.
-
-endmenu
-
-source package/busybox/config/libbb/Config.in
-
-endmenu
-
-comment "Applets"
-
-source package/busybox/config/archival/Config.in
-source package/busybox/config/coreutils/Config.in
-source package/busybox/config/console-tools/Config.in
-source package/busybox/config/debianutils/Config.in
-source package/busybox/config/editors/Config.in
-source package/busybox/config/findutils/Config.in
-source package/busybox/config/init/Config.in
-source package/busybox/config/loginutils/Config.in
-source package/busybox/config/e2fsprogs/Config.in
-source package/busybox/config/modutils/Config.in
-source package/busybox/config/util-linux/Config.in
-source package/busybox/config/miscutils/Config.in
-source package/busybox/config/networking/Config.in
-source package/busybox/config/printutils/Config.in
-source package/busybox/config/mailutils/Config.in
-source package/busybox/config/procps/Config.in
-source package/busybox/config/runit/Config.in
-source package/busybox/config/selinux/Config.in
-source package/busybox/config/shell/Config.in
-source package/busybox/config/sysklogd/Config.in
-

--- a/package/busybox/config/archival/Config.in
+++ /dev/null
@@ -1,381 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Archival Utilities"
-
-
-
-config BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ
-	bool "Make tar, rpm, modprobe etc understand .xz data"
-	default n
-	help
-	  Make tar, rpm, modprobe etc understand .xz data.
-
-config BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
-	bool "Make tar, rpm, modprobe etc understand .lzma data"
-	default n
-	help
-	  Make tar, rpm, modprobe etc understand .lzma data.
-
-config BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2
-	bool "Make tar, rpm, modprobe etc understand .bz2 data"
-	default n
-	help
-	  Make tar, rpm, modprobe etc understand .bz2 data.
-
-config BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
-	bool "Make tar, rpm, modprobe etc understand .gz data"
-	default y
-	help
-	  Make tar, rpm, modprobe etc understand .gz data.
-
-config BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z
-	bool "Make tar and gunzip understand .Z data"
-	default n
-	help
-	  Make tar and gunzip understand .Z data.
-
-config BUSYBOX_CONFIG_AR
-	bool "ar"
-	default n  # needs to be improved to be able to replace binutils ar
-	help
-	  ar is an archival utility program used to create, modify, and
-	  extract contents from archives. An archive is a single file holding
-	  a collection of other files in a structure that makes it possible to
-	  retrieve the original individual files (called archive members).
-	  The original files' contents, mode (permissions), timestamp, owner,
-	  and group are preserved in the archive, and can be restored on
-	  extraction.
-
-	  The stored filename is limited to 15 characters. (for more information
-	  see long filename support).
-	  ar has 60 bytes of overheads for every stored file.
-
-	  This implementation of ar can extract archives, it cannot create or
-	  modify them.
-	  On an x86 system, the ar applet adds about 1K.
-
-	  Unless you have a specific application which requires ar, you should
-	  probably say N here.
-
-config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
-	bool "Support for long filenames (not needed for debs)"
-	default n
-	depends on BUSYBOX_CONFIG_AR
-	help
-	  By default the ar format can only store the first 15 characters
-	  of the filename, this option removes that limitation.
-	  It supports the GNU ar long filename method which moves multiple long
-	  filenames into a the data section of a new ar entry.
-
-config BUSYBOX_CONFIG_FEATURE_AR_CREATE
-	bool "Support archive creation"
-	default n
-	depends on BUSYBOX_CONFIG_AR
-	help
-	  This enables archive creation (-c and -r) with busybox ar.
-
-config BUSYBOX_CONFIG_BUNZIP2
-	bool "bunzip2"
-	default y
-	help
-	  bunzip2 is a compression utility using the Burrows-Wheeler block
-	  sorting text compression algorithm, and Huffman coding. Compression
-	  is generally considerably better than that achieved by more
-	  conventional LZ77/LZ78-based compressors, and approaches the
-	  performance of the PPM family of statistical compressors.
-
-	  Unless you have a specific application which requires bunzip2, you
-	  should probably say N here.
-
-config BUSYBOX_CONFIG_BZIP2
-	bool "bzip2"
-	default n
-	help
-	  bzip2 is a compression utility using the Burrows-Wheeler block
-	  sorting text compression algorithm, and Huffman coding. Compression
-	  is generally considerably better than that achieved by more
-	  conventional LZ77/LZ78-based compressors, and approaches the
-	  performance of the PPM family of statistical compressors.
-
-	  Unless you have a specific application which requires bzip2, you
-	  should probably say N here.
-
-config BUSYBOX_CONFIG_CPIO
-	bool "cpio"
-	default n
-	help
-	  cpio is an archival utility program used to create, modify, and
-	  extract contents from archives.
-	  cpio has 110 bytes of overheads for every stored file.
-
-	  This implementation of cpio can extract cpio archives created in the
-	  "newc" or "crc" format, it cannot create or modify them.
-
-	  Unless you have a specific application which requires cpio, you
-	  should probably say N here.
-
-config BUSYBOX_CONFIG_FEATURE_CPIO_O
-	bool "Support for archive creation"
-	default n
-	depends on BUSYBOX_CONFIG_CPIO
-	help
-	  This implementation of cpio can create cpio archives in the "newc"
-	  format only.
-
-config BUSYBOX_CONFIG_FEATURE_CPIO_P
-	bool "Support for passthrough mode"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_CPIO_O
-	help
-	  Passthrough mode. Rarely used.
-
-config BUSYBOX_CONFIG_DPKG
-	bool "dpkg"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
-	help
-	  dpkg is a medium-level tool to install, build, remove and manage
-	  Debian packages.
-
-	  This implementation of dpkg has a number of limitations,
-	  you should use the official dpkg if possible.
-
-config BUSYBOX_CONFIG_DPKG_DEB
-	bool "dpkg_deb"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
-	help
-	  dpkg-deb unpacks and provides information about Debian archives.
-
-	  This implementation of dpkg-deb cannot pack archives.
-
-	  Unless you have a specific application which requires dpkg-deb,
-	  say N here.
-
-config BUSYBOX_CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY
-	bool "Extract only (-x)"
-	default n
-	depends on BUSYBOX_CONFIG_DPKG_DEB
-	help
-	  This reduces dpkg-deb to the equivalent of
-	  "ar -p <deb> data.tar.gz | tar -zx". However it saves space as none
-	  of the extra dpkg-deb, ar or tar options are needed, they are linked
-	  to internally.
-
-config BUSYBOX_CONFIG_GUNZIP
-	bool "gunzip"
-	default y
-	help
-	  gunzip is used to decompress archives created by gzip.
-	  You can use the `-t' option to test the integrity of
-	  an archive, without decompressing it.
-
-config BUSYBOX_CONFIG_GZIP
-	bool "gzip"
-	default y
-	help
-	  gzip is used to compress files.
-	  It's probably the most widely used UNIX compression program.
-
-config BUSYBOX_CONFIG_FEATURE_GZIP_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_GZIP && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Enable use of long options, increases size by about 106 Bytes
-
-config BUSYBOX_CONFIG_LZOP
-	bool "lzop"
-	default n
-	help
-	  Lzop compression/decompresion.
-
-config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
-	bool "lzop compression levels 7,8,9 (not very useful)"
-	default n
-	depends on BUSYBOX_CONFIG_LZOP
-	help
-	  High levels (7,8,9) of lzop compression. These levels
-	  are actually slower than gzip at equivalent compression ratios
-	  and take up 3.2K of code.
-
-config BUSYBOX_CONFIG_RPM2CPIO
-	bool "rpm2cpio"
-	default n
-	help
-	  Converts a RPM file into a CPIO archive.
-
-config BUSYBOX_CONFIG_RPM
-	bool "rpm"
-	default n
-	help
-	  Mini RPM applet - queries and extracts RPM packages.
-
-config BUSYBOX_CONFIG_TAR
-	bool "tar"
-	default y
-	help
-	  tar is an archiving program. It's commonly used with gzip to
-	  create compressed archives. It's probably the most widely used
-	  UNIX archive program.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_CREATE
-	bool "Enable archive creation"
-	default y
-	depends on BUSYBOX_CONFIG_TAR
-	help
-	  If you enable this option you'll be able to create
-	  tar archives using the `-c' option.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
-	bool "Autodetect compressed tarballs"
-	default n
-	depends on BUSYBOX_CONFIG_TAR && (BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA || BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ)
-	help
-	  With this option tar can automatically detect compressed
-	  tarballs. Currently it works only on files (not pipes etc).
-
-config BUSYBOX_CONFIG_FEATURE_TAR_FROM
-	bool "Enable -X (exclude from) and -T (include from) options)"
-	default y
-	depends on BUSYBOX_CONFIG_TAR
-	help
-	  If you enable this option you'll be able to specify
-	  a list of files to include or exclude from an archive.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
-	bool "Support for old tar header format"
-	default n
-	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
-	help
-	  This option is required to unpack archives created in
-	  the old GNU format; help to kill this old format by
-	  repacking your ancient archives with the new format.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
-	bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
-	default n
-	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
-	help
-	  This option is required to unpack archives created by some old
-	  version of Sun's tar (it was calculating checksum using signed
-	  arithmetic). It is said to be fixed in newer Sun tar, but "old"
-	  tarballs still exist.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
-	bool "Support for GNU tar extensions (long filenames)"
-	default y
-	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
-	help
-	  With this option busybox supports GNU long filenames and
-	  linknames.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Enable use of long options, increases size by about 400 Bytes
-
-config BUSYBOX_CONFIG_FEATURE_TAR_TO_COMMAND
-	bool "Support for writing to an external program"
-	default n
-	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
-	help
-	  If you enable this option you'll be able to instruct tar to send
-	  the contents of each extracted file to the standard input of an
-	  external program.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
-	bool "Enable use of user and group names"
-	default n
-	depends on BUSYBOX_CONFIG_TAR
-	help
-	  Enables use of user and group names in tar. This affects contents
-	  listings (-t) and preserving permissions when unpacking (-p).
-	  +200 bytes.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_NOPRESERVE_TIME
-	bool "Enable -m (do not preserve time) option"
-	default n
-	depends on BUSYBOX_CONFIG_TAR
-	help
-	  With this option busybox supports GNU tar -m
-	  (do not preserve time) option.
-
-config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX
-	bool "Support for extracting SELinux labels"
-	default n
-	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_SELINUX
-	help
-	  With this option busybox supports restoring SELinux labels
-	  when extracting files from tar archives.
-
-config BUSYBOX_CONFIG_UNCOMPRESS
-	bool "uncompress"
-	default n
-	help
-	  uncompress is used to decompress archives created by compress.
-	  Not much used anymore, replaced by gzip/gunzip.
-
-config BUSYBOX_CONFIG_UNLZMA
-	bool "unlzma"
-	default n
-	help
-	  unlzma is a compression utility using the Lempel-Ziv-Markov chain
-	  compression algorithm, and range coding. Compression
-	  is generally considerably better than that achieved by the bzip2
-	  compressors.
-
-	  The BusyBox unlzma applet is limited to de-compression only.
-	  On an x86 system, this applet adds about 4K.
-
-	  Unless you have a specific application which requires unlzma, you
-	  should probably say N here.
-
-config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
-	bool "Optimize unlzma for speed"
-	default n
-	depends on BUSYBOX_CONFIG_UNLZMA
-	help
-	  This option reduces decompression time by about 25% at the cost of
-	  a 1K bigger binary.
-
-config BUSYBOX_CONFIG_LZMA
-	bool "Provide lzma alias which supports only unpacking"
-	default n
-	depends on BUSYBOX_CONFIG_UNLZMA
-	help
-	  Enable this option if you want commands like "lzma -d" to work.
-	  IOW: you'll get lzma applet, but it will always require -d option.
-
-config BUSYBOX_CONFIG_UNXZ
-	bool "unxz"
-	default n
-	help
-	  unxz is a unlzma successor.
-
-config BUSYBOX_CONFIG_XZ
-	bool "Provide xz alias which supports only unpacking"
-	default n
-	depends on BUSYBOX_CONFIG_UNXZ
-	help
-	  Enable this option if you want commands like "xz -d" to work.
-	  IOW: you'll get xz applet, but it will always require -d option.
-
-config BUSYBOX_CONFIG_UNZIP
-	bool "unzip"
-	default n
-	help
-	  unzip will list or extract files from a ZIP archive,
-	  commonly found on DOS/WIN systems. The default behavior
-	  (with no options) is to extract the archive into the
-	  current directory. Use the `-d' option to extract to a
-	  directory of your choice.
-
-endmenu
-

--- a/package/busybox/config/console-tools/Config.in
+++ /dev/null
@@ -1,178 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Console Utilities"
-
-
-
-config BUSYBOX_CONFIG_CHVT
-	bool "chvt"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program is used to change to another terminal.
-	  Example: chvt 4 (change to terminal /dev/tty4)
-
-config BUSYBOX_CONFIG_FGCONSOLE
-	bool "fgconsole"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program prints active (foreground) console number.
-
-config BUSYBOX_CONFIG_CLEAR
-	bool "clear"
-	default y
-	help
-	  This program clears the terminal screen.
-
-config BUSYBOX_CONFIG_DEALLOCVT
-	bool "deallocvt"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program deallocates unused virtual consoles.
-
-config BUSYBOX_CONFIG_DUMPKMAP
-	bool "dumpkmap"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program dumps the kernel's keyboard translation table to
-	  stdout, in binary format. You can then use loadkmap to load it.
-
-config BUSYBOX_CONFIG_KBD_MODE
-	bool "kbd_mode"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program reports and sets keyboard mode.
-
-config BUSYBOX_CONFIG_LOADFONT
-	bool "loadfont"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program loads a console font from standard input.
-
-config BUSYBOX_CONFIG_LOADKMAP
-	bool "loadkmap"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program loads a keyboard translation table from
-	  standard input.
-
-config BUSYBOX_CONFIG_OPENVT
-	bool "openvt"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program is used to start a command on an unused
-	  virtual terminal.
-
-config BUSYBOX_CONFIG_RESET
-	bool "reset"
-	default y
-	help
-	  This program is used to reset the terminal screen, if it
-	  gets messed up.
-
-config BUSYBOX_CONFIG_RESIZE
-	bool "resize"
-	default n
-	help
-	  This program is used to (re)set the width and height of your current
-	  terminal.
-
-config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
-	bool "Print environment variables"
-	default n
-	depends on BUSYBOX_CONFIG_RESIZE
-	help
-	  Prints the newly set size (number of columns and rows) of
-	  the terminal.
-	  E.g.:
-	  COLUMNS=80;LINES=44;export COLUMNS LINES;
-
-config BUSYBOX_CONFIG_SETCONSOLE
-	bool "setconsole"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program redirects the system console to another device,
-	  like the current tty while logged in via telnet.
-
-config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_SETCONSOLE && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the setconsole applet.
-
-config BUSYBOX_CONFIG_SETFONT
-	bool "setfont"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Allows to load console screen map. Useful for i18n.
-
-config BUSYBOX_CONFIG_FEATURE_SETFONT_TEXTUAL_MAP
-	bool "Support reading textual screen maps"
-	default n
-	depends on BUSYBOX_CONFIG_SETFONT
-	help
-	  Support reading textual screen maps.
-
-config BUSYBOX_CONFIG_DEFAULT_SETFONT_DIR
-	string "Default directory for console-tools files"
-	default ""
-	depends on BUSYBOX_CONFIG_SETFONT
-	help
-	  Directory to use if setfont's params are simple filenames
-	  (not /path/to/file or ./file). Default is "" (no default directory).
-
-config BUSYBOX_CONFIG_SETKEYCODES
-	bool "setkeycodes"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program loads entries into the kernel's scancode-to-keycode
-	  map, allowing unusual keyboards to generate usable keycodes.
-
-config BUSYBOX_CONFIG_SETLOGCONS
-	bool "setlogcons"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This program redirects the output console of kernel messages.
-
-config BUSYBOX_CONFIG_SHOWKEY
-	bool "showkey"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Shows keys pressed.
-
-comment "Common options for loadfont and setfont"
-	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
-
-config BUSYBOX_CONFIG_FEATURE_LOADFONT_PSF2
-	bool "Support for PSF2 console fonts"
-	default n
-	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
-	help
-	  Support PSF2 console fonts.
-
-config BUSYBOX_CONFIG_FEATURE_LOADFONT_RAW
-	bool "Support for old (raw) console fonts"
-	default n
-	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
-	help
-	  Support old (raw) console fonts.
-
-endmenu
-

--- a/package/busybox/config/coreutils/Config.in
+++ /dev/null
@@ -1,914 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Coreutils"
-
-config BUSYBOX_CONFIG_BASENAME
-	bool "basename"
-	default y
-	help
-	  basename is used to strip the directory and suffix from filenames,
-	  leaving just the filename itself. Enable this option if you wish
-	  to enable the 'basename' utility.
-config BUSYBOX_CONFIG_CAT
-	bool "cat"
-	default y
-	help
-	  cat is used to concatenate files and print them to the standard
-	  output. Enable this option if you wish to enable the 'cat' utility.
-config BUSYBOX_CONFIG_DATE
-	bool "date"
-	default y
-	help
-	  date is used to set the system date or display the
-	  current time in the given format.
-
-config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
-	bool "Enable ISO date format output (-I)"
-	default y
-	depends on BUSYBOX_CONFIG_DATE
-	help
-	  Enable option (-I) to output an ISO-8601 compliant
-	  date/time string.
-
-# defaults to "no": stat's nanosecond field is a bit non-portable
-config BUSYBOX_CONFIG_FEATURE_DATE_NANO
-	bool "Support %[num]N nanosecond format specifier"
-	default n
-	depends on BUSYBOX_CONFIG_DATE  # syscall(__NR_clock_gettime)
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Support %[num]N format specifier. Adds ~250 bytes of code.
-
-config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
-	bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format"
-	default n
-	depends on BUSYBOX_CONFIG_DATE
-	help
-	  System time can be set by 'date -s DATE' and simply 'date DATE',
-	  but formats of DATE string are different. 'date DATE' accepts
-	  a rather weird MMDDhhmm[[YY]YY][.ss] format with completely
-	  unnatural placement of year between minutes and seconds.
-	  date -s (and other commands like touch -d) use more sensible
-	  formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss).
-
-	  With this option off, 'date DATE' is 'date -s DATE' support
-	  the same format. With it on, 'date DATE' additionally supports
-	  MMDDhhmm[[YY]YY][.ss] format.
-config BUSYBOX_CONFIG_ID
-	bool "id"
-	default y
-	help
-	  id displays the current user and group ID names.
-config BUSYBOX_CONFIG_GROUPS
-	bool "groups"
-	default n
-	help
-	  Print the group names associated with current user id.
-config BUSYBOX_CONFIG_TEST
-	bool "test"
-	default y
-	help
-	  test is used to check file types and compare values,
-	  returning an appropriate exit code. The bash shell
-	  has test built in, ash can build it in optionally.
-
-config BUSYBOX_CONFIG_FEATURE_TEST_64
-	bool "Extend test to 64 bit"
-	default y
-	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_ASH_BUILTIN_TEST || BUSYBOX_CONFIG_HUSH
-	help
-	  Enable 64-bit support in test.
-config BUSYBOX_CONFIG_TOUCH
-	bool "touch"
-	default y
-	help
-	  touch is used to create or change the access and/or
-	  modification timestamp of specified files.
-config BUSYBOX_CONFIG_TR
-	bool "tr"
-	default y
-	help
-	  tr is used to squeeze, and/or delete characters from standard
-	  input, writing to standard output.
-
-config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
-	bool "Enable character classes (such as [:upper:])"
-	default n
-	depends on BUSYBOX_CONFIG_TR
-	help
-	  Enable character classes, enabling commands such as:
-	  tr [:upper:] [:lower:] to convert input into lowercase.
-
-config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
-	bool "Enable equivalence classes"
-	default n
-	depends on BUSYBOX_CONFIG_TR
-	help
-	  Enable equivalence classes, which essentially add the enclosed
-	  character to the current set. For instance, tr [=a=] xyz would
-	  replace all instances of 'a' with 'xyz'. This option is mainly
-	  useful for cases when no other way of expressing a character
-	  is possible.
-config BUSYBOX_CONFIG_BASE64
-	bool "base64"
-	default n
-	help
-	  Base64 encode and decode
-config BUSYBOX_CONFIG_WHO
-      bool "who"
-      default n
-      depends on BUSYBOX_CONFIG_FEATURE_UTMP
-      help
-        who is used to show who is logged on.
-config BUSYBOX_CONFIG_USERS
-      bool "users"
-      default n
-      depends on BUSYBOX_CONFIG_FEATURE_UTMP
-      help
-        Print users currently logged on.
-
-config BUSYBOX_CONFIG_CAL
-	bool "cal"
-	default n
-	help
-	  cal is used to display a monthly calender.
-
-config BUSYBOX_CONFIG_CATV
-	bool "catv"
-	default n
-	help
-	  Display nonprinting characters as escape sequences (like some
-	  implementations' cat -v option).
-
-config BUSYBOX_CONFIG_CHGRP
-	bool "chgrp"
-	default y
-	help
-	  chgrp is used to change the group ownership of files.
-
-config BUSYBOX_CONFIG_CHMOD
-	bool "chmod"
-	default y
-	help
-	  chmod is used to change the access permission of files.
-
-config BUSYBOX_CONFIG_CHOWN
-	bool "chown"
-	default y
-	help
-	  chown is used to change the user and/or group ownership
-	  of files.
-
-config BUSYBOX_CONFIG_FEATURE_CHOWN_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_CHOWN && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Enable use of long options
-
-config BUSYBOX_CONFIG_CHROOT
-	bool "chroot"
-	default y
-	help
-	  chroot is used to change the root directory and run a command.
-	  The default command is `/bin/sh'.
-
-config BUSYBOX_CONFIG_CKSUM
-	bool "cksum"
-	default n
-	help
-	  cksum is used to calculate the CRC32 checksum of a file.
-
-config BUSYBOX_CONFIG_COMM
-	bool "comm"
-	default n
-	help
-	  comm is used to compare two files line by line and return
-	  a three-column output.
-
-config BUSYBOX_CONFIG_CP
-	bool "cp"
-	default y
-	help
-	  cp is used to copy files and directories.
-
-config BUSYBOX_CONFIG_FEATURE_CP_LONG_OPTIONS
-	bool "Enable long options for cp"
-	default n
-	depends on BUSYBOX_CONFIG_CP && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Enable long options for cp.
-	  Also add support for --parents option.
-
-config BUSYBOX_CONFIG_CUT
-	bool "cut"
-	default y
-	help
-	  cut is used to print selected parts of lines from
-	  each file to stdout.
-
-config BUSYBOX_CONFIG_DD
-	bool "dd"
-	default y
-	help
-	  dd copies a file (from standard input to standard output,
-	  by default) using specific input and output blocksizes,
-	  while optionally performing conversions on it.
-
-config BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
-	bool "Enable DD signal handling for status reporting"
-	default y
-	depends on BUSYBOX_CONFIG_DD
-	help
-	  Sending a SIGUSR1 signal to a running `dd' process makes it
-	  print to standard error the number of records read and written
-	  so far, then to resume copying.
-
-	  $ dd if=/dev/zero of=/dev/null&
-	  $ pid=$! kill -USR1 $pid; sleep 1; kill $pid
-	  10899206+0 records in
-	  10899206+0 records out
-
-config BUSYBOX_CONFIG_FEATURE_DD_THIRD_STATUS_LINE
-	bool "Enable the third status line upon signal"
-	default n
-	depends on BUSYBOX_CONFIG_DD && BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
-	help
-	  Displays a coreutils-like third status line with transferred bytes,
-	  elapsed time and speed.
-
-config BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS
-	bool "Enable ibs, obs and conv options"
-	default y
-	depends on BUSYBOX_CONFIG_DD
-	help
-	  Enables support for writing a certain number of bytes in and out,
-	  at a time, and performing conversions on the data stream.
-
-config BUSYBOX_CONFIG_DF
-	bool "df"
-	default y
-	help
-	  df reports the amount of disk space used and available
-	  on filesystems.
-
-config BUSYBOX_CONFIG_FEATURE_DF_FANCY
-	bool "Enable -a, -i, -B"
-	default n
-	depends on BUSYBOX_CONFIG_DF
-	help
-	  This option enables -a, -i and -B.
-
-	    -a Show all filesystems
-	    -i Inodes
-	    -B <SIZE> Blocksize
-
-config BUSYBOX_CONFIG_DIRNAME
-	bool "dirname"
-	default y
-	help
-	  dirname is used to strip a non-directory suffix from
-	  a file name.
-
-config BUSYBOX_CONFIG_DOS2UNIX
-	bool "dos2unix/unix2dos"
-	default n
-	help
-	  dos2unix is used to convert a text file from DOS format to
-	  UNIX format, and vice versa.
-
-config BUSYBOX_CONFIG_UNIX2DOS
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_DOS2UNIX
-	help
-	  unix2dos is used to convert a text file from UNIX format to
-	  DOS format, and vice versa.
-
-config BUSYBOX_CONFIG_DU
-	bool "du (default blocksize of 512 bytes)"
-	default y
-	help
-	  du is used to report the amount of disk space used
-	  for specified files.
-
-config BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
-	bool "Use a default blocksize of 1024 bytes (1K)"
-	default y
-	depends on BUSYBOX_CONFIG_DU
-	help
-	  Use a blocksize of (1K) instead of the default 512b.
-
-config BUSYBOX_CONFIG_ECHO
-	bool "echo (basic SuSv3 version taking no options)"
-	default y
-	help
-	  echo is used to print a specified string to stdout.
-
-# this entry also appears in shell/Config.in, next to the echo builtin
-config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
-	bool "Enable echo options (-n and -e)"
-	default y
-	depends on BUSYBOX_CONFIG_ECHO || BUSYBOX_CONFIG_ASH_BUILTIN_ECHO || BUSYBOX_CONFIG_HUSH
-	help
-	  This adds options (-n and -e) to echo.
-
-config BUSYBOX_CONFIG_ENV
-	bool "env"
-	default y
-	help
-	  env is used to set an environment variable and run
-	  a command; without options it displays the current
-	  environment.
-
-config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_ENV && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the env applet.
-
-config BUSYBOX_CONFIG_EXPAND
-	bool "expand"
-	default n
-	help
-	  By default, convert all tabs to spaces.
-
-config BUSYBOX_CONFIG_FEATURE_EXPAND_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_EXPAND && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the expand applet.
-
-config BUSYBOX_CONFIG_EXPR
-	bool "expr"
-	default y
-	help
-	  expr is used to calculate numbers and print the result
-	  to standard output.
-
-config BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64
-	bool "Extend Posix numbers support to 64 bit"
-	default y
-	depends on BUSYBOX_CONFIG_EXPR
-	help
-	  Enable 64-bit math support in the expr applet. This will make
-	  the applet slightly larger, but will allow computation with very
-	  large numbers.
-
-config BUSYBOX_CONFIG_FALSE
-	bool "false"
-	default y
-	help
-	  false returns an exit code of FALSE (1).
-
-config BUSYBOX_CONFIG_FOLD
-	bool "fold"
-	default n
-	help
-	  Wrap text to fit a specific width.
-
-config BUSYBOX_CONFIG_FSYNC
-	bool "fsync"
-	default y
-	help
-	  fsync is used to flush file-related cached blocks to disk.
-
-config BUSYBOX_CONFIG_HEAD
-	bool "head"
-	default y
-	help
-	  head is used to print the first specified number of lines
-	  from files.
-
-config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD
-	bool "Enable head options (-c, -q, and -v)"
-	default y
-	depends on BUSYBOX_CONFIG_HEAD
-	help
-	  This enables the head options (-c, -q, and -v).
-
-config BUSYBOX_CONFIG_HOSTID
-	bool "hostid"
-	default y
-	help
-	  hostid prints the numeric identifier (in hexadecimal) for
-	  the current host.
-
-config BUSYBOX_CONFIG_INSTALL
-	bool "install"
-	default n
-	help
-	  Copy files and set attributes.
-
-config BUSYBOX_CONFIG_FEATURE_INSTALL_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_INSTALL && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the install applet.
-
-####config LENGTH
-####	bool "length"
-####	default y
-####	help
-####	  length is used to print out the length of a specified string.
-
-config BUSYBOX_CONFIG_LN
-	bool "ln"
-	default y
-	help
-	  ln is used to create hard or soft links between files.
-
-config BUSYBOX_CONFIG_LOGNAME
-	bool "logname"
-	default n
-	help
-	  logname is used to print the current user's login name.
-
-config BUSYBOX_CONFIG_LS
-	bool "ls"
-	default y
-	help
-	  ls is used to list the contents of directories.
-
-config BUSYBOX_CONFIG_FEATURE_LS_FILETYPES
-	bool "Enable filetyping options (-p and -F)"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Enable the ls options (-p and -F).
-
-config BUSYBOX_CONFIG_FEATURE_LS_FOLLOWLINKS
-	bool "Enable symlinks dereferencing (-L)"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Enable the ls option (-L).
-
-config BUSYBOX_CONFIG_FEATURE_LS_RECURSIVE
-	bool "Enable recursion (-R)"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Enable the ls option (-R).
-
-config BUSYBOX_CONFIG_FEATURE_LS_SORTFILES
-	bool "Sort the file names"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Allow ls to sort file names alphabetically.
-
-config BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS
-	bool "Show file timestamps"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Allow ls to display timestamps for files.
-
-config BUSYBOX_CONFIG_FEATURE_LS_USERNAME
-	bool "Show username/groupnames"
-	default y
-	depends on BUSYBOX_CONFIG_LS
-	help
-	  Allow ls to display username/groupname for files.
-
-config BUSYBOX_CONFIG_FEATURE_LS_COLOR
-	bool "Allow use of color to identify file types"
-	default y
-	depends on BUSYBOX_CONFIG_LS && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  This enables the --color option to ls.
-
-config BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
-	bool "Produce colored ls output by default"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_LS_COLOR
-	help
-	  Saying yes here will turn coloring on by default,
-	  even if no "--color" option is given to the ls command.
-	  This is not recommended, since the colors are not
-	  configurable, and the output may not be legible on
-	  many output screens.
-
-config BUSYBOX_CONFIG_MD5SUM
-	bool "md5sum"
-	default y
-	help
-	  md5sum is used to print or check MD5 checksums.
-
-config BUSYBOX_CONFIG_MKDIR
-	bool "mkdir"
-	default y
-	help
-	  mkdir is used to create directories with the specified names.
-
-config BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_MKDIR && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the mkdir applet.
-
-config BUSYBOX_CONFIG_MKFIFO
-	bool "mkfifo"
-	default y
-	help
-	  mkfifo is used to create FIFOs (named pipes).
-	  The `mknod' program can also create FIFOs.
-
-config BUSYBOX_CONFIG_MKNOD
-	bool "mknod"
-	default y
-	help
-	  mknod is used to create FIFOs or block/character special
-	  files with the specified names.
-
-config BUSYBOX_CONFIG_MV
-	bool "mv"
-	default y
-	help
-	  mv is used to move or rename files or directories.
-
-config BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_MV && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the mv applet.
-
-config BUSYBOX_CONFIG_NICE
-	bool "nice"
-	default y
-	help
-	  nice runs a program with modified scheduling priority.
-
-config BUSYBOX_CONFIG_NOHUP
-	bool "nohup"
-	default n
-	help
-	  run a command immune to hangups, with output to a non-tty.
-
-config BUSYBOX_CONFIG_OD
-	bool "od"
-	default n
-	help
-	  od is used to dump binary files in octal and other formats.
-
-config BUSYBOX_CONFIG_PRINTENV
-	bool "printenv"
-	default n
-	help
-	  printenv is used to print all or part of environment.
-
-config BUSYBOX_CONFIG_PRINTF
-	bool "printf"
-	default y
-	help
-	  printf is used to format and print specified strings.
-	  It's similar to `echo' except it has more options.
-
-config BUSYBOX_CONFIG_PWD
-	bool "pwd"
-	default y
-	help
-	  pwd is used to print the current directory.
-
-config BUSYBOX_CONFIG_READLINK
-	bool "readlink"
-	default y
-	help
-	  This program reads a symbolic link and returns the name
-	  of the file it points to
-
-config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
-	bool "Enable canonicalization by following all symlinks (-f)"
-	default y
-	depends on BUSYBOX_CONFIG_READLINK
-	help
-	  Enable the readlink option (-f).
-
-config BUSYBOX_CONFIG_REALPATH
-	bool "realpath"
-	default n
-	help
-	  Return the canonicalized absolute pathname.
-	  This isn't provided by GNU shellutils, but where else does it belong.
-
-config BUSYBOX_CONFIG_RM
-	bool "rm"
-	default y
-	help
-	  rm is used to remove files or directories.
-
-config BUSYBOX_CONFIG_RMDIR
-	bool "rmdir"
-	default y
-	help
-	  rmdir is used to remove empty directories.
-
-config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the rmdir applet, including
-	  --ignore-fail-on-non-empty for compatibility with GNU rmdir.
-
-config BUSYBOX_CONFIG_SEQ
-	bool "seq"
-	default y
-	help
-	  print a sequence of numbers
-
-config BUSYBOX_CONFIG_SHA1SUM
-	bool "sha1sum"
-	default n
-	help
-	  Compute and check SHA1 message digest
-
-config BUSYBOX_CONFIG_SHA256SUM
-	bool "sha256sum"
-	default n
-	help
-	  Compute and check SHA256 message digest
-
-config BUSYBOX_CONFIG_SHA512SUM
-	bool "sha512sum"
-	default n
-	help
-	  Compute and check SHA512 message digest
-
-config BUSYBOX_CONFIG_SLEEP
-	bool "sleep"
-	default y
-	help
-	  sleep is used to pause for a specified number of seconds.
-	  It comes in 3 versions:
-	  - small: takes one integer parameter
-	  - fancy: takes multiple integer arguments with suffixes:
-	    sleep 1d 2h 3m 15s
-	  - fancy with fractional numbers:
-	    sleep 2.3s 4.5h sleeps for 16202.3 seconds
-	  Last one is "the most compatible" with coreutils sleep,
-	  but it adds around 1k of code.
-
-config BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
-	bool "Enable multiple arguments and s/m/h/d suffixes"
-	default y
-	depends on BUSYBOX_CONFIG_SLEEP
-	help
-	  Allow sleep to pause for specified minutes, hours, and days.
-
-config BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP
-	bool "Enable fractional arguments"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
-	help
-	  Allow for fractional numeric parameters.
-
-config BUSYBOX_CONFIG_SORT
-	bool "sort"
-	default y
-	help
-	  sort is used to sort lines of text in specified files.
-
-config BUSYBOX_CONFIG_FEATURE_SORT_BIG
-	bool "Full SuSv3 compliant sort (support -ktcsbdfiozgM)"
-	default n
-	depends on BUSYBOX_CONFIG_SORT
-	help
-	  Without this, sort only supports -r, -u, and an integer version
-	  of -n. Selecting this adds sort keys, floating point support, and
-	  more. This adds a little over 3k to a nonstatic build on x86.
-
-	  The SuSv3 sort standard is available at:
-	  http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
-
-config BUSYBOX_CONFIG_SPLIT
-	bool "split"
-	default n
-	help
-	  split a file into pieces.
-
-config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
-	bool "Fancy extensions"
-	default n
-	depends on BUSYBOX_CONFIG_SPLIT
-	help
-	  Add support for features not required by SUSv3.
-	  Supports additional suffixes 'b' for 512 bytes,
-	  'g' for 1GiB for the -b option.
-
-config BUSYBOX_CONFIG_STAT
-	bool "stat"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX # statfs()
-	help
-	  display file or filesystem status.
-
-config BUSYBOX_CONFIG_FEATURE_STAT_FORMAT
-	bool "Enable custom formats (-c)"
-	default n
-	depends on BUSYBOX_CONFIG_STAT
-	help
-	  Without this, stat will not support the '-c format' option where
-	  users can pass a custom format string for output. This adds about
-	  7k to a nonstatic build on amd64.
-
-config BUSYBOX_CONFIG_STTY
-	bool "stty"
-	default n
-	help
-	  stty is used to change and print terminal line settings.
-
-config BUSYBOX_CONFIG_SUM
-	bool "sum"
-	default n
-	help
-	  checksum and count the blocks in a file
-
-config BUSYBOX_CONFIG_SYNC
-	bool "sync"
-	default y
-	help
-	  sync is used to flush filesystem buffers.
-
-config BUSYBOX_CONFIG_TAC
-	bool "tac"
-	default n
-	help
-	  tac is used to concatenate and print files in reverse.
-
-config BUSYBOX_CONFIG_TAIL
-	bool "tail"
-	default y
-	help
-	  tail is used to print the last specified number of lines
-	  from files.
-
-config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL
-	bool "Enable extra tail options (-q, -s, -v, and -F)"
-	default y
-	depends on BUSYBOX_CONFIG_TAIL
-	help
-	  The options (-q, -s, and -v) are provided by GNU tail, but
-	  are not specific in the SUSv3 standard.
-
-	    -q      Never output headers giving file names
-	    -s SEC  Wait SEC seconds between reads with -f
-	    -v      Always output headers giving file names
-
-config BUSYBOX_CONFIG_TEE
-	bool "tee"
-	default y
-	help
-	  tee is used to read from standard input and write
-	  to standard output and files.
-
-config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
-	bool "Enable block I/O (larger/faster) instead of byte I/O"
-	default y
-	depends on BUSYBOX_CONFIG_TEE
-	help
-	  Enable this option for a faster tee, at expense of size.
-
-config BUSYBOX_CONFIG_TRUE
-	bool "true"
-	default y
-	help
-	  true returns an exit code of TRUE (0).
-
-config BUSYBOX_CONFIG_TTY
-	bool "tty"
-	default n
-	help
-	  tty is used to print the name of the current terminal to
-	  standard output.
-
-config BUSYBOX_CONFIG_UNAME
-	bool "uname"
-	default y
-	help
-	  uname is used to print system information.
-
-config BUSYBOX_CONFIG_UNEXPAND
-	bool "unexpand"
-	default n
-	help
-	  By default, convert only leading sequences of blanks to tabs.
-
-config BUSYBOX_CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_UNEXPAND && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the unexpand applet.
-
-config BUSYBOX_CONFIG_UNIQ
-	bool "uniq"
-	default y
-	help
-	  uniq is used to remove duplicate lines from a sorted file.
-
-config BUSYBOX_CONFIG_USLEEP
-	bool "usleep"
-	default n
-	help
-	  usleep is used to pause for a specified number of microseconds.
-
-config BUSYBOX_CONFIG_UUDECODE
-	bool "uudecode"
-	default n
-	help
-	  uudecode is used to decode a uuencoded file.
-
-config BUSYBOX_CONFIG_UUENCODE
-	bool "uuencode"
-	default n
-	help
-	  uuencode is used to uuencode a file.
-
-config BUSYBOX_CONFIG_WC
-	bool "wc"
-	default y
-	help
-	  wc is used to print the number of bytes, words, and lines,
-	  in specified files.
-
-config BUSYBOX_CONFIG_FEATURE_WC_LARGE
-	bool "Support very large files in wc"
-	default n
-	depends on BUSYBOX_CONFIG_WC
-	help
-	  Use "unsigned long long" in wc for counter variables.
-
-config BUSYBOX_CONFIG_WHOAMI
-	bool "whoami"
-	default n
-	help
-	  whoami is used to print the username of the current
-	  user id (same as id -un).
-
-config BUSYBOX_CONFIG_YES
-	bool "yes"
-	default y
-	help
-	  yes is used to repeatedly output a specific string, or
-	  the default string `y'.
-
-comment "Common options for cp and mv"
-	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
-
-config BUSYBOX_CONFIG_FEATURE_PRESERVE_HARDLINKS
-	bool "Preserve hard links"
-	default y
-	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
-	help
-	  Allow cp and mv to preserve hard links.
-
-comment "Common options for ls, more and telnet"
-	depends on BUSYBOX_CONFIG_LS || BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TELNET
-
-config BUSYBOX_CONFIG_FEATURE_AUTOWIDTH
-	bool "Calculate terminal & column widths"
-	default y
-	depends on BUSYBOX_CONFIG_LS || BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TELNET
-	help
-	  This option allows utilities such as 'ls', 'more' and 'telnet'
-	  to determine the width of the screen, which can allow them to
-	  display additional text or avoid wrapping text onto the next line.
-	  If you leave this disabled, your utilities will be especially
-	  primitive and will be unable to determine the current screen width.
-
-comment "Common options for df, du, ls"
-	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
-
-config BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE
-	bool "Support for human readable output (example 13k, 23M, 235G)"
-	default y
-	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
-	help
-	  Allow df, du, and ls to have human readable output.
-
-comment "Common options for md5sum, sha1sum, sha256sum, sha512sum"
-	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM
-
-config BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
-	bool "Enable -c, -s and -w options"
-	default y
-	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM
-	help
-	  Enabling the -c options allows files to be checked
-	  against pre-calculated hash values.
-
-	  -s and -w are useful options when verifying checksums.
-
-endmenu
-

--- a/package/busybox/config/debianutils/Config.in
+++ /dev/null
@@ -1,87 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Debian Utilities"
-
-
-
-config BUSYBOX_CONFIG_MKTEMP
-	bool "mktemp"
-	default y
-	help
-	  mktemp is used to create unique temporary files
-
-config BUSYBOX_CONFIG_PIPE_PROGRESS
-	bool "pipe_progress"
-	default n
-	help
-	  Display a dot to indicate pipe activity.
-
-config BUSYBOX_CONFIG_RUN_PARTS
-	bool "run-parts"
-	default n
-	help
-	  run-parts is a utility designed to run all the scripts in a directory.
-
-	  It is useful to set up a directory like cron.daily, where you need to
-	  execute all the scripts in that directory.
-
-	  In this implementation of run-parts some features (such as report
-	  mode) are not implemented.
-
-	  Unless you know that run-parts is used in some of your scripts
-	  you can safely say N here.
-
-config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_RUN_PARTS && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the run-parts applet.
-
-config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_FANCY
-	bool "Support additional arguments"
-	default n
-	depends on BUSYBOX_CONFIG_RUN_PARTS
-	help
-	  Support additional options:
-	  -l --list print the names of the all matching files (not
-	            limited to executables), but don't actually run them.
-
-config BUSYBOX_CONFIG_START_STOP_DAEMON
-	bool "start-stop-daemon"
-	default y
-	help
-	  start-stop-daemon is used to control the creation and
-	  termination of system-level processes, usually the ones
-	  started during the startup of the system.
-
-config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY
-	bool "Support additional arguments"
-	default n
-	depends on BUSYBOX_CONFIG_START_STOP_DAEMON
-	help
-	  Support additional arguments.
-	  -o|--oknodo ignored since we exit with 0 anyway
-	  -v|--verbose
-	  -N|--nicelevel N
-
-config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_START_STOP_DAEMON && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the start-stop-daemon applet.
-
-config BUSYBOX_CONFIG_WHICH
-	bool "which"
-	default y
-	help
-	  which is used to find programs in your PATH and
-	  print out their pathnames.
-
-endmenu
-

--- a/package/busybox/config/e2fsprogs/Config.in
+++ /dev/null
@@ -1,73 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Linux Ext2 FS Progs"
-
-
-
-config BUSYBOX_CONFIG_CHATTR
-	bool "chattr"
-	default n
-	help
-	  chattr changes the file attributes on a second extended file system.
-
-### config E2FSCK
-###	bool "e2fsck"
-###	default y
-###	help
-###	  e2fsck is used to check Linux second extended file systems (ext2fs).
-###	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
-###	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
-###	  provided.
-
-config BUSYBOX_CONFIG_FSCK
-	bool "fsck"
-	default n
-	help
-	  fsck is used to check and optionally repair one or more filesystems.
-	  In actuality, fsck is simply a front-end for the various file system
-	  checkers (fsck.fstype) available under Linux.
-
-config BUSYBOX_CONFIG_LSATTR
-	bool "lsattr"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  lsattr lists the file attributes on a second extended file system.
-
-### config MKE2FS
-###	bool "mke2fs"
-###	default y
-###	help
-###	  mke2fs is used to create an ext2/ext3 filesystem. The normal compat
-###	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
-
-config BUSYBOX_CONFIG_TUNE2FS
-	bool "tune2fs"
-	default n  # off: it is too limited compared to upstream version
-	help
-	  tune2fs allows the system administrator to adjust various tunable
-	  filesystem parameters on Linux ext2/ext3 filesystems.
-
-### config E2LABEL
-###	bool "e2label"
-###	default y
-###	depends on TUNE2FS
-###	help
-###	  e2label will display or change the filesystem label on the ext2
-###	  filesystem located on device.
-
-### NB: this one is now provided by util-linux/volume_id/*
-### config FINDFS
-###	bool "findfs"
-###	default y
-###	depends on TUNE2FS
-###	help
-###	  findfs will search the disks in the system looking for a filesystem
-###	  which has a label matching label or a UUID equal to uuid.
-
-endmenu
-

--- a/package/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
+++ /dev/null
@@ -1,71 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Linux Ext2 FS Progs"
-
-
-
-config BUSYBOX_CONFIG_CHATTR
-	bool "chattr"
-	default n
-	help
-	  chattr changes the file attributes on a second extended file system.
-
-config BUSYBOX_CONFIG_E2FSCK
-	bool "e2fsck"
-	default n
-	help
-	  e2fsck is used to check Linux second extended file systems (ext2fs).
-	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
-	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
-	  provided.
-
-config BUSYBOX_CONFIG_FSCK
-	bool "fsck"
-	default n
-	help
-	  fsck is used to check and optionally repair one or more filesystems.
-	  In actuality, fsck is simply a front-end for the various file system
-	  checkers (fsck.fstype) available under Linux.
-
-config BUSYBOX_CONFIG_LSATTR
-	bool "lsattr"
-	default n
-	help
-	  lsattr lists the file attributes on a second extended file system.
-
-config BUSYBOX_CONFIG_MKE2FS
-	bool "mke2fs"
-	default n
-	help
-	  mke2fs is used to create an ext2/ext3 filesystem. The normal compat
-	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
-
-config BUSYBOX_CONFIG_TUNE2FS
-	bool "tune2fs"
-	default n
-	help
-	  tune2fs allows the system administrator to adjust various tunable
-	  filesystem parameters on Linux ext2/ext3 filesystems.
-
-config BUSYBOX_CONFIG_E2LABEL
-	bool "e2label"
-	default n
-	depends on BUSYBOX_CONFIG_TUNE2FS
-	help
-	  e2label will display or change the filesystem label on the ext2
-	  filesystem located on device.
-
-config BUSYBOX_CONFIG_FINDFS
-	bool "findfs"
-	default n
-	depends on BUSYBOX_CONFIG_TUNE2FS
-	help
-	  findfs will search the disks in the system looking for a filesystem
-	  which has a label matching label or a UUID equal to uuid.
-
-endmenu
-

--- a/package/busybox/config/editors/Config.in
+++ /dev/null
@@ -1,207 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Editors"
-
-config BUSYBOX_CONFIG_PATCH
-	bool "patch"
-	default n
-	help
-	  Apply a unified diff formatted patch.
-config BUSYBOX_CONFIG_VI
-	bool "vi"
-	default y
-	help
-	  'vi' is a text editor. More specifically, it is the One True
-	  text editor <grin>. It does, however, have a rather steep
-	  learning curve. If you are not already comfortable with 'vi'
-	  you may wish to use something else.
-
-config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
-	int "Maximum screen width in vi"
-	range 256 16384
-	default 1024
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Contrary to what you may think, this is not eating much.
-	  Make it smaller than 4k only if you are very limited on memory.
-
-config BUSYBOX_CONFIG_FEATURE_VI_8BIT
-	bool "Allow vi to display 8-bit chars (otherwise shows dots)"
-	default n
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  If your terminal can display characters with high bit set,
-	  you may want to enable this. Note: vi is not Unicode-capable.
-	  If your terminal combines several 8-bit bytes into one character
-	  (as in Unicode mode), this will not work properly.
-
-config BUSYBOX_CONFIG_FEATURE_VI_COLON
-	bool "Enable \":\" colon commands (no \"ex\" mode)"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Enable a limited set of colon commands for vi. This does not
-	  provide an "ex" mode.
-
-config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
-	bool "Enable yank/put commands and mark cmds"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  This will enable you to use yank and put, as well as mark in
-	  busybox vi.
-
-config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
-	bool "Enable search and replace cmds"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Select this if you wish to be able to do search and replace in
-	  busybox vi.
-
-config BUSYBOX_CONFIG_FEATURE_VI_REGEX_SEARCH
-	bool "Enable regex in search and replace"
-	default n   # Uses GNU regex, which may be unavailable. FIXME
-	depends on BUSYBOX_CONFIG_FEATURE_VI_SEARCH
-	help
-	  Use extended regex search.
-
-config BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS
-	bool "Catch signals"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Selecting this option will make busybox vi signal aware. This will
-	  make busybox vi support SIGWINCH to deal with Window Changes, catch
-	  Ctrl-Z and Ctrl-C and alarms.
-
-config BUSYBOX_CONFIG_FEATURE_VI_DOT_CMD
-	bool "Remember previous cmd and \".\" cmd"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Make busybox vi remember the last command and be able to repeat it.
-
-config BUSYBOX_CONFIG_FEATURE_VI_READONLY
-	bool "Enable -R option and \"view\" mode"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Enable the read-only command line option, which allows the user to
-	  open a file in read-only mode.
-
-config BUSYBOX_CONFIG_FEATURE_VI_SETOPTS
-	bool "Enable set-able options, ai ic showmatch"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Enable the editor to set some (ai, ic, showmatch) options.
-
-config BUSYBOX_CONFIG_FEATURE_VI_SET
-	bool "Support for :set"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Support for ":set".
-
-config BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE
-	bool "Handle window resize"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  Make busybox vi behave nicely with terminals that get resized.
-
-config BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL
-	bool "Use 'tell me cursor position' ESC sequence to measure window"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
-	  this option makes vi perform a last-ditch effort to find it:
-	  position cursor to 999,999 and ask terminal to report real
-	  cursor position using "ESC [ 6 n" escape sequence, then read stdin.
-
-	  This is not clean but helps a lot on serial lines and such.
-
-config BUSYBOX_CONFIG_FEATURE_VI_OPTIMIZE_CURSOR
-	bool "Optimize cursor movement"
-	default y
-	depends on BUSYBOX_CONFIG_VI
-	help
-	  This will make the cursor movement faster, but requires more memory
-	  and it makes the applet a tiny bit larger.
-
-config BUSYBOX_CONFIG_AWK
-	bool "awk"
-	default y
-	help
-	  Awk is used as a pattern scanning and processing language. This is
-	  the BusyBox implementation of that programming language.
-
-config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
-	bool "Enable math functions (requires libm)"
-	default y
-	depends on BUSYBOX_CONFIG_AWK
-	help
-	  Enable math functions of the Awk programming language.
-	  NOTE: This will require libm to be present for linking.
-
-config BUSYBOX_CONFIG_CMP
-	bool "cmp"
-	default y
-	help
-	  cmp is used to compare two files and returns the result
-	  to standard output.
-
-config BUSYBOX_CONFIG_DIFF
-	bool "diff"
-	default n
-	help
-	  diff compares two files or directories and outputs the
-	  differences between them in a form that can be given to
-	  the patch command.
-
-config BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_DIFF && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Enable use of long options.
-
-config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
-	bool "Enable directory support"
-	default n
-	depends on BUSYBOX_CONFIG_DIFF
-	help
-	  This option enables support for directory and subdirectory
-	  comparison.
-
-config BUSYBOX_CONFIG_ED
-	bool "ed"
-	default n
-	help
-	  The original 1970's Unix text editor, from the days of teletypes.
-	  Small, simple, evil. Part of SUSv3. If you're not already using
-	  this, you don't need it.
-
-config BUSYBOX_CONFIG_SED
-	bool "sed"
-	default y
-	help
-	  sed is used to perform text transformations on a file
-	  or input from a pipeline.
-
-config BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC
-	bool "Allow vi and awk to execute shell commands"
-	default y
-	depends on BUSYBOX_CONFIG_VI || BUSYBOX_CONFIG_AWK
-	help
-	  Enables vi and awk features which allows user to execute
-	  shell commands (using system() C call).
-
-endmenu
-

--- a/package/busybox/config/findutils/Config.in
+++ /dev/null
@@ -1,253 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Finding Utilities"
-
-config BUSYBOX_CONFIG_FIND
-	bool "find"
-	default y
-	help
-	  find is used to search your system to find specified files.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
-	bool "Enable -print0: NUL-terminated output"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Causes output names to be separated by a NUL character
-	  rather than a newline. This allows names that contain
-	  newlines and other whitespace to be more easily
-	  interpreted by other programs.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
-	bool "Enable -mtime: modified time matching"
-	default n
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Allow searching based on the modification time of
-	  files, in days.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
-	bool "Enable -mmin: modified time matching by minutes"
-	default n
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Allow searching based on the modification time of
-	  files, in minutes.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_PERM
-	bool "Enable -perm: permissions matching"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Enable searching based on file permissions.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
-	bool "Enable -type: file type matching (file/dir/link/...)"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Enable searching based on file type (file,
-	  directory, socket, device, etc.).
-
-config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
-	bool "Enable -xdev: 'stay in filesystem'"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  This option allows find to restrict searches to a single filesystem.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_MAXDEPTH
-	bool "Enable -mindepth N and -maxdepth N"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  This option enables -mindepth N and -maxdepth N option.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
-	bool "Enable -newer: compare file modification times"
-	default n
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -newer' option for finding any files which have
-	  modification time that is more recent than the specified FILE.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_INUM
-	bool "Enable -inum: inode number matching"
-	default n
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -inum' option for searching by inode number.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
-	bool "Enable -exec: execute commands"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -exec' option for executing commands based upon
-	  the files matched.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_USER
-	bool "Enable -user: username/uid matching"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -user' option for searching by username or uid.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_GROUP
-	bool "Enable -group: group/gid matching"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -group' option for searching by group name or gid.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_NOT
-	bool "Enable the 'not' (!) operator"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the '!' operator to invert the test results.
-	  If 'Enable full-blown desktop' is enabled, then will also support
-	  the non-POSIX notation '-not'.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
-	bool "Enable -depth"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Process each directory's contents before the directory itself.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
-	bool "Enable parens in options"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Enable usage of parens '(' to specify logical order of arguments.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_SIZE
-	bool "Enable -size: file size matching"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -size' option for searching by file size.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
-	bool "Enable -prune: exclude subdirectories"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  If the file is a directory, dont descend into it. Useful for
-	  exclusion .svn and CVS directories.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
-	bool "Enable -delete: delete files/dirs"
-	default n
-	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
-	help
-	  Support the 'find -delete' option for deleting files and directories.
-	  WARNING: This option can do much harm if used wrong. Busybox will not
-	  try to protect the user from doing stupid things. Use with care.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_PATH
-	bool "Enable -path: match pathname with shell pattern"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  The -path option matches whole pathname instead of just filename.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
-	bool "Enable -regex: match pathname with regex"
-	default y
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  The -regex option matches whole pathname against regular expression.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
-	bool "Enable -context: security context matching"
-	default n
-	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
-	help
-	  Support the 'find -context' option for matching security context.
-
-config BUSYBOX_CONFIG_FEATURE_FIND_LINKS
-	bool "Enable -links: link count matching"
-	default n
-	depends on BUSYBOX_CONFIG_FIND
-	help
-	  Support the 'find -links' option for matching number of links.
-config BUSYBOX_CONFIG_GREP
-	bool "grep"
-	default y
-	help
-	  grep is used to search files for a specified pattern.
-
-config BUSYBOX_CONFIG_FEATURE_GREP_EGREP_ALIAS
-	bool "Enable extended regular expressions (egrep & grep -E)"
-	default y
-	depends on BUSYBOX_CONFIG_GREP
-	help
-	  Enabled support for extended regular expressions. Extended
-	  regular expressions allow for alternation (foo|bar), grouping,
-	  and various repetition operators.
-
-config BUSYBOX_CONFIG_FEATURE_GREP_FGREP_ALIAS
-	bool "Alias fgrep to grep -F"
-	default y
-	depends on BUSYBOX_CONFIG_GREP
-	help
-	  fgrep sees the search pattern as a normal string rather than
-	  regular expressions.
-	  grep -F always works, this just creates the fgrep alias.
-
-config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
-	bool "Enable before and after context flags (-A, -B and -C)"
-	default y
-	depends on BUSYBOX_CONFIG_GREP
-	help
-	  Print the specified number of leading (-B) and/or trailing (-A)
-	  context surrounding our matching lines.
-	  Print the specified number of context lines (-C).
-config BUSYBOX_CONFIG_XARGS
-	bool "xargs"
-	default y
-	help
-	  xargs is used to execute a specified command for
-	  every item from standard input.
-
-config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
-	bool "Enable -p: prompt and confirmation"
-	default y
-	depends on BUSYBOX_CONFIG_XARGS
-	help
-	  Support -p: prompt the user whether to run each command
-	  line and read a line from the terminal.
-
-config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
-	bool "Enable single and double quotes and backslash"
-	default y
-	depends on BUSYBOX_CONFIG_XARGS
-	help
-	  Support quoting in the input.
-
-config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
-	bool "Enable -x: exit if -s or -n is exceeded"
-	default y
-	depends on BUSYBOX_CONFIG_XARGS
-	help
-	  Support -x: exit if the command size (see the -s or -n option)
-	  is exceeded.
-
-config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
-	bool "Enable -0: NUL-terminated input"
-	default y
-	depends on BUSYBOX_CONFIG_XARGS
-	help
-	  Support -0: input items are terminated by a NUL character
-	  instead of whitespace, and the quotes and backslash
-	  are not special.
-
-endmenu
-

--- a/package/busybox/config/init/Config.in
+++ /dev/null
@@ -1,186 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Init Utilities"
-
-config BUSYBOX_CONFIG_BOOTCHARTD
-	bool "bootchartd"
-	default n
-	help
-	  bootchartd is commonly used to profile the boot process
-	  for the purpose of speeding it up. In this case, it is started
-	  by the kernel as the init process. This is configured by adding
-	  the init=/sbin/bootchartd option to the kernel command line.
-
-	  It can also be used to monitor the resource usage of a specific
-	  application or the running system in general. In this case,
-	  bootchartd is started interactively by running bootchartd start
-	  and stopped using bootchartd stop.
-
-config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER
-	bool "Compatible, bloated header"
-	default n
-	depends on BUSYBOX_CONFIG_BOOTCHARTD
-	help
-	  Create extended header file compatible with "big" bootchartd.
-	  "Big" bootchartd is a shell script and it dumps some
-	  "convenient" info int the header, such as:
-	    title = Boot chart for `hostname` (`date`)
-	    system.uname = `uname -srvm`
-	    system.release = `cat /etc/DISTRO-release`
-	    system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount)
-	    system.kernel.options = `cat /proc/cmdline`
-	  This data is not mandatory for bootchart graph generation,
-	  and is considered bloat. Nevertheless, this option
-	  makes bootchartd applet to dump a subset of it.
-
-config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE
-	bool "Support bootchartd.conf"
-	default n
-	depends on BUSYBOX_CONFIG_BOOTCHARTD
-	help
-	  Enable reading and parsing of $PWD/bootchartd.conf
-	  and /etc/bootchartd.conf files.
-config BUSYBOX_CONFIG_HALT
-	bool "poweroff, halt, and reboot"
-	default y
-	help
-	  Stop all processes and either halt, reboot, or power off the system.
-
-config BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
-	bool "Call telinit on shutdown and reboot"
-	default n
-	depends on BUSYBOX_CONFIG_HALT && !BUSYBOX_CONFIG_INIT
-	help
-	  Call an external program (normally telinit) to facilitate
-	  a switch to a proper runlevel.
-
-	  This option is only available if you selected halt and friends,
-	  but did not select init.
-
-config BUSYBOX_CONFIG_TELINIT_PATH
-	string "Path to telinit executable"
-	default "/sbin/telinit"
-	depends on BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
-	help
-	  When busybox halt and friends have to call external telinit
-	  to facilitate proper shutdown, this path is to be used when
-	  locating telinit executable.
-config BUSYBOX_CONFIG_INIT
-	bool "init"
-	default y
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	depends on BROKEN
-	help
-	  init is the first program run when the system boots.
-
-config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
-	bool "Support reading an inittab file"
-	default y
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  Allow init to read an inittab file when the system boot.
-
-config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
-	bool "Support killing processes that have been removed from inittab"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB
-	help
-	  When respawn entries are removed from inittab and a SIGHUP is
-	  sent to init, this option will make init kill the processes
-	  that have been removed.
-
-config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
-	int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
-	range 0 1024
-	default 0
-	depends on BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
-	help
-	  With nonzero setting, init sends TERM, forks, child waits N
-	  seconds, sends KILL and exits. Setting it too high is unwise
-	  (child will hang around for too long and could actually kill
-	  the wrong process!)
-
-config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
-	bool "Run commands with leading dash with controlling tty"
-	default n
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  If this option is enabled, init will try to give a controlling
-	  tty to any command which has leading hyphen (often it's "-/bin/sh").
-	  More precisely, init will do "ioctl(STDIN_FILENO, TIOCSCTTY, 0)".
-	  If device attached to STDIN_FILENO can be a ctty but is not yet
-	  a ctty for other session, it will become this process' ctty.
-	  This is not the traditional init behavour, but is often what you want
-	  in an embedded system where the console is only accessed during
-	  development or for maintenance.
-	  NB: using cttyhack applet may work better.
-
-config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
-	bool "Enable init to write to syslog"
-	default y
-	depends on BUSYBOX_CONFIG_INIT
-
-config BUSYBOX_CONFIG_FEATURE_EXTRA_QUIET
-	bool "Be _extra_ quiet on boot"
-	default n
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  Prevent init from logging some messages to the console during boot.
-
-config BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS
-	bool "Support dumping core for child processes (debugging only)"
-	default n
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  If this option is enabled and the file /.init_enable_core
-	  exists, then init will call setrlimit() to allow unlimited
-	  core file sizes. If this option is disabled, processes
-	  will not generate any core files.
-
-config BUSYBOX_CONFIG_FEATURE_INITRD
-	bool "Support running init from within an initrd (not initramfs)"
-	default n
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  Legacy support for running init under the old-style initrd. Allows
-	  the name linuxrc to act as init, and it doesn't assume init is PID 1.
-
-	  This does not apply to initramfs, which runs /init as PID 1 and
-	  requires no special support.
-
-config BUSYBOX_CONFIG_INIT_TERMINAL_TYPE
-	string "Initial terminal type"
-	default "linux"
-	depends on BUSYBOX_CONFIG_INIT
-	help
-	  This is the initial value set by init for the TERM environment
-	  variable. This variable is used by programs which make use of
-	  extended terminal capabilities.
-
-	  Note that on Linux, init attempts to detect serial terminal and
-	  sets TERM to "vt102" if one is found.
-config BUSYBOX_CONFIG_MESG
-	bool "mesg"
-	default n
-	help
-	  Mesg controls access to your terminal by others. It is typically
-	  used to allow or disallow other users to write to your terminal
-
-config BUSYBOX_CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP
-	bool "Enable writing to tty only by group, not by everybody"
-	default n
-	depends on BUSYBOX_CONFIG_MESG
-	help
-	  Usually, ttys are owned by group "tty", and "write" tool is
-	  setgid to this group. This way, "mesg y" only needs to enable
-	  "write by owning group" bit in tty mode.
-
-	  If you set this option to N, "mesg y" will enable writing
-	  by anybody at all. This is not recommended.
-
-endmenu
-

--- a/package/busybox/config/libbb/Config.in
+++ /dev/null
@@ -1,233 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Busybox Library Tuning"
-
-config BUSYBOX_CONFIG_FEATURE_SYSTEMD
-	bool "Enable systemd support"
-	default n
-	help
-	  If you plan to use busybox daemons on a system where daemons
-	  are controlled by systemd, enable this option.
-	  If you don't use systemd, it is still safe to enable it,
-	  but the downside is increased code size.
-config BUSYBOX_CONFIG_FEATURE_RTMINMAX
-	bool "Support RTMIN[+n] and RTMAX[-n] signal names"
-	default n
-	help
-	  Support RTMIN[+n] and RTMAX[-n] signal names
-	  in kill, killall etc. This costs ~250 bytes.
-
-config BUSYBOX_CONFIG_PASSWORD_MINLEN
-	int "Minimum password length"
-	default 6
-	range 5 32
-	help
-	  Minimum allowable password length.
-
-config BUSYBOX_CONFIG_MD5_SIZE_VS_SPEED
-	int "MD5: Trade bytes for speed (0:fast, 3:slow)"
-	default 2
-	range 0 3
-	help
-	  Trade binary size versus speed for the md5sum algorithm.
-	  Approximate values running uClibc and hashing
-	  linux-2.4.4.tar.bz2 were:
-	                    user times (sec)  text size (386)
-	  0 (fastest)         1.1                6144
-	  1                   1.4                5392
-	  2                   3.0                5088
-	  3 (smallest)        5.1                4912
-
-config BUSYBOX_CONFIG_FEATURE_FAST_TOP
-	bool "Faster /proc scanning code (+100 bytes)"
-	default y
-	help
-	  This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
-	  but code size is slightly bigger.
-
-config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
-	bool "Support for /etc/networks"
-	default n
-	help
-	  Enable support for network names in /etc/networks. This is
-	  a rarely used feature which allows you to use names
-	  instead of IP/mask pairs in route command.
-
-config BUSYBOX_CONFIG_FEATURE_USE_TERMIOS
-	bool "Use termios to manipulate the screen"
-	default n
-	depends on BUSYBOX_CONFIG_MORE || BUSYBOX_CONFIG_TOP || BUSYBOX_CONFIG_POWERTOP
-	help
-	  This option allows utilities such as 'more' and 'top' to determine
-	  the size of the screen. If you leave this disabled, your utilities
-	  that display things on the screen will be especially primitive and
-	  will be unable to determine the current screen size, and will be
-	  unable to move the cursor.
-
-config BUSYBOX_CONFIG_FEATURE_EDITING
-	bool "Command line editing"
-	default y
-	help
-	  Enable line editing (mainly for shell command line).
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
-	int "Maximum length of input"
-	range 128 8192
-	default 512
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Line editing code uses on-stack buffers for storage.
-	  You may want to decrease this parameter if your target machine
-	  benefits from smaller stack usage.
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_VI
-	bool "vi-style line editing commands"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Enable vi-style line editing. In shells, this mode can be
-	  turned on and off with "set -o vi" and "set +o vi".
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY
-	int "History size"
-	# Don't allow way too big values here, code uses fixed "char *history[N]" struct member
-	range 0 9999
-	default 256
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Specify command history size (0 - disable).
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
-	bool "History saving"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Enable history saving in shells.
-
-config BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH
-	bool "Reverse history search"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
-	help
-	  Enable readline-like Ctrl-R combination for reverse history search.
-	  Increases code by about 0.5k.
-
-config BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
-	bool "Tab completion"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Enable tab completion.
-
-config BUSYBOX_CONFIG_FEATURE_USERNAME_COMPLETION
-	bool "Username completion"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
-	help
-	  Enable username completion.
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
-	bool "Fancy shell prompts"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Setting this option allows for prompts to use things like \w and
-	  \$ and escape codes.
-
-config BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL
-	bool "Query cursor position from terminal"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_EDITING
-	help
-	  Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
-	  current cursor position. This information is used to make line
-	  editing more robust in some cases.
-	  If you are not sure whether your terminals respond to this code
-	  correctly, or want to save on code size (about 400 bytes),
-	  then do not turn this option on.
-
-config BUSYBOX_CONFIG_FEATURE_NON_POSIX_CP
-	bool "Non-POSIX, but safer, copying to special nodes"
-	default y
-	help
-	  With this option, "cp file symlink" will delete symlink
-	  and create a regular file. This does not conform to POSIX,
-	  but prevents a symlink attack.
-	  Similarly, "cp file device" will not send file's data
-	  to the device. (To do that, use "cat file >device")
-
-config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
-	bool "Give more precise messages when copy fails (cp, mv etc)"
-	default n
-	help
-	  Error messages with this feature enabled:
-	    $ cp file /does_not_exist/file
-	    cp: cannot create '/does_not_exist/file': Path does not exist
-	    $ cp file /vmlinuz/file
-	    cp: cannot stat '/vmlinuz/file': Path has non-directory component
-	  If this feature is not enabled, they will be, respectively:
-	    cp: cannot create '/does_not_exist/file': No such file or directory
-	    cp: cannot stat '/vmlinuz/file': Not a directory
-	  This will cost you ~60 bytes.
-
-config BUSYBOX_CONFIG_FEATURE_COPYBUF_KB
-	int "Copy buffer size, in kilobytes"
-	range 1 1024
-	default 4
-	help
-	  Size of buffer used by cp, mv, install, wget etc.
-	  Buffers which are 4 kb or less will be allocated on stack.
-	  Bigger buffers will be allocated with mmap, with fallback to 4 kb
-	  stack buffer if mmap fails.
-
-config BUSYBOX_CONFIG_FEATURE_SKIP_ROOTFS
-	bool "Skip rootfs in mount table"
-	default n
-	help
-	  Ignore rootfs entry in mount table.
-
-	  In Linux, kernel has a special filesystem, rootfs, which is initially
-	  mounted on /. It contains initramfs data, if kernel is configured
-	  to have one. Usually, another file system is mounted over / early
-	  in boot process, and therefore most tools which manipulate
-	  mount table, such as df, will skip rootfs entry.
-
-	  However, some systems do not mount anything on /.
-	  If you need to configure busybox for one of these systems,
-	  you may find useful to turn this option off to make df show
-	  initramfs statistic.
-
-	  Otherwise, choose Y.
-
-config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
-	bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
-	  time intervals (time, ping, traceroute etc need this).
-	  Probably requires Linux 2.6+. If not selected, gettimeofday
-	  will be used instead (which gives wrong results if date/time
-	  is reset).
-
-config BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR
-	bool "Use ioctl names rather than hex values in error messages"
-	default y
-	help
-	  Use ioctl names rather than hex values in error messages
-	  (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
-	  saves about 1400 bytes.
-
-config BUSYBOX_CONFIG_FEATURE_HWIB
-	bool "Support infiniband HW"
-	default n
-	help
-	  Support for printing infiniband addresses in
-	  network applets.
-
-endmenu
-

--- a/package/busybox/config/loginutils/Config.in
+++ /dev/null
@@ -1,330 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Login/Password Management Utilities"
-
-config BUSYBOX_CONFIG_ADD_SHELL
-       bool "add-shell"
-       default n if BUSYBOX_CONFIG_DESKTOP
-       help
-         Add shells to /etc/shells.
-
-config BUSYBOX_CONFIG_REMOVE_SHELL
-       bool "remove-shell"
-       default n if BUSYBOX_CONFIG_DESKTOP
-       help
-         Remove shells from /etc/shells.
-
-config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
-	bool "Support for shadow passwords"
-	default y
-	help
-	  Build support for shadow password in /etc/shadow. This file is only
-	  readable by root and thus the encrypted passwords are no longer
-	  publicly readable.
-
-config BUSYBOX_CONFIG_USE_BB_PWD_GRP
-	bool "Use internal password and group functions rather than system functions"
-	default n
-	help
-	  If you leave this disabled, busybox will use the system's password
-	  and group functions. And if you are using the GNU C library
-	  (glibc), you will then need to install the /etc/nsswitch.conf
-	  configuration file and the required /lib/libnss_* libraries in
-	  order for the password and group functions to work. This generally
-	  makes your embedded system quite a bit larger.
-
-	  Enabling this option will cause busybox to directly access the
-	  system's /etc/password, /etc/group files (and your system will be
-	  smaller, and I will get fewer emails asking about how glibc NSS
-	  works). When this option is enabled, you will not be able to use
-	  PAM to access remote LDAP password servers and whatnot. And if you
-	  want hostname resolution to work with glibc, you still need the
-	  /lib/libnss_* libraries.
-
-	  If you need to use glibc's nsswitch.conf mechanism
-	  (e.g. if user/group database is NOT stored in /etc/passwd etc),
-	  you must NOT use this option.
-
-	  If you enable this option, it will add about 1.5k.
-
-config BUSYBOX_CONFIG_USE_BB_SHADOW
-	bool "Use internal shadow password functions"
-	default n
-	depends on BUSYBOX_CONFIG_USE_BB_PWD_GRP && BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
-	help
-	  If you leave this disabled, busybox will use the system's shadow
-	  password handling functions. And if you are using the GNU C library
-	  (glibc), you will then need to install the /etc/nsswitch.conf
-	  configuration file and the required /lib/libnss_* libraries in
-	  order for the shadow password functions to work. This generally
-	  makes your embedded system quite a bit larger.
-
-	  Enabling this option will cause busybox to directly access the
-	  system's /etc/shadow file when handling shadow passwords. This
-	  makes your system smaller (and I will get fewer emails asking about
-	  how glibc NSS works). When this option is enabled, you will not be
-	  able to use PAM to access shadow passwords from remote LDAP
-	  password servers and whatnot.
-
-config BUSYBOX_CONFIG_USE_BB_CRYPT
-	bool "Use internal crypt functions"
-	default n
-	help
-	  Busybox has internal DES and MD5 crypt functions.
-	  They produce results which are identical to corresponding
-	  standard C library functions.
-
-	  If you leave this disabled, busybox will use the system's
-	  crypt functions. Most C libraries use large (~70k)
-	  static buffers there, and also combine them with more general
-	  DES encryption/decryption.
-
-	  For busybox, having large static buffers is undesirable,
-	  especially on NOMMU machines. Busybox also doesn't need
-	  DES encryption/decryption and can do with smaller code.
-
-	  If you enable this option, it will add about 4.8k of code
-	  if you are building dynamically linked executable.
-	  In static build, it makes code _smaller_ by about 1.2k,
-	  and likely many kilobytes less of bss.
-
-config BUSYBOX_CONFIG_USE_BB_CRYPT_SHA
-	bool "Enable SHA256/512 crypt functions"
-	default n
-	depends on BUSYBOX_CONFIG_USE_BB_CRYPT
-	help
-	  Enable this if you have passwords starting with "$5$" or "$6$"
-	  in your /etc/passwd or /etc/shadow files. These passwords
-	  are hashed using SHA256 and SHA512 algorithms. Support for them
-	  was added to glibc in 2008.
-	  With this option off, login will fail password check for any
-	  user which has password encrypted with these algorithms.
-
-config BUSYBOX_CONFIG_ADDUSER
-	bool "adduser"
-	default n
-	help
-	  Utility for creating a new user account.
-
-config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the adduser applet.
-
-config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
-	bool "Enable sanity check on user/group names in adduser and addgroup"
-	default n
-	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
-	help
-	  Enable sanity check on user and group names in adduser and addgroup.
-	  To avoid problems, the user or group name should consist only of
-	  letters, digits, underscores, periods, at signs and dashes,
-	  and not start with a dash (as defined by IEEE Std 1003.1-2001).
-	  For compatibility with Samba machine accounts "$" is also supported
-	  at the end of the user or group name.
-
-config BUSYBOX_CONFIG_FIRST_SYSTEM_ID
-	int "First valid system uid or gid for adduser and addgroup"
-	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
-	range 0 64900
-	default 100
-	help
-	  First valid system uid or gid for adduser and addgroup
-
-config BUSYBOX_CONFIG_LAST_SYSTEM_ID
-	int "Last valid system uid or gid for adduser and addgroup"
-	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
-	range 0 64900
-	default 999
-	help
-	  Last valid system uid or gid for adduser and addgroup
-
-config BUSYBOX_CONFIG_ADDGROUP
-	bool "addgroup"
-	default n
-	help
-	  Utility for creating a new group account.
-
-config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_ADDGROUP && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the addgroup applet.
-
-config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
-	bool "Support for adding users to groups"
-	default n
-	depends on BUSYBOX_CONFIG_ADDGROUP
-	help
-	  If  called  with two non-option arguments,
-	  addgroup will add an existing user to an
-	  existing group.
-
-config BUSYBOX_CONFIG_DELUSER
-	bool "deluser"
-	default n
-	help
-	  Utility for deleting a user account.
-
-config BUSYBOX_CONFIG_DELGROUP
-	bool "delgroup"
-	default n
-	help
-	  Utility for deleting a group account.
-
-config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
-	bool "Support for removing users from groups"
-	default n
-	depends on BUSYBOX_CONFIG_DELGROUP
-	help
-	  If called with two non-option arguments, deluser
-	  or delgroup will remove an user from a specified group.
-
-config BUSYBOX_CONFIG_GETTY
-	bool "getty"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  getty lets you log in on a tty. It is normally invoked by init.
-
-	  Note that you can save a few bytes by disabling it and
-	  using login applet directly.
-	  If you need to reset tty attributes before calling login,
-	  this script approximates getty:
-
-	  exec </dev/$1 >/dev/$1 2>&1 || exit 1
-	  reset
-	  stty sane; stty ispeed 38400; stty ospeed 38400
-	  printf "%s login: " "`hostname`"
-	  read -r login
-	  exec /bin/login "$login"
-
-config BUSYBOX_CONFIG_LOGIN
-	bool "login"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  login is used when signing onto a system.
-
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
-
-config BUSYBOX_CONFIG_PAM
-	bool "Support for PAM (Pluggable Authentication Modules)"
-	default n
-	depends on DEVEL
-	depends on BUSYBOX_CONFIG_LOGIN
-	help
-	  Use PAM in login(1) instead of direct access to password database.
-
-	  OpenWrt specific:
-	    You should install libpam from the packages feed and compile it
-	    before trying to build busysbox.
-
-config BUSYBOX_CONFIG_LOGIN_SCRIPTS
-	bool "Support for login scripts"
-	depends on BUSYBOX_CONFIG_LOGIN
-	default n
-	help
-	  Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
-	  just prior to switching from root to logged-in user.
-
-config BUSYBOX_CONFIG_FEATURE_NOLOGIN
-	bool "Support for /etc/nologin"
-	default n
-	depends on BUSYBOX_CONFIG_LOGIN
-	help
-	  The file /etc/nologin is used by (some versions of) login(1).
-	  If it exists, non-root logins are prohibited.
-
-config BUSYBOX_CONFIG_FEATURE_SECURETTY
-	bool "Support for /etc/securetty"
-	default n
-	depends on BUSYBOX_CONFIG_LOGIN
-	help
-	  The file /etc/securetty is used by (some versions of) login(1).
-	  The file contains the device names of tty lines (one per line,
-	  without leading /dev/) on which root is allowed to login.
-
-config BUSYBOX_CONFIG_PASSWD
-	bool "passwd"
-	default y
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  passwd changes passwords for user and group accounts. A normal user
-	  may only change the password for his/her own account, the super user
-	  may change the password for any account. The administrator of a group
-	  may change the password for the group.
-
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
-
-config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
-	bool "Check new passwords for weakness"
-	default y
-	depends on BUSYBOX_CONFIG_PASSWD
-	help
-	  With this option passwd will refuse new passwords which are "weak".
-
-config BUSYBOX_CONFIG_CRYPTPW
-	bool "cryptpw"
-	default n
-	help
-	  Encrypts the given password with the crypt(3) libc function
-	  using the given salt. Debian has this utility under mkpasswd
-	  name. Busybox provides mkpasswd as an alias for cryptpw.
-
-config BUSYBOX_CONFIG_CHPASSWD
-	bool "chpasswd"
-	default n
-	help
-	  Reads a file of user name and password pairs from standard input
-	  and uses this information to update a group of existing users.
-
-config BUSYBOX_CONFIG_SU
-	bool "su"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  su is used to become another user during a login session.
-	  Invoked without a username, su defaults to becoming the super user.
-
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
-
-config BUSYBOX_CONFIG_FEATURE_SU_SYSLOG
-	bool "Enable su to write to syslog"
-	default n
-	depends on BUSYBOX_CONFIG_SU
-
-config BUSYBOX_CONFIG_FEATURE_SU_CHECKS_SHELLS
-	bool "Enable su to check user's shell to be listed in /etc/shells"
-	depends on BUSYBOX_CONFIG_SU
-	default n
-
-config BUSYBOX_CONFIG_SULOGIN
-	bool "sulogin"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  sulogin is invoked when the system goes into single user
-	  mode (this is done through an entry in inittab).
-
-config BUSYBOX_CONFIG_VLOCK
-	bool "vlock"
-	default n
-	help
-	  Build the "vlock" applet which allows you to lock (virtual) terminals.
-
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
-
-endmenu
-

--- a/package/busybox/config/mailutils/Config.in
+++ /dev/null
@@ -1,57 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-menu "Mail Utilities"
 
-
-
-config BUSYBOX_CONFIG_MAKEMIME
-	bool "makemime"
-	default n
-	help
-	  Create MIME-formatted messages.
-
-config BUSYBOX_CONFIG_FEATURE_MIME_CHARSET
-	string "Default charset"
-	default n
-	depends on BUSYBOX_CONFIG_MAKEMIME || BUSYBOX_CONFIG_REFORMIME || BUSYBOX_CONFIG_SENDMAIL
-	help
-	  Default charset of the message.
-
-config BUSYBOX_CONFIG_POPMAILDIR
-	bool "popmaildir"
-	default n
-	help
-	  Simple yet powerful POP3 mail popper. Delivers content
-	  of remote mailboxes to local Maildir.
-
-config BUSYBOX_CONFIG_FEATURE_POPMAILDIR_DELIVERY
-	bool "Allow message filters and custom delivery program"
-	default n
-	depends on BUSYBOX_CONFIG_POPMAILDIR
-	help
-	  Allow to use a custom program to filter the content
-	  of the message before actual delivery (-F "prog [args...]").
-	  Allow to use a custom program for message actual delivery
-	  (-M "prog [args...]").
-
-config BUSYBOX_CONFIG_REFORMIME
-	bool "reformime"
-	default n
-	help
-	  Parse MIME-formatted messages.
-
-config BUSYBOX_CONFIG_FEATURE_REFORMIME_COMPAT
-	bool "Accept and ignore options other than -x and -X"
-	default n
-	depends on BUSYBOX_CONFIG_REFORMIME
-	help
-	  Accept (for compatibility only) and ignore options
-	  other than -x and -X.
-
-config BUSYBOX_CONFIG_SENDMAIL
-	bool "sendmail"
-	default n
-	help
-	  Barebones sendmail.
-
-endmenu
-

--- a/package/busybox/config/miscutils/Config.in
+++ /dev/null
@@ -1,767 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Miscellaneous Utilities"
-
-config BUSYBOX_CONFIG_CONSPY
-	bool "conspy"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  A text-mode VNC like program for Linux virtual terminals.
-	  example:  conspy NUM      shared access to console num
-	  or        conspy -nd NUM  screenshot of console num
-	  or        conspy -cs NUM  poor man's GNU screen like
-config BUSYBOX_CONFIG_LESS
-	bool "less"
-	default y
-	help
-	  'less' is a pager, meaning that it displays text files. It possesses
-	  a wide array of features, and is an improvement over 'more'.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_MAXLINES
-	int "Max number of input lines less will try to eat"
-	default 9999999
-	depends on BUSYBOX_CONFIG_LESS
-
-config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
-	bool "Enable bracket searching"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  This option adds the capability to search for matching left and right
-	  brackets, facilitating programming.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_FLAGS
-	bool "Enable extra flags"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  The extra flags provided do the following:
-
-	  The -M flag enables a more sophisticated status line.
-	  The -m flag enables a simpler status line with a percentage.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_MARKS
-	bool "Enable marks"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  Marks enable positions in a file to be stored for easy reference.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_REGEXP
-	bool "Enable regular expressions"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  Enable regular expressions, allowing complex file searches.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_WINCH
-	bool "Enable automatic resizing on window size changes"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  Makes less track window size changes.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_ASK_TERMINAL
-	bool "Use 'tell me cursor position' ESC sequence to measure window"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_LESS_WINCH
-	help
-	  Makes less track window size changes.
-	  If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
-	  this option makes less perform a last-ditch effort to find it:
-	  position cursor to 999,999 and ask terminal to report real
-	  cursor position using "ESC [ 6 n" escape sequence, then read stdin.
-
-	  This is not clean but helps a lot on serial lines and such.
-
-config BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
-	bool "Enable flag changes ('-' command)"
-	default n
-	depends on BUSYBOX_CONFIG_LESS
-	help
-	  This enables the ability to change command-line flags within
-	  less itself ('-' keyboard command).
-
-config BUSYBOX_CONFIG_FEATURE_LESS_LINENUMS
-	bool "Enable dynamic switching of line numbers"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
-	help
-	  Enables "-N" command.
-config BUSYBOX_CONFIG_NANDWRITE
-	bool "nandwrite"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Write to the specified MTD device, with bad blocks awareness
-
-config BUSYBOX_CONFIG_NANDDUMP
-	bool "nanddump"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Dump the content of raw NAND chip
-config BUSYBOX_CONFIG_SETSERIAL
-	bool "setserial"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Retrieve or set Linux serial port.
-config BUSYBOX_CONFIG_UBIATTACH
-	bool "ubiattach"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Attach MTD device to an UBI device.
-
-config BUSYBOX_CONFIG_UBIDETACH
-	bool "ubidetach"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Detach MTD device from an UBI device.
-
-config BUSYBOX_CONFIG_UBIMKVOL
-	bool "ubimkvol"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Create a UBI volume.
-
-config BUSYBOX_CONFIG_UBIRMVOL
-	bool "ubirmvol"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Delete a UBI volume.
-
-config BUSYBOX_CONFIG_UBIRSVOL
-	bool "ubirsvol"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Resize a UBI volume.
-
-config BUSYBOX_CONFIG_UBIUPDATEVOL
-	bool "ubiupdatevol"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Update a UBI volume.
-
-config BUSYBOX_CONFIG_ADJTIMEX
-	bool "adjtimex"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Adjtimex reads and optionally sets adjustment parameters for
-	  the Linux clock adjustment algorithm.
-
-config BUSYBOX_CONFIG_BBCONFIG
-	bool "bbconfig"
-	default n
-	help
-	  The bbconfig applet will print the config file with which
-	  busybox was built.
-
-config BUSYBOX_CONFIG_FEATURE_COMPRESS_BBCONFIG
-	bool "Compress bbconfig data"
-	default n
-	depends on BUSYBOX_CONFIG_BBCONFIG
-	help
-	  Store bbconfig data in compressed form, uncompress them on-the-fly
-	  before output.
-
-	  If you have a really tiny busybox with few applets enabled (and
-	  bunzip2 isn't one of them), the overhead of the decompressor might
-	  be noticeable. Also, if you run executables directly from ROM
-	  and have very little memory, this might not be a win. Otherwise,
-	  you probably want this.
-
-config BUSYBOX_CONFIG_BEEP
-	bool "beep"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The beep applets beeps in a given freq/Hz.
-
-config BUSYBOX_CONFIG_FEATURE_BEEP_FREQ
-	int "default frequency"
-	range 0 2147483647
-	default 4000
-	depends on BUSYBOX_CONFIG_BEEP
-	help
-	  Frequency for default beep.
-
-config BUSYBOX_CONFIG_FEATURE_BEEP_LENGTH_MS
-	int "default length"
-	range 0 2147483647
-	default 30
-	depends on BUSYBOX_CONFIG_BEEP
-	help
-	  Length in ms for default beep.
-
-config BUSYBOX_CONFIG_CHAT
-	bool "chat"
-	default n
-	help
-	  Simple chat utility.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_NOFAIL
-	bool "Enable NOFAIL expect strings"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  When enabled expect strings which are started with a dash trigger
-	  no-fail mode. That is when expectation is not met within timeout
-	  the script is not terminated but sends next SEND string and waits
-	  for next EXPECT string. This allows to compose far more flexible
-	  scripts.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_TTY_HIFI
-	bool "Force STDIN to be a TTY"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  Original chat always treats STDIN as a TTY device and sets for it
-	  so-called raw mode. This option turns on such behaviour.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_IMPLICIT_CR
-	bool "Enable implicit Carriage Return"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  When enabled make chat to terminate all SEND strings with a "\r"
-	  unless "\c" is met anywhere in the string.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_SWALLOW_OPTS
-	bool "Swallow options"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  Busybox chat require no options. To make it not fail when used
-	  in place of original chat (which has a bunch of options) turn
-	  this on.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_SEND_ESCAPES
-	bool "Support weird SEND escapes"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  Original chat uses some escape sequences in SEND arguments which
-	  are not sent to device but rather performs special actions.
-	  E.g. "\K" means to send a break sequence to device.
-	  "\d" delays execution for a second, "\p" -- for a 1/100 of second.
-	  Before turning this option on think twice: do you really need them?
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_VAR_ABORT_LEN
-	bool "Support variable-length ABORT conditions"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  Original chat uses fixed 50-bytes length ABORT conditions. Say N here.
-
-config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
-	bool "Support revoking of ABORT conditions"
-	depends on BUSYBOX_CONFIG_CHAT
-	default n
-	help
-	  Support CLR_ABORT directive.
-
-config BUSYBOX_CONFIG_CHRT
-	bool "chrt"
-	default n
-	help
-	  manipulate real-time attributes of a process.
-	  This requires sched_{g,s}etparam support in your libc.
-
-config BUSYBOX_CONFIG_CROND
-	bool "crond"
-	default y
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  Crond is a background daemon that parses individual crontab
-	  files and executes commands on behalf of the users in question.
-	  This is a port of dcron from slackware. It uses files of the
-	  format /var/spool/cron/crontabs/<username> files, for example:
-	      $ cat /var/spool/cron/crontabs/root
-	      # Run daily cron jobs at 4:40 every day:
-	      40 4 * * * /etc/cron/daily > /dev/null 2>&1
-
-config BUSYBOX_CONFIG_FEATURE_CROND_D
-	bool "Support option -d to redirect output to stderr"
-	depends on BUSYBOX_CONFIG_CROND
-	default n
-	help
-	  -d sets loglevel to 0 (most verbose) and directs all output to stderr.
-
-config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
-	bool "Report command output via email (using sendmail)"
-	default n
-	depends on BUSYBOX_CONFIG_CROND
-	help
-	  Command output will be sent to corresponding user via email.
-
-config BUSYBOX_CONFIG_FEATURE_CROND_DIR
-	string "crond spool directory"
-	default "/var/spool/cron"
-	depends on BUSYBOX_CONFIG_CROND || BUSYBOX_CONFIG_CRONTAB
-	help
-	  Location of crond spool.
-
-config BUSYBOX_CONFIG_CRONTAB
-	bool "crontab"
-	default y
-	help
-	  Crontab manipulates the crontab for a particular user. Only
-	  the superuser may specify a different user and/or crontab directory.
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
-
-config BUSYBOX_CONFIG_DC
-	bool "dc"
-	default n
-	help
-	  Dc is a reverse-polish desk calculator which supports unlimited
-	  precision arithmetic.
-
-config BUSYBOX_CONFIG_FEATURE_DC_LIBM
-	bool "Enable power and exp functions (requires libm)"
-	default n
-	depends on BUSYBOX_CONFIG_DC
-	help
-	  Enable power and exp functions.
-	  NOTE: This will require libm to be present for linking.
-
-config BUSYBOX_CONFIG_DEVFSD
-	bool "devfsd (obsolete)"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  This is deprecated and should NOT be used anymore.
-	  Use linux >= 2.6 (optionally with hotplug) and mdev instead!
-	  See docs/mdev.txt for detailed instructions on how to use mdev
-	  instead.
-
-	  Provides compatibility with old device names on a devfs systems.
-	  You should set it to true if you have devfs enabled.
-	  The following keywords in devsfd.conf are supported:
-	  "CLEAR_CONFIG", "INCLUDE", "OPTIONAL_INCLUDE", "RESTORE",
-	  "PERMISSIONS", "EXECUTE", "COPY", "IGNORE",
-	  "MKOLDCOMPAT", "MKNEWCOMPAT","RMOLDCOMPAT", "RMNEWCOMPAT".
-
-	  But only if they are written UPPERCASE!!!!!!!!
-
-config BUSYBOX_CONFIG_DEVFSD_MODLOAD
-	bool "Adds support for MODLOAD keyword in devsfd.conf"
-	default n
-	depends on BUSYBOX_CONFIG_DEVFSD
-	help
-	  This actually doesn't work with busybox modutils but needs
-	  the external modutils.
-
-config BUSYBOX_CONFIG_DEVFSD_FG_NP
-	bool "Enables the -fg and -np options"
-	default n
-	depends on BUSYBOX_CONFIG_DEVFSD
-	help
-	  -fg  Run the daemon in the foreground.
-	  -np  Exit after parsing the configuration file.
-	       Do not poll for events.
-
-config BUSYBOX_CONFIG_DEVFSD_VERBOSE
-	bool "Increases logging (and size)"
-	default n
-	depends on BUSYBOX_CONFIG_DEVFSD
-	help
-	  Increases logging to stderr or syslog.
-
-config BUSYBOX_CONFIG_FEATURE_DEVFS
-	bool "Use devfs names for all devices (obsolete)"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This is obsolete and should NOT be used anymore.
-	  Use linux >= 2.6 (optionally with hotplug) and mdev instead!
-
-	  For legacy systems -- if there is no way around devfsd -- this
-	  tells busybox to look for names like /dev/loop/0 instead of
-	  /dev/loop0. If your /dev directory has normal names instead of
-	  devfs names, you don't want this.
-
-config BUSYBOX_CONFIG_DEVMEM
-	bool "devmem"
-	default n
-	help
-	  devmem is a small program that reads and writes from physical
-	  memory using /dev/mem.
-
-config BUSYBOX_CONFIG_EJECT
-	bool "eject"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Used to eject cdroms. (defaults to /dev/cdrom)
-
-config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
-	bool "SCSI support"
-	default n
-	depends on BUSYBOX_CONFIG_EJECT
-	help
-	  Add the -s option to eject, this allows to eject SCSI-Devices and
-	  usb-storage devices.
-
-config BUSYBOX_CONFIG_FBSPLASH
-	bool "fbsplash"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Shows splash image and progress bar on framebuffer device.
-	  Can be used during boot phase of an embedded device. ~2kb.
-	  Usage:
-	  - use kernel option 'vga=xxx' or otherwise enable fb device.
-	  - put somewhere fbsplash.cfg file and an image in .ppm format.
-	  - $ setsid fbsplash [params] &
-	    -c: hide cursor
-	    -d /dev/fbN: framebuffer device (if not /dev/fb0)
-	    -s path_to_image_file (can be "-" for stdin)
-	    -i path_to_cfg_file (can be "-" for stdin)
-	    -f path_to_fifo (can be "-" for stdin)
-	  - if you want to run it only in presence of kernel parameter:
-	    grep -q "fbsplash=on" </proc/cmdline && setsid fbsplash [params] &
-	  - commands for fifo:
-	    "NN" (ASCII decimal number) - percentage to show on progress bar
-	    "exit" - well you guessed it
-
-config BUSYBOX_CONFIG_FLASHCP
-	bool "flashcp"
-	default n  # doesn't build on Ubuntu 8.04
-	help
-	  The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.
-	  This utility is used to copy images into a MTD device.
-
-config BUSYBOX_CONFIG_FLASH_LOCK
-	bool "flash_lock"
-	default n  # doesn't build on Ubuntu 8.04
-	help
-	  The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
-	  utility locks part or all of the flash device.
-
-config BUSYBOX_CONFIG_FLASH_UNLOCK
-	bool "flash_unlock"
-	default n  # doesn't build on Ubuntu 8.04
-	help
-	  The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
-	  utility unlocks part or all of the flash device.
-
-config BUSYBOX_CONFIG_FLASH_ERASEALL
-	bool "flash_eraseall"
-	default n  # doesn't build on Ubuntu 8.04
-	help
-	  The flash_eraseall binary from mtd-utils as of git head c4c6a59eb.
-	  This utility is used to erase the whole MTD device.
-
-config BUSYBOX_CONFIG_IONICE
-	bool "ionice"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Set/set program io scheduling class and priority
-	  Requires kernel >= 2.6.13
-
-config BUSYBOX_CONFIG_INOTIFYD
-	bool "inotifyd"
-	default n  # doesn't build on Knoppix 5
-	help
-	  Simple inotify daemon. Reports filesystem changes. Requires
-	  kernel >= 2.6.13
-
-config BUSYBOX_CONFIG_LAST
-	bool "last"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_WTMP
-	help
-	  'last' displays a list of the last users that logged into the system.
-
-choice
-	prompt "Choose last implementation"
-	depends on BUSYBOX_CONFIG_LAST
-	default BUSYBOX_CONFIG_FEATURE_LAST_FANCY
-
-config BUSYBOX_CONFIG_FEATURE_LAST_SMALL
-	bool "small"
-	help
-	  This is a small version of last with just the basic set of
-	  features.
-
-config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
-	bool "huge"
-	help
-	  'last' displays detailed information about the last users that
-	  logged into the system (mimics sysvinit last). +900 bytes.
-endchoice
-
-config BUSYBOX_CONFIG_HDPARM
-	bool "hdparm"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Get/Set hard drive parameters. Primarily intended for ATA
-	  drives. Adds about 13k (or around 30k if you enable the
-	  FEATURE_HDPARM_GET_IDENTITY option)....
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_GET_IDENTITY
-	bool "Support obtaining detailed information directly from drives"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the -I and -i options to obtain detailed information
-	  directly from drives about their capabilities and supported ATA
-	  feature set. If no device name is specified, hdparm will read
-	  identify data from stdin. Enabling this option will add about 16k...
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
-	bool "Register an IDE interface (DANGEROUS)"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the 'hdparm -R' option to register an IDE interface.
-	  This is dangerous stuff, so you should probably say N.
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
-	bool "Un-register an IDE interface (DANGEROUS)"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the 'hdparm -U' option to un-register an IDE interface.
-	  This is dangerous stuff, so you should probably say N.
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
-	bool "Perform device reset (DANGEROUS)"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the 'hdparm -w' option to perform a device reset.
-	  This is dangerous stuff, so you should probably say N.
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
-	bool "Tristate device for hotswap (DANGEROUS)"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the 'hdparm -x' option to tristate device for hotswap,
-	  and the '-b' option to get/set bus state. This is dangerous
-	  stuff, so you should probably say N.
-
-config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
-	bool "Get/set using_dma flag"
-	default n
-	depends on BUSYBOX_CONFIG_HDPARM
-	help
-	  Enables the 'hdparm -d' option to get/set using_dma flag.
-
-config BUSYBOX_CONFIG_LOCK
-	bool "lock"
-	default y
-	help
-	  Small utility for using locks in scripts
-
-config BUSYBOX_CONFIG_MAKEDEVS
-	bool "makedevs"
-	default n
-	help
-	  'makedevs' is a utility used to create a batch of devices with
-	  one command.
-
-	  There are two choices for command line behaviour, the interface
-	  as used by LEAF/Linux Router Project, or a device table file.
-
-	  'leaf' is traditionally what busybox follows, it allows multiple
-	  devices of a particluar type to be created per command.
-	  e.g. /dev/hda[0-9]
-	  Device properties are passed as command line arguments.
-
-	  'table' reads device properties from a file or stdin, allowing
-	  a batch of unrelated devices to be made with one command.
-	  User/group names are allowed as an alternative to uid/gid.
-
-choice
-	prompt "Choose makedevs behaviour"
-	depends on BUSYBOX_CONFIG_MAKEDEVS
-	default BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
-
-config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_LEAF
-	bool "leaf"
-
-config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
-	bool "table"
-
-endchoice
-
-config BUSYBOX_CONFIG_MAN
-	bool "man"
-	default n
-	help
-	  Format and display manual pages.
-
-config BUSYBOX_CONFIG_MICROCOM
-	bool "microcom"
-	default n
-	help
-	  The poor man's minicom utility for chatting with serial port devices.
-
-config BUSYBOX_CONFIG_MOUNTPOINT
-	bool "mountpoint"
-	default n
-	help
-	  mountpoint checks if the directory is a mountpoint.
-
-config BUSYBOX_CONFIG_MT
-	bool "mt"
-	default n
-	help
-	  mt is used to control tape devices. You can use the mt utility
-	  to advance or rewind a tape past a specified number of archive
-	  files on the tape.
-
-config BUSYBOX_CONFIG_RAIDAUTORUN
-	bool "raidautorun"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  raidautorun tells the kernel md driver to
-	  search and start RAID arrays.
-
-config BUSYBOX_CONFIG_READAHEAD
-	bool "readahead"
-	default n
-	depends on BUSYBOX_CONFIG_LFS
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Preload the files listed on the command line into RAM cache so that
-	  subsequent reads on these files will not block on disk I/O.
-
-	  This applet just calls the readahead(2) system call on each file.
-	  It is mainly useful in system startup scripts to preload files
-	  or executables before they are used. When used at the right time
-	  (in particular when a CPU bound process is running) it can
-	  significantly speed up system startup.
-
-	  As readahead(2) blocks until each file has been read, it is best to
-	  run this applet as a background job.
-
-config BUSYBOX_CONFIG_RFKILL
-	bool "rfkill"
-	default n  # doesn't build on Ubuntu 9.04
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Enable/disable wireless devices.
-
-	  rfkill list : list all wireless devices
-	  rfkill list bluetooth : list all bluetooth devices
-	  rfkill list 1 : list device corresponding to the given index
-	  rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
-
-config BUSYBOX_CONFIG_RUNLEVEL
-	bool "runlevel"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_UTMP
-	help
-	  find the current and previous system runlevel.
-
-	  This applet uses utmp but does not rely on busybox supporing
-	  utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.
-
-config BUSYBOX_CONFIG_RX
-	bool "rx"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Receive files using the Xmodem protocol.
-
-config BUSYBOX_CONFIG_SETSID
-	bool "setsid"
-	default n
-	help
-	  setsid runs a program in a new session
-
-config BUSYBOX_CONFIG_STRINGS
-	bool "strings"
-	default y
-	help
-	  strings prints the printable character sequences for each file
-	  specified.
-
-config BUSYBOX_CONFIG_TASKSET
-	bool "taskset"
-	default n  # doesn't build on some non-x86 targets (m68k)
-	help
-	  Retrieve or set a processes's CPU affinity.
-	  This requires sched_{g,s}etaffinity support in your libc.
-
-config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
-	bool "Fancy output"
-	default n
-	depends on BUSYBOX_CONFIG_TASKSET
-	help
-	  Add code for fancy output. This merely silences a compiler-warning
-	  and adds about 135 Bytes. May be needed for machines with alot
-	  of CPUs.
-
-config BUSYBOX_CONFIG_TIME
-	bool "time"
-	default y
-	help
-	  The time command runs the specified program with the given arguments.
-	  When the command finishes, time writes a message to standard output
-	  giving timing statistics about this program run.
-
-config BUSYBOX_CONFIG_TIMEOUT
-	bool "timeout"
-	default n
-	help
-	  Runs a program and watches it. If it does not terminate in
-	  specified number of seconds, it is sent a signal.
-
-config BUSYBOX_CONFIG_TTYSIZE
-	bool "ttysize"
-	default n
-	help
-	  A replacement for "stty size". Unlike stty, can report only width,
-	  only height, or both, in any order. It also does not complain on
-	  error, but returns default 80x24.
-	  Usage in shell scripts: width=`ttysize w`.
-
-config BUSYBOX_CONFIG_VOLNAME
-	bool "volname"
-	default n
-	help
-	  Prints a CD-ROM volume name.
-
-config BUSYBOX_CONFIG_WALL
-	bool "wall"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_UTMP
-	help
-	  Write a message to all users that are logged in.
-
-config BUSYBOX_CONFIG_WATCHDOG
-	bool "watchdog"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The watchdog utility is used with hardware or software watchdog
-	  device drivers. It opens the specified watchdog device special file
-	  and periodically writes a magic character to the device. If the
-	  watchdog applet ever fails to write the magic character within a
-	  certain amount of time, the watchdog device assumes the system has
-	  hung, and will cause the hardware to reboot.
-
-endmenu
-

--- a/package/busybox/config/modutils/Config.in
+++ /dev/null
@@ -1,270 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Linux Module Utilities"
-
-config BUSYBOX_CONFIG_MODINFO
-	bool "modinfo"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Show information about a Linux Kernel module
-
-config BUSYBOX_CONFIG_MODPROBE_SMALL
-	bool "Simplified modutils"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Simplified modutils.
-
-	  With this option modprobe does not require modules.dep file
-	  and does not use /etc/modules.conf file.
-	  It scans module files in /lib/modules/`uname -r` and
-	  determines dependencies and module alias names on the fly.
-	  This may make module loading slower, most notably
-	  when one needs to load module by alias (this requires
-	  scanning through module _bodies_).
-
-	  At the first attempt to load a module by alias modprobe
-	  will try to generate modules.dep.bb file in order to speed up
-	  future loads by alias. Failure to do so (read-only /lib/modules,
-	  etc) is not reported, and future modprobes will be slow too.
-
-	  NB: modules.dep.bb file format is not compatible
-	  with modules.dep file as created/used by standard module tools.
-
-	  Additional module parameters can be stored in
-	  /etc/modules/$module_name files.
-
-	  Apart from modprobe, other utilities are also provided:
-	  - insmod is an alias to modprobe
-	  - rmmod is an alias to modprobe -r
-	  - depmod generates modules.dep.bb
-
-	  As of 2008-07, this code is experimental. It is 14kb smaller
-	  than "non-small" modutils.
-
-config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE
-	bool "Accept module options on modprobe command line"
-	default n
-	depends on BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Allow insmod and modprobe take module options from command line.
-
-config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
-	bool "Skip loading of already loaded modules"
-	default n
-	depends on BUSYBOX_CONFIG_MODPROBE_SMALL
-	help
-	  Check if the module is already loaded.
-
-config BUSYBOX_CONFIG_INSMOD
-	bool "insmod"
-	default y
-	depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  insmod is used to load specified modules in the running kernel.
-
-config BUSYBOX_CONFIG_RMMOD
-	bool "rmmod"
-	default y
-	depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  rmmod is used to unload specified modules from the kernel.
-
-config BUSYBOX_CONFIG_LSMOD
-	bool "lsmod"
-	default y
-	depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  lsmod is used to display a list of loaded modules.
-
-config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
-	bool "Pretty output"
-	default y
-	depends on BUSYBOX_CONFIG_LSMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This option makes output format of lsmod adjusted to
-	  the format of module-init-tools for Linux kernel 2.6.
-	  Increases size somewhat.
-
-config BUSYBOX_CONFIG_MODPROBE
-	bool "modprobe"
-	default n
-	depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Handle the loading of modules, and their dependencies on a high
-	  level.
-
-config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
-	bool "Blacklist support"
-	default n
-	depends on BUSYBOX_CONFIG_MODPROBE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Say 'y' here to enable support for the 'blacklist' command in
-	  modprobe.conf. This prevents the alias resolver to resolve
-	  blacklisted modules. This is useful if you want to prevent your
-	  hardware autodetection scripts to load modules like evdev, frame
-	  buffer drivers etc.
-
-config BUSYBOX_CONFIG_DEPMOD
-	bool "depmod"
-	default n
-	depends on !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  depmod generates modules.dep (and potentially modules.alias
-	  and modules.symbols) that contain dependency information
-	  for modprobe.
-
-comment "Options common to multiple modutils"
-
-config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
-	bool "Support version 2.2/2.4 Linux kernels"
-	default n
-	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_RMMOD || BUSYBOX_CONFIG_LSMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Support module loading for 2.2.x and 2.4.x Linux kernels.
-	  This increases size considerably. Say N unless you plan
-	  to run ancient kernels.
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_TRY_MMAP
-	bool "Try to load module from a mmap'ed area"
-	default n
-	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This option causes module loading code to try to mmap
-	  module first. If it does not work (for example,
-	  it does not work for compressed modules), module will be read
-	  (and unpacked if needed) into a memory block allocated by malloc.
-
-	  The only case when mmap works but malloc does not is when
-	  you are trying to load a big module on a very memory-constrained
-	  machine. Malloc will momentarily need 2x as much memory as mmap.
-
-	  Choosing N saves about 250 bytes of code (on 32-bit x86).
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_VERSION_CHECKING
-	bool "Enable module version checking"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Support checking of versions for modules. This is used to
-	  ensure that the kernel and module are made for each other.
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
-	bool "Add module symbols to kernel symbol table"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  By adding module symbols to the kernel symbol table, Oops messages
-	  occuring within kernel modules can be properly debugged. By enabling
-	  this feature, module symbols will always be added to the kernel symbol
-	  table for proper debugging support. If you are not interested in
-	  Oops messages from kernel modules, say N.
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_LOADINKMEM
-	bool "In kernel memory optimization (uClinux only)"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This is a special uClinux only memory optimization that lets insmod
-	  load the specified kernel module directly into kernel space, reducing
-	  memory usage by preventing the need for two copies of the module
-	  being loaded into memory.
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP
-	bool "Enable insmod load map (-m) option"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && BUSYBOX_CONFIG_INSMOD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Enabling this, one would be able to get a load map
-	  output on stdout. This makes kernel module debugging
-	  easier.
-	  If you don't plan to debug kernel modules, you
-	  don't need this option.
-
-config BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL
-	bool "Symbols in load map"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP && !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Without this option, -m will only output section
-	  load map. With this option, -m will also output
-	  symbols load map.
-
-config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
-	bool "Support tainted module checking with new kernels"
-	default y
-	depends on (BUSYBOX_CONFIG_LSMOD || BUSYBOX_CONFIG_FEATURE_2_4_MODULES) && !BUSYBOX_CONFIG_MODPROBE_SMALL
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Support checking for tainted modules. These are usually binary
-	  only modules that will make the linux-kernel list ignore your
-	  support request.
-	  This option is required to support GPLONLY modules.
-
-config BUSYBOX_CONFIG_FEATURE_MODUTILS_ALIAS
-	bool "Support for module.aliases file"
-	default n
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Generate and parse modules.alias containing aliases for bus
-	  identifiers:
-	    alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
-
-	  and aliases for logical modules names e.g.:
-	    alias padlock_aes aes
-	    alias aes_i586 aes
-	    alias aes_generic aes
-
-	  Say Y if unsure.
-
-config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS
-	bool "Support for module.symbols file"
-	default n
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Generate and parse modules.symbols containing aliases for
-	  symbol_request() kernel calls, such as:
-	    alias symbol:usb_sg_init usbcore
-
-	  Say Y if unsure.
-
-config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
-	string "Default directory containing modules"
-	default "/lib/modules"
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
-	help
-	  Directory that contains kernel modules.
-	  Defaults to "/lib/modules"
-
-config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
-	string "Default name of modules.dep"
-	default "modules.dep"
-	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODPROBE_SMALL || BUSYBOX_CONFIG_MODINFO
-	help
-	  Filename that contains kernel modules dependencies.
-	  Defaults to "modules.dep"
-
-endmenu
-

--- a/package/busybox/config/networking/Config.in
+++ /dev/null
@@ -1,1089 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Networking Utilities"
-
-config BUSYBOX_CONFIG_NAMEIF
-	bool "nameif"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  nameif is used to rename network interface by its MAC address.
-	  Renamed interfaces MUST be in the down state.
-	  It is possible to use a file (default: /etc/mactab)
-	  with list of new interface names and MACs.
-	  Maximum interface name length: IFNAMSIZ = 16
-	  File fields are separated by space or tab.
-	  File format:
-	  # Comment
-	  new_interface_name    XX:XX:XX:XX:XX:XX
-
-config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
-	bool "Extended nameif"
-	default n
-	depends on BUSYBOX_CONFIG_NAMEIF
-	help
-	  This extends the nameif syntax to support the bus_info, driver,
-	  phyaddr selectors. The syntax is compatible to the normal nameif.
-	  File format:
-	    new_interface_name  driver=asix bus=usb-0000:00:08.2-3
-	    new_interface_name  bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
-	    new_interface_name  phy_address=2 00:80:C8:38:91:B5
-	    new_interface_name  mac=00:80:C8:38:91:B5
-	    new_interface_name  00:80:C8:38:91:B5
-config BUSYBOX_CONFIG_NBDCLIENT
-	bool "nbd-client"
-	default n
-	help
-	  Network block device client
-config BUSYBOX_CONFIG_NC
-	bool "nc"
-	default y
-	help
-	  A simple Unix utility which reads and writes data across network
-	  connections.
-
-config BUSYBOX_CONFIG_NC_SERVER
-	bool "Netcat server options (-l)"
-	default n
-	depends on BUSYBOX_CONFIG_NC
-	help
-	  Allow netcat to act as a server.
-
-config BUSYBOX_CONFIG_NC_EXTRA
-	bool "Netcat extensions (-eiw and filename)"
-	default n
-	depends on BUSYBOX_CONFIG_NC
-	help
-	  Add -e (support for executing the rest of the command line after
-	  making or receiving a successful connection), -i (delay interval for
-	  lines sent), -w (timeout for initial connection).
-
-config BUSYBOX_CONFIG_NC_110_COMPAT
-	bool "Netcat 1.10 compatibility (+2.5k)"
-	default n  # off specially for Rob
-	depends on BUSYBOX_CONFIG_NC
-	help
-	  This option makes nc closely follow original nc-1.10.
-	  The code is about 2.5k bigger. It enables
-	  -s ADDR, -n, -u, -v, -o FILE, -z options, but loses
-	  busybox-specific extensions: -f FILE and -ll.
-config BUSYBOX_CONFIG_PING
-	bool "ping"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
-	  elicit an ICMP ECHO_RESPONSE from a host or gateway.
-
-config BUSYBOX_CONFIG_PING6
-	bool "ping6"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_IPV6 && BUSYBOX_CONFIG_PING
-	help
-	  This will give you a ping that can talk IPv6.
-
-config BUSYBOX_CONFIG_FEATURE_FANCY_PING
-	bool "Enable fancy ping output"
-	default y
-	depends on BUSYBOX_CONFIG_PING
-	help
-	  Make the output from the ping applet include statistics, and at the
-	  same time provide full support for ICMP packets.
-config BUSYBOX_CONFIG_WHOIS
-	bool "whois"
-	default n
-	help
-	  whois is a client for the whois directory service
-
-config BUSYBOX_CONFIG_FEATURE_IPV6
-	bool "Enable IPv6 support"
-	default IPV6
-	help
-	  Enable IPv6 support in busybox.
-	  This adds IPv6 support in the networking applets.
-
-config BUSYBOX_CONFIG_FEATURE_UNIX_LOCAL
-	bool "Enable Unix domain socket support (usually not needed)"
-	default n
-	help
-	  Enable Unix domain socket support in all busybox networking
-	  applets.  Address of the form local:/path/to/unix/socket
-	  will be recognized.
-
-	  This extension is almost never used in real world usage.
-	  You most likely want to say N.
-
-config BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS
-	bool "Prefer IPv4 addresses from DNS queries"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_IPV6
-	help
-	  Use IPv4 address of network host if it has one.
-
-	  If this option is off, the first returned address will be used.
-	  This may cause problems when your DNS server is IPv6-capable and
-	  is returning IPv6 host addresses too. If IPv6 address
-	  precedes IPv4 one in DNS reply, busybox network applets
-	  (e.g. wget) will use IPv6 address. On an IPv6-incapable host
-	  or network applets will fail to connect to the host
-	  using IPv6 address.
-
-config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
-	bool "Verbose resolution errors"
-	default y
-	help
-	  Enable if you are not satisfied with simplistic
-	  "can't resolve 'hostname.com'" and want to know more.
-	  This may increase size of your executable a bit.
-
-config BUSYBOX_CONFIG_ARP
-	bool "arp"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Manipulate the system ARP cache.
-
-config BUSYBOX_CONFIG_ARPING
-	bool "arping"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Ping hosts by ARP packets.
-
-config BUSYBOX_CONFIG_BRCTL
-	bool "brctl"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Manage ethernet bridges.
-	  Supports addbr/delbr and addif/delif.
-
-config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
-	bool "Fancy options"
-	default y
-	depends on BUSYBOX_CONFIG_BRCTL
-	help
-	  Add support for extended option like:
-	    setageing, setfd, sethello, setmaxage,
-	    setpathcost, setportprio, setbridgeprio,
-	    stp
-	  This adds about 600 bytes.
-
-config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
-	bool "Support show"
-	default y
-	depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
-	help
-	  Add support for option which prints the current config:
-	    show
-
-config BUSYBOX_CONFIG_DNSD
-	bool "dnsd"
-	default n
-	help
-	  Small and static DNS server daemon.
-
-config BUSYBOX_CONFIG_ETHER_WAKE
-	bool "ether-wake"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Send a magic packet to wake up sleeping machines.
-
-config BUSYBOX_CONFIG_FAKEIDENTD
-	bool "fakeidentd"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  fakeidentd listens on the ident port and returns a predefined
-	  fake value on any query.
-
-config BUSYBOX_CONFIG_FTPD
-	bool "ftpd"
-	default n
-	help
-	  simple FTP daemon. You have to run it via inetd.
-
-config BUSYBOX_CONFIG_FEATURE_FTP_WRITE
-	bool "Enable upload commands"
-	default n
-	depends on BUSYBOX_CONFIG_FTPD
-	help
-	  Enable all kinds of FTP upload commands (-w option)
-
-config BUSYBOX_CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST
-	bool "Enable workaround for RFC-violating clients"
-	default n
-	depends on BUSYBOX_CONFIG_FTPD
-	help
-	  Some ftp clients (among them KDE's Konqueror) issue illegal
-	  "LIST -l" requests. This option works around such problems.
-	  It might prevent you from listing files starting with "-" and
-	  it increases the code size by ~40 bytes.
-	  Most other ftp servers seem to behave similar to this.
-
-config BUSYBOX_CONFIG_FTPGET
-	bool "ftpget"
-	default n
-	help
-	  Retrieve a remote file via FTP.
-
-config BUSYBOX_CONFIG_FTPPUT
-	bool "ftpput"
-	default n
-	help
-	  Store a remote file via FTP.
-
-config BUSYBOX_CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS
-	bool "Enable long options in ftpget/ftpput"
-	default n
-	depends on BUSYBOX_CONFIG_LONG_OPTS && (BUSYBOX_CONFIG_FTPGET || BUSYBOX_CONFIG_FTPPUT)
-	help
-	  Support long options for the ftpget/ftpput applet.
-
-config BUSYBOX_CONFIG_HOSTNAME
-	bool "hostname"
-	default n
-	help
-	  Show or set the system's host name.
-
-config BUSYBOX_CONFIG_HTTPD
-	bool "httpd"
-	default n
-	help
-	  Serve web pages via an HTTP server.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_RANGES
-	bool "Support 'Ranges:' header"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  Makes httpd emit "Accept-Ranges: bytes" header and understand
-	  "Range: bytes=NNN-[MMM]" header. Allows for resuming interrupted
-	  downloads, seeking in multimedia players etc.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_USE_SENDFILE
-	bool "Use sendfile system call"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  When enabled, httpd will use the kernel sendfile() function
-	  instead of read/write loop.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
-	bool "Enable -u <user> option"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option allows the server to run as a specific user
-	  rather than defaulting to the user that starts the server.
-	  Use of this option requires special privileges to change to a
-	  different user.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
-	bool "Enable Basic http Authentication"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  Utilizes password settings from /etc/httpd.conf for basic
-	  authentication on a per url basis.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
-	bool "Support MD5 crypted passwords for http Authentication"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
-	help
-	  Enables basic per URL authentication from /etc/httpd.conf
-	  using md5 passwords.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
-	bool "Support Common Gateway Interface (CGI)"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option allows scripts and executables to be invoked
-	  when specific URLs are requested.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
-	bool "Support for running scripts through an interpreter"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
-	help
-	  This option enables support for running scripts through an
-	  interpreter. Turn this on if you want PHP scripts to work
-	  properly. You need to supply an additional line in your httpd
-	  config file:
-	  *.php:/path/to/your/php
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
-	bool "Set REMOTE_PORT environment variable for CGI"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
-	help
-	  Use of this option can assist scripts in generating
-	  references that contain a unique port number.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR
-	bool "Enable -e option (useful for CGIs written as shell scripts)"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option allows html encoding of arbitrary strings for display
-	  by the browser. Output goes to stdout.
-	  For example, httpd -e "<Hello World>" produces
-	  "&#60Hello&#32World&#62".
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
-	bool "Support for custom error pages"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option allows you to define custom error pages in
-	  the configuration file instead of the default HTTP status
-	  error pages. For instance, if you add the line:
-	        E404:/path/e404.html
-	  in the config file, the server will respond the specified
-	  '/path/e404.html' file instead of the terse '404 NOT FOUND'
-	  message.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
-	bool "Support for reverse proxy"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  This option allows you to define URLs that will be forwarded
-	  to another HTTP server. To setup add the following line to the
-	  configuration file
-	        P:/url/:http://hostname[:port]/new/path/
-	  Then a request to /url/myfile will be forwarded to
-	  http://hostname[:port]/new/path/myfile.
-
-config BUSYBOX_CONFIG_FEATURE_HTTPD_GZIP
-	bool "Support for GZIP content encoding"
-	default n
-	depends on BUSYBOX_CONFIG_HTTPD
-	help
-	  Makes httpd send files using GZIP content encoding if the
-	  client supports it and a pre-compressed <file>.gz exists.
-
-config BUSYBOX_CONFIG_IFCONFIG
-	bool "ifconfig"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Ifconfig is used to configure the kernel-resident network interfaces.
-
-config BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS
-	bool "Enable status reporting output (+7k)"
-	default y
-	depends on BUSYBOX_CONFIG_IFCONFIG
-	help
-	  If ifconfig is called with no arguments it will display the status
-	  of the currently active interfaces.
-
-config BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP
-	bool "Enable slip-specific options \"keepalive\" and \"outfill\""
-	default n
-	depends on BUSYBOX_CONFIG_IFCONFIG
-	help
-	  Allow "keepalive" and "outfill" support for SLIP. If you're not
-	  planning on using serial lines, leave this unchecked.
-
-config BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
-	bool "Enable options \"mem_start\", \"io_addr\", and \"irq\""
-	default n
-	depends on BUSYBOX_CONFIG_IFCONFIG
-	help
-	  Allow the start address for shared memory, start address for I/O,
-	  and/or the interrupt line used by the specified device.
-
-config BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW
-	bool "Enable option \"hw\" (ether only)"
-	default y
-	depends on BUSYBOX_CONFIG_IFCONFIG
-	help
-	  Set the hardware address of this interface, if the device driver
-	  supports  this  operation. Currently, we only support the 'ether'
-	  class.
-
-config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
-	bool "Set the broadcast automatically"
-	default y
-	depends on BUSYBOX_CONFIG_IFCONFIG
-	help
-	  Setting this will make ifconfig attempt to find the broadcast
-	  automatically if the value '+' is used.
-
-config BUSYBOX_CONFIG_IFENSLAVE
-	bool "ifenslave"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Userspace application to bind several interfaces
-	  to a logical interface (use with kernel bonding driver).
-
-config BUSYBOX_CONFIG_IFPLUGD
-	bool "ifplugd"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Network interface plug detection daemon.
-
-config BUSYBOX_CONFIG_IFUPDOWN
-	bool "ifupdown"
-	default n
-	help
-	  Activate or deactivate the specified interfaces. This applet makes
-	  use of either "ifconfig" and "route" or the "ip" command to actually
-	  configure network interfaces. Therefore, you will probably also want
-	  to enable either IFCONFIG and ROUTE, or enable
-	  FEATURE_IFUPDOWN_IP and the various IP options. Of
-	  course you could use non-busybox versions of these programs, so
-	  against my better judgement (since this will surely result in plenty
-	  of support questions on the mailing list), I do not force you to
-	  enable these additional options. It is up to you to supply either
-	  "ifconfig", "route" and "run-parts" or the "ip" command, either
-	  via busybox or via standalone utilities.
-
-config BUSYBOX_CONFIG_IFUPDOWN_IFSTATE_PATH
-	string "Absolute path to ifstate file"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
-	help
-	  ifupdown keeps state information in a file called ifstate.
-	  Typically it is located in /var/run/ifstate, however
-	  some distributions tend to put it in other places
-	  (debian, for example, uses /etc/network/run/ifstate).
-	  This config option defines location of ifstate.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
-	bool "Use ip applet"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
-	help
-	  Use the iproute "ip" command to implement "ifup" and "ifdown", rather
-	  than the default of using the older 'ifconfig' and 'route' utilities.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN
-	bool "Use busybox ip applet"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_IP
-	select BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-	select BUSYBOX_CONFIG_FEATURE_IP_LINK
-	select BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-	help
-	  Use the busybox iproute "ip" applet to implement "ifupdown".
-
-	  If left disabled, you must install the full-blown iproute2
-	  utility or the  "ifup" and "ifdown" applets will not work.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN
-	bool "Use busybox ifconfig and route applets"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN && !BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
-	select BUSYBOX_CONFIG_IFCONFIG
-	select BUSYBOX_CONFIG_ROUTE
-	help
-	  Use the busybox iproute "ifconfig" and "route" applets to
-	  implement the "ifup" and "ifdown" utilities.
-
-	  If left disabled, you must install the full-blown ifconfig
-	  and route utilities, or the  "ifup" and "ifdown" applets will not
-	  work.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
-	bool "Support for IPv4"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
-	help
-	  If you want ifup/ifdown to talk IPv4, leave this on.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
-	bool "Support for IPv6"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN && BUSYBOX_CONFIG_FEATURE_IPV6
-	help
-	  If you need support for IPv6, turn this option on.
-
-### UNUSED
-###config FEATURE_IFUPDOWN_IPX
-###	bool "Support for IPX"
-###	default y
-###	depends on IFUPDOWN
-###	help
-###	  If this option is selected you can use busybox to work with IPX
-###	  networks.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
-	bool "Enable mapping support"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
-	help
-	  This enables support for the "mapping" stanza, unless you have
-	  a weird network setup you don't need it.
-
-config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
-	bool "Support for external dhcp clients"
-	default n
-	depends on BUSYBOX_CONFIG_IFUPDOWN
-	help
-	  This enables support for the external dhcp clients. Clients are
-	  tried in the following order: dhcpcd, dhclient, pump and udhcpc.
-	  Otherwise, if udhcpc applet is enabled, it is used.
-	  Otherwise, ifup/ifdown will have no support for DHCP.
-
-config BUSYBOX_CONFIG_INETD
-	bool "inetd"
-	default n
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  Internet superserver daemon
-
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
-	bool "Support echo service"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	help
-	  Echo received data internal inetd service
-
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
-	bool "Support discard service"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	help
-	  Internet /dev/null internal inetd service
-
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
-	bool "Support time service"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	help
-	  Return 32 bit time since 1900 internal inetd service
-
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
-	bool "Support daytime service"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	help
-	  Return human-readable time internal inetd service
-
-config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
-	bool "Support chargen service"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	help
-	  Familiar character generator internal inetd service
-
-config BUSYBOX_CONFIG_FEATURE_INETD_RPC
-	bool "Support RPC services"
-	default n
-	depends on BUSYBOX_CONFIG_INETD
-	select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
-	help
-	  Support Sun-RPC based services
-
-config BUSYBOX_CONFIG_IP
-	bool "ip"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The "ip" applet is a TCP/IP interface configuration and routing
-	  utility. You generally don't need "ip" to use busybox with
-	  TCP/IP.
-
-config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-	bool "ip address"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Address manipulation support for the "ip" applet.
-
-config BUSYBOX_CONFIG_FEATURE_IP_LINK
-	bool "ip link"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Configure network devices with "ip".
-
-config BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-	bool "ip route"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Add support for routing table management to "ip".
-
-config BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
-	bool "ip tunnel"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Add support for tunneling commands to "ip".
-
-config BUSYBOX_CONFIG_FEATURE_IP_RULE
-	bool "ip rule"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Add support for rule commands to "ip".
-
-config BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS
-	bool "Support short forms of ip commands"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  Also support short-form of ip <OBJECT> commands:
-	  ip addr   -> ipaddr
-	  ip link   -> iplink
-	  ip route  -> iproute
-	  ip tunnel -> iptunnel
-	  ip rule   -> iprule
-
-	  Say N unless you desparately need the short form of the ip
-	  object commands.
-
-config BUSYBOX_CONFIG_FEATURE_IP_RARE_PROTOCOLS
-	bool "Support displaying rarely used link types"
-	default n
-	depends on BUSYBOX_CONFIG_IP
-	help
-	  If you are not going to use links of type "frad", "econet",
-	  "bif" etc, you probably don't need to enable this.
-	  Ethernet, wireless, infrared, ppp/slip, ip tunnelling
-	  link types are supported without this option selected.
-
-config BUSYBOX_CONFIG_IPADDR
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
-
-config BUSYBOX_CONFIG_IPLINK
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_LINK
-
-config BUSYBOX_CONFIG_IPROUTE
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_ROUTE
-
-config BUSYBOX_CONFIG_IPTUNNEL
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
-
-config BUSYBOX_CONFIG_IPRULE
-	bool
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IP_SHORT_FORMS && BUSYBOX_CONFIG_FEATURE_IP_RULE
-
-config BUSYBOX_CONFIG_IPCALC
-	bool "ipcalc"
-	default n
-	help
-	  ipcalc takes an IP address and netmask and calculates the
-	  resulting broadcast, network, and host range.
-
-config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
-	bool "Fancy IPCALC, more options, adds 1 kbyte"
-	default n
-	depends on BUSYBOX_CONFIG_IPCALC
-	help
-	  Adds the options hostname, prefix and silent to the output of
-	  "ipcalc".
-
-config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_IPCALC && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the ipcalc applet.
-
-config BUSYBOX_CONFIG_NETMSG
-	bool "netmsg"
-	default y
-	help
-	  simple program for sending udp broadcast messages
-
-config BUSYBOX_CONFIG_NETSTAT
-	bool "netstat"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  netstat prints information about the Linux networking subsystem.
-
-config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
-	bool "Enable wide netstat output"
-	default y
-	depends on BUSYBOX_CONFIG_NETSTAT
-	help
-	  Add support for wide columns. Useful when displaying IPv6 addresses
-	  (-W option).
-
-config BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG
-	bool "Enable PID/Program name output"
-	default y
-	depends on BUSYBOX_CONFIG_NETSTAT
-	help
-	  Add support for -p flag to print out PID and program name.
-	  +700 bytes of code.
-
-config BUSYBOX_CONFIG_NSLOOKUP
-	bool "nslookup"
-	default y
-	help
-	  nslookup is a tool to query Internet name servers.
-
-config BUSYBOX_CONFIG_NTPD
-	bool "ntpd"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The NTP client/server daemon.
-
-config BUSYBOX_CONFIG_FEATURE_NTPD_SERVER
-	bool "Make ntpd usable as a NTP server"
-	default y
-	depends on BUSYBOX_CONFIG_NTPD
-	help
-	  Make ntpd usable as a NTP server. If you disable this option
-	  ntpd will be usable only as a NTP client.
-
-config BUSYBOX_CONFIG_PSCAN
-	bool "pscan"
-	default n
-	help
-	  Simple network port scanner.
-
-config BUSYBOX_CONFIG_ROUTE
-	bool "route"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Route displays or manipulates the kernel's IP routing tables.
-
-config BUSYBOX_CONFIG_SLATTACH
-	bool "slattach"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  slattach is a small utility to attach network interfaces to serial
-	  lines.
-
-#config TC
-#	bool "tc"
-#	default y
-#	help
-#	  show / manipulate traffic control settings
-#
-#config FEATURE_TC_INGRESS
-#	def_bool n
-#	depends on TC
-
-config BUSYBOX_CONFIG_TCPSVD
-	bool "tcpsvd"
-	default n
-	help
-	  tcpsvd listens on a TCP port and runs a program for each new
-	  connection.
-
-config BUSYBOX_CONFIG_TELNET
-	bool "telnet"
-	default y
-	help
-	  Telnet is an interface to the TELNET protocol, but is also commonly
-	  used to test other simple protocols.
-
-config BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE
-	bool "Pass TERM type to remote host"
-	default y
-	depends on BUSYBOX_CONFIG_TELNET
-	help
-	  Setting this option will forward the TERM environment variable to the
-	  remote host you are connecting to. This is useful to make sure that
-	  things like ANSI colors and other control sequences behave.
-
-config BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN
-	bool "Pass USER type to remote host"
-	default n
-	depends on BUSYBOX_CONFIG_TELNET
-	help
-	  Setting this option will forward the USER environment variable to the
-	  remote host you are connecting to. This is useful when you need to
-	  log into a machine without telling the username (autologin). This
-	  option enables `-a' and `-l USER' arguments.
-
-config BUSYBOX_CONFIG_TELNETD
-	bool "telnetd"
-	default y
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  A daemon for the TELNET protocol, allowing you to log onto the host
-	  running the daemon. Please keep in mind that the TELNET protocol
-	  sends passwords in plain text. If you can't afford the space for an
-	  SSH daemon and you trust your network, you may say 'y' here. As a
-	  more secure alternative, you should seriously consider installing the
-	  very small Dropbear SSH daemon instead:
-		http://matt.ucc.asn.au/dropbear/dropbear.html
-
-	  Note that for busybox telnetd to work you need several things:
-	  First of all, your kernel needs:
-		  UNIX98_PTYS=y
-		  DEVPTS_FS=y
-
-	  Next, you need a /dev/pts directory on your root filesystem:
-
-		  $ ls -ld /dev/pts
-		  drwxr-xr-x  2 root root 0 Sep 23 13:21 /dev/pts/
-
-	  Next you need the pseudo terminal master multiplexer /dev/ptmx:
-
-		  $ ls -la /dev/ptmx
-		  crw-rw-rw-  1 root tty 5, 2 Sep 23 13:55 /dev/ptmx
-
-	  Any /dev/ttyp[0-9]* files you may have can be removed.
-	  Next, you need to mount the devpts filesystem on /dev/pts using:
-
-		  mount -t devpts devpts /dev/pts
-
-	  You need to be sure that busybox has LOGIN and
-	  FEATURE_SUID enabled. And finally, you should make
-	  certain that Busybox has been installed setuid root:
-
-		chown root.root /bin/busybox
-		chmod 4755 /bin/busybox
-
-	  with all that done, telnetd _should_ work....
-
-
-config BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE
-	bool "Support standalone telnetd (not inetd only)"
-	default y
-	depends on BUSYBOX_CONFIG_TELNETD
-	help
-	  Selecting this will make telnetd able to run standalone.
-
-config BUSYBOX_CONFIG_FEATURE_TELNETD_INETD_WAIT
-	bool "Support -w SEC option (inetd wait mode)"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE
-	help
-	  This option allows you to run telnetd in "inet wait" mode.
-	  Example inetd.conf line (note "wait", not usual "nowait"):
-
-	  telnet stream tcp wait root /bin/telnetd telnetd -w10
-
-	  In this example, inetd passes _listening_ socket_ as fd 0
-	  to telnetd when connection appears.
-	  telnetd will wait for connections until all existing
-	  connections are closed, and no new connections
-	  appear during 10 seconds. Then it exits, and inetd continues
-	  to listen for new connections.
-
-	  This option is rarely used. "tcp nowait" is much more usual
-	  way of running tcp services, including telnetd.
-	  You most probably want to say N here.
-
-config BUSYBOX_CONFIG_TFTP
-	bool "tftp"
-	default n
-	help
-	  This enables the Trivial File Transfer Protocol client program. TFTP
-	  is usually used for simple, small transfers such as a root image
-	  for a network-enabled bootloader.
-
-config BUSYBOX_CONFIG_TFTPD
-	bool "tftpd"
-	default n
-	help
-	  This enables the Trivial File Transfer Protocol server program.
-	  It expects that stdin is a datagram socket and a packet
-	  is already pending on it. It will exit after one transfer.
-	  In other words: it should be run from inetd in nowait mode,
-	  or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
-
-comment "Common options for tftp/tftpd"
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-
-config BUSYBOX_CONFIG_FEATURE_TFTP_GET
-	bool "Enable 'tftp get' and/or tftpd upload code"
-	default n
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-	help
-	  Add support for the GET command within the TFTP client. This allows
-	  a client to retrieve a file from a TFTP server.
-	  Also enable upload support in tftpd, if tftpd is selected.
-
-	  Note: this option does _not_ make tftpd capable of download
-	  (the usual operation people need from it)!
-
-config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
-	bool "Enable 'tftp put' and/or tftpd download code"
-	default n
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-	help
-	  Add support for the PUT command within the TFTP client. This allows
-	  a client to transfer a file to a TFTP server.
-	  Also enable download support in tftpd, if tftpd is selected.
-
-config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
-	bool "Enable 'blksize' and 'tsize' protocol options"
-	default n
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-	help
-	  Allow tftp to specify block size, and tftpd to understand
-	  "blksize" and "tsize" options.
-
-config BUSYBOX_CONFIG_FEATURE_TFTP_PROGRESS_BAR
-	bool "Enable tftp progress meter"
-	default n
-	depends on BUSYBOX_CONFIG_TFTP && BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
-	help
-	  Show progress bar.
-
-config BUSYBOX_CONFIG_TFTP_DEBUG
-	bool "Enable debug"
-	default n
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-	help
-	  Make tftp[d] print debugging messages on stderr.
-	  This is useful if you are diagnosing a bug in tftp[d].
-
-config BUSYBOX_CONFIG_TRACEROUTE
-	bool "traceroute"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Utility to trace the route of IP packets.
-
-config BUSYBOX_CONFIG_TRACEROUTE6
-	bool "traceroute6"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_IPV6 && BUSYBOX_CONFIG_TRACEROUTE
-	help
-	  Utility to trace the route of IPv6 packets.
-
-config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE
-	bool "Enable verbose output"
-	default y
-	depends on BUSYBOX_CONFIG_TRACEROUTE
-	help
-	  Add some verbosity to traceroute. This includes among other things
-	  hostnames and ICMP response types.
-
-config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE
-	bool "Enable loose source route"
-	default n
-	depends on BUSYBOX_CONFIG_TRACEROUTE
-	help
-	  Add option to specify a loose source route gateway
-	  (8 maximum).
-
-config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
-	bool "Use ICMP instead of UDP"
-	default n
-	depends on BUSYBOX_CONFIG_TRACEROUTE
-	help
-	  Add option -I to use ICMP ECHO instead of UDP datagrams.
-
-config BUSYBOX_CONFIG_TUNCTL
-	bool "tunctl"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  tunctl creates or deletes tun devices.
-
-config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
-	bool "Support owner:group assignment"
-	default n
-	depends on BUSYBOX_CONFIG_TUNCTL
-	help
-	  Allow to specify owner and group of newly created interface.
-	  340 bytes of pure bloat. Say no here.
-
-source package/busybox/config/networking/udhcp/Config.in
-
-config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS
-	string "ifup udhcpc command line options"
-	default "-R -n"
-	depends on BUSYBOX_CONFIG_IFUPDOWN && BUSYBOX_CONFIG_UDHCPC
-	help
-	  Command line options to pass to udhcpc from ifup.
-	  Intended to alter options not available in /etc/network/interfaces.
-	  (IE: --syslog --background etc...)
-
-config BUSYBOX_CONFIG_UDPSVD
-	bool "udpsvd"
-	default n
-	help
-	  udpsvd listens on an UDP port and runs a program for each new
-	  connection.
-
-config BUSYBOX_CONFIG_VCONFIG
-	bool "vconfig"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Creates, removes, and configures VLAN interfaces
-
-config BUSYBOX_CONFIG_WGET
-	bool "wget"
-	default y
-	help
-	  wget is a utility for non-interactive download of files from HTTP,
-	  HTTPS, and FTP servers.
-
-config BUSYBOX_CONFIG_FEATURE_WGET_STATUSBAR
-	bool "Enable a nifty process meter (+2k)"
-	default y
-	depends on BUSYBOX_CONFIG_WGET
-	help
-	  Enable the transfer progress bar for wget transfers.
-
-config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
-	bool "Enable HTTP authentication"
-	default y
-	depends on BUSYBOX_CONFIG_WGET
-	help
-	  Support authenticated HTTP transfers.
-
-config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
-	bool "Enable long options"
-	default y
-	depends on BUSYBOX_CONFIG_WGET && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the wget applet.
-
-config BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT
-	bool "Enable read timeout option -T SEC"
-	default n
-	depends on BUSYBOX_CONFIG_WGET
-	help
-	  Supports network read timeout for wget, so that wget will give
-	  up and timeout when reading network data, through the -T command
-	  line option.  Currently only network data read timeout is
-	  supported (i.e., timeout is not applied to the DNS nor TCP
-	  connection initialization).  When FEATURE_WGET_LONG_OPTIONS is
-	  also enabled, the --timeout option will work in addition to -T.
-
-config BUSYBOX_CONFIG_ZCIP
-	bool "zcip"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
-	  It's a daemon that allocates and defends a dynamically assigned
-	  address on the 169.254/16 network, requiring no system administrator.
-
-	  See http://www.zeroconf.org for further details, and "zcip.script"
-	  in the busybox examples.
-
-endmenu
-

--- a/package/busybox/config/networking/udhcp/Config.in
+++ /dev/null
@@ -1,156 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-
-
-config BUSYBOX_CONFIG_UDHCPD
-	bool "udhcp server (udhcpd)"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  udhcpd is a DHCP server geared primarily toward embedded systems,
-	  while striving to be fully functional and RFC compliant.
-
-config BUSYBOX_CONFIG_DHCPRELAY
-	bool "dhcprelay"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	  dhcprelay listens for dhcp requests on one or more interfaces
-	  and forwards these requests to a different interface or dhcp
-	  server.
-
-config BUSYBOX_CONFIG_DUMPLEASES
-	bool "Lease display utility (dumpleases)"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	  dumpleases displays the leases written out by the udhcpd server.
-	  Lease times are stored in the file by time remaining in lease, or
-	  by the absolute time that it expires in seconds from epoch.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
-	bool "Rewrite the lease file at every new acknowledge"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	  If selected, udhcpd will write a new file with leases every
-	  time a new lease has been accepted, thus eliminating the need
-	  to send SIGUSR1 for the initial writing or updating. Any timed
-	  rewriting remains undisturbed.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC
-	bool "Select IP address based on client MAC"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	  If selected, udhcpd will base its selection of IP address to offer
-	  on the client's hardware address. Otherwise udhcpd uses the next
-	  consecutive free address.
-
-	  This reduces the frequency of IP address changes for clients
-	  which let their lease expire, and makes consecutive DHCPOFFERS
-	  for the same client to (almost always) contain the same
-	  IP address.
-
-config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
-	string "Absolute path to lease file"
-	default "/var/run/udhcpd.leases"
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	  udhcpd stores addresses in a lease file. This is the absolute path
-	  of the file. Normally it is safe to leave it untouched.
-
-config BUSYBOX_CONFIG_UDHCPC
-	bool "udhcp client (udhcpc)"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  udhcpc is a DHCP client geared primarily toward embedded systems,
-	  while striving to be fully functional and RFC compliant.
-
-	  The udhcp client negotiates a lease with the DHCP server and
-	  runs a script when a lease is obtained or lost.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING
-	bool "Verify that the offered address is free, using ARP ping"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPC
-	help
-	  If selected, udhcpc will send ARP probes and make sure
-	  the offered address is really not in use by anyone. The client
-	  will DHCPDECLINE the offer if the address is in use,
-	  and restart the discover process.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
-	bool "Enable '-P port' option for udhcpd and udhcpc"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	  At the cost of ~300 bytes, enables -P port option.
-	  This feature is typically not needed.
-
-config BUSYBOX_CONFIG_UDHCP_DEBUG
-	int "Maximum verbosity level for udhcp applets (0..9)"
-	default 0
-	range 0 9
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_DHCPRELAY
-	help
-	  Verbosity can be increased with multiple -v options.
-	  This option controls how high it can be cranked up.
-
-	  Bigger values result in bigger code. Levels above 1
-	  are very verbose and useful for debugging only.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
-	bool "Support for RFC3397 domain search (experimental)"
-	default y
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	  If selected, both client and server will support passing of domain
-	  search lists via option 119, specified in RFC 3397,
-	  and SIP servers option 120, specified in RFC 3361.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q
-	bool "Support for 802.1Q VLAN parameters"
-	default n
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	  If selected, both client and server will support passing of VLAN
-	  ID and priority via options 132 and 133 as per 802.1Q.
-
-config BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT
-	string "Absolute path to config script"
-	default "/usr/share/udhcpc/default.script"
-	depends on BUSYBOX_CONFIG_UDHCPC
-	help
-	  This script is called after udhcpc receives an answer. See
-	  examples/udhcp for a working example. Normally it is safe
-	  to leave this untouched.
-
-config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
-	int "DHCP options slack buffer size"
-	default 80
-	range 0 924
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	  Some buggy DHCP servers send DHCP offer packets with option
-	  field larger than we expect (which might also be considered a
-	  buffer overflow attempt). These packets are normally discarded.
-	  If circumstances beyond your control force you to support such
-	  servers, this may help. The upper limit (924) makes dhcpc accept
-	  even 1500 byte packets (maximum-sized ethernet packets).
-
-	  This option does not make dhcp[cd] emit non-standard
-	  sized packets.
-
-	  Known buggy DHCP servers:
-	  3Com OfficeConnect Remote 812 ADSL Router:
-	    seems to confuse maximum allowed UDP packet size with
-	    maximum size of entire IP packet, and sends packets which are
-	    28 bytes too large.
-	  Seednet (ISP) VDSL: sends packets 2 bytes too large.
-

--- a/package/busybox/config/printutils/Config.in
+++ /dev/null
@@ -1,30 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Print Utilities"
-
-
-
-config BUSYBOX_CONFIG_LPD
-	bool "lpd"
-	default n
-	help
-	  lpd is a print spooling daemon.
-
-config BUSYBOX_CONFIG_LPR
-	bool "lpr"
-	default n
-	help
-	  lpr sends files (or standard input) to a print spooling daemon.
-
-config BUSYBOX_CONFIG_LPQ
-	bool "lpq"
-	default n
-	help
-	  lpq is a print spool queue examination and manipulation program.
-
-endmenu
-

--- a/package/busybox/config/procps/Config.in
+++ /dev/null
@@ -1,261 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Process Utilities"
-
-config BUSYBOX_CONFIG_IOSTAT
-	bool "iostat"
-	default n
-	help
-	  Report CPU and I/O statistics
-config BUSYBOX_CONFIG_MPSTAT
-	bool "mpstat"
-	default n
-	help
-	  Per-processor statistics
-config BUSYBOX_CONFIG_NMETER
-	bool "nmeter"
-	default n
-	help
-	  Prints selected system stats continuously, one line per update.
-config BUSYBOX_CONFIG_PMAP
-       bool "pmap"
-       default n
-       help
-         Display processes' memory mappings.
-config BUSYBOX_CONFIG_POWERTOP
-	bool "powertop"
-	default n
-	help
-	  Analyze power consumption on Intel-based laptops
-config BUSYBOX_CONFIG_PSTREE
-	bool "pstree"
-	default n
-	help
-	  Display a tree of processes.
-config BUSYBOX_CONFIG_PWDX
-	bool "pwdx"
-	default n
-	help
-	  Report current working directory of a process
-config BUSYBOX_CONFIG_SMEMCAP
-	bool "smemcap"
-	default n
-	help
-	  smemcap is a tool for capturing process data for smem,
-	  a memory usage statistic tool.
-config BUSYBOX_CONFIG_UPTIME
-	bool "uptime"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
-	help
-	  uptime gives a one line display of the current time, how long
-	  the system has been running, how many users are currently logged
-	  on, and the system load averages for the past 1, 5, and 15 minutes.
-
-config BUSYBOX_CONFIG_FEATURE_UPTIME_UTMP_SUPPORT
-	bool "Support for showing the number of users"
-	default n
-	depends on BUSYBOX_CONFIG_UPTIME && BUSYBOX_CONFIG_FEATURE_UTMP
-	help
-	  Makes uptime display the number of users currently logged on.
-
-config BUSYBOX_CONFIG_FREE
-	bool "free"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
-	help
-	  free displays the total amount of free and used physical and swap
-	  memory in the system, as well as the buffers used by the kernel.
-	  The shared memory column should be ignored; it is obsolete.
-
-config BUSYBOX_CONFIG_FUSER
-	bool "fuser"
-	default n
-	help
-	  fuser lists all PIDs (Process IDs) that currently have a given
-	  file open. fuser can also list all PIDs that have a given network
-	  (TCP or UDP) port open.
-
-config BUSYBOX_CONFIG_KILL
-	bool "kill"
-	default y
-	help
-	  The command kill sends the specified signal to the specified
-	  process or process group. If no signal is specified, the TERM
-	  signal is sent.
-
-config BUSYBOX_CONFIG_KILLALL
-	bool "killall"
-	default y
-	depends on BUSYBOX_CONFIG_KILL
-	help
-	  killall sends a signal to all processes running any of the
-	  specified commands. If no signal name is specified, SIGTERM is
-	  sent.
-
-config BUSYBOX_CONFIG_KILLALL5
-	bool "killall5"
-	default n
-	depends on BUSYBOX_CONFIG_KILL
-
-config BUSYBOX_CONFIG_PGREP
-	bool "pgrep"
-	default y
-	help
-	  Look for processes by name.
-
-config BUSYBOX_CONFIG_PIDOF
-	bool "pidof"
-	default y
-	help
-	  Pidof finds the process id's (pids) of the named programs. It prints
-	  those id's on the standard output.
-
-config BUSYBOX_CONFIG_FEATURE_PIDOF_SINGLE
-	bool "Enable argument for single shot (-s)"
-	default n
-	depends on BUSYBOX_CONFIG_PIDOF
-	help
-	  Support argument '-s' for returning only the first pid found.
-
-config BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT
-	bool "Enable argument for omitting pids (-o)"
-	default n
-	depends on BUSYBOX_CONFIG_PIDOF
-	help
-	  Support argument '-o' for omitting the given pids in output.
-	  The special pid %PPID can be used to name the parent process
-	  of the pidof, in other words the calling shell or shell script.
-
-config BUSYBOX_CONFIG_PKILL
-	bool "pkill"
-	default n
-	help
-	  Send signals to processes by name.
-
-config BUSYBOX_CONFIG_PS
-	bool "ps"
-	default y
-	help
-	  ps gives a snapshot of the current processes.
-
-config BUSYBOX_CONFIG_FEATURE_PS_WIDE
-	bool "Enable wide output option (-w)"
-	default y
-	depends on BUSYBOX_CONFIG_PS
-	help
-	  Support argument 'w' for wide output.
-	  If given once, 132 chars are printed, and if given more
-	  than once, the length is unlimited.
-
-config BUSYBOX_CONFIG_FEATURE_PS_TIME
-	bool "Enable time and elapsed time output"
-	default n
-	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Support -o time and -o etime output specifiers.
-
-config BUSYBOX_CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS
-	bool "Enable additional ps columns"
-	default n
-	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
-	help
-	  Support -o rgroup, -o ruser, -o nice output specifiers.
-
-config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
-	bool "Support Linux prior to 2.4.0 and non-ELF systems"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_PS_TIME
-	help
-	  Include support for measuring HZ on old kernels and non-ELF systems
-	  (if you are on Linux 2.4.0+ and use ELF, you don't need this)
-
-config BUSYBOX_CONFIG_RENICE
-	bool "renice"
-	default n
-	help
-	  Renice alters the scheduling priority of one or more running
-	  processes.
-
-config BUSYBOX_CONFIG_BB_SYSCTL
-	bool "sysctl"
-	default y
-	help
-	  Configure kernel parameters at runtime.
-
-config BUSYBOX_CONFIG_TOP
-	bool "top"
-	default y
-	help
-	  The top program provides a dynamic real-time view of a running
-	  system.
-
-config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
-	bool "Show CPU per-process usage percentage"
-	default y
-	depends on BUSYBOX_CONFIG_TOP
-	help
-	  Make top display CPU usage for each process.
-	  This adds about 2k.
-
-config BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
-	bool "Show CPU global usage percentage"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
-	help
-	  Makes top display "CPU: NN% usr NN% sys..." line.
-	  This adds about 0.5k.
-
-config BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU
-	bool "SMP CPU usage display ('c' key)"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
-	help
-	  Allow 'c' key to switch between individual/cumulative CPU stats
-	  This adds about 0.5k.
-
-config BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS
-	bool "Show 1/10th of a percent in CPU/mem statistics"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
-	help
-	  Show 1/10th of a percent in CPU/mem statistics.
-	  This adds about 0.3k.
-
-config BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS
-	bool "Show CPU process runs on ('j' field)"
-	default n
-	depends on BUSYBOX_CONFIG_TOP
-	help
-	  Show CPU where process was last found running on.
-	  This is the 'j' field.
-
-config BUSYBOX_CONFIG_FEATURE_TOPMEM
-	bool "Topmem command ('s' key)"
-	default n
-	depends on BUSYBOX_CONFIG_TOP
-	help
-	  Enable 's' in top (gives lots of memory info).
-
-config BUSYBOX_CONFIG_FEATURE_SHOW_THREADS
-	bool "Support for showing threads in ps/pstree/top"
-	default n
-	depends on BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_TOP || BUSYBOX_CONFIG_PSTREE
-	help
-	  Enables the ps -T option, showing of threads in pstree,
-	  and 'h' command in top.
-
-config BUSYBOX_CONFIG_WATCH
-	bool "watch"
-	default n
-	help
-	  watch is used to execute a program periodically, showing
-	  output to the screen.
-
-endmenu
-

--- a/package/busybox/config/runit/Config.in
+++ /dev/null
@@ -1,91 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Runit Utilities"
-
-
-
-config BUSYBOX_CONFIG_RUNSV
-	bool "runsv"
-	default n
-	help
-	  runsv starts and monitors a service and optionally an appendant log
-	  service.
-
-config BUSYBOX_CONFIG_RUNSVDIR
-	bool "runsvdir"
-	default n
-	help
-	  runsvdir starts a runsv process for each subdirectory, or symlink to
-	  a directory, in the services directory dir, up to a limit of 1000
-	  subdirectories, and restarts a runsv process if it terminates.
-
-config BUSYBOX_CONFIG_FEATURE_RUNSVDIR_LOG
-	bool "Enable scrolling argument log"
-	depends on BUSYBOX_CONFIG_RUNSVDIR
-	default n
-	help
-	  Enable feature where second parameter of runsvdir holds last error
-	  message (viewable via top/ps). Otherwise (feature is off
-	  or no parameter), error messages go to stderr only.
-
-config BUSYBOX_CONFIG_SV
-	bool "sv"
-	default n
-	help
-	  sv reports the current status and controls the state of services
-	  monitored by the runsv supervisor.
-
-config BUSYBOX_CONFIG_SV_DEFAULT_SERVICE_DIR
-	string "Default directory for services"
-	default "/var/service"
-	depends on BUSYBOX_CONFIG_SV
-	help
-	  Default directory for services.
-	  Defaults to "/var/service"
-
-config BUSYBOX_CONFIG_SVLOGD
-	bool "svlogd"
-	default n
-	help
-	  svlogd continuously reads log data from its standard input, optionally
-	  filters log messages, and writes the data to one or more automatically
-	  rotated logs.
-
-config BUSYBOX_CONFIG_CHPST
-	bool "chpst"
-	default n
-	help
-	  chpst changes the process state according to the given options, and
-	  execs specified program.
-
-config BUSYBOX_CONFIG_SETUIDGID
-	bool "setuidgid"
-	default n
-	help
-	  Sets soft resource limits as specified by options
-
-config BUSYBOX_CONFIG_ENVUIDGID
-	bool "envuidgid"
-	default n
-	help
-	  Sets $UID to account's uid and $GID to account's gid
-
-config BUSYBOX_CONFIG_ENVDIR
-	bool "envdir"
-	default n
-	help
-	  Sets various environment variables as specified by files
-	  in the given directory
-
-config BUSYBOX_CONFIG_SOFTLIMIT
-	bool "softlimit"
-	default n
-	help
-	  Sets soft resource limits as specified by options
-
-endmenu
-

--- a/package/busybox/config/selinux/Config.in
+++ /dev/null
@@ -1,126 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "SELinux Utilities"
-	depends on BUSYBOX_CONFIG_SELINUX
-
-
-
-config BUSYBOX_CONFIG_CHCON
-	bool "chcon"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to change the security context of file.
-
-config BUSYBOX_CONFIG_FEATURE_CHCON_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_CHCON && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the chcon applet.
-
-config BUSYBOX_CONFIG_GETENFORCE
-	bool "getenforce"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to get the current mode of SELinux.
-
-config BUSYBOX_CONFIG_GETSEBOOL
-	bool "getsebool"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to get SELinux boolean values.
-
-config BUSYBOX_CONFIG_LOAD_POLICY
-	bool "load_policy"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to load SELinux policy.
-
-config BUSYBOX_CONFIG_MATCHPATHCON
-	bool "matchpathcon"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to get default security context of the
-	  specified path from the file contexts configuration.
-
-config BUSYBOX_CONFIG_RESTORECON
-	bool "restorecon"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to relabel files. The feature is almost
-	  the same as setfiles, but usage is a little different.
-
-config BUSYBOX_CONFIG_RUNCON
-	bool "runcon"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to run command in speficied security context.
-
-config BUSYBOX_CONFIG_FEATURE_RUNCON_LONG_OPTIONS
-	bool "Enable long options"
-	default n
-	depends on BUSYBOX_CONFIG_RUNCON && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  Support long options for the runcon applet.
-
-config BUSYBOX_CONFIG_SELINUXENABLED
-	bool "selinuxenabled"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support for this command to be used within shell scripts
-	  to determine if selinux is enabled.
-
-config BUSYBOX_CONFIG_SETENFORCE
-	bool "setenforce"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to modify the mode SELinux is running in.
-
-config BUSYBOX_CONFIG_SETFILES
-	bool "setfiles"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support to modify to relabel files.
-	  Notice: If you built libselinux with -D_FILE_OFFSET_BITS=64,
-	  (It is default in libselinux's Makefile), you _must_ enable
-	  CONFIG_LFS.
-
-config BUSYBOX_CONFIG_FEATURE_SETFILES_CHECK_OPTION
-	bool "Enable check option"
-	default n
-	depends on BUSYBOX_CONFIG_SETFILES
-	help
-	  Support "-c" option (check the validity of the contexts against
-	  the specified binary policy) for setfiles. Requires libsepol.
-
-config BUSYBOX_CONFIG_SETSEBOOL
-	bool "setsebool"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Enable support for change boolean.
-	  semanage and -P option is not supported yet.
-
-config BUSYBOX_CONFIG_SESTATUS
-	bool "sestatus"
-	default n
-	depends on BUSYBOX_CONFIG_SELINUX
-	help
-	  Displays the status of SELinux.
-
-endmenu
-

--- a/package/busybox/config/shell/Config.in
+++ /dev/null
@@ -1,434 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Shells"
-
-config BUSYBOX_CONFIG_ASH
-	bool "ash"
-	default y
-	depends on !BUSYBOX_CONFIG_NOMMU
-	help
-	  Tha 'ash' shell adds about 60k in the default configuration and is
-	  the most complete and most pedantically correct shell included with
-	  busybox. This shell is actually a derivative of the Debian 'dash'
-	  shell (by Herbert Xu), which was created by porting the 'ash' shell
-	  (written by Kenneth Almquist) from NetBSD.
-
-config BUSYBOX_CONFIG_ASH_BASH_COMPAT
-	bool "bash-compatible extensions"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable bash-compatible extensions.
-
-config BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT
-	bool "Idle timeout variable"
-	default n
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enables bash-like auto-logout after $TMOUT seconds of idle time.
-
-config BUSYBOX_CONFIG_ASH_JOB_CONTROL
-	bool "Job control"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable job control in the ash shell.
-
-config BUSYBOX_CONFIG_ASH_ALIAS
-	bool "Alias support"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable alias support in the ash shell.
-
-config BUSYBOX_CONFIG_ASH_GETOPTS
-	bool "Builtin getopt to parse positional parameters"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable support for getopts builtin in ash.
-
-config BUSYBOX_CONFIG_ASH_BUILTIN_ECHO
-	bool "Builtin version of 'echo'"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable support for echo builtin in ash.
-
-config BUSYBOX_CONFIG_ASH_BUILTIN_PRINTF
-	bool "Builtin version of 'printf'"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable support for printf builtin in ash.
-
-config BUSYBOX_CONFIG_ASH_BUILTIN_TEST
-	bool "Builtin version of 'test'"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable support for test builtin in ash.
-
-config BUSYBOX_CONFIG_ASH_CMDCMD
-	bool "'command' command to override shell builtins"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable support for the ash 'command' builtin, which allows
-	  you to run the specified command with the specified arguments,
-	  even when there is an ash builtin command with the same name.
-
-config BUSYBOX_CONFIG_ASH_MAIL
-	bool "Check for new mail on interactive shells"
-	default n
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable "check for new mail" function in the ash shell.
-
-config BUSYBOX_CONFIG_ASH_OPTIMIZE_FOR_SIZE
-	bool "Optimize for size instead of speed"
-	default n
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Compile ash for reduced size at the price of speed.
-
-config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
-	bool "Pseudorandom generator and $RANDOM variable"
-	default n
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  Enable pseudorandom generator and dynamic variable "$RANDOM".
-	  Each read of "$RANDOM" will generate a new pseudorandom value.
-	  You can reset the generator by using a specified start value.
-	  After "unset RANDOM" the generator will switch off and this
-	  variable will no longer have special treatment.
-
-config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
-	bool "Expand prompt string"
-	default y
-	depends on BUSYBOX_CONFIG_ASH
-	help
-	  "PS#" may contain volatile content, such as backquote commands.
-	  This option recreates the prompt string from the environment
-	  variable each time it is displayed.
-
-config BUSYBOX_CONFIG_CTTYHACK
-	bool "cttyhack"
-	default n
-	help
-	  One common problem reported on the mailing list is the "can't
-	  access tty; job control turned off" error message, which typically
-	  appears when one tries to use a shell with stdin/stdout on
-	  /dev/console.
-	  This device is special - it cannot be a controlling tty.
-
-	  The proper solution is to use the correct device instead of
-	  /dev/console.
-
-	  cttyhack provides a "quick and dirty" solution to this problem.
-	  It analyzes stdin with various ioctls, trying to determine whether
-	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
-	  On Linux it also checks sysfs for a pointer to the active console.
-	  If cttyhack is able to find the real console device, it closes
-	  stdin/out/err and reopens that device.
-	  Then it executes the given program. Opening the device will make
-	  that device a controlling tty. This may require cttyhack
-	  to be a session leader.
-
-	  Example for /etc/inittab (for busybox init):
-
-	  ::respawn:/bin/cttyhack /bin/sh
-
-	  Starting an interactive shell from boot shell script:
-
-	  setsid cttyhack sh
-
-	  Giving controlling tty to shell running with PID 1:
-
-	  # exec cttyhack sh
-
-	  Without cttyhack, you need to know exact tty name,
-	  and do something like this:
-
-	  # exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
-
-config BUSYBOX_CONFIG_HUSH
-	bool "hush"
-	default n
-	help
-	  hush is a small shell (25k). It handles the normal flow control
-	  constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
-	  case/esac. Redirections, here documents, $((arithmetic))
-	  and functions are supported.
-
-	  It will compile and work on no-mmu systems.
-
-	  It does not handle select, aliases, tilde expansion,
-	  &>file and >&file redirection of stdout+stderr.
-
-config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
-	bool "bash-compatible extensions"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable bash-compatible extensions.
-
-config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
-	bool "Brace expansion"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
-	help
-	  Enable {abc,def} extension.
-
-config BUSYBOX_CONFIG_HUSH_HELP
-	bool "help builtin"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable help builtin in hush. Code size + ~1 kbyte.
-
-config BUSYBOX_CONFIG_HUSH_INTERACTIVE
-	bool "Interactive mode"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable interactive mode (prompt and command editing).
-	  Without this, hush simply reads and executes commands
-	  from stdin just like a shell script from a file.
-	  No prompt, no PS1/PS2 magic shell variables.
-
-config BUSYBOX_CONFIG_HUSH_SAVEHISTORY
-	bool "Save command history to .hush_history"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE && BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
-	help
-	  Enable history saving in hush.
-
-config BUSYBOX_CONFIG_HUSH_JOB
-	bool "Job control"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE
-	help
-	  Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
-	  command (not entire shell), fg/bg builtins work. Without this option,
-	  "cmd &" still works by simply spawning a process and immediately
-	  prompting for next command (or executing next command in a script),
-	  but no separate process group is formed.
-
-config BUSYBOX_CONFIG_HUSH_TICK
-	bool "Process substitution"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable process substitution `command` and $(command) in hush.
-
-config BUSYBOX_CONFIG_HUSH_IF
-	bool "Support if/then/elif/else/fi"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable if/then/elif/else/fi in hush.
-
-config BUSYBOX_CONFIG_HUSH_LOOPS
-	bool "Support for, while and until loops"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable for, while and until loops in hush.
-
-config BUSYBOX_CONFIG_HUSH_CASE
-	bool "Support case ... esac statement"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable case ... esac statement in hush. +400 bytes.
-
-config BUSYBOX_CONFIG_HUSH_FUNCTIONS
-	bool "Support funcname() { commands; } syntax"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable support for shell functions in hush. +800 bytes.
-
-config BUSYBOX_CONFIG_HUSH_LOCAL
-	bool "Support local builtin"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH_FUNCTIONS
-	help
-	  Enable support for local variables in functions.
-
-config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
-	bool "Pseudorandom generator and $RANDOM variable"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  Enable pseudorandom generator and dynamic variable "$RANDOM".
-	  Each read of "$RANDOM" will generate a new pseudorandom value.
-
-config BUSYBOX_CONFIG_HUSH_EXPORT_N
-	bool "Support 'export -n' option"
-	default y
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  export -n unexports variables. It is a bash extension.
-
-config BUSYBOX_CONFIG_HUSH_MODE_X
-	bool "Support 'hush -x' option and 'set -x' command"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH
-	help
-	  This instructs hush to print commands before execution.
-	  Adds ~300 bytes.
-
-config BUSYBOX_CONFIG_MSH
-	bool "msh (deprecated: aliased to hush)"
-	default n
-	select BUSYBOX_CONFIG_HUSH
-	help
-	  msh is deprecated and will be removed, please migrate to hush.
-
-
-choice
-	prompt "Choose which shell is aliased to 'sh' name"
-	default BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
-	help
-	  Choose which shell you want to be executed by 'sh' alias.
-	  The ash shell is the most bash compatible and full featured one.
-
-# note: cannot use "select ASH" here, it breaks "make allnoconfig"
-config BUSYBOX_CONFIG_FEATURE_SH_IS_ASH
-	depends on BUSYBOX_CONFIG_ASH
-	bool "ash"
-	depends on !BUSYBOX_CONFIG_NOMMU
-
-config BUSYBOX_CONFIG_FEATURE_SH_IS_HUSH
-	depends on BUSYBOX_CONFIG_HUSH
-	bool "hush"
-
-config BUSYBOX_CONFIG_FEATURE_SH_IS_NONE
-	bool "none"
-
-endchoice
-
-choice
-	prompt "Choose which shell is aliased to 'bash' name"
-	default BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE
-	help
-	  Choose which shell you want to be executed by 'bash' alias.
-	  The ash shell is the most bash compatible and full featured one.
-
-	  Note that selecting this option does not switch on any bash
-	  compatibility code. It merely makes it possible to install
-	  /bin/bash (sym)link and run scripts which start with
-	  #!/bin/bash line.
-
-	  Many systems use it in scripts which use bash-specific features,
-	  even simple ones like $RANDOM. Without this option, busybox
-	  can't be used for running them because it won't recongnize
-	  "bash" as a supported applet name.
-
-config BUSYBOX_CONFIG_FEATURE_BASH_IS_ASH
-	depends on BUSYBOX_CONFIG_ASH
-	bool "ash"
-	depends on !BUSYBOX_CONFIG_NOMMU
-
-config BUSYBOX_CONFIG_FEATURE_BASH_IS_HUSH
-	depends on BUSYBOX_CONFIG_HUSH
-	bool "hush"
-
-config BUSYBOX_CONFIG_FEATURE_BASH_IS_NONE
-	bool "none"
-
-endchoice
-
-
-config BUSYBOX_CONFIG_SH_MATH_SUPPORT
-	bool "POSIX math support"
-	default y
-	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH
-	help
-	  Enable math support in the shell via $((...)) syntax.
-
-config BUSYBOX_CONFIG_SH_MATH_SUPPORT_64
-	bool "Extend POSIX math support to 64 bit"
-	default y
-	depends on BUSYBOX_CONFIG_SH_MATH_SUPPORT
-	help
-	  Enable 64-bit math support in the shell. This will make the shell
-	  slightly larger, but will allow computation with very large numbers.
-	  This is not in POSIX, so do not rely on this in portable code.
-
-config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
-	bool "Hide message on interactive shell startup"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
-	help
-	  Remove the busybox introduction when starting a shell.
-
-config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
-	bool "Standalone shell"
-	default n
-	depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
-	help
-	  This option causes busybox shells to use busybox applets
-	  in preference to executables in the PATH whenever possible. For
-	  example, entering the command 'ifconfig' into the shell would cause
-	  busybox to use the ifconfig busybox applet. Specifying the fully
-	  qualified executable name, such as '/sbin/ifconfig' will still
-	  execute the /sbin/ifconfig executable on the filesystem. This option
-	  is generally used when creating a statically linked version of busybox
-	  for use as a rescue shell, in the event that you screw up your system.
-
-	  This is implemented by re-execing /proc/self/exe (typically)
-	  with right parameters. Some selected applets ("NOFORK" applets)
-	  can even be executed without creating new process.
-	  Instead, busybox will call <applet>_main() internally.
-
-	  However, this causes problems in chroot jails without mounted /proc
-	  and with ps/top (command name can be shown as 'exe' for applets
-	  started this way).
-# untrue?
-#	  Note that this will *also* cause applets to take precedence
-#	  over shell builtins of the same name. So turning this on will
-#	  eliminate any performance gained by turning on the builtin "echo"
-#	  and "test" commands in ash.
-# untrue?
-#	  Note that when using this option, the shell will attempt to directly
-#	  run '/bin/busybox'. If you do not have the busybox binary sitting in
-#	  that exact location with that exact name, this option will not work at
-#	  all.
-
-config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
-	bool "Run 'nofork' applets directly"
-	default n
-	depends on (BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH) && BUSYBOX_CONFIG_FEATURE_PREFER_APPLETS
-	help
-	  This option causes busybox shells to not execute typical
-	  fork/exec/wait sequence, but call <applet>_main directly,
-	  if possible. (Sometimes it is not possible: for example,
-	  this is not possible in pipes).
-
-	  This will be done only for some applets (those which are marked
-	  NOFORK in include/applets.h).
-
-	  This may significantly speed up some shell scripts.
-
-	  This feature is relatively new. Use with care. Report bugs
-	  to project mailing list.
-
-config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
-	bool "Use $HISTFILESIZE"
-	default n
-	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_ASH
-	help
-	  This option makes busybox shells to use $HISTFILESIZE variable
-	  to set shell history size. Note that its max value is capped
-	  by "History size" setting in library tuning section.
-
-
-endmenu
-

--- a/package/busybox/config/sysklogd/Config.in
+++ /dev/null
@@ -1,155 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "System Logging Utilities"
-
-
-
-config BUSYBOX_CONFIG_SYSLOGD
-	bool "syslogd"
-	default y
-	help
-	  The syslogd utility is used to record logs of all the
-	  significant events that occur on a system. Every
-	  message that is logged records the date and time of the
-	  event, and will generally also record the name of the
-	  application that generated the message. When used in
-	  conjunction with klogd, messages from the Linux kernel
-	  can also be recorded. This is terribly useful,
-	  especially for finding what happened when something goes
-	  wrong. And something almost always will go wrong if
-	  you wait long enough....
-
-config BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE
-	bool "Rotate message files"
-	default y
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  This enables syslogd to rotate the message files
-	  on his own. No need to use an external rotatescript.
-
-config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
-	bool "Remote Log support"
-	default y
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  When you enable this feature, the syslogd utility can
-	  be used to send system log messages to another system
-	  connected via a network. This allows the remote
-	  machine to log all the system messages, which can be
-	  terribly useful for reducing the number of serial
-	  cables you use. It can also be a very good security
-	  measure to prevent system logs from being tampered with
-	  by an intruder.
-
-config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP
-	bool "Support -D (drop dups) option"
-	default n
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  Option -D instructs syslogd to drop consecutive messages
-	  which are totally the same.
-
-config BUSYBOX_CONFIG_FEATURE_SYSLOGD_CFG
-	bool "Support syslog.conf"
-	default n
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  Supports restricted syslogd config. See docs/syslog.conf.txt
-
-config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE
-	int "Read buffer size in bytes"
-	default 256
-	range 256 20000
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  This option sets the size of the syslog read buffer.
-	  Actual memory usage increases around five times the
-	  change done here.
-
-config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
-	bool "Circular Buffer support"
-	default y
-	depends on BUSYBOX_CONFIG_SYSLOGD
-	help
-	  When you enable this feature, the syslogd utility will
-	  use a circular buffer to record system log messages.
-	  When the buffer is filled it will continue to overwrite
-	  the oldest messages. This can be very useful for
-	  systems with little or no permanent storage, since
-	  otherwise system logs can eventually fill up your
-	  entire filesystem, which may cause your system to
-	  break badly.
-
-config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
-	int "Circular buffer size in Kbytes (minimum 4KB)"
-	default 16
-	range 4 2147483647
-	depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
-	help
-	  This option sets the size of the circular buffer
-	  used to record system log messages.
-
-config BUSYBOX_CONFIG_LOGREAD
-	bool "logread"
-	default y
-	depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG && BROKEN
-	help
-	  If you enabled Circular Buffer support, you almost
-	  certainly want to enable this feature as well. This
-	  utility will allow you to read the messages that are
-	  stored in the syslogd circular buffer.
-
-config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
-	bool "Double buffering"
-	default n
-	depends on BUSYBOX_CONFIG_LOGREAD
-	help
-	  'logread' ouput to slow serial terminals can have
-	  side effects on syslog because of the semaphore.
-	  This option make logread to double buffer copy
-	  from circular buffer, minimizing semaphore
-	  contention at some minor memory expense.
-
-config BUSYBOX_CONFIG_KLOGD
-	bool "klogd"
-	default y
-	help
-	  klogd is a utility which intercepts and logs all
-	  messages from the Linux kernel and sends the messages
-	  out to the 'syslogd' utility so they can be logged. If
-	  you wish to record the messages produced by the kernel,
-	  you should enable this option.
-
-config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
-	bool "Use the klogctl() interface"
-	default y
-	depends on BUSYBOX_CONFIG_KLOGD
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The klogd applet supports two interfaces for reading
-	  kernel messages. Linux provides the klogctl() interface
-	  which allows reading messages from the kernel ring buffer
-	  independently from the file system.
-
-	  If you answer 'N' here, klogd will use the more portable
-	  approach of reading them from /proc or a device node.
-	  However, this method requires the file to be available.
-
-	  If in doubt, say 'Y'.
-
-config BUSYBOX_CONFIG_LOGGER
-	bool "logger"
-	default y
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	    The logger utility allows you to send arbitrary text
-	    messages to the system log (i.e. the 'syslogd' utility) so
-	    they can be logged. This is generally used to help locate
-	    problems that occur within programs and scripts.
-
-endmenu
-

--- a/package/busybox/config/util-linux/Config.in
+++ /dev/null
@@ -1,986 +1,1 @@
-# DO NOT EDIT. This file is generated from Config.src
-#
-# For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
-#
 
-menu "Linux System Utilities"
-
-config BUSYBOX_CONFIG_BLOCKDEV
-	bool "blockdev"
-	default n
-	help
-	  Performs some ioctls with block devices.
-config BUSYBOX_CONFIG_REV
-	bool "rev"
-	default n
-	help
-	  Reverse lines of a file or files.
-
-config BUSYBOX_CONFIG_ACPID
-	bool "acpid"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  acpid listens to ACPI events coming either in textual form from
-	  /proc/acpi/event (though it is marked deprecated it is still widely
-	  used and _is_ a standard) or in binary form from specified evdevs
-	  (just use /dev/input/event*).
-
-	  It parses the event to retrieve ACTION and a possible PARAMETER.
-	  It then spawns /etc/acpi/<ACTION>[/<PARAMETER>] either via run-parts
-	  (if the resulting path is a directory) or directly as an executable.
-
-	  N.B. acpid relies on run-parts so have the latter installed.
-
-config BUSYBOX_CONFIG_FEATURE_ACPID_COMPAT
-	bool "Accept and ignore redundant options"
-	default n
-	depends on BUSYBOX_CONFIG_ACPID
-	help
-	  Accept and ignore compatibility options -g -m -s -S -v.
-
-config BUSYBOX_CONFIG_BLKID
-	bool "blkid"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_VOLUMEID
-	help
-	  Lists labels and UUIDs of all filesystems.
-	  WARNING:
-	  With all submodules selected, it will add ~8k to busybox.
-
-config BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
-	bool "Print filesystem type"
-	default n
-	depends on BUSYBOX_CONFIG_BLKID
-	help
-	  Show TYPE="filesystem type"
-
-config BUSYBOX_CONFIG_DMESG
-	bool "dmesg"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  dmesg is used to examine or control the kernel ring buffer. When the
-	  Linux kernel prints messages to the system log, they are stored in
-	  the kernel ring buffer. You can use dmesg to print the kernel's ring
-	  buffer, clear the kernel ring buffer, change the size of the kernel
-	  ring buffer, and change the priority level at which kernel messages
-	  are also logged to the system console. Enable this option if you
-	  wish to enable the 'dmesg' utility.
-
-config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
-	bool "Pretty dmesg output"
-	default y
-	depends on BUSYBOX_CONFIG_DMESG
-	help
-	  If you wish to scrub the syslog level from the output, say 'Y' here.
-	  The syslog level is a string prefixed to every line with the form
-	  "<#>".
-
-	  With this option you will see:
-	    # dmesg
-	    Linux version 2.6.17.4 .....
-	    BIOS-provided physical RAM map:
-	     BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
-
-	  Without this option you will see:
-	    # dmesg
-	    <5>Linux version 2.6.17.4 .....
-	    <6>BIOS-provided physical RAM map:
-	    <6> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
-
-config BUSYBOX_CONFIG_FBSET
-	bool "fbset"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  fbset is used to show or change the settings of a Linux frame buffer
-	  device. The frame buffer device provides a simple and unique
-	  interface to access a graphics display. Enable this option
-	  if you wish to enable the 'fbset' utility.
-
-config BUSYBOX_CONFIG_FEATURE_FBSET_FANCY
-	bool "Turn on extra fbset options"
-	default n
-	depends on BUSYBOX_CONFIG_FBSET
-	help
-	  This option enables extended fbset options, allowing one to set the
-	  framebuffer size, color depth, etc. interface to access a graphics
-	  display. Enable this option if you wish to enable extended fbset
-	  options.
-
-config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
-	bool "Turn on fbset readmode support"
-	default n
-	depends on BUSYBOX_CONFIG_FBSET
-	help
-	  This option allows fbset to read the video mode database stored by
-	  default n /etc/fb.modes, which can be used to set frame buffer
-	  device to pre-defined video modes.
-
-config BUSYBOX_CONFIG_FDFLUSH
-	bool "fdflush"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  fdflush is only needed when changing media on slightly-broken
-	  removable media drives. It is used to make Linux believe that a
-	  hardware disk-change switch has been actuated, which causes Linux to
-	  forget anything it has cached from the previous media. If you have
-	  such a slightly-broken drive, you will need to run fdflush every time
-	  you change a disk. Most people have working hardware and can safely
-	  leave this disabled.
-
-config BUSYBOX_CONFIG_FDFORMAT
-	bool "fdformat"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  fdformat is used to low-level format a floppy disk.
-
-config BUSYBOX_CONFIG_FDISK
-	bool "fdisk"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The fdisk utility is used to divide hard disks into one or more
-	  logical disks, which are generally called partitions. This utility
-	  can be used to list and edit the set of partitions or BSD style
-	  'disk slices' that are defined on a hard drive.
-
-config BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
-	bool "Support over 4GB disks"
-	default y
-	depends on BUSYBOX_CONFIG_FDISK
-	depends on !BUSYBOX_CONFIG_LFS   # with LFS no special code is needed
-	help
-	  Enable this option to support large disks > 4GB.
-
-config BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	bool "Write support"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK
-	help
-	  Enabling this option allows you to create or change a partition table
-	  and write those changes out to disk. If you leave this option
-	  disabled, you will only be able to view the partition table.
-
-config BUSYBOX_CONFIG_FEATURE_AIX_LABEL
-	bool "Support AIX disklabels"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to create or change AIX disklabels.
-	  Most people can safely leave this option disabled.
-
-config BUSYBOX_CONFIG_FEATURE_SGI_LABEL
-	bool "Support SGI disklabels"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to create or change SGI disklabels.
-	  Most people can safely leave this option disabled.
-
-config BUSYBOX_CONFIG_FEATURE_SUN_LABEL
-	bool "Support SUN disklabels"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to create or change SUN disklabels.
-	  Most people can safely leave this option disabled.
-
-config BUSYBOX_CONFIG_FEATURE_OSF_LABEL
-	bool "Support BSD disklabels"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to create or change BSD disklabels
-	  and define and edit BSD disk slices.
-
-config BUSYBOX_CONFIG_FEATURE_GPT_LABEL
-	bool "Support GPT disklabels"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to view GUID Partition Table
-	  disklabels.
-
-config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
-	bool "Support expert mode"
-	default n
-	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
-	help
-	  Enabling this option allows you to do terribly unsafe things like
-	  define arbitrary drive geometry, move the beginning of data in a
-	  partition, and similarly evil things. Unless you have a very good
-	  reason you would be wise to leave this disabled.
-
-config BUSYBOX_CONFIG_FINDFS
-	bool "findfs"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	select BUSYBOX_CONFIG_VOLUMEID
-	help
-	  Prints the name of a filesystem with given label or UUID.
-	  WARNING:
-	  With all submodules selected, it will add ~8k to busybox.
-
-config BUSYBOX_CONFIG_FLOCK
-	bool "flock"
-	default n
-	help
-	  Manage locks from shell scripts
-
-config BUSYBOX_CONFIG_FREERAMDISK
-	bool "freeramdisk"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Linux allows you to create ramdisks. This utility allows you to
-	  delete them and completely free all memory that was used for the
-	  ramdisk. For example, if you boot Linux into a ramdisk and later
-	  pivot_root, you may want to free the memory that is allocated to the
-	  ramdisk. If you have no use for freeing memory from a ramdisk, leave
-	  this disabled.
-
-config BUSYBOX_CONFIG_FSCK_MINIX
-	bool "fsck_minix"
-	default n
-	help
-	  The minix filesystem is a nice, small, compact, read-write filesystem
-	  with little overhead. It is not a journaling filesystem however and
-	  can experience corruption if it is not properly unmounted or if the
-	  power goes off in the middle of a write. This utility allows you to
-	  check for and attempt to repair any corruption that occurs to a minix
-	  filesystem.
-
-config BUSYBOX_CONFIG_MKFS_EXT2
-	bool "mkfs_ext2"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Utility to create EXT2 filesystems.
-
-config BUSYBOX_CONFIG_MKFS_MINIX
-	bool "mkfs_minix"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The minix filesystem is a nice, small, compact, read-write filesystem
-	  with little overhead. If you wish to be able to create minix
-	  filesystems this utility will do the job for you.
-
-config BUSYBOX_CONFIG_FEATURE_MINIX2
-	bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
-	default n
-	depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
-	help
-	  If you wish to be able to create version 2 minix filesystems, enable
-	  this. If you enabled 'mkfs_minix' then you almost certainly want to
-	  be using the version 2 filesystem support.
-
-config BUSYBOX_CONFIG_MKFS_REISER
-	bool "mkfs_reiser"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Utility to create ReiserFS filesystems.
-	  Note: this applet needs a lot of testing and polishing.
-
-config BUSYBOX_CONFIG_MKFS_VFAT
-	bool "mkfs_vfat"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Utility to create FAT32 filesystems.
-
-config BUSYBOX_CONFIG_GETOPT
-	bool "getopt"
-	default n
-	help
-	  The getopt utility is used to break up (parse) options in command
-	  lines to make it easy to write complex shell scripts that also check
-	  for legal (and illegal) options. If you want to write horribly
-	  complex shell scripts, or use some horribly complex shell script
-	  written by others, this utility may be for you. Most people will
-	  wisely leave this disabled.
-
-config BUSYBOX_CONFIG_FEATURE_GETOPT_LONG
-	bool "Support option -l"
-	default n if BUSYBOX_CONFIG_LONG_OPTS
-	depends on BUSYBOX_CONFIG_GETOPT
-	help
-	  Enable support for long options (option -l).
-
-config BUSYBOX_CONFIG_HEXDUMP
-	bool "hexdump"
-	default y
-	help
-	  The hexdump utility is used to display binary data in a readable
-	  way that is comparable to the output from most hex editors.
-
-config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
-	bool "Support -R, reverse of 'hexdump -Cv'"
-	default n
-	depends on BUSYBOX_CONFIG_HEXDUMP
-	help
-	  The hexdump utility is used to display binary data in an ascii
-	  readable way. This option creates binary data from an ascii input.
-	  NB: this option is non-standard. It's unwise to use it in scripts
-	  aimed to be portable.
-
-config BUSYBOX_CONFIG_HD
-	bool "hd"
-	default n
-	depends on BUSYBOX_CONFIG_HEXDUMP
-	help
-	  hd is an alias to hexdump -C.
-
-config BUSYBOX_CONFIG_HWCLOCK
-	bool "hwclock"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The hwclock utility is used to read and set the hardware clock
-	  on a system. This is primarily used to set the current time on
-	  shutdown in the hardware clock, so the hardware will keep the
-	  correct time when Linux is _not_ running.
-
-config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS
-	bool "Support long options (--hctosys,...)"
-	default n
-	depends on BUSYBOX_CONFIG_HWCLOCK && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	  By default, the hwclock utility only uses short options. If you
-	  are overly fond of its long options, such as --hctosys, --utc, etc)
-	  then enable this option.
-
-config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
-	bool "Use FHS /var/lib/hwclock/adjtime"
-	default n  # util-linux-ng in Fedora 13 still uses /etc/adjtime
-	depends on BUSYBOX_CONFIG_HWCLOCK
-	help
-	  Starting with FHS 2.3, the adjtime state file is supposed to exist
-	  at /var/lib/hwclock/adjtime instead of /etc/adjtime. If you wish
-	  to use the FHS behavior, answer Y here, otherwise answer N for the
-	  classic /etc/adjtime path.
-
-	  pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
-
-config BUSYBOX_CONFIG_IPCRM
-	bool "ipcrm"
-	default n
-	help
-	  The ipcrm utility allows the removal of System V interprocess
-	  communication (IPC) objects and the associated data structures
-	  from the system.
-
-config BUSYBOX_CONFIG_IPCS
-	bool "ipcs"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The ipcs utility is used to provide information on the currently
-	  allocated System V interprocess (IPC) objects in the system.
-
-config BUSYBOX_CONFIG_LOSETUP
-	bool "losetup"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  losetup is used to associate or detach a loop device with a regular
-	  file or block device, and to query the status of a loop device. This
-	  version does not currently support enabling data encryption.
-
-config BUSYBOX_CONFIG_LSPCI
-	bool "lspci"
-	default n
-	#select PLATFORM_LINUX
-	help
-	  lspci is a utility for displaying information about PCI buses in the
-	  system and devices connected to them.
-
-	  This version uses sysfs (/sys/bus/pci/devices) only.
-
-config BUSYBOX_CONFIG_LSUSB
-	bool "lsusb"
-	default n
-	#select PLATFORM_LINUX
-	help
-	  lsusb is a utility for displaying information about USB buses in the
-	  system and devices connected to them.
-
-	  This version uses sysfs (/sys/bus/usb/devices) only.
-
-config BUSYBOX_CONFIG_MDEV
-	bool "mdev"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  mdev is a mini-udev implementation for dynamically creating device
-	  nodes in the /dev directory.
-
-	  For more information, please see docs/mdev.txt
-
-config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
-	bool "Support /etc/mdev.conf"
-	default n
-	depends on BUSYBOX_CONFIG_MDEV
-	help
-	  Add support for the mdev config file to control ownership and
-	  permissions of the device nodes.
-
-	  For more information, please see docs/mdev.txt
-
-config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
-	bool "Support subdirs/symlinks"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
-	help
-	  Add support for renaming devices and creating symlinks.
-
-	  For more information, please see docs/mdev.txt
-
-config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
-	bool "Support regular expressions substitutions when renaming device"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
-	help
-	  Add support for regular expressions substitutions when renaming
-	  device.
-
-config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
-	bool "Support command execution at device addition/removal"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
-	help
-	  This adds support for an optional field to /etc/mdev.conf for
-	  executing commands when devices are created/removed.
-
-	  For more information, please see docs/mdev.txt
-
-config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
-	bool "Support loading of firmwares"
-	default n
-	depends on BUSYBOX_CONFIG_MDEV
-	help
-	  Some devices need to load firmware before they can be usable.
-
-	  These devices will request userspace look up the files in
-	  /lib/firmware/ and if it exists, send it to the kernel for
-	  loading into the hardware.
-
-config BUSYBOX_CONFIG_MKSWAP
-	bool "mkswap"
-	default y
-	help
-	  The mkswap utility is used to configure a file or disk partition as
-	  Linux swap space. This allows Linux to use the entire file or
-	  partition as if it were additional RAM, which can greatly increase
-	  the capability of low-memory machines. This additional memory is
-	  much slower than real RAM, but can be very helpful at preventing your
-	  applications being killed by the Linux out of memory (OOM) killer.
-	  Once you have created swap space using 'mkswap' you need to enable
-	  the swap space using the 'swapon' utility.
-
-config BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID
-	bool "UUID support"
-	default n
-	depends on BUSYBOX_CONFIG_MKSWAP
-	help
-	  Generate swap spaces with universally unique identifiers.
-
-config BUSYBOX_CONFIG_MORE
-	bool "more"
-	default n
-	help
-	  more is a simple utility which allows you to read text one screen
-	  sized page at a time. If you want to read text that is larger than
-	  the screen, and you are using anything faster than a 300 baud modem,
-	  you will probably find this utility very helpful. If you don't have
-	  any need to reading text files, you can leave this disabled.
-
-config BUSYBOX_CONFIG_MOUNT
-	bool "mount"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  All files and filesystems in Unix are arranged into one big directory
-	  tree. The 'mount' utility is used to graft a filesystem onto a
-	  particular part of the tree. A filesystem can either live on a block
-	  device, or it can be accessible over the network, as is the case with
-	  NFS filesystems. Most people using BusyBox will also want to enable
-	  the 'mount' utility.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
-	bool "Support option -f"
-	default n
-	depends on BUSYBOX_CONFIG_MOUNT
-	help
-	  Enable support for faking a file system mount.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE
-	bool "Support option -v"
-	default n
-	depends on BUSYBOX_CONFIG_MOUNT
-	help
-	  Enable multi-level -v[vv...] verbose messages. Useful if you
-	  debug mount problems and want to see what is exactly passed
-	  to the kernel.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS
-	bool "Support mount helpers"
-	default y
-	depends on BUSYBOX_CONFIG_MOUNT
-	help
-	  Enable mounting of virtual file systems via external helpers.
-	  E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
-	  "obexfs -b00.11.22.33.44.55 /mnt"
-	  Also "mount -t sometype [-o opts] fs /mnt" will try
-	  "sometype [-o opts] fs /mnt" if simple mount syscall fails.
-	  The idea is to use such virtual filesystems in /etc/fstab.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
-	bool "Support specifying devices by label or UUID"
-	default n
-	depends on BUSYBOX_CONFIG_MOUNT
-	select BUSYBOX_CONFIG_VOLUMEID
-	help
-	  This allows for specifying a device by label or uuid, rather than by
-	  name. This feature utilizes the same functionality as blkid/findfs.
-	  This also enables label or uuid support for swapon.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
-	bool "Support mounting NFS file systems"
-	default n
-	depends on BUSYBOX_CONFIG_MOUNT
-	select BUSYBOX_CONFIG_FEATURE_HAVE_RPC
-	select BUSYBOX_CONFIG_FEATURE_SYSLOG
-	help
-	  Enable mounting of NFS file systems.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS
-	bool "Support mounting CIFS/SMB file systems"
-	default y
-	depends on BUSYBOX_CONFIG_MOUNT
-	help
-	  Enable support for samba mounts.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS
-	depends on BUSYBOX_CONFIG_MOUNT
-	bool "Support lots of -o flags in mount"
-	default y
-	help
-	  Without this, mount only supports ro/rw/remount. With this, it
-	  supports nosuid, suid, dev, nodev, exec, noexec, sync, async, atime,
-	  noatime, diratime, nodiratime, loud, bind, move, shared, slave,
-	  private, unbindable, rshared, rslave, rprivate, and runbindable.
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB
-	depends on BUSYBOX_CONFIG_MOUNT
-	bool "Support /etc/fstab and -a"
-	default y
-	help
-	  Support mount all and looking for files in /etc/fstab.
-
-config BUSYBOX_CONFIG_PIVOT_ROOT
-	bool "pivot_root"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The pivot_root utility swaps the mount points for the root filesystem
-	  with some other mounted filesystem. This allows you to do all sorts
-	  of wild and crazy things with your Linux system and is far more
-	  powerful than 'chroot'.
-
-	  Note: This is for initrd in linux 2.4. Under initramfs (introduced
-	  in linux 2.6) use switch_root instead.
-
-config BUSYBOX_CONFIG_RDATE
-	bool "rdate"
-	default n
-	help
-	  The rdate utility allows you to synchronize the date and time of your
-	  system clock with the date and time of a remote networked system using
-	  the RFC868 protocol, which is built into the inetd daemon on most
-	  systems.
-
-config BUSYBOX_CONFIG_RDEV
-	bool "rdev"
-	default n
-	help
-	  Print the device node associated with the filesystem mounted at '/'.
-
-config BUSYBOX_CONFIG_READPROFILE
-	bool "readprofile"
-	default n
-	#select PLATFORM_LINUX
-	help
-	  This allows you to parse /proc/profile for basic profiling.
-
-config BUSYBOX_CONFIG_RTCWAKE
-	bool "rtcwake"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  Enter a system sleep state until specified wakeup time.
-
-config BUSYBOX_CONFIG_SCRIPT
-	bool "script"
-	default n
-	help
-	  The script makes typescript of terminal session.
-
-config BUSYBOX_CONFIG_SCRIPTREPLAY
-	bool "scriptreplay"
-	default n
-	help
-	  This program replays a typescript, using timing information
-	  given by script -t.
-
-config BUSYBOX_CONFIG_SETARCH
-	bool "setarch"
-	default n
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The linux32 utility is used to create a 32bit environment for the
-	  specified program (usually a shell). It only makes sense to have
-	  this util on a system that supports both 64bit and 32bit userland
-	  (like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
-
-config BUSYBOX_CONFIG_SWAPONOFF
-	bool "swaponoff"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  This option enables both the 'swapon' and the 'swapoff' utilities.
-	  Once you have created some swap space using 'mkswap', you also need
-	  to enable your swap space with the 'swapon' utility. The 'swapoff'
-	  utility is used, typically at system shutdown, to disable any swap
-	  space. If you are not using any swap space, you can leave this
-	  option disabled.
-
-config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
-	bool "Support priority option -p"
-	default n
-	depends on BUSYBOX_CONFIG_SWAPONOFF
-	help
-	  Enable support for setting swap device priority in swapon.
-
-config BUSYBOX_CONFIG_SWITCH_ROOT
-	bool "switch_root"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  The switch_root utility is used from initramfs to select a new
-	  root device. Under initramfs, you have to use this instead of
-	  pivot_root. (Stop reading here if you don't care why.)
-
-	  Booting with initramfs extracts a gzipped cpio archive into rootfs
-	  (which is a variant of ramfs/tmpfs). Because rootfs can't be moved
-	  or unmounted*, pivot_root will not work from initramfs. Instead,
-	  switch_root deletes everything out of rootfs (including itself),
-	  does a mount --move that overmounts rootfs with the new root, and
-	  then execs the specified init program.
-
-	  * Because the Linux kernel uses rootfs internally as the starting
-	  and ending point for searching through the kernel's doubly linked
-	  list of active mount points. That's why.
-
-config BUSYBOX_CONFIG_UMOUNT
-	bool "umount"
-	default y
-	select BUSYBOX_CONFIG_PLATFORM_LINUX
-	help
-	  When you want to remove a mounted filesystem from its current mount
-	  point, for example when you are shutting down the system, the
-	  'umount' utility is the tool to use. If you enabled the 'mount'
-	  utility, you almost certainly also want to enable 'umount'.
-
-config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
-	bool "Support option -a"
-	default y
-	depends on BUSYBOX_CONFIG_UMOUNT
-	help
-	  Support -a option to unmount all currently mounted filesystems.
-
-comment "Common options for mount/umount"
-	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
-	bool "Support loopback mounts"
-	default y
-	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
-	help
-	  Enabling this feature allows automatic mounting of files (containing
-	  filesystem images) via the linux kernel's loopback devices.
-	  The mount command will detect you are trying to mount a file instead
-	  of a block device, and transparently associate the file with a
-	  loopback device. The umount command will also free that loopback
-	  device.
-
-	  You can still use the 'losetup' utility (to manually associate files
-	  with loop devices) if you need to do something advanced, such as
-	  specify an offset or cryptographic options to the loopback device.
-	  (If you don't want umount to free the loop device, use "umount -D".)
-
-config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE
-	bool "Create new loopback devices if needed"
-	default n
-	depends on BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
-	help
-	  Linux kernels >= 2.6.24 support unlimited loopback devices. They are
-	  allocated for use when trying to use a loop device. The loop device
-	  must however exist.
-
-	  This feature lets mount to try to create next /dev/loopN device
-	  if it does not find a free one.
-
-config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
-	bool "Support for the old /etc/mtab file"
-	default n
-	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
-	select BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
-	help
-	  Historically, Unix systems kept track of the currently mounted
-	  partitions in the file "/etc/mtab". These days, the kernel exports
-	  the list of currently mounted partitions in "/proc/mounts", rendering
-	  the old mtab file obsolete. (In modern systems, /etc/mtab should be
-	  a symlink to /proc/mounts.)
-
-	  The only reason to have mount maintain an /etc/mtab file itself is if
-	  your stripped-down embedded system does not have a /proc directory.
-	  If you must use this, keep in mind it's inherently brittle (for
-	  example a mount under chroot won't update it), can't handle modern
-	  features like separate per-process filesystem namespaces, requires
-	  that your /etc directory be writable, tends to get easily confused
-	  by --bind or --move mounts, won't update if you rename a directory
-	  that contains a mount point, and so on. (In brief: avoid.)
-
-	  About the only reason to use this is if you've removed /proc from
-	  your kernel.
-
-config BUSYBOX_CONFIG_VOLUMEID
-	bool #No description makes it a hidden option
-	default n
-
-menu "Filesystem/Volume identification"
-	depends on BUSYBOX_CONFIG_VOLUMEID
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
-	bool "Ext filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_BTRFS
-	bool "btrfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_REISERFS
-	bool "Reiser filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
-	bool "fat filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_HFS
-	bool "hfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
-	bool "jfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_UFS
-###	bool "ufs filesystem"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_XFS
-	bool "xfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
-	bool "ntfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ISO9660
-	bool "iso9660 filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
-	bool "udf filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
-	bool "luks filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXSWAP
-	bool "linux swap filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_LVM
-###	bool "lvm"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_CRAMFS
-	bool "cramfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_HPFS
-###	bool "hpfs filesystem"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_ROMFS
-	bool "romfs filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
-	bool "sysv filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_MINIX
-###	bool "minix filesystem"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### These only detect partition tables - not used (yet?)
-### config FEATURE_VOLUMEID_MAC
-###	bool "mac filesystem"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-###
-### config FEATURE_VOLUMEID_MSDOS
-###	bool "msdos filesystem"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_OCFS2
-	bool "ocfs2 filesystem"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-### config FEATURE_VOLUMEID_HIGHPOINTRAID
-###	bool "highpoint raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_ISWRAID
-###	bool "intel raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_LSIRAID
-###	bool "lsi raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_VIARAID
-###	bool "via raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_SILICONRAID
-###	bool "silicon raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_NVIDIARAID
-###	bool "nvidia raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-### config FEATURE_VOLUMEID_PROMISERAID
-###	bool "promise raid"
-###	default y
-###	depends on VOLUMEID
-###	help
-###	  TODO
-
-config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
-	bool "linuxraid"
-	default n
-	depends on BUSYBOX_CONFIG_VOLUMEID
-	help
-	  TODO
-
-endmenu
-
-endmenu
-

--- a/package/busybox/convert_menuconfig.pl
+++ /dev/null
@@ -1,79 +1,1 @@
-#!/usr/bin/perl
-# 
-# Copyright (C) 2006 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
 
-use strict;
-my $PATH = $ARGV[0];
-($PATH and -d $PATH) or die 'invalid path';
-my $DEFCONFIG = $ARGV[1];
-($DEFCONFIG and -f $DEFCONFIG) or die 'invalid config file';
-
-my %config;
-
-open CONFIG, $DEFCONFIG or die 'cannot open config file';
-while (<CONFIG>) {
-	/^CONFIG_([\w_]+)=([ym])/ and $config{$1} = $2;
-	/^CONFIG_([\w_]+)=(\d+)/ and $config{$1} = $2;
-	/^CONFIG_([\w_]+)=(".+")/ and $config{$1} = $2;
-}
-close CONFIG;
-
-open FIND, "find \"$PATH\" -name Config.in |";
-while (<FIND>) {
-	chomp;
-	my $input = $_;
-	s/^$PATH\///g;
-	s/sysdeps\/linux\///g;
-	my $output = $_;
-	print STDERR "$input => $output\n";
-	$output =~ /^(.+)\/[^\/]+$/ and system("mkdir -p $1");
-	
-	open INPUT, $input;
-	open OUTPUT, ">$output";
-	my ($cur, $default_set, $line);
-	while ($line = <INPUT>) {
-		next if $line =~ /^\s*mainmenu/;
-
-		# FIXME: make this dynamic
-		$line =~ s/default FEATURE_BUFFERS_USE_MALLOC/default FEATURE_BUFFERS_GO_ON_STACK/;
-		$line =~ s/default FEATURE_SH_IS_NONE/default FEATURE_SH_IS_ASH/;
-
-		if ($line =~ /^\s*config\s*([\w_]+)/) {
-			$cur = $1;
-			undef $default_set;
-		}
-		if ($line =~ /^\s*(menu|choice|end|source)/) {
-			undef $cur;
-			undef $default_set;
-		}
-		$line =~ s/^(\s*source\s+)/$1package\/busybox\/config\//;
-		
-		$line =~ s/^(\s*(prompt "[^"]+" if|config|depends|depends on|select|default|default \w if)\s+\!?)([A-Z_])/$1BUSYBOX_CONFIG_$3/g;
-		$line =~ s/(( \|\| | \&\& | \( )!?)([A-Z_])/$1BUSYBOX_CONFIG_$3/g;
-		$line =~ s/(\( ?!?)([A-Z_]+ (\|\||&&))/$1BUSYBOX_CONFIG_$2/g;
-		
-		if ($cur) {
-			($cur eq 'LFS') and do {
-				$line =~ s/^(\s*(bool|tristate|string))\s*".+"$/$1/;
-			};
-			if ($line =~ /^\s*default/) {
-				my $c;
-				$default_set = 1;
-				$c = $config{$cur} or $c = 'n';
-
-				$line =~ s/^(\s*default\s*)(\w+|"[^"]*")(.*)/$1$c$3/;
-			}
-		}
-		
-		print OUTPUT $line;
-	}
-	close OUTPUT;
-	close INPUT;
-	
-}
-close FIND;
-

--- a/package/busybox/files/cron
+++ /dev/null
@@ -1,19 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2011 OpenWrt.org
 
-START=50
-
-SERVICE_USE_PID=1
-
-start () {
-	loglevel=$(uci_get "system.@system[0].cronloglevel")
-	[ -z "$(ls /etc/crontabs/)" ] && exit 1
-	mkdir -p /var/spool/cron
-	ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null
-	service_start /usr/sbin/crond -c /etc/crontabs -l ${loglevel:-5}
-}
-
-stop() {
-	service_stop /usr/sbin/crond
-}
-

--- a/package/busybox/files/telnet
+++ /dev/null
@@ -1,38 +1,1 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2011 OpenWrt.org
 
-START=50
-
-has_root_pwd() {
-	local pwd=$([ -f "$1" ] && cat "$1")
-	      pwd="${pwd#*root:}"
-	      pwd="${pwd%%:*}"
-
-	test -n "${pwd#[\!x]}"
-}
-
-get_root_home() {
-	local homedir=$([ -f "$1" ] && cat "$1")
-	homedir="${homedir#*:*:0:0:*:}"
-
-	echo "${homedir%%:*}"
-}
-
-has_ssh_pubkey() {
-	( /etc/init.d/dropbear enabled 2> /dev/null && grep -qs "^ssh-" /etc/dropbear/authorized_keys ) || \
-	( /etc/init.d/sshd enabled 2> /dev/null && grep -qs "^ssh-" "$(get_root_home /etc/passwd)"/.ssh/authorized_keys )
-}
-
-start() {
-	if ( ! has_ssh_pubkey && \
-	     ! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \
-	   ( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null );
-	then
-		service_start /usr/sbin/telnetd -l /bin/login.sh
-	fi
-}
-
-stop() {
-	service_stop /usr/sbin/telnetd
-}
-

--- a/package/busybox/patches/001-init_avoid_loop_opening_tty.patch
+++ /dev/null
@@ -1,16 +1,1 @@
---- a/init/init.c
-+++ b/init/init.c
-@@ -573,8 +573,11 @@ static void run_actions(int action_type)
- 			/* Only run stuff with pid == 0. If pid != 0,
- 			 * it is already running
- 			 */
--			if (a->pid == 0)
-+			if (a->pid == 0) {
-+				if (a->terminal[0] && access(a->terminal, R_OK | W_OK))
-+					continue;
- 				a->pid = run(a);
-+			}
- 		}
- 	}
- }
 

--- a/package/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch
+++ /dev/null
@@ -1,21 +1,1 @@
-From eb80c2a5315ed08bd329448217695375d89732c9 Mon Sep 17 00:00:00 2001
-From: Nicolas Thill <nico@openwrt.org>
-Date: Wed, 9 Nov 2011 18:17:20 +0100
-Subject: [PATCH] passwd: use MD5 hash by default (like it used to be)
 
----
- loginutils/passwd.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
---- a/loginutils/passwd.c
-+++ b/loginutils/passwd.c
-@@ -94,7 +94,7 @@ int passwd_main(int argc UNUSED_PARAM, c
- 	};
- 	unsigned opt;
- 	int rc;
--	const char *opt_a = "d"; /* des */
-+	const char *opt_a = "m"; /* md5 */
- 	const char *filename;
- 	char *myname;
- 	char *name;
-

--- a/package/busybox/patches/003-brctl_show_fix.patch
+++ /dev/null
@@ -1,38 +1,1 @@
---- a/networking/brctl.c
-+++ b/networking/brctl.c
-@@ -129,7 +129,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
- 		"setageing\0" "setfd\0" "sethello\0" "setmaxage\0"
- 		"setpathcost\0" "setportprio\0" "setbridgeprio\0"
- 	)
--	IF_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
-+	IF_FEATURE_BRCTL_SHOW("show\0");
- 
- 	enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif
- 		IF_FEATURE_BRCTL_FANCY(,
-@@ -137,7 +137,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
- 		   ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage,
- 		   ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio
- 		)
--		IF_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
-+		IF_FEATURE_BRCTL_SHOW(, ARG_show)
- 	};
- 
- 	int fd;
---- a/networking/Config.src
-+++ b/networking/Config.src
-@@ -82,12 +82,12 @@ config FEATURE_BRCTL_FANCY
- 	  This adds about 600 bytes.
- 
- config FEATURE_BRCTL_SHOW
--	bool "Support show, showmac and showstp"
-+	bool "Support show"
- 	default y
- 	depends on BRCTL && FEATURE_BRCTL_FANCY
- 	help
- 	  Add support for option which prints the current config:
--	    showmacs, showstp, show
-+	    show
- 
- config DNSD
- 	bool "dnsd"
 

--- a/package/busybox/patches/004-upstream-percent_decode_in_place.patch
+++ /dev/null
@@ -1,238 +1,1 @@
-http://git.busybox.net/busybox/commit/?id=dd1061b6a79b0161597799e825bfefc27993ace5
 
-From dd1061b6a79b0161597799e825bfefc27993ace5 Mon Sep 17 00:00:00 2001
-From: Denys Vlasenko <vda.linux@googlemail.com>
-Date: Sun, 11 Sep 2011 21:04:02 +0200
-Subject: [PATCH] wget: URL-decode user:password before base64-encoding it into auth hdr. Closes 3625.
-
-function                                             old     new   delta
-percent_decode_in_place                                -     152    +152
-parse_url                                            304     317     +13
-handle_incoming_and_exit                            2795    2798      +3
-httpd_main                                           763     760      -3
-decodeString                                         152       -    -152
-------------------------------------------------------------------------------
-(add/remove: 2/1 grow/shrink: 2/1 up/down: 168/-155)           Total: 13 bytes
-
-Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-
---- a/include/libbb.h
-+++ b/include/libbb.h
-@@ -1570,6 +1570,15 @@ int starts_with_cpu(const char *str) FAS
- unsigned get_cpu_count(void) FAST_FUNC;
- 
- 
-+/* Use strict=1 if you process input from untrusted source:
-+ * it will return NULL on invalid %xx (bad hex chars)
-+ * and str + 1 if decoded char is / or NUL.
-+ * In non-strict mode, it always succeeds (returns str),
-+ * and also it additionally decoded '+' to space.
-+ */
-+char *percent_decode_in_place(char *str, int strict) FAST_FUNC;
-+
-+
- extern const char bb_uuenc_tbl_base64[];
- extern const char bb_uuenc_tbl_std[];
- void bb_uuencode(char *store, const void *s, int length, const char *tbl) FAST_FUNC;
---- /dev/null
-+++ b/libbb/percent_decode.c
-@@ -0,0 +1,69 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
-+ */
-+
-+//kbuild:lib-y += percent_decode.o
-+
-+#include "libbb.h"
-+
-+static unsigned hex_to_bin(unsigned char c)
-+{
-+	unsigned v;
-+
-+	v = c - '0';
-+	if (v <= 9)
-+		return v;
-+	/* c | 0x20: letters to lower case, non-letters
-+	 * to (potentially different) non-letters */
-+	v = (unsigned)(c | 0x20) - 'a';
-+	if (v <= 5)
-+		return v + 10;
-+	return ~0;
-+/* For testing:
-+void t(char c) { printf("'%c'(%u) %u\n", c, c, hex_to_bin(c)); }
-+int main() { t(0x10); t(0x20); t('0'); t('9'); t('A'); t('F'); t('a'); t('f');
-+t('0'-1); t('9'+1); t('A'-1); t('F'+1); t('a'-1); t('f'+1); return 0; }
-+*/
-+}
-+
-+char* FAST_FUNC percent_decode_in_place(char *str, int strict)
-+{
-+	/* note that decoded string is always shorter than original */
-+	char *src = str;
-+	char *dst = str;
-+	char c;
-+
-+	while ((c = *src++) != '\0') {
-+		unsigned v;
-+
-+		if (!strict && c == '+') {
-+			*dst++ = ' ';
-+			continue;
-+		}
-+		if (c != '%') {
-+			*dst++ = c;
-+			continue;
-+		}
-+		v = hex_to_bin(src[0]);
-+		if (v > 15) {
-+ bad_hex:
-+			if (strict)
-+				return NULL;
-+			*dst++ = '%';
-+			continue;
-+		}
-+		v = (v * 16) | hex_to_bin(src[1]);
-+		if (v > 255)
-+			goto bad_hex;
-+		if (strict && (v == '/' || v == '\0')) {
-+			/* caller takes it as indication of invalid
-+			 * (dangerous wrt exploits) chars */
-+			return str + 1;
-+		}
-+		*dst++ = v;
-+		src += 2;
-+	}
-+	*dst = '\0';
-+	return str;
-+}
---- a/networking/httpd.c
-+++ b/networking/httpd.c
-@@ -820,78 +820,6 @@ static char *encodeString(const char *st
- }
- #endif
- 
--/*
-- * Given a URL encoded string, convert it to plain ascii.
-- * Since decoding always makes strings smaller, the decode is done in-place.
-- * Thus, callers should xstrdup() the argument if they do not want the
-- * argument modified.  The return is the original pointer, allowing this
-- * function to be easily used as arguments to other functions.
-- *
-- * string    The first string to decode.
-- * option_d  1 if called for httpd -d
-- *
-- * Returns a pointer to the decoded string (same as input).
-- */
--static unsigned hex_to_bin(unsigned char c)
--{
--	unsigned v;
--
--	v = c - '0';
--	if (v <= 9)
--		return v;
--	/* c | 0x20: letters to lower case, non-letters
--	 * to (potentially different) non-letters */
--	v = (unsigned)(c | 0x20) - 'a';
--	if (v <= 5)
--		return v + 10;
--	return ~0;
--/* For testing:
--void t(char c) { printf("'%c'(%u) %u\n", c, c, hex_to_bin(c)); }
--int main() { t(0x10); t(0x20); t('0'); t('9'); t('A'); t('F'); t('a'); t('f');
--t('0'-1); t('9'+1); t('A'-1); t('F'+1); t('a'-1); t('f'+1); return 0; }
--*/
--}
--static char *decodeString(char *orig, int option_d)
--{
--	/* note that decoded string is always shorter than original */
--	char *string = orig;
--	char *ptr = string;
--	char c;
--
--	while ((c = *ptr++) != '\0') {
--		unsigned v;
--
--		if (option_d && c == '+') {
--			*string++ = ' ';
--			continue;
--		}
--		if (c != '%') {
--			*string++ = c;
--			continue;
--		}
--		v = hex_to_bin(ptr[0]);
--		if (v > 15) {
-- bad_hex:
--			if (!option_d)
--				return NULL;
--			*string++ = '%';
--			continue;
--		}
--		v = (v * 16) | hex_to_bin(ptr[1]);
--		if (v > 255)
--			goto bad_hex;
--		if (!option_d && (v == '/' || v == '\0')) {
--			/* caller takes it as indication of invalid
--			 * (dangerous wrt exploits) chars */
--			return orig + 1;
--		}
--		*string++ = v;
--		ptr += 2;
--	}
--	*string = '\0';
--	return orig;
--}
--
- #if ENABLE_FEATURE_HTTPD_BASIC_AUTH
- /*
-  * Decode a base64 data stream as per rfc1521.
-@@ -1949,7 +1877,7 @@ static void handle_incoming_and_exit(con
- 	}
- 
- 	/* Decode URL escape sequences */
--	tptr = decodeString(urlcopy, 0);
-+	tptr = percent_decode_in_place(urlcopy, /*strict:*/ 1);
- 	if (tptr == NULL)
- 		send_headers_and_exit(HTTP_BAD_REQUEST);
- 	if (tptr == urlcopy + 1) {
-@@ -2408,7 +2336,7 @@ int httpd_main(int argc UNUSED_PARAM, ch
- 			, &verbose
- 		);
- 	if (opt & OPT_DECODE_URL) {
--		fputs(decodeString(url_for_decode, 1), stdout);
-+		fputs(percent_decode_in_place(url_for_decode, /*strict:*/ 0), stdout);
- 		return 0;
- 	}
- #if ENABLE_FEATURE_HTTPD_ENCODE_URL_STR
---- a/networking/wget.c
-+++ b/networking/wget.c
-@@ -298,8 +298,13 @@ static void parse_url(const char *src_ur
- 
- 	sp = strrchr(h->host, '@');
- 	if (sp != NULL) {
--		h->user = h->host;
-+		// URL-decode "user:password" string before base64-encoding:
-+		// wget http://test:my%20pass@example.com should send
-+		// Authorization: Basic dGVzdDpteSBwYXNz
-+		// which decodes to "test:my pass".
-+		// Standard wget and curl do this too.
- 		*sp = '\0';
-+		h->user = percent_decode_in_place(h->host, /*strict:*/ 0);
- 		h->host = sp + 1;
- 	}
- 
-@@ -661,12 +666,6 @@ static void download_one_url(const char
- 
- #if ENABLE_FEATURE_WGET_AUTHENTICATION
- 		if (target.user) {
--//TODO: URL-decode "user:password" string before base64-encoding:
--//wget http://test:my%20pass@example.com should send
--// Authorization: Basic dGVzdDpteSBwYXNz
--//which decodes to "test:my pass", instead of what we send now:
--// Authorization: Basic dGVzdDpteSUyMHBhc3M=
--//Can reuse decodeString() from httpd.c
- 			fprintf(sfp, "Proxy-Authorization: Basic %s\r\n"+6,
- 				base64enc(target.user));
- 		}
-

--- a/package/busybox/patches/005-resource_h_include.patch
+++ /dev/null
@@ -1,11 +1,1 @@
---- a/include/libbb.h
-+++ b/include/libbb.h
-@@ -35,6 +35,7 @@
- #include <sys/poll.h>
- #include <sys/ioctl.h>
- #include <sys/mman.h>
-+#include <sys/resource.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
- #include <sys/time.h>
 

--- a/package/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch
+++ /dev/null
@@ -1,165 +1,1 @@
---- a/networking/udhcp/common.c
-+++ b/networking/udhcp/common.c
-@@ -29,16 +29,16 @@ const struct dhcp_optflag dhcp_optflags[
- //	{ OPTION_IP | OPTION_LIST                 , 0x07 }, /* DHCP_LOG_SERVER    */
- //	{ OPTION_IP | OPTION_LIST                 , 0x08 }, /* DHCP_COOKIE_SERVER */
- 	{ OPTION_IP | OPTION_LIST                 , 0x09 }, /* DHCP_LPR_SERVER    */
--	{ OPTION_STRING               | OPTION_REQ, 0x0c }, /* DHCP_HOST_NAME     */
-+	{ OPTION_STRING_HOST          | OPTION_REQ, 0x0c }, /* DHCP_HOST_NAME     */
- 	{ OPTION_U16                              , 0x0d }, /* DHCP_BOOT_SIZE     */
--	{ OPTION_STRING               | OPTION_REQ, 0x0f }, /* DHCP_DOMAIN_NAME   */
-+	{ OPTION_STRING_HOST          | OPTION_REQ, 0x0f }, /* DHCP_DOMAIN_NAME   */
- 	{ OPTION_IP                               , 0x10 }, /* DHCP_SWAP_SERVER   */
- 	{ OPTION_STRING                           , 0x11 }, /* DHCP_ROOT_PATH     */
- 	{ OPTION_U8                               , 0x17 }, /* DHCP_IP_TTL        */
- 	{ OPTION_U16                              , 0x1a }, /* DHCP_MTU           */
- 	{ OPTION_IP                   | OPTION_REQ, 0x1c }, /* DHCP_BROADCAST     */
- 	{ OPTION_IP_PAIR | OPTION_LIST            , 0x21 }, /* DHCP_ROUTES        */
--	{ OPTION_STRING                           , 0x28 }, /* DHCP_NIS_DOMAIN    */
-+	{ OPTION_STRING_HOST                      , 0x28 }, /* DHCP_NIS_DOMAIN    */
- 	{ OPTION_IP | OPTION_LIST                 , 0x29 }, /* DHCP_NIS_SERVER    */
- 	{ OPTION_IP | OPTION_LIST     | OPTION_REQ, 0x2a }, /* DHCP_NTP_SERVER    */
- 	{ OPTION_IP | OPTION_LIST                 , 0x2c }, /* DHCP_WINS_SERVER   */
-@@ -46,7 +46,7 @@ const struct dhcp_optflag dhcp_optflags[
- 	{ OPTION_IP                               , 0x36 }, /* DHCP_SERVER_ID     */
- 	{ OPTION_STRING                           , 0x38 }, /* DHCP_ERR_MESSAGE   */
- //TODO: must be combined with 'sname' and 'file' handling:
--	{ OPTION_STRING                           , 0x42 }, /* DHCP_TFTP_SERVER_NAME */
-+	{ OPTION_STRING_HOST                      , 0x42 }, /* DHCP_TFTP_SERVER_NAME */
- 	{ OPTION_STRING                           , 0x43 }, /* DHCP_BOOT_FILE     */
- //TODO: not a string, but a set of LASCII strings:
- //	{ OPTION_STRING                           , 0x4D }, /* DHCP_USER_CLASS    */
-@@ -143,6 +143,7 @@ const uint8_t dhcp_option_lengths[] ALIG
- 	[OPTION_IP_PAIR] = 8,
- //	[OPTION_BOOLEAN] = 1,
- 	[OPTION_STRING] =  1,  /* ignored by udhcp_str2optset */
-+	[OPTION_STRING_HOST] = 1,  /* ignored by udhcp_str2optset */
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 	[OPTION_DNS_STRING] = 1,  /* ignored by both udhcp_str2optset and xmalloc_optname_optval */
- 	[OPTION_SIP_SERVERS] = 1,
-@@ -411,7 +412,9 @@ static NOINLINE void attach_option(
- 			/* actually 255 is ok too, but adding a space can overlow it */
- 
- 			existing->data = xrealloc(existing->data, OPT_DATA + 1 + old_len + length);
--			if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING) {
-+			if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING
-+			 || (optflag->flags & OPTION_TYPE_MASK) == OPTION_STRING_HOST
-+			) {
- 				/* add space separator between STRING options in a list */
- 				existing->data[OPT_DATA + old_len] = ' ';
- 				old_len++;
-@@ -475,6 +478,7 @@ int FAST_FUNC udhcp_str2optset(const cha
- 				retval = udhcp_str2nip(val, buffer + 4);
- 			break;
- 		case OPTION_STRING:
-+		case OPTION_STRING_HOST:
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 		case OPTION_DNS_STRING:
- #endif
---- a/networking/udhcp/common.h
-+++ b/networking/udhcp/common.h
-@@ -80,6 +80,9 @@ enum {
- 	OPTION_IP = 1,
- 	OPTION_IP_PAIR,
- 	OPTION_STRING,
-+	/* Opts of STRING_HOST type will be sanitized before they are passed
-+	 * to udhcpc script's environment: */
-+	OPTION_STRING_HOST,
- //	OPTION_BOOLEAN,
- 	OPTION_U8,
- 	OPTION_U16,
---- a/networking/udhcp/dhcpc.c
-+++ b/networking/udhcp/dhcpc.c
-@@ -101,6 +101,7 @@ static const uint8_t len_of_option_as_st
- 	[OPTION_IP_PAIR         ] = sizeof("255.255.255.255 ") * 2,
- 	[OPTION_STATIC_ROUTES   ] = sizeof("255.255.255.255/32 255.255.255.255 "),
- 	[OPTION_STRING          ] = 1,
-+	[OPTION_STRING_HOST     ] = 1,
- #if ENABLE_FEATURE_UDHCP_RFC3397
- 	[OPTION_DNS_STRING      ] = 1, /* unused */
- 	/* Hmmm, this severely overestimates size if SIP_SERVERS option
-@@ -135,6 +136,63 @@ static int mton(uint32_t mask)
- 	return i;
- }
- 
-+/* Check if a given label represents a valid DNS label
-+ * Return pointer to the first character after the label upon success,
-+ * NULL otherwise.
-+ * See RFC1035, 2.3.1
-+ */
-+/* We don't need to be particularly anal. For example, allowing _, hyphen
-+ * at the end, or leading and trailing dots would be ok, since it
-+ * can't be used for attacks. (Leading hyphen can be, if someone uses
-+ * cmd "$hostname"
-+ * in the script: then hostname may be treated as an option)
-+ */
-+static const char *valid_domain_label(const char *label)
-+{
-+	unsigned char ch;
-+	unsigned pos = 0;
-+
-+	for (;;) {
-+		ch = *label;
-+		if ((ch|0x20) < 'a' || (ch|0x20) > 'z') {
-+			if (pos == 0) {
-+				/* label must begin with letter */
-+				return NULL;
-+			}
-+			if (ch < '0' || ch > '9') {
-+				if (ch == '\0' || ch == '.')
-+					return label;
-+				/* DNS allows only '-', but we are more permissive */
-+				if (ch != '-' && ch != '_')
-+					return NULL;
-+			}
-+		}
-+		label++;
-+		pos++;
-+		//Do we want this?
-+		//if (pos > 63) /* NS_MAXLABEL; labels must be 63 chars or less */
-+		//	return NULL;
-+	}
-+}
-+
-+/* Check if a given name represents a valid DNS name */
-+/* See RFC1035, 2.3.1 */
-+static int good_hostname(const char *name)
-+{
-+	//const char *start = name;
-+
-+	for (;;) {
-+		name = valid_domain_label(name);
-+		if (!name)
-+			return 0;
-+		if (!name[0])
-+			return 1;
-+			//Do we want this?
-+			//return ((name - start) < 1025); /* NS_MAXDNAME */
-+		name++;
-+	}
-+}
-+
- /* Create "opt_name=opt_value" string */
- static NOINLINE char *xmalloc_optname_optval(uint8_t *option, const struct dhcp_optflag *optflag, const char *opt_name)
- {
-@@ -185,8 +243,11 @@ static NOINLINE char *xmalloc_optname_op
- 			break;
- 		}
- 		case OPTION_STRING:
-+		case OPTION_STRING_HOST:
- 			memcpy(dest, option, len);
- 			dest[len] = '\0';
-+			if (type == OPTION_STRING_HOST && !good_hostname(dest))
-+				safe_strncpy(dest, "bad", len);
- 			return ret;	 /* Short circuit this case */
- 		case OPTION_STATIC_ROUTES: {
- 			/* Option binary format:
-@@ -314,6 +375,7 @@ static char **fill_envp(struct dhcp_pack
- 	/* +1 element for each option, +2 for subnet option: */
- 	if (packet) {
- 		/* note: do not search for "pad" (0) and "end" (255) options */
-+//TODO: change logic to scan packet _once_
- 		for (i = 1; i < 255; i++) {
- 			temp = udhcp_get_option(packet, i);
- 			if (temp) {
 

--- a/package/busybox/patches/007-upstream_mkfs_ext2_fixes.patch
+++ /dev/null
@@ -1,1442 +1,1 @@
---- a/e2fsprogs/e2fs_defs.h
-+++ /dev/null
-@@ -1,561 +0,0 @@
--/* vi: set sw=4 ts=4: */
--/*
-- *  linux/include/linux/ext2_fs.h
-- *
-- * Copyright (C) 1992, 1993, 1994, 1995
-- * Remy Card (card@masi.ibp.fr)
-- * Laboratoire MASI - Institut Blaise Pascal
-- * Universite Pierre et Marie Curie (Paris VI)
-- *
-- * Copyright (C) 1991, 1992  Linus Torvalds
-- */
--
--#ifndef LINUX_EXT2_FS_H
--#define LINUX_EXT2_FS_H 1
--
--/*
-- * Special inode numbers
-- */
--#define EXT2_BAD_INO		 1	/* Bad blocks inode */
--#define EXT2_ROOT_INO		 2	/* Root inode */
--#define EXT2_ACL_IDX_INO	 3	/* ACL inode */
--#define EXT2_ACL_DATA_INO	 4	/* ACL inode */
--#define EXT2_BOOT_LOADER_INO	 5	/* Boot loader inode */
--#define EXT2_UNDEL_DIR_INO	 6	/* Undelete directory inode */
--#define EXT2_RESIZE_INO		 7	/* Reserved group descriptors inode */
--#define EXT2_JOURNAL_INO	 8	/* Journal inode */
--
--/* First non-reserved inode for old ext2 filesystems */
--#define EXT2_GOOD_OLD_FIRST_INO	11
--
--/*
-- * The second extended file system magic number
-- */
--#define EXT2_SUPER_MAGIC	0xEF53
--
--/* Assume that user mode programs are passing in an ext2fs superblock, not
-- * a kernel struct super_block.  This will allow us to call the feature-test
-- * macros from user land. */
--#define EXT2_SB(sb)	(sb)
--
--/*
-- * Maximal count of links to a file
-- */
--#define EXT2_LINK_MAX		32000
--
--/*
-- * Macro-instructions used to manage several block sizes
-- */
--#define EXT2_MIN_BLOCK_LOG_SIZE		10	/* 1024 */
--#define EXT2_MAX_BLOCK_LOG_SIZE		16	/* 65536 */
--#define EXT2_MIN_BLOCK_SIZE	(1 << EXT2_MIN_BLOCK_LOG_SIZE)
--#define EXT2_MAX_BLOCK_SIZE	(1 << EXT2_MAX_BLOCK_LOG_SIZE)
--#define EXT2_BLOCK_SIZE(s)	(EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size)
--#define EXT2_BLOCK_SIZE_BITS(s)	((s)->s_log_block_size + 10)
--#define EXT2_INODE_SIZE(s)	(((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
--				 EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size)
--#define EXT2_FIRST_INO(s)	(((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
--				 EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino)
--#define EXT2_ADDR_PER_BLOCK(s)	(EXT2_BLOCK_SIZE(s) / sizeof(uint32_t))
--
--/*
-- * Macro-instructions used to manage fragments
-- */
--#define EXT2_MIN_FRAG_SIZE		EXT2_MIN_BLOCK_SIZE
--#define EXT2_MAX_FRAG_SIZE		EXT2_MAX_BLOCK_SIZE
--#define EXT2_MIN_FRAG_LOG_SIZE		EXT2_MIN_BLOCK_LOG_SIZE
--#define EXT2_FRAG_SIZE(s)		(EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size)
--#define EXT2_FRAGS_PER_BLOCK(s)		(EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s))
--
--/*
-- * ACL structures
-- */
--struct ext2_acl_header {	/* Header of Access Control Lists */
--	uint32_t	aclh_size;
--	uint32_t	aclh_file_count;
--	uint32_t	aclh_acle_count;
--	uint32_t	aclh_first_acle;
--};
--
--struct ext2_acl_entry {	/* Access Control List Entry */
--	uint32_t	acle_size;
--	uint16_t	acle_perms;	/* Access permissions */
--	uint16_t	acle_type;	/* Type of entry */
--	uint16_t	acle_tag;	/* User or group identity */
--	uint16_t	acle_pad1;
--	uint32_t	acle_next;	/* Pointer on next entry for the */
--					/* same inode or on next free entry */
--};
--
--/*
-- * Structure of a blocks group descriptor
-- */
--struct ext2_group_desc {
--	uint32_t	bg_block_bitmap;	/* Blocks bitmap block */
--	uint32_t	bg_inode_bitmap;	/* Inodes bitmap block */
--	uint32_t	bg_inode_table;		/* Inodes table block */
--	uint16_t	bg_free_blocks_count;	/* Free blocks count */
--	uint16_t	bg_free_inodes_count;	/* Free inodes count */
--	uint16_t	bg_used_dirs_count;	/* Directories count */
--	uint16_t	bg_pad;
--	uint32_t	bg_reserved[3];
--};
--
--/*
-- * Data structures used by the directory indexing feature
-- *
-- * Note: all of the multibyte integer fields are little endian.
-- */
--
--/*
-- * Note: dx_root_info is laid out so that if it should somehow get
-- * overlaid by a dirent the two low bits of the hash version will be
-- * zero.  Therefore, the hash version mod 4 should never be 0.
-- * Sincerely, the paranoia department.
-- */
--struct ext2_dx_root_info {
--	uint32_t	reserved_zero;
--	uint8_t		hash_version; /* 0 now, 1 at release */
--	uint8_t		info_length; /* 8 */
--	uint8_t		indirect_levels;
--	uint8_t		unused_flags;
--};
--
--#define EXT2_HASH_LEGACY	0
--#define EXT2_HASH_HALF_MD4	1
--#define EXT2_HASH_TEA		2
--
--#define EXT2_HASH_FLAG_INCOMPAT	0x1
--
--struct ext2_dx_entry {
--	uint32_t hash;
--	uint32_t block;
--};
--
--struct ext2_dx_countlimit {
--	uint16_t limit;
--	uint16_t count;
--};
--
--
--/*
-- * Macro-instructions used to manage group descriptors
-- */
--#define EXT2_BLOCKS_PER_GROUP(s)	(EXT2_SB(s)->s_blocks_per_group)
--#define EXT2_INODES_PER_GROUP(s)	(EXT2_SB(s)->s_inodes_per_group)
--#define EXT2_INODES_PER_BLOCK(s)	(EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s))
--/* limits imposed by 16-bit value gd_free_{blocks,inode}_count */
--#define EXT2_MAX_BLOCKS_PER_GROUP(s)	((1 << 16) - 8)
--#define EXT2_MAX_INODES_PER_GROUP(s)	((1 << 16) - EXT2_INODES_PER_BLOCK(s))
--#define EXT2_DESC_PER_BLOCK(s)		(EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
--
--/*
-- * Constants relative to the data blocks
-- */
--#define EXT2_NDIR_BLOCKS		12
--#define EXT2_IND_BLOCK			EXT2_NDIR_BLOCKS
--#define EXT2_DIND_BLOCK			(EXT2_IND_BLOCK + 1)
--#define EXT2_TIND_BLOCK			(EXT2_DIND_BLOCK + 1)
--#define EXT2_N_BLOCKS			(EXT2_TIND_BLOCK + 1)
--
--/*
-- * Inode flags
-- */
--#define EXT2_SECRM_FL			0x00000001 /* Secure deletion */
--#define EXT2_UNRM_FL			0x00000002 /* Undelete */
--#define EXT2_COMPR_FL			0x00000004 /* Compress file */
--#define EXT2_SYNC_FL			0x00000008 /* Synchronous updates */
--#define EXT2_IMMUTABLE_FL		0x00000010 /* Immutable file */
--#define EXT2_APPEND_FL			0x00000020 /* writes to file may only append */
--#define EXT2_NODUMP_FL			0x00000040 /* do not dump file */
--#define EXT2_NOATIME_FL			0x00000080 /* do not update atime */
--/* Reserved for compression usage... */
--#define EXT2_DIRTY_FL			0x00000100
--#define EXT2_COMPRBLK_FL		0x00000200 /* One or more compressed clusters */
--#define EXT2_NOCOMPR_FL			0x00000400 /* Access raw compressed data */
--#define EXT2_ECOMPR_FL			0x00000800 /* Compression error */
--/* End compression flags --- maybe not all used */
--#define EXT2_BTREE_FL			0x00001000 /* btree format dir */
--#define EXT2_INDEX_FL			0x00001000 /* hash-indexed directory */
--#define EXT2_IMAGIC_FL			0x00002000
--#define EXT3_JOURNAL_DATA_FL		0x00004000 /* file data should be journaled */
--#define EXT2_NOTAIL_FL			0x00008000 /* file tail should not be merged */
--#define EXT2_DIRSYNC_FL			0x00010000 /* Synchronous directory modifications */
--#define EXT2_TOPDIR_FL			0x00020000 /* Top of directory hierarchies*/
--#define EXT3_EXTENTS_FL			0x00080000 /* Inode uses extents */
--#define EXT2_RESERVED_FL		0x80000000 /* reserved for ext2 lib */
--
--#define EXT2_FL_USER_VISIBLE		0x0003DFFF /* User visible flags */
--#define EXT2_FL_USER_MODIFIABLE		0x000080FF /* User modifiable flags */
--
--/*
-- * ioctl commands
-- */
--#define EXT2_IOC_GETFLAGS		_IOR('f', 1, long)
--#define EXT2_IOC_SETFLAGS		_IOW('f', 2, long)
--#define EXT2_IOC_GETVERSION		_IOR('v', 1, long)
--#define EXT2_IOC_SETVERSION		_IOW('v', 2, long)
--
--/*
-- * Structure of an inode on the disk
-- */
--struct ext2_inode {
--	uint16_t	i_mode;		/* File mode */
--	uint16_t	i_uid;		/* Low 16 bits of Owner Uid */
--	uint32_t	i_size;		/* Size in bytes */
--	uint32_t	i_atime;	/* Access time */
--	uint32_t	i_ctime;	/* Creation time */
--	uint32_t	i_mtime;	/* Modification time */
--	uint32_t	i_dtime;	/* Deletion Time */
--	uint16_t	i_gid;		/* Low 16 bits of Group Id */
--	uint16_t	i_links_count;	/* Links count */
--	uint32_t	i_blocks;	/* Blocks count */
--	uint32_t	i_flags;	/* File flags */
--	union {
--		struct {
--			uint32_t  l_i_reserved1;
--		} linux1;
--		struct {
--			uint32_t  h_i_translator;
--		} hurd1;
--		struct {
--			uint32_t  m_i_reserved1;
--		} masix1;
--	} osd1;				/* OS dependent 1 */
--	uint32_t	i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
--	uint32_t	i_generation;	/* File version (for NFS) */
--	uint32_t	i_file_acl;	/* File ACL */
--	uint32_t	i_dir_acl;	/* Directory ACL */
--	uint32_t	i_faddr;	/* Fragment address */
--	union {
--		struct {
--			uint8_t		l_i_frag;	/* Fragment number */
--			uint8_t		l_i_fsize;	/* Fragment size */
--			uint16_t	i_pad1;
--			uint16_t	l_i_uid_high;	/* these 2 fields    */
--			uint16_t	l_i_gid_high;	/* were reserved2[0] */
--			uint32_t	l_i_reserved2;
--		} linux2;
--		struct {
--			uint8_t		h_i_frag;	/* Fragment number */
--			uint8_t		h_i_fsize;	/* Fragment size */
--			uint16_t	h_i_mode_high;
--			uint16_t	h_i_uid_high;
--			uint16_t	h_i_gid_high;
--			uint32_t	h_i_author;
--		} hurd2;
--		struct {
--			uint8_t		m_i_frag;	/* Fragment number */
--			uint8_t		m_i_fsize;	/* Fragment size */
--			uint16_t	m_pad1;
--			uint32_t	m_i_reserved2[2];
--		} masix2;
--	} osd2;				/* OS dependent 2 */
--};
--
--/*
-- * Permanent part of an large inode on the disk
-- */
--struct ext2_inode_large {
--	uint16_t	i_mode;		/* File mode */
--	uint16_t	i_uid;		/* Low 16 bits of Owner Uid */
--	uint32_t	i_size;		/* Size in bytes */
--	uint32_t	i_atime;	/* Access time */
--	uint32_t	i_ctime;	/* Creation time */
--	uint32_t	i_mtime;	/* Modification time */
--	uint32_t	i_dtime;	/* Deletion Time */
--	uint16_t	i_gid;		/* Low 16 bits of Group Id */
--	uint16_t	i_links_count;	/* Links count */
--	uint32_t	i_blocks;	/* Blocks count */
--	uint32_t	i_flags;	/* File flags */
--	union {
--		struct {
--			uint32_t  l_i_reserved1;
--		} linux1;
--		struct {
--			uint32_t  h_i_translator;
--		} hurd1;
--		struct {
--			uint32_t  m_i_reserved1;
--		} masix1;
--	} osd1;				/* OS dependent 1 */
--	uint32_t	i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
--	uint32_t	i_generation;	/* File version (for NFS) */
--	uint32_t	i_file_acl;	/* File ACL */
--	uint32_t	i_dir_acl;	/* Directory ACL */
--	uint32_t	i_faddr;	/* Fragment address */
--	union {
--		struct {
--			uint8_t		l_i_frag;	/* Fragment number */
--			uint8_t		l_i_fsize;	/* Fragment size */
--			uint16_t	i_pad1;
--			uint16_t	l_i_uid_high;	/* these 2 fields    */
--			uint16_t	l_i_gid_high;	/* were reserved2[0] */
--			uint32_t	l_i_reserved2;
--		} linux2;
--		struct {
--			uint8_t		h_i_frag;	/* Fragment number */
--			uint8_t		h_i_fsize;	/* Fragment size */
--			uint16_t	h_i_mode_high;
--			uint16_t	h_i_uid_high;
--			uint16_t	h_i_gid_high;
--			uint32_t	h_i_author;
--		} hurd2;
--		struct {
--			uint8_t		m_i_frag;	/* Fragment number */
--			uint8_t		m_i_fsize;	/* Fragment size */
--			uint16_t	m_pad1;
--			uint32_t	m_i_reserved2[2];
--		} masix2;
--	} osd2;				/* OS dependent 2 */
--	uint16_t	i_extra_isize;
--	uint16_t	i_pad1;
--};
--
--#define i_size_high	i_dir_acl
--
--/*
-- * File system states
-- */
--#define EXT2_VALID_FS			0x0001	/* Unmounted cleanly */
--#define EXT2_ERROR_FS			0x0002	/* Errors detected */
--
--/*
-- * Mount flags
-- */
--#define EXT2_MOUNT_CHECK		0x0001	/* Do mount-time checks */
--#define EXT2_MOUNT_GRPID		0x0004	/* Create files with directory's group */
--#define EXT2_MOUNT_DEBUG		0x0008	/* Some debugging messages */
--#define EXT2_MOUNT_ERRORS_CONT		0x0010	/* Continue on errors */
--#define EXT2_MOUNT_ERRORS_RO		0x0020	/* Remount fs ro on errors */
--#define EXT2_MOUNT_ERRORS_PANIC		0x0040	/* Panic on errors */
--#define EXT2_MOUNT_MINIX_DF		0x0080	/* Mimics the Minix statfs */
--#define EXT2_MOUNT_NO_UID32		0x0200  /* Disable 32-bit UIDs */
--
--#define clear_opt(o, opt)		o &= ~EXT2_MOUNT_##opt
--#define set_opt(o, opt)			o |= EXT2_MOUNT_##opt
--#define test_opt(sb, opt)		(EXT2_SB(sb)->s_mount_opt & \
--					 EXT2_MOUNT_##opt)
--/*
-- * Maximal mount counts between two filesystem checks
-- */
--#define EXT2_DFL_MAX_MNT_COUNT		20	/* Allow 20 mounts */
--#define EXT2_DFL_CHECKINTERVAL		0	/* Don't use interval check */
--
--/*
-- * Behaviour when detecting errors
-- */
--#define EXT2_ERRORS_CONTINUE		1	/* Continue execution */
--#define EXT2_ERRORS_RO			2	/* Remount fs read-only */
--#define EXT2_ERRORS_PANIC		3	/* Panic */
--#define EXT2_ERRORS_DEFAULT		EXT2_ERRORS_CONTINUE
--
--/*
-- * Structure of the super block
-- */
--struct ext2_super_block {
--	uint32_t	s_inodes_count;		/* Inodes count */
--	uint32_t	s_blocks_count;		/* Blocks count */
--	uint32_t	s_r_blocks_count;	/* Reserved blocks count */
--	uint32_t	s_free_blocks_count;	/* Free blocks count */
--	uint32_t	s_free_inodes_count;	/* Free inodes count */
--	uint32_t	s_first_data_block;	/* First Data Block */
--	uint32_t	s_log_block_size;	/* Block size */
--	int32_t		s_log_frag_size;	/* Fragment size */
--	uint32_t	s_blocks_per_group;	/* # Blocks per group */
--	uint32_t	s_frags_per_group;	/* # Fragments per group */
--	uint32_t	s_inodes_per_group;	/* # Inodes per group */
--	uint32_t	s_mtime;		/* Mount time */
--	uint32_t	s_wtime;		/* Write time */
--	uint16_t	s_mnt_count;		/* Mount count */
--	int16_t		s_max_mnt_count;	/* Maximal mount count */
--	uint16_t	s_magic;		/* Magic signature */
--	uint16_t	s_state;		/* File system state */
--	uint16_t	s_errors;		/* Behaviour when detecting errors */
--	uint16_t	s_minor_rev_level;	/* minor revision level */
--	uint32_t	s_lastcheck;		/* time of last check */
--	uint32_t	s_checkinterval;	/* max. time between checks */
--	uint32_t	s_creator_os;		/* OS */
--	uint32_t	s_rev_level;		/* Revision level */
--	uint16_t	s_def_resuid;		/* Default uid for reserved blocks */
--	uint16_t	s_def_resgid;		/* Default gid for reserved blocks */
--	/*
--	 * These fields are for EXT2_DYNAMIC_REV superblocks only.
--	 *
--	 * Note: the difference between the compatible feature set and
--	 * the incompatible feature set is that if there is a bit set
--	 * in the incompatible feature set that the kernel doesn't
--	 * know about, it should refuse to mount the filesystem.
--	 *
--	 * e2fsck's requirements are more strict; if it doesn't know
--	 * about a feature in either the compatible or incompatible
--	 * feature set, it must abort and not try to meddle with
--	 * things it doesn't understand...
--	 */
--	uint32_t	s_first_ino;		/* First non-reserved inode */
--	uint16_t	s_inode_size;		/* size of inode structure */
--	uint16_t	s_block_group_nr;	/* block group # of this superblock */
--	uint32_t	s_feature_compat;	/* compatible feature set */
--	uint32_t	s_feature_incompat;	/* incompatible feature set */
--	uint32_t	s_feature_ro_compat;	/* readonly-compatible feature set */
--	uint8_t		s_uuid[16];		/* 128-bit uuid for volume */
--	char		s_volume_name[16];	/* volume name */
--	char		s_last_mounted[64];	/* directory where last mounted */
--	uint32_t	s_algorithm_usage_bitmap; /* For compression */
--	/*
--	 * Performance hints.  Directory preallocation should only
--	 * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on.
--	 */
--	uint8_t	s_prealloc_blocks;	/* Nr of blocks to try to preallocate*/
--	uint8_t	s_prealloc_dir_blocks;	/* Nr to preallocate for dirs */
--	uint16_t	s_reserved_gdt_blocks;	/* Per group table for online growth */
--	/*
--	 * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set.
--	 */
--	uint8_t		s_journal_uuid[16];	/* uuid of journal superblock */
--	uint32_t	s_journal_inum;		/* inode number of journal file */
--	uint32_t	s_journal_dev;		/* device number of journal file */
--	uint32_t	s_last_orphan;		/* start of list of inodes to delete */
--	uint32_t	s_hash_seed[4];		/* HTREE hash seed */
--	uint8_t		s_def_hash_version;	/* Default hash version to use */
--	uint8_t		s_jnl_backup_type;	/* Default type of journal backup */
--	uint16_t	s_reserved_word_pad;
--	uint32_t	s_default_mount_opts;
--	uint32_t	s_first_meta_bg;	/* First metablock group */
--	uint32_t	s_mkfs_time;		/* When the filesystem was created */
--	uint32_t	s_jnl_blocks[17];	/* Backup of the journal inode */
--	uint32_t	s_reserved[172];	/* Padding to the end of the block */
--};
--
--/*
-- * Codes for operating systems
-- */
--#define EXT2_OS_LINUX		0
--#define EXT2_OS_HURD		1
--#define EXT2_OS_MASIX		2
--#define EXT2_OS_FREEBSD		3
--#define EXT2_OS_LITES		4
--
--/*
-- * Revision levels
-- */
--#define EXT2_GOOD_OLD_REV	0	/* The good old (original) format */
--#define EXT2_DYNAMIC_REV	1	/* V2 format w/ dynamic inode sizes */
--
--#define EXT2_CURRENT_REV	EXT2_GOOD_OLD_REV
--#define EXT2_MAX_SUPP_REV	EXT2_DYNAMIC_REV
--
--#define EXT2_GOOD_OLD_INODE_SIZE 128
--
--/*
-- * Journal inode backup types
-- */
--#define EXT3_JNL_BACKUP_BLOCKS	1
--
--/*
-- * Feature set definitions
-- */
--
--#define EXT2_HAS_COMPAT_FEATURE(sb,mask)			\
--	( EXT2_SB(sb)->s_feature_compat & (mask) )
--#define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask)			\
--	( EXT2_SB(sb)->s_feature_ro_compat & (mask) )
--#define EXT2_HAS_INCOMPAT_FEATURE(sb,mask)			\
--	( EXT2_SB(sb)->s_feature_incompat & (mask) )
--
--#define EXT2_FEATURE_COMPAT_DIR_PREALLOC	0x0001
--#define EXT2_FEATURE_COMPAT_IMAGIC_INODES	0x0002
--#define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
--#define EXT2_FEATURE_COMPAT_EXT_ATTR		0x0008
--#define EXT2_FEATURE_COMPAT_RESIZE_INODE	0x0010
--#define EXT2_FEATURE_COMPAT_DIR_INDEX		0x0020
--
--#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
--#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE	0x0002
--/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR	0x0004 not used */
--
--#define EXT2_FEATURE_INCOMPAT_COMPRESSION	0x0001
--#define EXT2_FEATURE_INCOMPAT_FILETYPE		0x0002
--#define EXT3_FEATURE_INCOMPAT_RECOVER		0x0004 /* Needs recovery */
--#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV	0x0008 /* Journal device */
--#define EXT2_FEATURE_INCOMPAT_META_BG		0x0010
--#define EXT3_FEATURE_INCOMPAT_EXTENTS		0x0040
--
--
--#define EXT2_FEATURE_COMPAT_SUPP	0
--#define EXT2_FEATURE_INCOMPAT_SUPP	(EXT2_FEATURE_INCOMPAT_FILETYPE)
--#define EXT2_FEATURE_RO_COMPAT_SUPP	(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
--					 EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
--					 EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
--
--/*
-- * Default values for user and/or group using reserved blocks
-- */
--#define EXT2_DEF_RESUID		0
--#define EXT2_DEF_RESGID		0
--
--/*
-- * Default mount options
-- */
--#define EXT2_DEFM_DEBUG		0x0001
--#define EXT2_DEFM_BSDGROUPS	0x0002
--#define EXT2_DEFM_XATTR_USER	0x0004
--#define EXT2_DEFM_ACL		0x0008
--#define EXT2_DEFM_UID16		0x0010
--#define EXT3_DEFM_JMODE		0x0060
--#define EXT3_DEFM_JMODE_DATA	0x0020
--#define EXT3_DEFM_JMODE_ORDERED	0x0040
--#define EXT3_DEFM_JMODE_WBACK	0x0060
--
--/*
-- * Structure of a directory entry
-- */
--#define EXT2_NAME_LEN 255
--
--struct ext2_dir_entry {
--	uint32_t	inode;			/* Inode number */
--	uint16_t	rec_len;		/* Directory entry length */
--	uint16_t	name_len;		/* Name length */
--	char		name[EXT2_NAME_LEN];	/* File name */
--};
--
--/*
-- * The new version of the directory entry.  Since EXT2 structures are
-- * stored in intel byte order, and the name_len field could never be
-- * bigger than 255 chars, it's safe to reclaim the extra byte for the
-- * file_type field.
-- */
--struct ext2_dir_entry_2 {
--	uint32_t	inode;			/* Inode number */
--	uint16_t	rec_len;		/* Directory entry length */
--	uint8_t		name_len;		/* Name length */
--	uint8_t		file_type;
--	char		name[EXT2_NAME_LEN];	/* File name */
--};
--
--/*
-- * Ext2 directory file types.  Only the low 3 bits are used.  The
-- * other bits are reserved for now.
-- */
--#define EXT2_FT_UNKNOWN		0
--#define EXT2_FT_REG_FILE	1
--#define EXT2_FT_DIR		2
--#define EXT2_FT_CHRDEV		3
--#define EXT2_FT_BLKDEV		4
--#define EXT2_FT_FIFO		5
--#define EXT2_FT_SOCK		6
--#define EXT2_FT_SYMLINK		7
--
--#define EXT2_FT_MAX		8
--
--/*
-- * EXT2_DIR_PAD defines the directory entries boundaries
-- *
-- * NOTE: It must be a multiple of 4
-- */
--#define EXT2_DIR_PAD			4
--#define EXT2_DIR_ROUND			(EXT2_DIR_PAD - 1)
--#define EXT2_DIR_REC_LEN(name_len)	(((name_len) + 8 + EXT2_DIR_ROUND) & \
--					 ~EXT2_DIR_ROUND)
--
--#endif
---- a/e2fsprogs/e2fs_lib.h
-+++ b/e2fsprogs/e2fs_lib.h
-@@ -7,7 +7,7 @@
-  */
- 
- /* Constants and structures */
--#include "e2fs_defs.h"
-+#include "bb_e2fs_defs.h"
- 
- PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
- 
---- a/e2fsprogs/old_e2fsprogs/e2fsck.c
-+++ b/e2fsprogs/old_e2fsprogs/e2fsck.c
-@@ -11577,7 +11577,7 @@ static void check_resize_inode(e2fsck_t
- 	 * s_reserved_gdt_blocks must be zero.
- 	 */
- 	if (!(fs->super->s_feature_compat &
--	      EXT2_FEATURE_COMPAT_RESIZE_INODE)) {
-+	      EXT2_FEATURE_COMPAT_RESIZE_INO)) {
- 		if (fs->super->s_reserved_gdt_blocks) {
- 			pctx.num = fs->super->s_reserved_gdt_blocks;
- 			if (fix_problem(ctx, PR_0_NONZERO_RESERVED_GDT_BLOCKS,
-@@ -11593,7 +11593,7 @@ static void check_resize_inode(e2fsck_t
- 	retval = ext2fs_read_inode(fs, EXT2_RESIZE_INO, &inode);
- 	if (retval) {
- 		if (fs->super->s_feature_compat &
--		    EXT2_FEATURE_COMPAT_RESIZE_INODE)
-+		    EXT2_FEATURE_COMPAT_RESIZE_INO)
- 			ctx->flags |= E2F_FLAG_RESIZE_INODE;
- 		return;
- 	}
-@@ -11603,7 +11603,7 @@ static void check_resize_inode(e2fsck_t
- 	 * the resize inode is cleared; then we're done.
- 	 */
- 	if (!(fs->super->s_feature_compat &
--	      EXT2_FEATURE_COMPAT_RESIZE_INODE)) {
-+	      EXT2_FEATURE_COMPAT_RESIZE_INO)) {
- 		for (i=0; i < EXT2_N_BLOCKS; i++) {
- 			if (inode.i_block[i])
- 				break;
---- a/e2fsprogs/old_e2fsprogs/e2p/feature.c
-+++ b/e2fsprogs/old_e2fsprogs/e2p/feature.c
-@@ -34,7 +34,7 @@ static const struct feature feature_list
- 			"ext_attr" },
- 	{	E2P_FEATURE_COMPAT, EXT2_FEATURE_COMPAT_DIR_INDEX,
- 			"dir_index" },
--	{	E2P_FEATURE_COMPAT, EXT2_FEATURE_COMPAT_RESIZE_INODE,
-+	{	E2P_FEATURE_COMPAT, EXT2_FEATURE_COMPAT_RESIZE_INO,
- 			"resize_inode" },
- 	{	E2P_FEATURE_RO_INCOMPAT, EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER,
- 			"sparse_super" },
---- a/e2fsprogs/old_e2fsprogs/ext2fs/ext2_fs.h
-+++ b/e2fsprogs/old_e2fsprogs/ext2fs/ext2_fs.h
-@@ -475,7 +475,7 @@ struct ext2_super_block {
- #define EXT2_FEATURE_COMPAT_IMAGIC_INODES	0x0002
- #define EXT3_FEATURE_COMPAT_HAS_JOURNAL		0x0004
- #define EXT2_FEATURE_COMPAT_EXT_ATTR		0x0008
--#define EXT2_FEATURE_COMPAT_RESIZE_INODE	0x0010
-+#define EXT2_FEATURE_COMPAT_RESIZE_INO		0x0010
- #define EXT2_FEATURE_COMPAT_DIR_INDEX		0x0020
- 
- #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER	0x0001
---- a/e2fsprogs/old_e2fsprogs/ext2fs/ext2fs.h
-+++ b/e2fsprogs/old_e2fsprogs/ext2fs/ext2fs.h
-@@ -383,7 +383,7 @@ typedef struct ext2_icount *ext2_icount_
- #define EXT2_LIB_FEATURE_COMPAT_SUPP	(EXT2_FEATURE_COMPAT_DIR_PREALLOC|\
- 					 EXT2_FEATURE_COMPAT_IMAGIC_INODES|\
- 					 EXT3_FEATURE_COMPAT_HAS_JOURNAL|\
--					 EXT2_FEATURE_COMPAT_RESIZE_INODE|\
-+					 EXT2_FEATURE_COMPAT_RESIZE_INO|\
- 					 EXT2_FEATURE_COMPAT_DIR_INDEX|\
- 					 EXT2_FEATURE_COMPAT_EXT_ATTR)
- 
---- a/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c
-+++ b/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c
-@@ -284,7 +284,7 @@ retry:
- 	/*
- 	 * check the number of reserved group descriptor table blocks
- 	 */
--	if (super->s_feature_compat & EXT2_FEATURE_COMPAT_RESIZE_INODE)
-+	if (super->s_feature_compat & EXT2_FEATURE_COMPAT_RESIZE_INO)
- 		rsv_gdt = calc_reserved_gdt_blocks(fs);
- 	else
- 		rsv_gdt = 0;
---- a/e2fsprogs/old_e2fsprogs/mke2fs.c
-+++ b/e2fsprogs/old_e2fsprogs/mke2fs.c
-@@ -757,7 +757,7 @@ static void parse_extended_opts(struct e
- 
- 			if (rsv_gdb > 0) {
- 				sb_param->s_feature_compat |=
--					EXT2_FEATURE_COMPAT_RESIZE_INODE;
-+					EXT2_FEATURE_COMPAT_RESIZE_INO;
- 
- 				sb_param->s_reserved_gdt_blocks = rsv_gdb;
- 			}
-@@ -778,7 +778,7 @@ static void parse_extended_opts(struct e
- 
- static __u32 ok_features[3] = {
- 	EXT3_FEATURE_COMPAT_HAS_JOURNAL |
--		EXT2_FEATURE_COMPAT_RESIZE_INODE |
-+		EXT2_FEATURE_COMPAT_RESIZE_INO |
- 		EXT2_FEATURE_COMPAT_DIR_INDEX,  /* Compat */
- 	EXT2_FEATURE_INCOMPAT_FILETYPE|         /* Incompat */
- 		EXT3_FEATURE_INCOMPAT_JOURNAL_DEV|
-@@ -1123,7 +1123,7 @@ static int PRS(int argc, char **argv)
- 	/* Since sparse_super is the default, we would only have a problem
- 	 * here if it was explicitly disabled.
- 	 */
--	if ((param.s_feature_compat & EXT2_FEATURE_COMPAT_RESIZE_INODE) &&
-+	if ((param.s_feature_compat & EXT2_FEATURE_COMPAT_RESIZE_INO) &&
- 	    !(param.s_feature_ro_compat&EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER)) {
- 		bb_error_msg_and_die("reserved online resize blocks not supported "
- 			  "on non-sparse filesystem");
-@@ -1312,7 +1312,7 @@ int mke2fs_main (int argc, char **argv)
- 		reserve_inodes(fs);
- 		create_bad_block_inode(fs, bb_list);
- 		if (fs->super->s_feature_compat &
--		    EXT2_FEATURE_COMPAT_RESIZE_INODE) {
-+		    EXT2_FEATURE_COMPAT_RESIZE_INO) {
- 			retval = ext2fs_create_resize_inode(fs);
- 			mke2fs_error_msg_and_die(retval, "reserve blocks for online resize");
- 		}
---- a/e2fsprogs/tune2fs.c
-+++ b/e2fsprogs/tune2fs.c
-@@ -8,7 +8,7 @@
-  */
- #include "libbb.h"
- #include <linux/fs.h>
--#include <linux/ext2_fs.h>
-+#include "bb_e2fs_defs.h"
- 
- // storage helpers
- char BUG_wrong_field_size(void);
---- /dev/null
-+++ b/include/bb_e2fs_defs.h
-@@ -0,0 +1,602 @@
-+/* vi: set sw=4 ts=4: */
-+/*
-+ *  linux/include/linux/ext2_fs.h
-+ *
-+ * Copyright (C) 1992, 1993, 1994, 1995
-+ * Remy Card (card@masi.ibp.fr)
-+ * Laboratoire MASI - Institut Blaise Pascal
-+ * Universite Pierre et Marie Curie (Paris VI)
-+ *
-+ * Copyright (C) 1991, 1992  Linus Torvalds
-+ */
-+
-+#ifndef LINUX_EXT2_FS_H
-+#define LINUX_EXT2_FS_H 1
-+
-+/*
-+ * Special inode numbers
-+ */
-+#define EXT2_BAD_INO		 1	/* Bad blocks inode */
-+#define EXT2_ROOT_INO		 2	/* Root inode */
-+#define EXT2_ACL_IDX_INO	 3	/* ACL inode */
-+#define EXT2_ACL_DATA_INO	 4	/* ACL inode */
-+#define EXT2_BOOT_LOADER_INO	 5	/* Boot loader inode */
-+#define EXT2_UNDEL_DIR_INO	 6	/* Undelete directory inode */
-+#define EXT2_RESIZE_INO		 7	/* Reserved group descriptors inode */
-+#define EXT2_JOURNAL_INO	 8	/* Journal inode */
-+
-+/* First non-reserved inode for old ext2 filesystems */
-+#define EXT2_GOOD_OLD_FIRST_INO	11
-+
-+/*
-+ * The second extended file system magic number
-+ */
-+#define EXT2_SUPER_MAGIC	0xEF53
-+
-+/* Assume that user mode programs are passing in an ext2fs superblock, not
-+ * a kernel struct super_block.  This will allow us to call the feature-test
-+ * macros from user land. */
-+#define EXT2_SB(sb)	(sb)
-+
-+/*
-+ * Maximal count of links to a file
-+ */
-+#define EXT2_LINK_MAX		32000
-+
-+/*
-+ * Macro-instructions used to manage several block sizes
-+ */
-+#define EXT2_MIN_BLOCK_LOG_SIZE		10	/* 1024 */
-+#define EXT2_MAX_BLOCK_LOG_SIZE		16	/* 65536 */
-+#define EXT2_MIN_BLOCK_SIZE	(1 << EXT2_MIN_BLOCK_LOG_SIZE)
-+#define EXT2_MAX_BLOCK_SIZE	(1 << EXT2_MAX_BLOCK_LOG_SIZE)
-+#define EXT2_BLOCK_SIZE(s)	(EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size)
-+#define EXT2_BLOCK_SIZE_BITS(s)	((s)->s_log_block_size + 10)
-+#define EXT2_INODE_SIZE(s)	(((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
-+				 EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size)
-+#define EXT2_FIRST_INO(s)	(((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \
-+				 EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino)
-+#define EXT2_ADDR_PER_BLOCK(s)	(EXT2_BLOCK_SIZE(s) / sizeof(uint32_t))
-+
-+/*
-+ * Macro-instructions used to manage fragments
-+ */
-+#define EXT2_MIN_FRAG_SIZE		EXT2_MIN_BLOCK_SIZE
-+#define EXT2_MAX_FRAG_SIZE		EXT2_MAX_BLOCK_SIZE
-+#define EXT2_MIN_FRAG_LOG_SIZE		EXT2_MIN_BLOCK_LOG_SIZE
-+#define EXT2_FRAG_SIZE(s)		(EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size)
-+#define EXT2_FRAGS_PER_BLOCK(s)		(EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s))
-+
-+/*
-+ * ACL structures
-+ */
-+struct ext2_acl_header {	/* Header of Access Control Lists */
-+	uint32_t	aclh_size;
-+	uint32_t	aclh_file_count;
-+	uint32_t	aclh_acle_count;
-+	uint32_t	aclh_first_acle;
-+};
-+
-+struct ext2_acl_entry {	/* Access Control List Entry */
-+	uint32_t	acle_size;
-+	uint16_t	acle_perms;	/* Access permissions */
-+	uint16_t	acle_type;	/* Type of entry */
-+	uint16_t	acle_tag;	/* User or group identity */
-+	uint16_t	acle_pad1;
-+	uint32_t	acle_next;	/* Pointer on next entry for the */
-+					/* same inode or on next free entry */
-+};
-+
-+/*
-+ * Structure of a blocks group descriptor
-+ */
-+struct ext2_group_desc {
-+	uint32_t	bg_block_bitmap;	/* Blocks bitmap block */
-+	uint32_t	bg_inode_bitmap;	/* Inodes bitmap block */
-+	uint32_t	bg_inode_table;		/* Inodes table block */
-+	uint16_t	bg_free_blocks_count;	/* Free blocks count */
-+	uint16_t	bg_free_inodes_count;	/* Free inodes count */
-+	uint16_t	bg_used_dirs_count;	/* Directories count */
-+	uint16_t	bg_pad;
-+	uint32_t	bg_reserved[3];
-+};
-+
-+/*
-+ * Data structures used by the directory indexing feature
-+ *
-+ * Note: all of the multibyte integer fields are little endian.
-+ */
-+
-+/*
-+ * Note: dx_root_info is laid out so that if it should somehow get
-+ * overlaid by a dirent the two low bits of the hash version will be
-+ * zero.  Therefore, the hash version mod 4 should never be 0.
-+ * Sincerely, the paranoia department.
-+ */
-+struct ext2_dx_root_info {
-+	uint32_t	reserved_zero;
-+	uint8_t		hash_version; /* 0 now, 1 at release */
-+	uint8_t		info_length; /* 8 */
-+	uint8_t		indirect_levels;
-+	uint8_t		unused_flags;
-+};
-+
-+#define EXT2_HASH_LEGACY	0
-+#define EXT2_HASH_HALF_MD4	1
-+#define EXT2_HASH_TEA		2
-+
-+#define EXT2_HASH_FLAG_INCOMPAT	0x1
-+
-+struct ext2_dx_entry {
-+	uint32_t hash;
-+	uint32_t block;
-+};
-+
-+struct ext2_dx_countlimit {
-+	uint16_t limit;
-+	uint16_t count;
-+};
-+
-+
-+/*
-+ * Macro-instructions used to manage group descriptors
-+ */
-+#define EXT2_BLOCKS_PER_GROUP(s)	(EXT2_SB(s)->s_blocks_per_group)
-+#define EXT2_INODES_PER_GROUP(s)	(EXT2_SB(s)->s_inodes_per_group)
-+#define EXT2_INODES_PER_BLOCK(s)	(EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s))
-+/* limits imposed by 16-bit value gd_free_{blocks,inode}_count */
-+#define EXT2_MAX_BLOCKS_PER_GROUP(s)	((1 << 16) - 8)
-+#define EXT2_MAX_INODES_PER_GROUP(s)	((1 << 16) - EXT2_INODES_PER_BLOCK(s))
-+#define EXT2_DESC_PER_BLOCK(s)		(EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
-+
-+/*
-+ * Constants relative to the data blocks
-+ */
-+#define EXT2_NDIR_BLOCKS		12
-+#define EXT2_IND_BLOCK			EXT2_NDIR_BLOCKS
-+#define EXT2_DIND_BLOCK			(EXT2_IND_BLOCK + 1)
-+#define EXT2_TIND_BLOCK			(EXT2_DIND_BLOCK + 1)
-+#define EXT2_N_BLOCKS			(EXT2_TIND_BLOCK + 1)
-+
-+/*
-+ * Inode flags
-+ */
-+#define EXT2_SECRM_FL			0x00000001 /* Secure deletion */
-+#define EXT2_UNRM_FL			0x00000002 /* Undelete */
-+#define EXT2_COMPR_FL			0x00000004 /* Compress file */
-+#define EXT2_SYNC_FL			0x00000008 /* Synchronous updates */
-+#define EXT2_IMMUTABLE_FL		0x00000010 /* Immutable file */
-+#define EXT2_APPEND_FL			0x00000020 /* writes to file may only append */
-+#define EXT2_NODUMP_FL			0x00000040 /* do not dump file */
-+#define EXT2_NOATIME_FL			0x00000080 /* do not update atime */
-+/* Reserved for compression usage... */
-+#define EXT2_DIRTY_FL			0x00000100
-+#define EXT2_COMPRBLK_FL		0x00000200 /* One or more compressed clusters */
-+#define EXT2_NOCOMPR_FL			0x00000400 /* Access raw compressed data */
-+#define EXT2_ECOMPR_FL			0x00000800 /* Compression error */
-+/* End compression flags --- maybe not all used */
-+#define EXT2_BTREE_FL			0x00001000 /* btree format dir */
-+#define EXT2_INDEX_FL			0x00001000 /* hash-indexed directory */
-+#define EXT2_IMAGIC_FL			0x00002000
-+#define EXT3_JOURNAL_DATA_FL		0x00004000 /* file data should be journaled */
-+#define EXT2_NOTAIL_FL			0x00008000 /* file tail should not be merged */
-+#define EXT2_DIRSYNC_FL			0x00010000 /* Synchronous directory modifications */
-+#define EXT2_TOPDIR_FL			0x00020000 /* Top of directory hierarchies*/
-+#define EXT3_EXTENTS_FL			0x00080000 /* Inode uses extents */
-+#define EXT2_RESERVED_FL		0x80000000 /* reserved for ext2 lib */
-+
-+#define EXT2_FL_USER_VISIBLE		0x0003DFFF /* User visible flags */
-+#define EXT2_FL_USER_MODIFIABLE		0x000080FF /* User modifiable flags */
-+
-+/*
-+ * ioctl commands
-+ */
-+#define EXT2_IOC_GETFLAGS		_IOR('f', 1, long)
-+#define EXT2_IOC_SETFLAGS		_IOW('f', 2, long)
-+#define EXT2_IOC_GETVERSION		_IOR('v', 1, long)
-+#define EXT2_IOC_SETVERSION		_IOW('v', 2, long)
-+
-+/*
-+ * Structure of an inode on the disk
-+ */
-+struct ext2_inode {
-+	uint16_t	i_mode;		/* File mode */
-+	uint16_t	i_uid;		/* Low 16 bits of Owner Uid */
-+	uint32_t	i_size;		/* Size in bytes */
-+	uint32_t	i_atime;	/* Access time */
-+	uint32_t	i_ctime;	/* Creation time */
-+	uint32_t	i_mtime;	/* Modification time */
-+	uint32_t	i_dtime;	/* Deletion Time */
-+	uint16_t	i_gid;		/* Low 16 bits of Group Id */
-+	uint16_t	i_links_count;	/* Links count */
-+	uint32_t	i_blocks;	/* Blocks count */
-+	uint32_t	i_flags;	/* File flags */
-+	union {
-+		struct {
-+			uint32_t  l_i_reserved1;
-+		} linux1;
-+		struct {
-+			uint32_t  h_i_translator;
-+		} hurd1;
-+		struct {
-+			uint32_t  m_i_reserved1;
-+		} masix1;
-+	} osd1;				/* OS dependent 1 */
-+	uint32_t	i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
-+	uint32_t	i_generation;	/* File version (for NFS) */
-+	uint32_t	i_file_acl;	/* File ACL */
-+	uint32_t	i_dir_acl;	/* Directory ACL */
-+	uint32_t	i_faddr;	/* Fragment address *