aboutsummaryrefslogtreecommitdiffstats
path: root/package/utils/busybox
diff options
context:
space:
mode:
Diffstat (limited to 'package/utils/busybox')
-rw-r--r--package/utils/busybox/Config.in6
-rw-r--r--package/utils/busybox/Makefile117
-rw-r--r--package/utils/busybox/config/Config.in778
-rw-r--r--package/utils/busybox/config/archival/Config.in380
-rw-r--r--package/utils/busybox/config/console-tools/Config.in177
-rw-r--r--package/utils/busybox/config/coreutils/Config.in913
-rw-r--r--package/utils/busybox/config/debianutils/Config.in86
-rw-r--r--package/utils/busybox/config/e2fsprogs/Config.in72
-rw-r--r--package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in70
-rw-r--r--package/utils/busybox/config/editors/Config.in206
-rw-r--r--package/utils/busybox/config/findutils/Config.in252
-rw-r--r--package/utils/busybox/config/init/Config.in185
-rw-r--r--package/utils/busybox/config/libbb/Config.in232
-rw-r--r--package/utils/busybox/config/loginutils/Config.in329
-rw-r--r--package/utils/busybox/config/mailutils/Config.in56
-rw-r--r--package/utils/busybox/config/miscutils/Config.in766
-rw-r--r--package/utils/busybox/config/modutils/Config.in269
-rw-r--r--package/utils/busybox/config/networking/Config.in1088
-rw-r--r--package/utils/busybox/config/networking/udhcp/Config.in155
-rw-r--r--package/utils/busybox/config/printutils/Config.in29
-rw-r--r--package/utils/busybox/config/procps/Config.in260
-rw-r--r--package/utils/busybox/config/runit/Config.in90
-rw-r--r--package/utils/busybox/config/selinux/Config.in125
-rw-r--r--package/utils/busybox/config/shell/Config.in433
-rw-r--r--package/utils/busybox/config/sysklogd/Config.in154
-rw-r--r--package/utils/busybox/config/util-linux/Config.in985
-rwxr-xr-xpackage/utils/busybox/convert_menuconfig.pl78
-rwxr-xr-xpackage/utils/busybox/files/cron18
-rwxr-xr-xpackage/utils/busybox/files/telnet37
-rw-r--r--package/utils/busybox/patches/001-init_avoid_loop_opening_tty.patch15
-rw-r--r--package/utils/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch20
-rw-r--r--package/utils/busybox/patches/003-brctl_show_fix.patch37
-rw-r--r--package/utils/busybox/patches/004-upstream-percent_decode_in_place.patch237
-rw-r--r--package/utils/busybox/patches/005-resource_h_include.patch10
-rw-r--r--package/utils/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch164
-rw-r--r--package/utils/busybox/patches/007-upstream_mkfs_ext2_fixes.patch1441
-rw-r--r--package/utils/busybox/patches/110-wget_getopt_fix.patch11
-rw-r--r--package/utils/busybox/patches/140-trylink_bash.patch8
-rw-r--r--package/utils/busybox/patches/141-gen_build_files_bash.patch8
-rw-r--r--package/utils/busybox/patches/150-no_static_libgcc.patch11
-rw-r--r--package/utils/busybox/patches/200-etc_crontabs.patch22
-rw-r--r--package/utils/busybox/patches/240-udhcpc_retries.patch20
-rw-r--r--package/utils/busybox/patches/241-udhcpc-oversized_packets.patch99
-rw-r--r--package/utils/busybox/patches/242-udhcpc_msgs.patch18
-rw-r--r--package/utils/busybox/patches/243-udhcpc_changed_ifindex.patch15
-rw-r--r--package/utils/busybox/patches/244-udhcpc_add_6rd_option.patch143
-rw-r--r--package/utils/busybox/patches/250-ash_export-n.patch34
-rw-r--r--package/utils/busybox/patches/251-ash_fix-redir-substitution.patch12
-rw-r--r--package/utils/busybox/patches/260-vconfig_proc.patch22
-rw-r--r--package/utils/busybox/patches/300-netmsg.patch103
-rw-r--r--package/utils/busybox/patches/310-passwd_access.patch41
-rw-r--r--package/utils/busybox/patches/340-lock_util.patch172
-rw-r--r--package/utils/busybox/patches/350-httpd_redir.patch90
-rw-r--r--package/utils/busybox/patches/410-httpd_cgi_headers.patch16
-rw-r--r--package/utils/busybox/patches/440-httpd_chdir.patch10
-rw-r--r--package/utils/busybox/patches/470-insmod_search.patch137
-rw-r--r--package/utils/busybox/patches/490-mount_disable_check.patch12
-rw-r--r--package/utils/busybox/patches/510-awk_include.patch217
-rw-r--r--package/utils/busybox/patches/524-udhcpc_renew.patch10
-rw-r--r--package/utils/busybox/patches/610-ntpd_delayed_resolve.patch48
-rw-r--r--package/utils/busybox/patches/611-upstream_ntpd_version_fix.patch29
-rw-r--r--package/utils/busybox/patches/700-hexdump_segfault_fix.patch11
-rw-r--r--package/utils/busybox/patches/802-brctl_linux24.patch74
-rw-r--r--package/utils/busybox/patches/902-telnetd_intr.patch10
-rw-r--r--package/utils/busybox/patches/910-insmod-q-flag.patch33
-rw-r--r--package/utils/busybox/patches/911-date-k-flag.patch87
-rw-r--r--package/utils/busybox/patches/920-portability.patch13
-rw-r--r--package/utils/busybox/patches/950-partial-checksum.patch86
-rw-r--r--package/utils/busybox/patches/998-arping_missing_includes.patch11
-rw-r--r--package/utils/busybox/patches/999-musl-fixes.patch16
70 files changed, 11919 insertions, 0 deletions
diff --git a/package/utils/busybox/Config.in b/package/utils/busybox/Config.in
new file mode 100644
index 0000000000..5e3a8406be
--- /dev/null
+++ b/package/utils/busybox/Config.in
@@ -0,0 +1,6 @@
+
+if PACKAGE_busybox
+
+source "package/utils/busybox/config/Config.in"
+
+endif
diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
new file mode 100644
index 0000000000..aed6ddea6b
--- /dev/null
+++ b/package/utils/busybox/Makefile
@@ -0,0 +1,117 @@
+#
+# 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))
diff --git a/package/utils/busybox/config/Config.in b/package/utils/busybox/config/Config.in
new file mode 100644
index 0000000000..f9521de320
--- /dev/null
+++ b/package/utils/busybox/config/Config.in
@@ -0,0 +1,778 @@
+#
+# 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/utils/busybox/config/libbb/Config.in
+
+endmenu
+
+comment "Applets"
+
+source package/utils/busybox/config/archival/Config.in
+source package/utils/busybox/config/coreutils/Config.in
+source package/utils/busybox/config/console-tools/Config.in
+source package/utils/busybox/config/debianutils/Config.in
+source package/utils/busybox/config/editors/Config.in
+source package/utils/busybox/config/findutils/Config.in
+source package/utils/busybox/config/init/Config.in
+source package/utils/busybox/config/loginutils/Config.in
+source package/utils/busybox/config/e2fsprogs/Config.in
+source package/utils/busybox/config/modutils/Config.in
+source package/utils/busybox/config/util-linux/Config.in
+source package/utils/busybox/config/miscutils/Config.in
+source package/utils/busybox/config/networking/Config.in
+source package/utils/busybox/config/printutils/Config.in
+source package/utils/busybox/config/mailutils/Config.in
+source package/utils/busybox/config/procps/Config.in
+source package/utils/busybox/config/runit/Config.in
+source package/utils/busybox/config/selinux/Config.in
+source package/utils/busybox/config/shell/Config.in
+source package/utils/busybox/config/sysklogd/Config.in
diff --git a/package/utils/busybox/config/archival/Config.in b/package/utils/busybox/config/archival/Config.in
new file mode 100644
index 0000000000..d2bfa4848b
--- /dev/null
+++ b/package/utils/busybox/config/archival/Config.in
@@ -0,0 +1,380 @@
+# 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
diff --git a/package/utils/busybox/config/console-tools/Config.in b/package/utils/busybox/config/console-tools/Config.in
new file mode 100644
index 0000000000..9069b0f1a1
--- /dev/null
+++ b/package/utils/busybox/config/console-tools/Config.in
@@ -0,0 +1,177 @@
+# 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
diff --git a/package/utils/busybox/config/coreutils/Config.in b/package/utils/busybox/config/coreutils/Config.in
new file mode 100644
index 0000000000..33a5e25e62
--- /dev/null
+++ b/package/utils/busybox/config/coreutils/Config.in
@@ -0,0 +1,913 @@
+# 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
diff --git a/package/utils/busybox/config/debianutils/Config.in b/package/utils/busybox/config/debianutils/Config.in
new file mode 100644
index 0000000000..be69666fff
--- /dev/null
+++ b/package/utils/busybox/config/debianutils/Config.in
@@ -0,0 +1,86 @@
+# 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
diff --git a/package/utils/busybox/config/e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/Config.in
new file mode 100644
index 0000000000..282681db0c
--- /dev/null
+++ b/package/utils/busybox/config/e2fsprogs/Config.in
@@ -0,0 +1,72 @@
+# 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
diff --git a/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
new file mode 100644
index 0000000000..105c93a562
--- /dev/null
+++ b/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
@@ -0,0 +1,70 @@
+# 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
diff --git a/package/utils/busybox/config/editors/Config.in b/package/utils/busybox/config/editors/Config.in
new file mode 100644
index 0000000000..21321dbb08
--- /dev/null
+++ b/package/utils/busybox/config/editors/Config.in
@@ -0,0 +1,206 @@
+# 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
diff --git a/package/utils/busybox/config/findutils/Config.in b/package/utils/busybox/config/findutils/Config.in
new file mode 100644
index 0000000000..8db1fdef91
--- /dev/null
+++ b/package/utils/busybox/config/findutils/Config.in
@@ -0,0 +1,252 @@
+# 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
diff --git a/package/utils/busybox/config/init/Config.in b/package/utils/busybox/config/init/Config.in
new file mode 100644
index 0000000000..07d94a2056
--- /dev/null
+++ b/package/utils/busybox/config/init/Config.in
@@ -0,0 +1,185 @@
+# 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
diff --git a/package/utils/busybox/config/libbb/Config.in b/package/utils/busybox/config/libbb/Config.in
new file mode 100644
index 0000000000..6475403b53
--- /dev/null
+++ b/package/utils/busybox/config/libbb/Config.in
@@ -0,0 +1,232 @@
+# 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
diff --git a/package/utils/busybox/config/loginutils/Config.in b/package/utils/busybox/config/loginutils/Config.in
new file mode 100644
index 0000000000..8c32851a2b
--- /dev/null
+++ b/package/utils/busybox/config/loginutils/Config.in
@@ -0,0 +1,329 @@
+# 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
diff --git a/package/utils/busybox/config/mailutils/Config.in b/package/utils/busybox/config/mailutils/Config.in
new file mode 100644
index 0000000000..8db30310be
--- /dev/null
+++ b/package/utils/busybox/config/mailutils/Config.in
@@ -0,0 +1,56 @@
+# 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
diff --git a/package/utils/busybox/config/miscutils/Config.in b/package/utils/busybox/config/miscutils/Config.in
new file mode 100644
index 0000000000..e69d6847ec
--- /dev/null
+++ b/package/utils/busybox/config/miscutils/Config.in
@@ -0,0 +1,766 @@
+# 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
diff --git a/package/utils/busybox/config/modutils/Config.in b/package/utils/busybox/config/modutils/Config.in
new file mode 100644
index 0000000000..77f98581fd
--- /dev/null
+++ b/package/utils/busybox/config/modutils/Config.in
@@ -0,0 +1,269 @@
+# 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
diff --git a/package/utils/busybox/config/networking/Config.in b/package/utils/busybox/config/networking/Config.in
new file mode 100644
index 0000000000..442eb03428
--- /dev/null
+++ b/package/utils/busybox/config/networking/Config.in
@@ -0,0 +1,1088 @@
+# 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/utils/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
diff --git a/package/utils/busybox/config/networking/udhcp/Config.in b/package/utils/busybox/config/networking/udhcp/Config.in
new file mode 100644
index 0000000000..f4d26ec9c8
--- /dev/null
+++ b/package/utils/busybox/config/networking/udhcp/Config.in
@@ -0,0 +1,155 @@
+# 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.
diff --git a/package/utils/busybox/config/printutils/Config.in b/package/utils/busybox/config/printutils/Config.in
new file mode 100644
index 0000000000..ca2ea9f56c
--- /dev/null
+++ b/package/utils/busybox/config/printutils/Config.in
@@ -0,0 +1,29 @@
+# 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
diff --git a/package/utils/busybox/config/procps/Config.in b/package/utils/busybox/config/procps/Config.in
new file mode 100644
index 0000000000..d8d72a75e7
--- /dev/null
+++ b/package/utils/busybox/config/procps/Config.in
@@ -0,0 +1,260 @@
+# 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
diff --git a/package/utils/busybox/config/runit/Config.in b/package/utils/busybox/config/runit/Config.in
new file mode 100644
index 0000000000..9d7c5970a9
--- /dev/null
+++ b/package/utils/busybox/config/runit/Config.in
@@ -0,0 +1,90 @@
+# 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
diff --git a/package/utils/busybox/config/selinux/Config.in b/package/utils/busybox/config/selinux/Config.in
new file mode 100644
index 0000000000..e7317ca810
--- /dev/null
+++ b/package/utils/busybox/config/selinux/Config.in
@@ -0,0 +1,125 @@
+# 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
diff --git a/package/utils/busybox/config/shell/Config.in b/package/utils/busybox/config/shell/Config.in
new file mode 100644
index 0000000000..a271a386d6
--- /dev/null
+++ b/package/utils/busybox/config/shell/Config.in
@@ -0,0 +1,433 @@
+# 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
diff --git a/package/utils/busybox/config/sysklogd/Config.in b/package/utils/busybox/config/sysklogd/Config.in
new file mode 100644
index 0000000000..f403a684bb
--- /dev/null
+++ b/package/utils/busybox/config/sysklogd/Config.in
@@ -0,0 +1,154 @@
+# 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
diff --git a/package/utils/busybox/config/util-linux/Config.in b/package/utils/busybox/config/util-linux/Config.in
new file mode 100644
index 0000000000..d60b139a8b
--- /dev/null
+++ b/package/utils/busybox/config/util-linux/Config.in
@@ -0,0 +1,985 @@
+# 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
diff --git a/package/utils/busybox/convert_menuconfig.pl b/package/utils/busybox/convert_menuconfig.pl
new file mode 100755
index 0000000000..0128bf78d7
--- /dev/null
+++ b/package/utils/busybox/convert_menuconfig.pl
@@ -0,0 +1,78 @@
+#!/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;
diff --git a/package/utils/busybox/files/cron b/package/utils/busybox/files/cron
new file mode 100755
index 0000000000..465b1ab45b
--- /dev/null
+++ b/package/utils/busybox/files/cron
@@ -0,0 +1,18 @@
+#!/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
+}
diff --git a/package/utils/busybox/files/telnet b/package/utils/busybox/files/telnet
new file mode 100755
index 0000000000..994e713e70
--- /dev/null
+++ b/package/utils/busybox/files/telnet
@@ -0,0 +1,37 @@
+#!/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
+}
diff --git a/package/utils/busybox/patches/001-init_avoid_loop_opening_tty.patch b/package/utils/busybox/patches/001-init_avoid_loop_opening_tty.patch
new file mode 100644
index 0000000000..4db64c34be
--- /dev/null
+++ b/package/utils/busybox/patches/001-init_avoid_loop_opening_tty.patch
@@ -0,0 +1,15 @@
+--- 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);
++ }
+ }
+ }
+ }
diff --git a/package/utils/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch b/package/utils/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch
new file mode 100644
index 0000000000..ff79f3ee9c
--- /dev/null
+++ b/package/utils/busybox/patches/002-passwd_use_md5_hash_by_default_like_it_used_to_be.patch
@@ -0,0 +1,20 @@
+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;
diff --git a/package/utils/busybox/patches/003-brctl_show_fix.patch b/package/utils/busybox/patches/003-brctl_show_fix.patch
new file mode 100644
index 0000000000..8177fb01c6
--- /dev/null
+++ b/package/utils/busybox/patches/003-brctl_show_fix.patch
@@ -0,0 +1,37 @@
+--- 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"
diff --git a/package/utils/busybox/patches/004-upstream-percent_decode_in_place.patch b/package/utils/busybox/patches/004-upstream-percent_decode_in_place.patch
new file mode 100644
index 0000000000..d94ee47900
--- /dev/null
+++ b/package/utils/busybox/patches/004-upstream-percent_decode_in_place.patch
@@ -0,0 +1,237 @@
+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));
+ }
diff --git a/package/utils/busybox/patches/005-resource_h_include.patch b/package/utils/busybox/patches/005-resource_h_include.patch
new file mode 100644
index 0000000000..d66d66d67e
--- /dev/null
+++ b/package/utils/busybox/patches/005-resource_h_include.patch
@@ -0,0 +1,10 @@
+--- 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>
diff --git a/package/utils/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch b/package/utils/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch
new file mode 100644
index 0000000000..532fcee0fb
--- /dev/null
+++ b/package/utils/busybox/patches/006-upstream_CVE-2011-2716_fixes.patch
@@ -0,0 +1,164 @@
+--- 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) {
diff --git a/package/utils/busybox/patches/007-upstream_mkfs_ext2_fixes.patch b/package/utils/busybox/patches/007-upstream_mkfs_ext2_fixes.patch
new file mode 100644
index 0000000000..8528ee87f9
--- /dev/null
+++ b/package/utils/busybox/patches/007-upstream_mkfs_ext2_fixes.patch
@@ -0,0 +1,1441 @@
+--- 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 */
++ 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.
++ */
++/*D0*/ uint8_t s_journal_uuid[16]; /* uuid of journal superblock */
++/*E0*/ 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;
++/*100*/ uint32_t s_default_mount_opts;
++ uint32_t s_first_meta_bg; /* First metablock group */
++ /* ext3 additions */
++ uint32_t s_mkfs_time; /* When the filesystem was created */
++ uint32_t s_jnl_blocks[17]; /* Backup of the journal inode */
++ /* 64bit support valid if EXT4_FEATURE_COMPAT_64BIT */
++/*150*/ uint32_t s_blocks_count_hi; /* Blocks count */
++ uint32_t s_r_blocks_count_hi; /* Reserved blocks count */
++ uint32_t s_free_blocks_count_hi; /* Free blocks count */
++ uint16_t s_min_extra_isize; /* All inodes have at least # bytes */
++ uint16_t s_want_extra_isize; /* New inodes should reserve # bytes */
++ uint32_t s_flags; /* Miscellaneous flags */
++ uint16_t s_raid_stride; /* RAID stride */
++ uint16_t s_mmp_interval; /* # seconds to wait in MMP checking */
++ uint64_t s_mmp_block; /* Block for multi-mount protection */
++ uint32_t s_raid_stripe_width; /* blocks on all data disks (N*stride)*/
++ uint8_t s_log_groups_per_flex; /* FLEX_BG group size */
++ uint8_t s_reserved_char_pad2;
++ uint16_t s_reserved_pad;
++ uint32_t s_reserved[162]; /* Padding to the end of the block */
++};
++struct BUG_ext2_super_block {
++ char bug[sizeof(struct ext2_super_block) == 1024 ? 1 : -1];
++};
++
++/*
++ * 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) )
++
++/* for s_feature_compat */
++#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_INO 0x0010
++#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020
++
++/* for s_feature_ro_compat */
++#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 EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
++#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
++#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
++#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040
++
++/* for s_feature_incompat */
++#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
++#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
++#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
++#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008
++#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010
++#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040
++#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
++#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
++#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
++
++
++#define EXT2_FEATURE_COMPAT_SUPP 0
++#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
++ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
++ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
++#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
++ EXT2_FEATURE_INCOMPAT_META_BG)
++#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED (~EXT2_FEATURE_INCOMPAT_SUPP)
++#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED (~EXT2_FEATURE_RO_COMPAT_SUPP)
++
++#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
++ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
++ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
++#define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
++ EXT3_FEATURE_INCOMPAT_RECOVER| \
++ EXT2_FEATURE_INCOMPAT_META_BG)
++#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED (~EXT3_FEATURE_INCOMPAT_SUPP)
++#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED (~EXT3_FEATURE_RO_COMPAT_SUPP)
++
++
++/*
++ * 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/testsuite/mount.tests
++++ b/testsuite/mount.tests
+@@ -36,7 +36,8 @@ testing "mount -o remount,mand" \
+ "mount -o loop mount.image1m $testdir "\
+ "&& grep -Fc $testdir </proc/mounts "\
+ "&& mount -o remount,mand $testdir "\
+-"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'" \
++"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\
++"|| grep -F $testdir </proc/mounts" \
+ "1\n""1\n" \
+ "" ""
+
+@@ -83,4 +84,28 @@ b
+ "" ""
+ SKIP=
+
++
++testing "mount RO loop" "\
++exec 2>&1
++umount -d mount.dir 2>/dev/null
++rmdir mount.dir 2>/dev/null
++mkdir -p mount.dir
++(
++cd mount.dir || { echo 'cd error'; exit 1; }
++mkdir z1 z2 || { echo 'mkdir error'; exit 1; }
++mount -t tmpfs tmpfs z1 || { echo 'mount tmpfs error'; exit 1; }
++dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; }
++mke2fs -F z1/e2img 2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; }
++mount -r -o loop -t ext2 z1/e2img z2 || { echo 'mount -r -o loop error'; exit 1; }
++mount -o remount,ro z1 || { echo 'mount -o remount,ro error'; exit 1; }
++)
++umount -d mount.dir/z2
++##losetup -d /dev/loop*
++umount -d mount.dir/z1
++rm -rf mount.dir
++echo DONE
++" \
++"DONE\n" "" ""
++
++
+ exit $FAILCOUNT
+--- a/util-linux/mkfs_ext2.c
++++ b/util-linux/mkfs_ext2.c
+@@ -48,16 +48,11 @@
+
+ #include "libbb.h"
+ #include <linux/fs.h>
+-#include <linux/ext2_fs.h>
++#include "bb_e2fs_defs.h"
+
+ #define ENABLE_FEATURE_MKFS_EXT2_RESERVED_GDT 0
+ #define ENABLE_FEATURE_MKFS_EXT2_DIR_INDEX 1
+
+-// from e2fsprogs
+-#define s_reserved_gdt_blocks s_padding1
+-#define s_mkfs_time s_reserved[0]
+-#define s_flags s_reserved[22]
+-
+ #define EXT2_HASH_HALF_MD4 1
+ #define EXT2_FLAGS_SIGNED_HASH 0x0001
+ #define EXT2_FLAGS_UNSIGNED_HASH 0x0002
+@@ -482,8 +477,10 @@ int mkfs_ext2_main(int argc UNUSED_PARAM
+ STORE_LE(sb->s_magic, EXT2_SUPER_MAGIC);
+ STORE_LE(sb->s_inode_size, inodesize);
+ // set "Required extra isize" and "Desired extra isize" fields to 28
+- if (inodesize != sizeof(*inode))
+- STORE_LE(sb->s_reserved[21], 0x001C001C);
++ if (inodesize != sizeof(*inode)) {
++ STORE_LE(sb->s_min_extra_isize, 0x001c);
++ STORE_LE(sb->s_want_extra_isize, 0x001c);
++ }
+ STORE_LE(sb->s_first_ino, EXT2_GOOD_OLD_FIRST_INO);
+ STORE_LE(sb->s_log_block_size, blocksize_log2 - EXT2_MIN_BLOCK_LOG_SIZE);
+ STORE_LE(sb->s_log_frag_size, blocksize_log2 - EXT2_MIN_BLOCK_LOG_SIZE);
+--- a/util-linux/volume_id/ext.c
++++ b/util-linux/volume_id/ext.c
+@@ -19,28 +19,8 @@
+ */
+
+ #include "volume_id_internal.h"
++#include "bb_e2fs_defs.h"
+
+-struct ext2_super_block {
+- uint32_t inodes_count;
+- uint32_t blocks_count;
+- uint32_t r_blocks_count;
+- uint32_t free_blocks_count;
+- uint32_t free_inodes_count;
+- uint32_t first_data_block;
+- uint32_t log_block_size;
+- uint32_t dummy3[7];
+- uint8_t magic[2];
+- uint16_t state;
+- uint32_t dummy5[8];
+- uint32_t feature_compat;
+- uint32_t feature_incompat;
+- uint32_t feature_ro_compat;
+- uint8_t uuid[16];
+- uint8_t volume_name[16];
+-} PACKED;
+-
+-#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x00000004
+-#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x00000008
+ #define EXT_SUPERBLOCK_OFFSET 0x400
+
+ int FAST_FUNC volume_id_probe_ext(struct volume_id *id /*,uint64_t off*/)
+@@ -54,23 +34,27 @@ int FAST_FUNC volume_id_probe_ext(struct
+ if (es == NULL)
+ return -1;
+
+- if (es->magic[0] != 0123 || es->magic[1] != 0357) {
++ if (es->s_magic != cpu_to_le16(EXT2_SUPER_MAGIC)) {
+ dbg("ext: no magic found");
+ return -1;
+ }
+
+ // volume_id_set_usage(id, VOLUME_ID_FILESYSTEM);
+ // volume_id_set_label_raw(id, es->volume_name, 16);
+- volume_id_set_label_string(id, es->volume_name, 16);
+- volume_id_set_uuid(id, es->uuid, UUID_DCE);
++ volume_id_set_label_string(id, (void*)es->s_volume_name, 16);
++ volume_id_set_uuid(id, es->s_uuid, UUID_DCE);
+ dbg("ext: label '%s' uuid '%s'", id->label, id->uuid);
+
+ #if ENABLE_FEATURE_BLKID_TYPE
+- if ((le32_to_cpu(es->feature_compat) & EXT3_FEATURE_COMPAT_HAS_JOURNAL) != 0)
++ if ((es->s_feature_ro_compat & cpu_to_le32(EXT4_FEATURE_RO_COMPAT_HUGE_FILE | EXT4_FEATURE_RO_COMPAT_DIR_NLINK))
++ || (es->s_feature_incompat & cpu_to_le32(EXT4_FEATURE_INCOMPAT_EXTENTS | EXT4_FEATURE_INCOMPAT_64BIT))
++ ) {
++ id->type = "ext4";
++ }
++ else if (es->s_feature_compat & cpu_to_le32(EXT3_FEATURE_COMPAT_HAS_JOURNAL))
+ id->type = "ext3";
+ else
+ id->type = "ext2";
+ #endif
+-
+ return 0;
+ }
diff --git a/package/utils/busybox/patches/110-wget_getopt_fix.patch b/package/utils/busybox/patches/110-wget_getopt_fix.patch
new file mode 100644
index 0000000000..1003231462
--- /dev/null
+++ b/package/utils/busybox/patches/110-wget_getopt_fix.patch
@@ -0,0 +1,11 @@
+--- a/networking/wget.c
++++ b/networking/wget.c
+@@ -873,7 +873,7 @@ int wget_main(int argc UNUSED_PARAM, cha
+ /* Ignored: */
+ // "tries\0" Required_argument "t"
+ /* Ignored (we always use PASV): */
+- "passive-ftp\0" No_argument "\xff"
++ "passive-ftp\0" No_argument "\xfd"
+ "header\0" Required_argument "\xfe"
+ "post-data\0" Required_argument "\xfd"
+ /* Ignored (we don't do ssl) */
diff --git a/package/utils/busybox/patches/140-trylink_bash.patch b/package/utils/busybox/patches/140-trylink_bash.patch
new file mode 100644
index 0000000000..f9571fcbc8
--- /dev/null
+++ b/package/utils/busybox/patches/140-trylink_bash.patch
@@ -0,0 +1,8 @@
+--- a/scripts/trylink
++++ b/scripts/trylink
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/usr/bin/env bash
+
+ debug=false
+
diff --git a/package/utils/busybox/patches/141-gen_build_files_bash.patch b/package/utils/busybox/patches/141-gen_build_files_bash.patch
new file mode 100644
index 0000000000..d258fb8bc4
--- /dev/null
+++ b/package/utils/busybox/patches/141-gen_build_files_bash.patch
@@ -0,0 +1,8 @@
+--- a/scripts/gen_build_files.sh
++++ b/scripts/gen_build_files.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/usr/bin/env bash
+
+ # Note: was using sed OPTS CMD -- FILES
+ # but users complain that many sed implementations
diff --git a/package/utils/busybox/patches/150-no_static_libgcc.patch b/package/utils/busybox/patches/150-no_static_libgcc.patch
new file mode 100644
index 0000000000..fde6fbb869
--- /dev/null
+++ b/package/utils/busybox/patches/150-no_static_libgcc.patch
@@ -0,0 +1,11 @@
+--- a/Makefile.flags
++++ b/Makefile.flags
+@@ -50,7 +50,7 @@ CFLAGS += $(call cc-option,-fno-builtin-
+ # -fno-guess-branch-probability: prohibit pseudo-random guessing
+ # of branch probabilities (hopefully makes bloatcheck more stable):
+ CFLAGS += $(call cc-option,-fno-guess-branch-probability,)
+-CFLAGS += $(call cc-option,-funsigned-char -static-libgcc,)
++CFLAGS += $(call cc-option,-funsigned-char,)
+ CFLAGS += $(call cc-option,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,)
+
+ # FIXME: These warnings are at least partially to be concerned about and should
diff --git a/package/utils/busybox/patches/200-etc_crontabs.patch b/package/utils/busybox/patches/200-etc_crontabs.patch
new file mode 100644
index 0000000000..ebf2990502
--- /dev/null
+++ b/package/utils/busybox/patches/200-etc_crontabs.patch
@@ -0,0 +1,22 @@
+--- a/miscutils/crond.c
++++ b/miscutils/crond.c
+@@ -37,7 +37,7 @@
+
+
+ #define TMPDIR CONFIG_FEATURE_CROND_DIR
+-#define CRONTABS CONFIG_FEATURE_CROND_DIR "/crontabs"
++#define CRONTABS "/etc/crontabs"
+ #ifndef SENDMAIL
+ # define SENDMAIL "sendmail"
+ #endif
+--- a/miscutils/crontab.c
++++ b/miscutils/crontab.c
+@@ -22,7 +22,7 @@
+
+ #include "libbb.h"
+
+-#define CRONTABS CONFIG_FEATURE_CROND_DIR "/crontabs"
++#define CRONTABS "/etc/crontabs"
+ #ifndef CRONUPDATE
+ #define CRONUPDATE "cron.update"
+ #endif
diff --git a/package/utils/busybox/patches/240-udhcpc_retries.patch b/package/utils/busybox/patches/240-udhcpc_retries.patch
new file mode 100644
index 0000000000..0e26864e8d
--- /dev/null
+++ b/package/utils/busybox/patches/240-udhcpc_retries.patch
@@ -0,0 +1,20 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1319,7 +1319,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+
+ switch (state) {
+ case INIT_SELECTING:
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
+ if (packet_num == 0)
+ xid = random_xid();
+ /* broadcast */
+@@ -1348,7 +1348,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ packet_num = 0;
+ continue;
+ case REQUESTING:
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
+ /* send broadcast select packet */
+ send_select(xid, server_addr, requested_ip);
+ timeout = discover_timeout;
diff --git a/package/utils/busybox/patches/241-udhcpc-oversized_packets.patch b/package/utils/busybox/patches/241-udhcpc-oversized_packets.patch
new file mode 100644
index 0000000000..471d704a71
--- /dev/null
+++ b/package/utils/busybox/patches/241-udhcpc-oversized_packets.patch
@@ -0,0 +1,99 @@
+--- a/networking/udhcp/packet.c
++++ b/networking/udhcp/packet.c
+@@ -158,6 +158,11 @@ uint16_t FAST_FUNC udhcp_checksum(void *
+ return ~sum;
+ }
+
++int udhcp_get_payload_len(struct dhcp_packet *dhcp_pkt)
++{
++ return sizeof(struct dhcp_packet) - DHCP_OPTIONS_BUFSIZE + udhcp_end_option(dhcp_pkt->options) + sizeof(dhcp_pkt->options[0]);
++}
++
+ /* Construct a ip/udp header for a packet, send packet */
+ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
+ uint32_t source_nip, int source_port,
+@@ -166,10 +171,10 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ {
+ struct sockaddr_ll dest_sll;
+ struct ip_udp_dhcp_packet packet;
+- unsigned padding;
+ int fd;
+ int result = -1;
+ const char *msg;
++ int p_len = udhcp_get_payload_len(dhcp_pkt);
+
+ fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
+ if (fd < 0) {
+@@ -178,8 +183,8 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ }
+
+ memset(&dest_sll, 0, sizeof(dest_sll));
+- memset(&packet, 0, offsetof(struct ip_udp_dhcp_packet, data));
+- packet.data = *dhcp_pkt; /* struct copy */
++ memset(&packet, 0, sizeof(packet));
++ memcpy(&(packet.data), dhcp_pkt, p_len);
+
+ dest_sll.sll_family = AF_PACKET;
+ dest_sll.sll_protocol = htons(ETH_P_IP);
+@@ -192,36 +197,24 @@ int FAST_FUNC udhcp_send_raw_packet(stru
+ goto ret_close;
+ }
+
+- /* We were sending full-sized DHCP packets (zero padded),
+- * but some badly configured servers were seen dropping them.
+- * Apparently they drop all DHCP packets >576 *ethernet* octets big,
+- * whereas they may only drop packets >576 *IP* octets big
+- * (which for typical Ethernet II means 590 octets: 6+6+2 + 576).
+- *
+- * In order to work with those buggy servers,
+- * we truncate packets after end option byte.
+- */
+- padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options);
+-
+ packet.ip.protocol = IPPROTO_UDP;
+ packet.ip.saddr = source_nip;
+ packet.ip.daddr = dest_nip;
+ packet.udp.source = htons(source_port);
+ packet.udp.dest = htons(dest_port);
+- /* size, excluding IP header: */
+- packet.udp.len = htons(UDP_DHCP_SIZE - padding);
+- /* for UDP checksumming, ip.len is set to UDP packet len */
++ p_len += sizeof(packet.udp);
++ packet.udp.len = htons(p_len);
+ packet.ip.tot_len = packet.udp.len;
+- packet.udp.check = udhcp_checksum(&packet, IP_UDP_DHCP_SIZE - padding);
+- /* but for sending, it is set to IP packet len */
+- packet.ip.tot_len = htons(IP_UDP_DHCP_SIZE - padding);
++ p_len += sizeof(packet.ip);
++ packet.udp.check = udhcp_checksum(&packet, p_len);
++ packet.ip.tot_len = htons(p_len);
+ packet.ip.ihl = sizeof(packet.ip) >> 2;
+ packet.ip.version = IPVERSION;
+ packet.ip.ttl = IPDEFTTL;
+ packet.ip.check = udhcp_checksum(&packet.ip, sizeof(packet.ip));
+
+ udhcp_dump_packet(dhcp_pkt);
+- result = sendto(fd, &packet, IP_UDP_DHCP_SIZE - padding, /*flags:*/ 0,
++ result = sendto(fd, &packet, p_len, /*flags:*/ 0,
+ (struct sockaddr *) &dest_sll, sizeof(dest_sll));
+ msg = "sendto";
+ ret_close:
+@@ -239,7 +232,6 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+ uint32_t dest_nip, int dest_port)
+ {
+ struct sockaddr_in client;
+- unsigned padding;
+ int fd;
+ int result = -1;
+ const char *msg;
+@@ -270,9 +262,7 @@ int FAST_FUNC udhcp_send_kernel_packet(s
+ }
+
+ udhcp_dump_packet(dhcp_pkt);
+-
+- padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options);
+- result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding);
++ result = safe_write(fd, dhcp_pkt, udhcp_get_payload_len(dhcp_pkt));
+ msg = "write";
+ ret_close:
+ close(fd);
diff --git a/package/utils/busybox/patches/242-udhcpc_msgs.patch b/package/utils/busybox/patches/242-udhcpc_msgs.patch
new file mode 100644
index 0000000000..c1c6096697
--- /dev/null
+++ b/package/utils/busybox/patches/242-udhcpc_msgs.patch
@@ -0,0 +1,18 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -602,6 +602,7 @@ static int raw_bcast_from_client_config_
+ static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
+ {
+ struct dhcp_packet packet;
++ static int msgs = 0;
+
+ /* Fill in: op, htype, hlen, cookie, chaddr fields,
+ * random xid field (we override it below),
+@@ -619,6 +620,7 @@ static NOINLINE int send_discover(uint32
+ */
+ add_client_options(&packet);
+
++ if (msgs++ < 3)
+ bb_info_msg("Sending discover...");
+ return raw_bcast_from_client_config_ifindex(&packet);
+ }
diff --git a/package/utils/busybox/patches/243-udhcpc_changed_ifindex.patch b/package/utils/busybox/patches/243-udhcpc_changed_ifindex.patch
new file mode 100644
index 0000000000..cb0df224cc
--- /dev/null
+++ b/package/utils/busybox/patches/243-udhcpc_changed_ifindex.patch
@@ -0,0 +1,15 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1267,6 +1267,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ /* silence "uninitialized!" warning */
+ unsigned timestamp_before_wait = timestamp_before_wait;
+
++ /* When running on a bridge, the ifindex may have changed (e.g. if
++ * member interfaces were added/removed or if the status of the
++ * bridge changed).
++ * Workaround: refresh it here before processing the next packet */
++ udhcp_read_interface(client_config.interface, &client_config.ifindex, NULL, client_config.client_mac);
++
+ //bb_error_msg("sockfd:%d, listen_mode:%d", sockfd, listen_mode);
+
+ /* Was opening raw or udp socket here
diff --git a/package/utils/busybox/patches/244-udhcpc_add_6rd_option.patch b/package/utils/busybox/patches/244-udhcpc_add_6rd_option.patch
new file mode 100644
index 0000000000..2f0eadb160
--- /dev/null
+++ b/package/utils/busybox/patches/244-udhcpc_add_6rd_option.patch
@@ -0,0 +1,143 @@
+--- a/networking/udhcp/common.c
++++ b/networking/udhcp/common.c
+@@ -60,6 +60,8 @@ const struct dhcp_optflag dhcp_optflags[
+ { OPTION_U8 , 0x85 }, /* DHCP_VLAN_PRIORITY */
+ #endif
+ { OPTION_STATIC_ROUTES , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */
++ { OPTION_6RD , 0xd4 }, /* DHCP_6RD (RFC) */
++ { OPTION_6RD , 0x96 }, /* DHCP_6RD (Comcast) */
+ { OPTION_STRING , 0xfc }, /* DHCP_WPAD */
+
+ /* Options below have no match in dhcp_option_strings[],
+@@ -127,6 +129,8 @@ const char dhcp_option_strings[] ALIGN1
+ "vlanpriority" "\0"/* DHCP_VLAN_PRIORITY */
+ #endif
+ "msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */
++ "ip6rd" "\0" /* DHCP_6RD (RFC) */
++ "ip6rd" "\0" /* DHCP_6RD (Comcast) */
+ "wpad" "\0" /* DHCP_WPAD */
+ ;
+
+@@ -155,6 +159,7 @@ const uint8_t dhcp_option_lengths[] ALIG
+ [OPTION_S32] = 4,
+ /* Just like OPTION_STRING, we use minimum length here */
+ [OPTION_STATIC_ROUTES] = 5,
++ [OPTION_6RD] = 22,
+ };
+
+
+--- a/networking/udhcp/common.h
++++ b/networking/udhcp/common.h
+@@ -91,6 +91,7 @@ enum {
+ OPTION_S32,
+ OPTION_BIN,
+ OPTION_STATIC_ROUTES,
++ OPTION_6RD,
+ #if ENABLE_FEATURE_UDHCP_RFC3397
+ OPTION_DNS_STRING, /* RFC1035 compressed domain name list */
+ OPTION_SIP_SERVERS,
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -100,6 +100,7 @@ static const uint8_t len_of_option_as_st
+ [OPTION_IP ] = sizeof("255.255.255.255 "),
+ [OPTION_IP_PAIR ] = sizeof("255.255.255.255 ") * 2,
+ [OPTION_STATIC_ROUTES ] = sizeof("255.255.255.255/32 255.255.255.255 "),
++ [OPTION_6RD ] = sizeof("32 128 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 255.255.255.255 "),
+ [OPTION_STRING ] = 1,
+ [OPTION_STRING_HOST ] = 1,
+ #if ENABLE_FEATURE_UDHCP_RFC3397
+@@ -124,6 +125,23 @@ static int sprint_nip(char *dest, const
+ return sprintf(dest, "%s%u.%u.%u.%u", pre, ip[0], ip[1], ip[2], ip[3]);
+ }
+
++static int sprint_nip6(char *dest, const char *pre, const uint8_t *ip)
++{
++ int len = 0;
++ int off;
++ uint16_t word;
++
++ len += sprintf(dest, "%s", pre);
++
++ for (off = 0; off < 16; off += 2)
++ {
++ move_from_unaligned16(word, &ip[off]);
++ len += sprintf(dest+len, "%s%04X", off ? ":" : "", htons(word));
++ }
++
++ return len;
++}
++
+ /* really simple implementation, just count the bits */
+ static int mton(uint32_t mask)
+ {
+@@ -292,6 +310,70 @@ static NOINLINE char *xmalloc_optname_op
+ }
+
+ return ret;
++ }
++ case OPTION_6RD: {
++ /* Option binary format:
++ * 0 1 2 3
++ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
++ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++ * | OPTION_6RD | option-length | IPv4MaskLen | 6rdPrefixLen |
++ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++ * | |
++ * | 6rdPrefix |
++ * | (16 octets) |
++ * | |
++ * | |
++ * | |
++ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++ * | 6rdBRIPv4Address(es) |
++ * . .
++ * . .
++ * . .
++ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++ *
++ * We convert it to a string "IPv4MaskLen 6rdPrefixLen 6rdPrefix 6rdBRIPv4Address"
++ */
++
++ /* Sanity check: ensure that our length is at least 22 bytes, that
++ * IPv4MaskLen is <= 32, 6rdPrefixLen <= 128 and that the sum of
++ * (32 - IPv4MaskLen) + 6rdPrefixLen is less than or equal to 128.
++ * If any of these requirements is not fulfilled, return with empty
++ * value.
++ */
++ if ((len >= 22) && (*option <= 32) && (*(option+1) <= 128) &&
++ (((32 - *option) + *(option+1)) <= 128))
++ {
++ /* IPv4MaskLen */
++ dest += sprintf(dest, "%u ", *option++);
++ len--;
++
++ /* 6rdPrefixLen */
++ dest += sprintf(dest, "%u ", *option++);
++ len--;
++
++ /* 6rdPrefix */
++ dest += sprint_nip6(dest, "", option);
++ option += 16;
++ len -= 16;
++
++ /* 6rdBRIPv4Addresses */
++ while (len >= 4)
++ {
++ dest += sprint_nip(dest, " ", option);
++ option += 4;
++ len -= 4;
++
++ /* the code to determine the option size fails to work with
++ * lengths that are not a multiple of the minimum length,
++ * adding all advertised 6rdBRIPv4Addresses here would
++ * overflow the destination buffer, therefore skip the rest
++ * for now
++ */
++ break;
++ }
++ }
++
++ return ret;
+ }
+ #if ENABLE_FEATURE_UDHCP_RFC3397
+ case OPTION_DNS_STRING:
diff --git a/package/utils/busybox/patches/250-ash_export-n.patch b/package/utils/busybox/patches/250-ash_export-n.patch
new file mode 100644
index 0000000000..048c236b85
--- /dev/null
+++ b/package/utils/busybox/patches/250-ash_export-n.patch
@@ -0,0 +1,34 @@
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -12611,8 +12611,17 @@ exportcmd(int argc UNUSED_PARAM, char **
+ const char *p;
+ char **aptr;
+ int flag = argv[0][0] == 'r' ? VREADONLY : VEXPORT;
++ int mask = ~0;
++ int nopt;
++ while ((nopt = nextopt("np"))) {
++ if (nopt == 'n') {
++ mask = ~flag;
++ } else { /* p */
++ break;
++ }
++ }
+
+- if (nextopt("p") != 'p') {
++ if (nopt != 'p') {
+ aptr = argptr;
+ name = *aptr;
+ if (name) {
+@@ -12624,10 +12633,12 @@ exportcmd(int argc UNUSED_PARAM, char **
+ vp = *findvar(hashvar(name), name);
+ if (vp) {
+ vp->flags |= flag;
++ vp->flags &= mask;
+ continue;
+ }
+ }
+ setvar(name, p, flag);
++ setvar(name, p, flag & mask);
+ } while ((name = *++aptr) != NULL);
+ return 0;
+ }
diff --git a/package/utils/busybox/patches/251-ash_fix-redir-substitution.patch b/package/utils/busybox/patches/251-ash_fix-redir-substitution.patch
new file mode 100644
index 0000000000..cb2ae94e04
--- /dev/null
+++ b/package/utils/busybox/patches/251-ash_fix-redir-substitution.patch
@@ -0,0 +1,12 @@
+--- a/shell/ash.c
++++ b/shell/ash.c
+@@ -6846,8 +6846,7 @@ evalvar(char *p, int flags, struct strli
+ patloc = expdest - (char *)stackblock();
+ if (NULL == subevalvar(p, /* varname: */ NULL, patloc, subtype,
+ startloc, varflags,
+-//TODO: | EXP_REDIR too? All other such places do it too
+- /* quotes: */ flags & (EXP_FULL | EXP_CASE),
++ /* quotes: */ flags & (EXP_FULL | EXP_CASE | EXP_REDIR),
+ var_str_list)
+ ) {
+ int amount = expdest - (
diff --git a/package/utils/busybox/patches/260-vconfig_proc.patch b/package/utils/busybox/patches/260-vconfig_proc.patch
new file mode 100644
index 0000000000..7ac52abbfe
--- /dev/null
+++ b/package/utils/busybox/patches/260-vconfig_proc.patch
@@ -0,0 +1,22 @@
+--- a/networking/vconfig.c
++++ b/networking/vconfig.c
+@@ -116,8 +116,6 @@ static const char name_types[] ALIGN1 =
+ '_', 'N', 'O', '_', 'P', 'A', 'D', 0,
+ };
+
+-static const char conf_file_name[] ALIGN1 = "/proc/net/vlan/config";
+-
+ int vconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int vconfig_main(int argc, char **argv)
+ {
+@@ -129,10 +127,6 @@ int vconfig_main(int argc, char **argv)
+ bb_show_usage();
+ }
+
+- /* Don't bother closing the filedes. It will be closed on cleanup. */
+- /* Will die if 802.1q is not present */
+- xopen(conf_file_name, O_RDONLY);
+-
+ memset(&ifr, 0, sizeof(ifr));
+
+ ++argv;
diff --git a/package/utils/busybox/patches/300-netmsg.patch b/package/utils/busybox/patches/300-netmsg.patch
new file mode 100644
index 0000000000..e8b2513eb3
--- /dev/null
+++ b/package/utils/busybox/patches/300-netmsg.patch
@@ -0,0 +1,103 @@
+--- a/include/applets.src.h
++++ b/include/applets.src.h
+@@ -266,6 +266,7 @@ IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DRO
+ IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
+ IF_NAMEIF(APPLET(nameif, BB_DIR_SBIN, BB_SUID_DROP))
+ IF_NC(APPLET(nc, BB_DIR_USR_BIN, BB_SUID_DROP))
++IF_NETMSG(APPLET(netmsg, BB_DIR_BIN, BB_SUID_REQUIRE))
+ IF_NETSTAT(APPLET(netstat, BB_DIR_BIN, BB_SUID_DROP))
+ IF_NICE(APPLET(nice, BB_DIR_BIN, BB_SUID_DROP))
+ IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
+--- a/networking/Config.src
++++ b/networking/Config.src
+@@ -612,6 +612,12 @@ config FEATURE_IPCALC_LONG_OPTIONS
+ help
+ Support long options for the ipcalc applet.
+
++config NETMSG
++ bool "netmsg"
++ default n
++ help
++ simple program for sending udp broadcast messages
++
+ config NETSTAT
+ bool "netstat"
+ default y
+--- a/networking/Kbuild.src
++++ b/networking/Kbuild.src
+@@ -27,6 +27,7 @@ lib-$(CONFIG_IP) += ip.o
+ lib-$(CONFIG_IPCALC) += ipcalc.o
+ lib-$(CONFIG_NAMEIF) += nameif.o
+ lib-$(CONFIG_NC) += nc.o
++lib-$(CONFIG_NETMSG) += netmsg.o
+ lib-$(CONFIG_NETSTAT) += netstat.o
+ lib-$(CONFIG_NSLOOKUP) += nslookup.o
+ lib-$(CONFIG_NTPD) += ntpd.o
+--- /dev/null
++++ b/networking/netmsg.c
+@@ -0,0 +1,65 @@
++/*
++ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
++ *
++ * This is free software, licensed under the GNU General Public License v2.
++ */
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++#include <netdb.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include "busybox.h"
++
++//usage:#define netmsg_trivial_usage NOUSAGE_STR
++//usage:#define netmsg_full_usage ""
++
++#ifndef CONFIG_NETMSG
++int main(int argc, char **argv)
++#else
++int netmsg_main(int argc, char **argv)
++#endif
++{
++ int s;
++ struct sockaddr_in addr;
++ int optval = 1;
++ unsigned char buf[1001];
++
++ if (argc != 3) {
++ fprintf(stderr, "usage: %s <ip> \"<message>\"\n", argv[0]);
++ exit(1);
++ }
++
++ if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
++ perror("Opening socket");
++ exit(1);
++ }
++
++ memset(&addr, 0, sizeof(addr));
++ addr.sin_family = AF_INET;
++ addr.sin_addr.s_addr = inet_addr(argv[1]);
++ addr.sin_port = htons(0x1337);
++
++ memset(buf, 0, 1001);
++ buf[0] = 0xde;
++ buf[1] = 0xad;
++
++ strncpy(buf + 2, argv[2], 998);
++
++ if (setsockopt (s, SOL_SOCKET, SO_BROADCAST, (caddr_t) &optval, sizeof (optval)) < 0) {
++ perror("setsockopt()");
++ goto fail;
++ }
++
++ if (sendto(s, buf, 1001, 0, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
++ perror("sendto()");
++ goto fail;
++ }
++
++ return 0;
++
++fail:
++ close(s);
++ exit(1);
++}
diff --git a/package/utils/busybox/patches/310-passwd_access.patch b/package/utils/busybox/patches/310-passwd_access.patch
new file mode 100644
index 0000000000..daa1b99983
--- /dev/null
+++ b/package/utils/busybox/patches/310-passwd_access.patch
@@ -0,0 +1,41 @@
+
+ Copyright (C) 2006 OpenWrt.org
+
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -1700,21 +1700,32 @@ static int check_user_passwd(const char
+
+ if (ENABLE_FEATURE_HTTPD_AUTH_MD5) {
+ char *md5_passwd;
++ int user_len_p1;
+
+ md5_passwd = strchr(cur->after_colon, ':');
+- if (md5_passwd && md5_passwd[1] == '$' && md5_passwd[2] == '1'
++ user_len_p1 = md5_passwd + 1 - cur->after_colon;
++ if (md5_passwd && !strncmp(md5_passwd + 1, "$p$", 3)) {
++ struct passwd *pwd = NULL;
++
++ pwd = getpwnam(&md5_passwd[4]);
++ if(!pwd->pw_passwd || !pwd->pw_passwd[0] || pwd->pw_passwd[0] == '!')
++ return 1;
++
++ md5_passwd = pwd->pw_passwd;
++ goto check_md5_pw;
++ } else if (md5_passwd && md5_passwd[1] == '$' && md5_passwd[2] == '1'
+ && md5_passwd[3] == '$' && md5_passwd[4]
+ ) {
+ char *encrypted;
+- int r, user_len_p1;
++ int r;
+
+ md5_passwd++;
+- user_len_p1 = md5_passwd - cur->after_colon;
+ /* comparing "user:" */
+ if (strncmp(cur->after_colon, user_and_passwd, user_len_p1) != 0) {
+ continue;
+ }
+
++check_md5_pw:
+ encrypted = pw_encrypt(
+ user_and_passwd + user_len_p1 /* cleartext pwd from user */,
+ md5_passwd /*salt */, 1 /* cleanup */);
diff --git a/package/utils/busybox/patches/340-lock_util.patch b/package/utils/busybox/patches/340-lock_util.patch
new file mode 100644
index 0000000000..eb346421a4
--- /dev/null
+++ b/package/utils/busybox/patches/340-lock_util.patch
@@ -0,0 +1,172 @@
+--- a/include/applets.src.h
++++ b/include/applets.src.h
+@@ -218,6 +218,7 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN,
+ IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
+ IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
+ IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))
++IF_LOCK(APPLET(lock, BB_DIR_BIN, BB_SUID_DROP))
+ IF_LOGGER(APPLET(logger, BB_DIR_USR_BIN, BB_SUID_DROP))
+ /* Needs to be run by root or be suid root - needs to change uid and gid: */
+ IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
+--- a/miscutils/Config.src
++++ b/miscutils/Config.src
+@@ -419,6 +419,11 @@ config FEATURE_HDPARM_HDIO_GETSET_DMA
+ help
+ Enables the 'hdparm -d' option to get/set using_dma flag.
+
++config LOCK
++ bool "lock"
++ help
++ Small utility for using locks in scripts
++
+ config MAKEDEVS
+ bool "makedevs"
+ default y
+--- a/miscutils/Kbuild.src
++++ b/miscutils/Kbuild.src
+@@ -29,6 +29,7 @@ lib-$(CONFIG_INOTIFYD) += inotifyd.o
+ lib-$(CONFIG_FEATURE_LAST_SMALL)+= last.o
+ lib-$(CONFIG_FEATURE_LAST_FANCY)+= last_fancy.o
+ lib-$(CONFIG_LESS) += less.o
++lib-$(CONFIG_LOCK) += lock.o
+ lib-$(CONFIG_MAKEDEVS) += makedevs.o
+ lib-$(CONFIG_MAN) += man.o
+ lib-$(CONFIG_MICROCOM) += microcom.o
+--- /dev/null
++++ b/miscutils/lock.c
+@@ -0,0 +1,135 @@
++/*
++ * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
++ *
++ * This is free software, licensed under the GNU General Public License v2.
++ */
++#include <sys/types.h>
++#include <sys/file.h>
++#include <sys/stat.h>
++#include <signal.h>
++#include <fcntl.h>
++#include <unistd.h>
++#include <stdio.h>
++#include "busybox.h"
++
++//usage:#define lock_trivial_usage NOUSAGE_STR
++//usage:#define lock_full_usage ""
++
++static int unlock = 0;
++static int shared = 0;
++static int waitonly = 0;
++static int fd;
++static char *file;
++
++static void usage(char *name)
++{
++ fprintf(stderr, "Usage: %s [-suw] <filename>\n"
++ " -s Use shared locking\n"
++ " -u Unlock\n"
++ " -w Wait for the lock to become free, don't acquire lock\n"
++ "\n", name);
++ exit(1);
++}
++
++static void exit_unlock(int sig)
++{
++ flock(fd, LOCK_UN);
++ exit(0);
++}
++
++static int do_unlock(void)
++{
++ FILE *f;
++ int i;
++
++ if ((f = fopen(file, "r")) == NULL)
++ return 0;
++
++ fscanf(f, "%d", &i);
++ if (i > 0)
++ kill(i, SIGTERM);
++
++ fclose(f);
++
++ return 0;
++}
++
++static int do_lock(void)
++{
++ int pid;
++ char pidstr[8];
++
++ if ((fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0700)) < 0) {
++ if ((fd = open(file, O_RDWR)) < 0) {
++ fprintf(stderr, "Can't open %s\n", file);
++ return 1;
++ }
++ }
++
++ if (flock(fd, (shared ? LOCK_SH : LOCK_EX)) < 0) {
++ fprintf(stderr, "Can't lock %s\n", file);
++ return 1;
++ }
++
++ pid = fork();
++
++ if (pid < 0)
++ return -1;
++
++ if (pid == 0) {
++ signal(SIGKILL, exit_unlock);
++ signal(SIGTERM, exit_unlock);
++ signal(SIGINT, exit_unlock);
++ if (waitonly)
++ exit_unlock(0);
++ else
++ while (1)
++ sleep(1);
++ } else {
++ if (!waitonly) {
++ lseek(fd, 0, SEEK_SET);
++ ftruncate(fd, 0);
++ sprintf(pidstr, "%d\n", pid);
++ write(fd, pidstr, strlen(pidstr));
++ close(fd);
++ }
++
++ return 0;
++ }
++ return 0;
++}
++
++int lock_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
++int lock_main(int argc, char **argv)
++{
++ char **args = &argv[1];
++ int c = argc - 1;
++
++ while ((*args != NULL) && (*args)[0] == '-') {
++ char *ch = *args;
++ while (*(++ch) > 0) {
++ switch(*ch) {
++ case 'w':
++ waitonly = 1;
++ break;
++ case 's':
++ shared = 1;
++ break;
++ case 'u':
++ unlock = 1;
++ break;
++ }
++ }
++ c--;
++ args++;
++ }
++
++ if (c != 1)
++ usage(argv[0]);
++
++ file = *args;
++ if (unlock)
++ return do_unlock();
++ else
++ return do_lock();
++}
diff --git a/package/utils/busybox/patches/350-httpd_redir.patch b/package/utils/busybox/patches/350-httpd_redir.patch
new file mode 100644
index 0000000000..11125e71f1
--- /dev/null
+++ b/package/utils/busybox/patches/350-httpd_redir.patch
@@ -0,0 +1,90 @@
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -105,6 +105,7 @@
+ //usage: IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]")
+ //usage: " [-h HOME]\n"
+ //usage: "or httpd -d/-e" IF_FEATURE_HTTPD_AUTH_MD5("/-m") " STRING"
++//usage: " [-R <path> [-H <host>]]"
+ //usage:#define httpd_full_usage "\n\n"
+ //usage: "Listen for incoming HTTP requests\n"
+ //usage: "\n -i Inetd mode"
+@@ -121,6 +122,8 @@
+ //usage: "\n -m STRING MD5 crypt STRING")
+ //usage: "\n -e STRING HTML encode STRING"
+ //usage: "\n -d STRING URL decode STRING"
++//usage: "\n -R PATH Redirect target path"
++//usage: "\n -H HOST Redirect target host"
+
+ #include "libbb.h"
+ #if ENABLE_FEATURE_HTTPD_USE_SENDFILE
+@@ -272,6 +275,8 @@ struct globals {
+
+ const char *found_mime_type;
+ const char *found_moved_temporarily;
++ const char *redirect_path;
++ const char *redirect_host;
+ Htaccess_IP *ip_a_d; /* config allow/deny lines */
+
+ IF_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
+@@ -322,6 +327,8 @@ struct globals {
+ #define index_page (G.index_page )
+ #define found_mime_type (G.found_mime_type )
+ #define found_moved_temporarily (G.found_moved_temporarily)
++#define redirect_path (G.redirect_path )
++#define redirect_host (G.redirect_host )
+ #define last_mod (G.last_mod )
+ #define ip_a_d (G.ip_a_d )
+ #define g_realm (G.g_realm )
+@@ -956,8 +963,11 @@ static void send_headers(int responseNum
+ }
+ #endif
+ if (responseNum == HTTP_MOVED_TEMPORARILY) {
+- len += sprintf(iobuf + len, "Location: %s/%s%s\r\n",
++ len += sprintf(iobuf + len, "Location: %s%s%s%s%s%s\r\n",
++ (redirect_host ? "http://" : ""),
++ (redirect_host ? redirect_host : ""),
+ found_moved_temporarily,
++ (redirect_host ? "" : "/"),
+ (g_query ? "?" : ""),
+ (g_query ? g_query : ""));
+ }
+@@ -1925,8 +1935,12 @@ static void handle_incoming_and_exit(con
+ } while (*++tptr);
+ *++urlp = '\0'; /* terminate after last character */
+
++ /* redirect active */
++ if (redirect_path && (strncmp(urlcopy, redirect_path, strlen(redirect_path)) != 0))
++ found_moved_temporarily = redirect_path;
++
+ /* If URL is a directory, add '/' */
+- if (urlp[-1] != '/') {
++ if (!redirect_path && (urlp[-1] != '/')) {
+ if (is_directory(urlcopy + 1, 1, NULL)) {
+ found_moved_temporarily = urlcopy;
+ }
+@@ -2283,7 +2297,9 @@ static void sighup_handler(int sig UNUSE
+ }
+
+ enum {
+- c_opt_config_file = 0,
++ R_opt_redirect_path = 0,
++ H_opt_redirect_host,
++ c_opt_config_file,
+ d_opt_decode_url,
+ h_opt_home_httpd,
+ IF_FEATURE_HTTPD_ENCODE_URL_STR(e_opt_encode_url,)
+@@ -2332,12 +2348,13 @@ int httpd_main(int argc UNUSED_PARAM, ch
+ /* We do not "absolutize" path given by -h (home) opt.
+ * If user gives relative path in -h,
+ * $SCRIPT_FILENAME will not be set. */
+- opt = getopt32(argv, "c:d:h:"
++ opt = getopt32(argv, "R:H:c:d:h:"
+ IF_FEATURE_HTTPD_ENCODE_URL_STR("e:")
+ IF_FEATURE_HTTPD_BASIC_AUTH("r:")
+ IF_FEATURE_HTTPD_AUTH_MD5("m:")
+ IF_FEATURE_HTTPD_SETUID("u:")
+ "p:ifv",
++ &redirect_path, &redirect_host,
+ &opt_c_configFile, &url_for_decode, &home_httpd
+ IF_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode)
+ IF_FEATURE_HTTPD_BASIC_AUTH(, &g_realm)
diff --git a/package/utils/busybox/patches/410-httpd_cgi_headers.patch b/package/utils/busybox/patches/410-httpd_cgi_headers.patch
new file mode 100644
index 0000000000..b02a5b9d71
--- /dev/null
+++ b/package/utils/busybox/patches/410-httpd_cgi_headers.patch
@@ -0,0 +1,16 @@
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -1222,10 +1222,10 @@ static NOINLINE void cgi_io_loop_and_exi
+ if (full_write(STDOUT_FILENO, HTTP_200, sizeof(HTTP_200)-1) != sizeof(HTTP_200)-1)
+ break;
+ }
+- /* Commented out:
+- if (!strstr(rbuf, "ontent-")) {
+- full_write(s, "Content-type: text/plain\r\n\r\n", 28);
++ if (!strstr(rbuf, "ontent-") && !strstr(rbuf, "ocation:")) {
++ full_write(1, "Content-type: text/plain\r\n\r\n", 28);
+ }
++ /* Previously commented out:
+ * Counter-example of valid CGI without Content-type:
+ * echo -en "HTTP/1.0 302 Found\r\n"
+ * echo -en "Location: http://www.busybox.net\r\n"
diff --git a/package/utils/busybox/patches/440-httpd_chdir.patch b/package/utils/busybox/patches/440-httpd_chdir.patch
new file mode 100644
index 0000000000..401c6eb5d0
--- /dev/null
+++ b/package/utils/busybox/patches/440-httpd_chdir.patch
@@ -0,0 +1,10 @@
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -1814,6 +1814,7 @@ static void handle_incoming_and_exit(con
+ char *header_ptr = header_ptr;
+ Htaccess_Proxy *proxy_entry;
+ #endif
++ xchdir(home_httpd);
+
+ /* Allocation of iobuf is postponed until now
+ * (IOW, server process doesn't need to waste 8k) */
diff --git a/package/utils/busybox/patches/470-insmod_search.patch b/package/utils/busybox/patches/470-insmod_search.patch
new file mode 100644
index 0000000000..7f0188fc82
--- /dev/null
+++ b/package/utils/busybox/patches/470-insmod_search.patch
@@ -0,0 +1,137 @@
+--- a/modutils/Config.src
++++ b/modutils/Config.src
+@@ -247,7 +247,7 @@ config FEATURE_MODUTILS_SYMBOLS
+ config DEFAULT_MODULES_DIR
+ string "Default directory containing modules"
+ default "/lib/modules"
+- depends on DEPMOD || MODPROBE || MODPROBE_SMALL || MODINFO
++ depends on DEPMOD || INSMOD || MODPROBE || MODPROBE_SMALL || MODINFO
+ help
+ Directory that contains kernel modules.
+ Defaults to "/lib/modules"
+--- a/modutils/insmod.c
++++ b/modutils/insmod.c
+@@ -11,6 +11,106 @@
+
+ #include "libbb.h"
+ #include "modutils.h"
++#include <sys/utsname.h>
++#ifndef CONFIG_FEATURE_2_4_MODULES
++#include <sys/mman.h>
++#include <asm/unistd.h>
++#include <sys/syscall.h>
++#endif
++
++static char *g_filename = NULL;
++
++static int FAST_FUNC check_module_name_match(const char *filename, struct stat *statbuf,
++ void *userdata, int depth)
++{
++ char *fullname = (char *) userdata;
++ char *tmp;
++
++ if (fullname[0] == '\0')
++ return FALSE;
++
++ tmp = bb_get_last_path_component_nostrip(filename);
++ if (strcmp(tmp, fullname) == 0) {
++ /* Stop searching if we find a match */
++ g_filename = xstrdup(filename);
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++static int find_module(char *filename)
++{
++ char *module_dir, real_module_dir[FILENAME_MAX];
++ int len, slen, ret = ENOENT, k_version;
++ struct utsname myuname;
++ const char *suffix = ".ko";
++ struct stat st;
++
++ /* check the kernel version */
++ if (uname(&myuname) != 0)
++ return EINVAL;
++
++ k_version = myuname.release[0] - '0';
++
++ if (k_version < 2 || k_version > 9)
++ return EINVAL;
++
++ if (k_version == 2) {
++ int k_patchlevel = myuname.release[2] - '0';
++ if (k_patchlevel <= 4)
++#if ENABLE_FEATURE_2_4_MODULES
++ suffix = ".o";
++#else
++ return EINVAL;
++#endif
++ }
++
++ len = strlen(filename);
++ slen = strlen(suffix);
++
++ /* check for suffix and absolute path first */
++ if ((len < slen + 2) || (strcmp(filename + len - slen, suffix) != 0)) {
++ filename = xasprintf("%s%s", filename, suffix);
++ } else {
++ filename = strdup(filename);
++ if ((stat(filename, &st) == 0) && S_ISREG(st.st_mode)) {
++ g_filename = filename;
++ return 0;
++ }
++ free(filename);
++ return ENOENT;
++ }
++
++ /* next: scan /lib/modules/<release> */
++ /* Jump through hoops in case /lib/modules/`uname -r`
++ * is a symlink. We do not want recursive_action to
++ * follow symlinks, but we do want to follow the
++ * /lib/modules/`uname -r` dir, So resolve it ourselves
++ * if it is a link... */
++ module_dir = concat_path_file(CONFIG_DEFAULT_MODULES_DIR, myuname.release);
++ if (realpath(module_dir, real_module_dir) != NULL) {
++ free(module_dir);
++ module_dir = real_module_dir;
++ }
++
++ recursive_action(module_dir, ACTION_RECURSE,
++ check_module_name_match, 0, filename, 0);
++
++ /* Check if we have a complete path */
++ if (g_filename == NULL)
++ goto done;
++
++ if ((stat(g_filename, &st) == 0) && S_ISREG(st.st_mode))
++ ret = 0;
++ else
++ free(g_filename);
++
++done:
++ free(filename);
++
++ return ret;
++}
+
+ /* 2.6 style insmod has no options and required filename
+ * (not module name - .ko can't be omitted) */
+@@ -58,9 +158,15 @@ int insmod_main(int argc UNUSED_PARAM, c
+ if (!filename)
+ bb_show_usage();
+
+- rc = bb_init_module(filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
++ rc = find_module(filename);
++ if (rc || (g_filename == NULL))
++ goto done;
++
++ rc = bb_init_module(g_filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
+ if (rc)
+ bb_error_msg("can't insert '%s': %s", filename, moderror(rc));
++ free (g_filename);
+
++done:
+ return rc;
+ }
diff --git a/package/utils/busybox/patches/490-mount_disable_check.patch b/package/utils/busybox/patches/490-mount_disable_check.patch
new file mode 100644
index 0000000000..2fcb7f7fc2
--- /dev/null
+++ b/package/utils/busybox/patches/490-mount_disable_check.patch
@@ -0,0 +1,12 @@
+--- a/util-linux/mount.c
++++ b/util-linux/mount.c
+@@ -128,9 +128,6 @@
+ #if ENABLE_FEATURE_MOUNT_NFS
+ /* This is just a warning of a common mistake. Possibly this should be a
+ * uclibc faq entry rather than in busybox... */
+-# if defined(__UCLIBC__) && ! defined(__UCLIBC_HAS_RPC__)
+-# error "You need to build uClibc with UCLIBC_HAS_RPC for NFS support"
+-# endif
+ # include <rpc/rpc.h>
+ # include <rpc/pmap_prot.h>
+ # include <rpc/pmap_clnt.h>
diff --git a/package/utils/busybox/patches/510-awk_include.patch b/package/utils/busybox/patches/510-awk_include.patch
new file mode 100644
index 0000000000..9f525acf86
--- /dev/null
+++ b/package/utils/busybox/patches/510-awk_include.patch
@@ -0,0 +1,217 @@
+--- a/editors/awk.c
++++ b/editors/awk.c
+@@ -1,3 +1,4 @@
++
+ /* vi: set sw=4 ts=4: */
+ /*
+ * awk implementation for busybox
+@@ -81,9 +82,14 @@ typedef struct chain_s {
+ } chain;
+
+ /* Function */
++typedef var *(*awk_cfunc)(var *res, var *args, int nargs);
+ typedef struct func_s {
+ unsigned nargs;
++ enum { AWKFUNC, CFUNC } type;
++ union {
++ awk_cfunc cfunc;
+ struct chain_s body;
++ } x;
+ } func;
+
+ /* I/O stream */
+@@ -1473,7 +1479,8 @@ static void parse_program(char *p)
+ next_token(TC_FUNCTION);
+ g_pos++;
+ f = newfunc(t_string);
+- f->body.first = NULL;
++ f->type = AWKFUNC;
++ f->x.body.first = NULL;
+ f->nargs = 0;
+ while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
+ v = findvar(ahash, t_string);
+@@ -1482,7 +1489,7 @@ static void parse_program(char *p)
+ if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
+ break;
+ }
+- seq = &f->body;
++ seq = &f->x.body;
+ chain_group();
+ clear_array(ahash);
+
+@@ -2580,7 +2587,8 @@ static var *evaluate(node *op, var *res)
+ var *vbeg, *v;
+ const char *sv_progname;
+
+- if (!op->r.f->body.first)
++ if ((op->r.f->type == AWKFUNC) &&
++ !op->r.f->x.body.first)
+ syntax_error(EMSG_UNDEF_FUNC);
+
+ vbeg = v = nvalloc(op->r.f->nargs + 1);
+@@ -2597,7 +2605,10 @@ static var *evaluate(node *op, var *res)
+ fnargs = vbeg;
+ sv_progname = g_progname;
+
+- res = evaluate(op->r.f->body.first, res);
++ if (op->r.f->type == AWKFUNC)
++ res = evaluate(op->r.f->x.body.first, res);
++ else if (op->r.f->type == CFUNC)
++ res = op->r.f->x.cfunc(res, fnargs, op->r.f->nargs);
+
+ g_progname = sv_progname;
+ nvfree(fnargs);
+@@ -2991,6 +3002,143 @@ static rstream *next_input_file(void)
+ #undef files_happen
+ }
+
++/* read the contents of an entire file */
++static char *get_file(const char *fname)
++{
++ FILE *F;
++ char *s = NULL;
++ int i, j, flen;
++
++ F = fopen(fname, "r");
++ if (!F) {
++ return NULL;
++ }
++
++ if (fseek(F, 0, SEEK_END) == 0) {
++ flen = ftell(F);
++ s = (char *)xmalloc(flen+4);
++ fseek(F, 0, SEEK_SET);
++ i = 1 + fread(s+1, 1, flen, F);
++ } else {
++ for (i=j=1; j>0; i+=j) {
++ s = (char *)xrealloc(s, i+4096);
++ j = fread(s+i, 1, 4094, F);
++ }
++ }
++
++ s[i] = '\0';
++ fclose(F);
++ return s;
++}
++
++
++/* parse_include():
++ *
++ * taken from parse_program from awk.c
++ * END{} is not parsed here, and BEGIN{} is executed immediately
++ */
++static void parse_include(char *p)
++{
++ uint32_t tclass;
++ chain *initseq = NULL;
++ chain tmp;
++ func *f;
++ var *v, *tv;
++
++ tv = nvalloc(1);
++ memset(&tmp, 0, sizeof(tmp));
++ g_pos = p;
++ t_lineno = 1;
++ while ((tclass = next_token(TC_EOF | TC_OPSEQ |
++ TC_OPTERM | TC_BEGIN | TC_FUNCDECL)) != TC_EOF) {
++ if (tclass & TC_OPTERM)
++ continue;
++
++ seq = &tmp;
++ if (tclass & TC_BEGIN) {
++ initseq = xzalloc(sizeof(chain));
++ seq = initseq;
++ chain_group();
++ } else if (tclass & TC_FUNCDECL) {
++ next_token(TC_FUNCTION);
++ g_pos++;
++ f = newfunc(t_string);
++ f->type = AWKFUNC;
++ f->x.body.first = NULL;
++ f->nargs = 0;
++ while (next_token(TC_VARIABLE | TC_SEQTERM) & TC_VARIABLE) {
++ v = findvar(ahash, t_string);
++ v->x.aidx = (f->nargs)++;
++
++ if (next_token(TC_COMMA | TC_SEQTERM) & TC_SEQTERM)
++ break;
++ }
++ seq = &(f->x.body);
++ chain_group();
++ clear_array(ahash);
++ }
++ }
++ if (initseq && initseq->first)
++ tv = evaluate(initseq->first, tv);
++ nvfree(tv);
++}
++
++
++/* include an awk file and run its BEGIN{} section */
++static xhash *includes = NULL;
++static void include_file(const char *filename)
++{
++ char *s;
++ var *v;
++ int oldlnr = g_lineno;
++ const char *oldprg = g_progname;
++
++ if (!includes)
++ includes = hash_init();
++
++ /* find out if the file has been included already */
++ v = findvar(includes, filename);
++ if (istrue(v))
++ return;
++ setvar_s(v, "1");
++
++ /* read include file */
++ s = get_file(filename);
++ if (!s) {
++ fprintf(stderr, "Could not open file.\n");
++ return;
++ }
++ g_lineno = 1;
++ g_progname = xstrdup(filename);
++ parse_include(s+1);
++ free(s);
++ g_lineno = oldlnr;
++ g_progname = oldprg;
++}
++
++static var *include(var *res, var *args, int nargs)
++{
++ const char *s;
++
++ nargs = nargs; /* shut up, gcc */
++ s = getvar_s(args);
++ if (s && (strlen(s) > 0))
++ include_file(s);
++
++ return res;
++}
++
++/* registers a global c function for the awk interpreter */
++static void register_cfunc(const char *name, awk_cfunc cfunc, int nargs)
++{
++ func *f;
++
++ f = newfunc(name);
++ f->type = CFUNC;
++ f->x.cfunc = cfunc;
++ f->nargs = nargs;
++}
++
+ int awk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int awk_main(int argc, char **argv)
+ {
+@@ -3056,6 +3204,9 @@ int awk_main(int argc, char **argv)
+ *s1 = '=';
+ }
+ }
++
++ register_cfunc("include", include, 1);
++
+ opt_complementary = "v::f::"; /* -v and -f can occur multiple times */
+ opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, &opt_W);
+ argv += optind;
diff --git a/package/utils/busybox/patches/524-udhcpc_renew.patch b/package/utils/busybox/patches/524-udhcpc_renew.patch
new file mode 100644
index 0000000000..c22fa52ea2
--- /dev/null
+++ b/package/utils/busybox/patches/524-udhcpc_renew.patch
@@ -0,0 +1,10 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1045,7 +1045,6 @@ static void perform_renew(void)
+ state = RENEW_REQUESTED;
+ break;
+ case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
+- udhcp_run_script(NULL, "deconfig");
+ case REQUESTING:
+ case RELEASED:
+ change_listen_mode(LISTEN_RAW);
diff --git a/package/utils/busybox/patches/610-ntpd_delayed_resolve.patch b/package/utils/busybox/patches/610-ntpd_delayed_resolve.patch
new file mode 100644
index 0000000000..5e17ae16c2
--- /dev/null
+++ b/package/utils/busybox/patches/610-ntpd_delayed_resolve.patch
@@ -0,0 +1,48 @@
+--- a/networking/ntpd.c
++++ b/networking/ntpd.c
+@@ -216,6 +216,7 @@ typedef struct {
+ typedef struct {
+ len_and_sockaddr *p_lsa;
+ char *p_dotted;
++ char *p_hostname;
+ /* when to send new query (if p_fd == -1)
+ * or when receive times out (if p_fd >= 0): */
+ int p_fd;
+@@ -646,8 +647,9 @@ add_peers(char *s)
+ peer_t *p;
+
+ p = xzalloc(sizeof(*p));
+- p->p_lsa = xhost2sockaddr(s, 123);
+- p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa);
++ p->p_hostname = s;
++ p->p_lsa = NULL;
++ p->p_dotted = NULL;
+ p->p_fd = -1;
+ p->p_xmt_msg.m_status = MODE_CLIENT | (NTP_VERSION << 3);
+ p->next_action_time = G.cur_time; /* = set_next(p, 0); */
+@@ -696,6 +698,25 @@ send_query_to_peer(peer_t *p)
+ *
+ * Uncomment this and use strace to see it in action:
+ */
++
++ /* See if the peer hostname already resolved yet, if not, retry to resolv and return on failure */
++ if (!p->p_lsa)
++ {
++ p->p_lsa = host2sockaddr(p->p_hostname, 123);
++
++ if (p->p_lsa)
++ {
++ p->p_dotted = xmalloc_sockaddr2dotted_noport(&p->p_lsa->u.sa);
++ VERB1 bb_error_msg("resolved peer %s to %s", p->p_hostname, p->p_dotted);
++ }
++ else
++ {
++ set_next(p, RETRY_INTERVAL);
++ VERB1 bb_error_msg("could not resolve peer %s, skipping", p->p_hostname);
++ return;
++ }
++ }
++
+ #define PROBE_LOCAL_ADDR /* { len_and_sockaddr lsa; lsa.len = LSA_SIZEOF_SA; getsockname(p->query.fd, &lsa.u.sa, &lsa.len); } */
+
+ if (p->p_fd == -1) {
diff --git a/package/utils/busybox/patches/611-upstream_ntpd_version_fix.patch b/package/utils/busybox/patches/611-upstream_ntpd_version_fix.patch
new file mode 100644
index 0000000000..7bcb8475d7
--- /dev/null
+++ b/package/utils/busybox/patches/611-upstream_ntpd_version_fix.patch
@@ -0,0 +1,29 @@
+From b7841cf7b919b16d1bd4619154bf7cb4c22b4ccd Mon Sep 17 00:00:00 2001
+From: Paul Marks <paul@pmarks.net>
+Date: Mon, 14 Jan 2013 01:39:10 +0000
+Subject: ntpd: fix incorrect m_status field in outgoing packets. Closes 5120
+
+When using busybox ntpd with an NTPv3 client and NTPv4 server (or vice
+versa), the version numbers can be incorrectly ORed together, yielding
+the bogus value of "NTPv7". This makes ntpd unusable with clients
+such as Chrony and Windows "Internet Time".
+
+This patch avoids the version mangling, by copying only the Leap
+Indicator bits from the server's status field.
+
+Signed-off-by: Paul Marks <paul@pmarks.net>
+Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
+---
+(limited to 'networking/ntpd.c')
+
+--- a/networking/ntpd.c
++++ b/networking/ntpd.c
+@@ -1794,7 +1794,7 @@ recv_and_process_client_pkt(void /*int f
+
+ /* Build a reply packet */
+ memset(&msg, 0, sizeof(msg));
+- msg.m_status = G.stratum < MAXSTRAT ? G.ntp_status : LI_ALARM;
++ msg.m_status = G.stratum < MAXSTRAT ? (G.ntp_status & LI_MASK) : LI_ALARM;
+ msg.m_status |= (query_status & VERSION_MASK);
+ msg.m_status |= ((query_status & MODE_MASK) == MODE_CLIENT) ?
+ MODE_SERVER : MODE_SYM_PAS;
diff --git a/package/utils/busybox/patches/700-hexdump_segfault_fix.patch b/package/utils/busybox/patches/700-hexdump_segfault_fix.patch
new file mode 100644
index 0000000000..ab09fb3e42
--- /dev/null
+++ b/package/utils/busybox/patches/700-hexdump_segfault_fix.patch
@@ -0,0 +1,11 @@
+--- a/libbb/dump.c
++++ b/libbb/dump.c
+@@ -301,7 +301,7 @@ static NOINLINE void rewrite(priv_dumper
+ ) {
+ fu->reps += (dumper->blocksize - fs->bcnt) / fu->bcnt;
+ }
+- if (fu->reps > 1) {
++ if (fu->reps > 1 && fu->nextpr) {
+ for (pr = fu->nextpr;; pr = pr->nextpr)
+ if (!pr->nextpr)
+ break;
diff --git a/package/utils/busybox/patches/802-brctl_linux24.patch b/package/utils/busybox/patches/802-brctl_linux24.patch
new file mode 100644
index 0000000000..8cc19779a2
--- /dev/null
+++ b/package/utils/busybox/patches/802-brctl_linux24.patch
@@ -0,0 +1,74 @@
+--- a/networking/brctl.c
++++ b/networking/brctl.c
+@@ -56,7 +56,7 @@
+
+ /* Maximum number of ports supported per bridge interface. */
+ #ifndef MAX_PORTS
+-# define MAX_PORTS 32
++# define MAX_PORTS 1024
+ #endif
+
+ /* Use internal number parsing and not the "exact" conversion. */
+@@ -193,6 +193,7 @@ int brctl_main(int argc UNUSED_PARAM, ch
+ printf(bi.stp_enabled ? "\tyes" : "\tno");
+
+ /* print interface list */
++ memset(ifidx, 0, sizeof ifidx);
+ arm_ioctl(args, BRCTL_GET_PORT_LIST,
+ (unsigned long) ifidx, MAX_PORTS);
+ xioctl(fd, SIOCDEVPRIVATE, &ifr);
+@@ -221,9 +222,19 @@ int brctl_main(int argc UNUSED_PARAM, ch
+ br = *argv++;
+
+ if (key == ARG_addbr || key == ARG_delbr) { /* addbr or delbr */
+- ioctl_or_perror_and_die(fd,
+- key == ARG_addbr ? SIOCBRADDBR : SIOCBRDELBR,
+- br, "bridge %s", br);
++ int ret;
++ ret = ioctl(fd,
++ key == ARG_addbr ? SIOCBRADDBR : SIOCBRDELBR,
++ br);
++ if (ret < 0) {
++ arm_ioctl(args,
++ key == ARG_addbr ? BRCTL_ADD_BRIDGE : BRCTL_DEL_BRIDGE,
++ (unsigned long) br, 0);
++ ret = ioctl(fd, SIOCSIFBR, args);
++ }
++ if (ret < 0) {
++ bb_perror_msg_and_die("bridge %s", br);
++ }
+ goto done;
+ }
+
+@@ -232,14 +243,27 @@ int brctl_main(int argc UNUSED_PARAM, ch
+
+ strncpy_IFNAMSIZ(ifr.ifr_name, br);
+ if (key == ARG_addif || key == ARG_delif) { /* addif or delif */
++ int ret;
++ int if_index;
+ brif = *argv;
+- ifr.ifr_ifindex = if_nametoindex(brif);
+- if (!ifr.ifr_ifindex) {
++ if_index = if_nametoindex(brif);
++ if (!if_index) {
+ bb_perror_msg_and_die("iface %s", brif);
+ }
+- ioctl_or_perror_and_die(fd,
++ ifr.ifr_ifindex = if_index;
++ ret = ioctl(fd,
+ key == ARG_addif ? SIOCBRADDIF : SIOCBRDELIF,
+- &ifr, "bridge %s", br);
++ &ifr);
++ if (ret < 0) {
++ arm_ioctl(args,
++ key == ARG_addif ? BRCTL_ADD_IF : BRCTL_DEL_IF,
++ if_index, 0);
++ ifr.ifr_data = (char *) &args;
++ ret = ioctl(fd, SIOCDEVPRIVATE, &ifr);
++ }
++ if (ret < 0) {
++ bb_perror_msg_and_die("bridge %s", br);
++ }
+ goto done_next_argv;
+ }
+ #if ENABLE_FEATURE_BRCTL_FANCY
diff --git a/package/utils/busybox/patches/902-telnetd_intr.patch b/package/utils/busybox/patches/902-telnetd_intr.patch
new file mode 100644
index 0000000000..862ece055d
--- /dev/null
+++ b/package/utils/busybox/patches/902-telnetd_intr.patch
@@ -0,0 +1,10 @@
+--- a/networking/telnetd.c
++++ b/networking/telnetd.c
+@@ -330,6 +330,7 @@ make_new_session(
+
+ /* Restore default signal handling ASAP */
+ bb_signals((1 << SIGCHLD) + (1 << SIGPIPE), SIG_DFL);
++ signal(SIGINT, SIG_DFL);
+
+ pid = getpid();
+
diff --git a/package/utils/busybox/patches/910-insmod-q-flag.patch b/package/utils/busybox/patches/910-insmod-q-flag.patch
new file mode 100644
index 0000000000..6002f20f1b
--- /dev/null
+++ b/package/utils/busybox/patches/910-insmod-q-flag.patch
@@ -0,0 +1,33 @@
+--- a/modutils/insmod.c
++++ b/modutils/insmod.c
+@@ -139,7 +139,7 @@ int insmod_main(int argc, char **argv) M
+ int insmod_main(int argc UNUSED_PARAM, char **argv)
+ {
+ char *filename;
+- int rc;
++ int rc, opt;
+
+ /* Compat note:
+ * 2.6 style insmod has no options and required filename
+@@ -149,10 +149,8 @@ int insmod_main(int argc UNUSED_PARAM, c
+ * or in $MODPATH.
+ */
+
+- IF_FEATURE_2_4_MODULES(
+- getopt32(argv, INSMOD_OPTS INSMOD_ARGS);
+- argv += optind - 1;
+- );
++ opt = getopt32(argv, INSMOD_OPTS, NULL, NULL);
++ argv += optind - 1;
+
+ filename = *++argv;
+ if (!filename)
+@@ -163,7 +161,7 @@ int insmod_main(int argc UNUSED_PARAM, c
+ goto done;
+
+ rc = bb_init_module(g_filename, parse_cmdline_module_options(argv, /*quote_spaces:*/ 0));
+- if (rc)
++ if (rc && !(opt & INSMOD_OPT_SILENT))
+ bb_error_msg("can't insert '%s': %s", filename, moderror(rc));
+ free (g_filename);
+
diff --git a/package/utils/busybox/patches/911-date-k-flag.patch b/package/utils/busybox/patches/911-date-k-flag.patch
new file mode 100644
index 0000000000..c55ee23369
--- /dev/null
+++ b/package/utils/busybox/patches/911-date-k-flag.patch
@@ -0,0 +1,87 @@
+--- a/coreutils/date.c
++++ b/coreutils/date.c
+@@ -123,6 +123,7 @@
+ //usage: IF_FEATURE_DATE_ISOFMT(
+ //usage: "\n -D FMT Use FMT for -d TIME conversion"
+ //usage: )
++//usage: "\n -k Set Kernel timezone from localtime and exit"
+ //usage: "\n"
+ //usage: "\nRecognized TIME formats:"
+ //usage: "\n hh:mm[:ss]"
+@@ -135,6 +136,7 @@
+ //usage: "Wed Apr 12 18:52:41 MDT 2000\n"
+
+ #include "libbb.h"
++#include <sys/time.h>
+ #if ENABLE_FEATURE_DATE_NANO
+ # include <sys/syscall.h>
+ #endif
+@@ -145,8 +147,9 @@ enum {
+ OPT_UTC = (1 << 2), /* u */
+ OPT_DATE = (1 << 3), /* d */
+ OPT_REFERENCE = (1 << 4), /* r */
+- OPT_TIMESPEC = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
+- OPT_HINT = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
++ OPT_KERNELTZ = (1 << 5), /* k */
++ OPT_TIMESPEC = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* I */
++ OPT_HINT = (1 << 7) * ENABLE_FEATURE_DATE_ISOFMT, /* D */
+ };
+
+ static void maybe_set_utc(int opt)
+@@ -164,12 +167,15 @@ static const char date_longopts[] ALIGN1
+ /* "universal\0" No_argument "u" */
+ "date\0" Required_argument "d"
+ "reference\0" Required_argument "r"
++ "set-kernel-tz\0" No_argument "k"
+ ;
+ #endif
+
+ int date_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+ int date_main(int argc UNUSED_PARAM, char **argv)
+ {
++ time_t tt;
++ struct timezone tz;
+ struct timespec ts;
+ struct tm tm_time;
+ char buf_fmt_dt2str[64];
+@@ -184,7 +190,7 @@ int date_main(int argc UNUSED_PARAM, cha
+ opt_complementary = "d--s:s--d"
+ IF_FEATURE_DATE_ISOFMT(":R--I:I--R");
+ IF_LONG_OPTS(applet_long_options = date_longopts;)
+- opt = getopt32(argv, "Rs:ud:r:"
++ opt = getopt32(argv, "Rs:ud:r:k"
+ IF_FEATURE_DATE_ISOFMT("I::D:"),
+ &date_str, &date_str, &filename
+ IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt));
+@@ -241,6 +247,31 @@ int date_main(int argc UNUSED_PARAM, cha
+ if (*argv)
+ bb_show_usage();
+
++ /* Setting of kernel timezone was requested */
++ if (opt & OPT_KERNELTZ) {
++ tt = time(NULL);
++ localtime_r(&tt, &tm_time);
++
++ /* workaround warp_clock() on first invocation */
++ memset(&tz, 0, sizeof(tz));
++ settimeofday(NULL, &tz);
++
++ memset(&tz, 0, sizeof(tz));
++#ifdef __USE_BSD
++ tz.tz_minuteswest = -(tm_time.tm_gmtoff / 60);
++#else
++ tz.tz_minuteswest = -(tm_time.__tm_gmtoff / 60);
++#endif
++
++ if (settimeofday(NULL, &tz))
++ {
++ bb_perror_msg("can't set kernel time zone");
++ return EXIT_FAILURE;
++ }
++
++ return EXIT_SUCCESS;
++ }
++
+ /* Now we have parsed all the information except the date format
+ * which depends on whether the clock is being set or read */
+
diff --git a/package/utils/busybox/patches/920-portability.patch b/package/utils/busybox/patches/920-portability.patch
new file mode 100644
index 0000000000..4e5b9a0576
--- /dev/null
+++ b/package/utils/busybox/patches/920-portability.patch
@@ -0,0 +1,13 @@
+--- a/scripts/kconfig/mconf.c
++++ b/scripts/kconfig/mconf.c
+@@ -25,6 +25,10 @@
+ #include <unistd.h>
+ #include <locale.h>
+
++#ifndef SIGWINCH
++#define SIGWINCH 28
++#endif
++
+ #define LKC_DIRECT_LINK
+ #include "lkc.h"
+
diff --git a/package/utils/busybox/patches/950-partial-checksum.patch b/package/utils/busybox/patches/950-partial-checksum.patch
new file mode 100644
index 0000000000..6e8a69e9a6
--- /dev/null
+++ b/package/utils/busybox/patches/950-partial-checksum.patch
@@ -0,0 +1,86 @@
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -26,8 +26,8 @@
+ #include "dhcpc.h"
+
+ #include <netinet/if_ether.h>
+-#include <netpacket/packet.h>
+ #include <linux/filter.h>
++#include <linux/if_packet.h>
+
+ /* struct client_config_t client_config is in bb_common_bufsiz1 */
+
+@@ -846,17 +846,41 @@ static int send_release(uint32_t server,
+ static NOINLINE int udhcp_recv_raw_packet(struct dhcp_packet *dhcp_pkt, int fd)
+ {
+ int bytes;
++ int nocsum = 0;
+ struct ip_udp_dhcp_packet packet;
+ uint16_t check;
++ unsigned char cmsgbuf[CMSG_LEN(sizeof(struct tpacket_auxdata))];
++ struct iovec iov = {
++ .iov_base = &packet,
++ .iov_len = sizeof(packet),
++ };
++ struct msghdr msg = {
++ .msg_iov = &iov,
++ .msg_iovlen = 1,
++ .msg_control = cmsgbuf,
++ .msg_controllen = sizeof(cmsgbuf),
++ };
++ struct cmsghdr *cmsg;
+
+ memset(&packet, 0, sizeof(packet));
+- bytes = safe_read(fd, &packet, sizeof(packet));
++ do {
++ bytes = recvmsg(fd, &msg, 0);
++ } while (bytes < 0 && errno == EINTR);
++
+ if (bytes < 0) {
+ log1("Packet read error, ignoring");
+ /* NB: possible down interface, etc. Caller should pause. */
+ return bytes; /* returns -1 */
+ }
+
++ for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
++ if (cmsg->cmsg_level == SOL_PACKET &&
++ cmsg->cmsg_type == PACKET_AUXDATA) {
++ struct tpacket_auxdata *aux = (void *)CMSG_DATA(cmsg);
++ nocsum = aux->tp_status & TP_STATUS_CSUMNOTREADY;
++ }
++ }
++
+ if (bytes < (int) (sizeof(packet.ip) + sizeof(packet.udp))) {
+ log1("Packet is too short, ignoring");
+ return -2;
+@@ -896,7 +920,7 @@ static NOINLINE int udhcp_recv_raw_packe
+ packet.ip.tot_len = packet.udp.len; /* yes, this is needed */
+ check = packet.udp.check;
+ packet.udp.check = 0;
+- if (check && check != udhcp_checksum(&packet, bytes)) {
++ if (!nocsum && check && check != udhcp_checksum(&packet, bytes)) {
+ log1("Packet with bad UDP checksum received, ignoring");
+ return -2;
+ }
+@@ -942,6 +966,7 @@ static int udhcp_raw_socket(int ifindex)
+ {
+ int fd;
+ struct sockaddr_ll sock;
++ int val;
+
+ /*
+ * Comment:
+@@ -1008,6 +1033,13 @@ static int udhcp_raw_socket(int ifindex)
+ log1("Attached filter to raw socket fd %d", fd); // log?
+ }
+
++ val = 1;
++ if (setsockopt(fd, SOL_PACKET, PACKET_AUXDATA, &val,
++ sizeof(val)) < 0) {
++ if (errno != ENOPROTOOPT)
++ log1("Failed to set auxiliary packet data for socket fd %d", fd);
++ }
++
+ log1("Created raw socket");
+
+ return fd;
diff --git a/package/utils/busybox/patches/998-arping_missing_includes.patch b/package/utils/busybox/patches/998-arping_missing_includes.patch
new file mode 100644
index 0000000000..a9d4a62af3
--- /dev/null
+++ b/package/utils/busybox/patches/998-arping_missing_includes.patch
@@ -0,0 +1,11 @@
+--- a/networking/arping.c
++++ b/networking/arping.c
+@@ -24,6 +24,8 @@
+
+ #include <arpa/inet.h>
+ #include <net/if.h>
++#include <net/if_arp.h>
++#include <netinet/if_ether.h>
+ #include <netinet/ether.h>
+ #include <netpacket/packet.h>
+
diff --git a/package/utils/busybox/patches/999-musl-fixes.patch b/package/utils/busybox/patches/999-musl-fixes.patch
new file mode 100644
index 0000000000..b528b3e81b
--- /dev/null
+++ b/package/utils/busybox/patches/999-musl-fixes.patch
@@ -0,0 +1,16 @@
+--- a/include/platform.h
++++ b/include/platform.h
+@@ -443,6 +443,13 @@ typedef unsigned smalluint;
+ # undef HAVE_NET_ETHERNET_H
+ #endif
+
++#if defined(__musl__)
++# undef HAVE_SETBIT
++# include <stddef.h>
++# include <termios.h>
++# include <sys/ioctl.h>
++#endif
++
+ /*
+ * Now, define prototypes for all the functions defined in platform.c
+ * These must come after all the HAVE_* macros are defined (or not)