瀏覽代碼

Merge branch 'master' of git+ssh://openadk.org/git/openadk

Waldemar Brodkorb 15 年之前
父節點
當前提交
44dad747bf
共有 43 個文件被更改,包括 2427 次插入645 次删除
  1. 37 23
      mk/modules.mk
  2. 1 0
      package/Config.in
  3. 7 3
      package/busybox/Makefile
  4. 18 10
      package/busybox/config/Config.in
  5. 20 5
      package/busybox/config/archival/Config.in
  6. 46 6
      package/busybox/config/coreutils/Config.in
  7. 5 14
      package/busybox/config/editors/Config.in
  8. 17 10
      package/busybox/config/findutils/Config.in
  9. 2 3
      package/busybox/config/libbb/Config.in
  10. 18 5
      package/busybox/config/miscutils/Config.in
  11. 16 0
      package/busybox/config/modutils/Config.in
  12. 70 10
      package/busybox/config/networking/Config.in
  13. 14 14
      package/busybox/config/networking/udhcp/Config.in
  14. 10 4
      package/busybox/config/procps/Config.in
  15. 11 18
      package/busybox/config/shell/Config.in
  16. 1 1
      package/busybox/config/sysklogd/Config.in
  17. 41 3
      package/busybox/config/util-linux/Config.in
  18. 139 97
      package/busybox/patches/001-ipkg.patch
  19. 1 1
      package/cfgfs/Makefile
  20. 2 0
      package/cfgfs/src/fwcf.sh
  21. 1 1
      package/igmpproxy/Makefile
  22. 1 0
      package/igmpproxy/files/igmpproxy.conffiles
  23. 26 0
      package/igmpproxy/files/igmpproxy.init
  24. 3 0
      package/igmpproxy/files/igmpproxy.postinst
  25. 9 3
      package/krb5/Makefile
  26. 1 1
      package/nand/src/nand.c
  27. 38 0
      package/rtsp/Makefile
  28. 24 0
      package/rtsp/src/Makefile
  29. 40 0
      package/rtsp/src/README.rst
  30. 133 0
      package/rtsp/src/netfilter_helpers.h
  31. 89 0
      package/rtsp/src/netfilter_mime.h
  32. 545 0
      package/rtsp/src/nf_conntrack_rtsp.c
  33. 63 0
      package/rtsp/src/nf_conntrack_rtsp.h
  34. 531 0
      package/rtsp/src/nf_nat_rtsp.c
  35. 0 1
      package/zlib/Makefile
  36. 3 0
      target/Config.in
  37. 24 0
      target/linux/config/Config.in.fs
  38. 5 287
      target/linux/config/Config.in.netfilter
  39. 182 0
      target/linux/config/Config.in.netfilter.core
  40. 229 0
      target/linux/config/Config.in.netfilter.ebt
  41. 1 122
      target/linux/config/Config.in.netfilter.ip4
  42. 2 0
      target/linux/config/Config.in.netfilter.ip6
  43. 1 3
      target/rb532/kernel.config

+ 37 - 23
mk/modules.mk

@@ -370,36 +370,55 @@ $(eval $(call KMOD_template,NF_CONNTRACK_IPV4,nf-conntrack-ipv4,\
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_conntrack_ipv4 \
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_conntrack_ipv4 \
 ,50))
 ,50))
 
 
-$(eval $(call KMOD_template,IP_NF_FTP,ip-nf-ftp,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_ftp \
-,55))
+$(eval $(call KMOD_template,NF_NAT,nf-nat,\
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/iptable_nat \
+,50))
 
 
-$(eval $(call KMOD_template,IP_NF_IRC,ip-nf-irc,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_irc \
+$(eval $(call KMOD_template,NF_CONNTRACK_FTP,nf-conntrack-ftp,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_ftp \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_ftp \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_NETBIOS_NS,ip-nf-netbios-ns,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_netbios_ns \
+$(eval $(call KMOD_template,NF_CONNTRACK_IRC,nf-conntrack-irc,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_irc \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_irc \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_TFTP,ip-nf-tftp,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_tftp \
+$(eval $(call KMOD_template,NF_CONNTRACK_NETBIOS_NS,nf-conntrack-netbios-ns,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_netbios_ns \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_AMANDA,ip-nf-amanda,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_amanda \
+$(eval $(call KMOD_template,NF_CONNTRACK_TFTP,nf-conntrack-tftp,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_tftp \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_tftp \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_PPTP,ip-nf-pptp,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_pptp \
+#$(eval $(call KMOD_template,NF_CONNTRACK_RTSP,nf-conntrack-rtsp,\
+#	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_rtsp \
+#	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_rtsp \
+#,55))
+
+# broken
+#$(eval $(call KMOD_template,NF_CONNTRACK_AMANDA,nf-conntrack-amanda,\
+#	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_amanda \
+#	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_amanda \
+#,55))
+
+$(eval $(call KMOD_template,NF_CONNTRACK_PPTP,nf-conntrack-pptp,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_proto_gre \
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_pptp \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_pptp \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_H323,ip-nf-h323,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_h323 \
+$(eval $(call KMOD_template,NF_CONNTRACK_H323,nf-conntrack-h323,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_h323 \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_h323 \
 ,55))
 ,55))
 
 
-$(eval $(call KMOD_template,IP_NF_SIP,ip-nf-sip,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ip_conntrack_sip \
+$(eval $(call KMOD_template,NF_CONNTRACK_SIP,nf-conntrack-sip,\
+	$(MODULES_DIR)/kernel/net/netfilter/nf_conntrack_sip \
+	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat_sip \
 ,55))
 ,55))
 
 
 $(eval $(call KMOD_template,IP_NF_IPTABLES,ip-nf-iptables,\
 $(eval $(call KMOD_template,IP_NF_IPTABLES,ip-nf-iptables,\
@@ -473,11 +492,6 @@ $(eval $(call KMOD_template,IP_NF_TARGET_TCPMSS,ip-nf-target-tcpmss,\
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_TCPMSS \
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_TCPMSS \
 ,60))
 ,60))
 
 
-$(eval $(call KMOD_template,NF_NAT,nf-nat,\
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/nf_nat \
-	$(MODULES_DIR)/kernel/net/ipv4/netfilter/iptable_nat \
-,60))
-
 $(eval $(call KMOD_template,IP_NF_TARGET_MASQUERADE,ip-nf-target-masquerade,\
 $(eval $(call KMOD_template,IP_NF_TARGET_MASQUERADE,ip-nf-target-masquerade,\
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_MASQUERADE \
 	$(MODULES_DIR)/kernel/net/ipv4/netfilter/ipt_MASQUERADE \
 ,65))
 ,65))
@@ -520,7 +534,7 @@ $(eval $(call KMOD_template,IP6_NF_IPTABLES,ip6-nf-iptables,\
 	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip6_tables \
 	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip6_tables \
 ,50))
 ,50))
 
 
-$(eval $(call KMOD_template,IP6_NF_MATCH_AH,ip6-nf-match-AH,\
+$(eval $(call KMOD_template,IP6_NF_MATCH_AH,ip6-nf-match-ah,\
 	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip6t_ah \
 	$(MODULES_DIR)/kernel/net/ipv6/netfilter/ip6t_ah \
 ,55))
 ,55))
 
 

+ 1 - 0
package/Config.in

@@ -693,4 +693,5 @@ endmenu
 
 
 menu "Kernel configuration"
 menu "Kernel configuration"
 source "target/linux/Config.in"
 source "target/linux/Config.in"
+source "package/rtsp/Config.in"
 endmenu
 endmenu

+ 7 - 3
package/busybox/Makefile

@@ -22,6 +22,10 @@ include $(TOPDIR)/mk/package.mk
 $(eval $(call PKG_template,BUSYBOX,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
 $(eval $(call PKG_template,BUSYBOX,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
 $(eval $(call PKG_template,UDHCPD,udhcpd,${PKG_VERSION}-${PKG_RELEASE},busybox,${PKG_DESCR_UDHCPD},${PKG_SECTION_UDHCPD}))
 $(eval $(call PKG_template,UDHCPD,udhcpd,${PKG_VERSION}-${PKG_RELEASE},busybox,${PKG_DESCR_UDHCPD},${PKG_SECTION_UDHCPD}))
 
 
+SUB_INSTALLS-y:=
+SUB_INSTALLS-m:=
+SUB_INSTALLS-${ADK_PACKAGE_UDHCPD}+=	udhcpd-install
+
 CONFIG_STYLE:=		manual
 CONFIG_STYLE:=		manual
 BUILD_STYLE:=		manual
 BUILD_STYLE:=		manual
 INSTALL_STYLE:=		manual
 INSTALL_STYLE:=		manual
@@ -56,7 +60,7 @@ else
 	    IPKG_ARCH="$(CPU_ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
 	    IPKG_ARCH="$(CPU_ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
 endif
 endif
 
 
-do-install: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
+do-install: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config ${SUB_INSTALLS-m} ${SUB_INSTALLS-y}
 ifeq ($(ADK_NATIVE),y)
 ifeq ($(ADK_NATIVE),y)
 	$(MAKE) V=1 \
 	$(MAKE) V=1 \
 	    IPKG_ARCH="$(CPU_ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install $(MAKE_TRACE)
 	    IPKG_ARCH="$(CPU_ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install $(MAKE_TRACE)
@@ -69,10 +73,10 @@ ifeq ($(ADK_DEBUG),y)
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
 		$(IDIR_BUSYBOX)/bin/busybox
 		$(IDIR_BUSYBOX)/bin/busybox
 endif
 endif
-ifeq ($(ADK_PACKAGE_UDHCPD),y)
+
+udhcpd-install:
 	${INSTALL_DIR} ${IDIR_UDHCPD}/etc/
 	${INSTALL_DIR} ${IDIR_UDHCPD}/etc/
 	${INSTALL_DATA} ./files/udhcpd.conf ${IDIR_UDHCPD}/etc/
 	${INSTALL_DATA} ./files/udhcpd.conf ${IDIR_UDHCPD}/etc/
-endif
 
 
 fake:	$(TOPDIR)/.busyboxcfg do-configure do-install
 fake:	$(TOPDIR)/.busyboxcfg do-configure do-install
 
 

+ 18 - 10
package/busybox/config/Config.in

@@ -30,6 +30,23 @@ config BUSYBOX_EXTRA_COMPAT
 	  some GNU extensions in libc. You probably only need this option
 	  some GNU extensions in libc. You probably only need this option
 	  if you plan to run busybox on desktop.
 	  if you plan to run busybox on desktop.
 
 
+config BUSYBOX_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_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.
+
 choice
 choice
 	prompt "Buffer allocation policy"
 	prompt "Buffer allocation policy"
 	default FEATURE_BUFFERS_USE_MALLOC
 	default FEATURE_BUFFERS_USE_MALLOC
@@ -503,17 +520,8 @@ config BUSYBOX_EFENCE
 
 
 endchoice
 endchoice
 
 
-config BUSYBOX_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 PARSE
 ### config PARSE
-### 	bool "Uniform config file parser debugging applet: parse"
+###	bool "Uniform config file parser debugging applet: parse"
 
 
 endmenu
 endmenu
 
 

+ 20 - 5
package/busybox/config/archival/Config.in

@@ -92,8 +92,8 @@ config BUSYBOX_BZIP2
 
 
 config BUSYBOX_CPIO
 config BUSYBOX_CPIO
 	bool "cpio"
 	bool "cpio"
-	depends on !ADK_PACKAGE_CPIO
 	default n
 	default n
+	depends on !ADK_PACKAGE_CPIO
 	help
 	help
 	  cpio is an archival utility program used to create, modify, and
 	  cpio is an archival utility program used to create, modify, and
 	  extract contents from archives.
 	  extract contents from archives.
@@ -168,6 +168,13 @@ config BUSYBOX_GZIP
 	  gzip is used to compress files.
 	  gzip is used to compress files.
 	  It's probably the most widely used UNIX compression program.
 	  It's probably the most widely used UNIX compression program.
 
 
+config BUSYBOX_FEATURE_GZIP_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_GZIP && BUSYBOX_LONG_OPTS
+	help
+	  Enable use of long options, increases size by about 106 Bytes
+
 config BUSYBOX_LZOP
 config BUSYBOX_LZOP
 	bool "lzop"
 	bool "lzop"
 	default n
 	default n
@@ -227,7 +234,7 @@ config BUSYBOX_FEATURE_TAR_CREATE
 
 
 config BUSYBOX_FEATURE_TAR_AUTODETECT
 config BUSYBOX_FEATURE_TAR_AUTODETECT
 	bool "Autodetect compressed tarballs"
 	bool "Autodetect compressed tarballs"
-	default n
+	default y
 	depends on BUSYBOX_FEATURE_SEAMLESS_Z || BUSYBOX_FEATURE_SEAMLESS_GZ || BUSYBOX_FEATURE_SEAMLESS_BZ2 || BUSYBOX_FEATURE_SEAMLESS_LZMA
 	depends on BUSYBOX_FEATURE_SEAMLESS_Z || BUSYBOX_FEATURE_SEAMLESS_GZ || BUSYBOX_FEATURE_SEAMLESS_BZ2 || BUSYBOX_FEATURE_SEAMLESS_LZMA
 	help
 	help
 	  With this option tar can automatically detect compressed
 	  With this option tar can automatically detect compressed
@@ -277,13 +284,21 @@ config BUSYBOX_FEATURE_TAR_LONG_OPTIONS
 
 
 config BUSYBOX_FEATURE_TAR_UNAME_GNAME
 config BUSYBOX_FEATURE_TAR_UNAME_GNAME
 	bool "Enable use of user and group names"
 	bool "Enable use of user and group names"
-	default p
+	default y
 	depends on BUSYBOX_TAR
 	depends on BUSYBOX_TAR
 	help
 	help
 	  Enables use of user and group names in tar. This affects contents
 	  Enables use of user and group names in tar. This affects contents
 	  listings (-t) and preserving permissions when unpacking (-p).
 	  listings (-t) and preserving permissions when unpacking (-p).
 	  +200 bytes.
 	  +200 bytes.
 
 
+config BUSYBOX_FEATURE_TAR_NOPRESERVE_TIME
+	bool "Enable -m (do not preserve time) option"
+	default n
+	depends on BUSYBOX_TAR
+	help
+	  With this option busybox supports GNU tar -m
+	  (do not preserve time) option.
+
 endif #tar
 endif #tar
 
 
 config BUSYBOX_UNCOMPRESS
 config BUSYBOX_UNCOMPRESS
@@ -313,8 +328,8 @@ config BUSYBOX_FEATURE_LZMA_FAST
 	default n
 	default n
 	depends on BUSYBOX_UNLZMA
 	depends on BUSYBOX_UNLZMA
 	help
 	help
-	  This option reduces decompression time by about 33% at the cost of
-	  a 2K bigger binary.
+	  This option reduces decompression time by about 25% at the cost of
+	  a 1K bigger binary.
 
 
 config BUSYBOX_UNZIP
 config BUSYBOX_UNZIP
 	bool "unzip"
 	bool "unzip"

+ 46 - 6
package/busybox/config/coreutils/Config.in

@@ -52,6 +52,13 @@ config BUSYBOX_CHOWN
 	  chown is used to change the user and/or group ownership
 	  chown is used to change the user and/or group ownership
 	  of files.
 	  of files.
 
 
+config BUSYBOX_FEATURE_CHOWN_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_CHOWN && BUSYBOX_LONG_OPTS
+	help
+	  Enable use of long options
+
 config BUSYBOX_CHROOT
 config BUSYBOX_CHROOT
 	bool "chroot"
 	bool "chroot"
 	default y
 	default y
@@ -78,6 +85,14 @@ config BUSYBOX_CP
 	help
 	help
 	  cp is used to copy files and directories.
 	  cp is used to copy files and directories.
 
 
+config BUSYBOX_FEATURE_CP_LONG_OPTIONS
+	bool "Enable long options for cp"
+	default n
+	depends on BUSYBOX_CP && BUSYBOX_LONG_OPTS
+	help
+	  Enable long options for cp.
+	  Also add support for --parents option.
+
 config BUSYBOX_CUT
 config BUSYBOX_CUT
 	bool "cut"
 	bool "cut"
 	default y
 	default y
@@ -100,6 +115,22 @@ config BUSYBOX_FEATURE_DATE_ISOFMT
 	  Enable option (-I) to output an ISO-8601 compliant
 	  Enable option (-I) to output an ISO-8601 compliant
 	  date/time string.
 	  date/time string.
 
 
+config BUSYBOX_FEATURE_DATE_COMPAT
+	bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format"
+	default y
+	depends on BUSYBOX_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_DD
 config BUSYBOX_DD
 	bool "dd"
 	bool "dd"
 	default y
 	default y
@@ -113,13 +144,22 @@ config BUSYBOX_FEATURE_DD_SIGNAL_HANDLING
 	default y
 	default y
 	depends on BUSYBOX_DD
 	depends on BUSYBOX_DD
 	help
 	help
-	  sending a SIGUSR1 signal to a running `dd' process makes it
+	  Sending a SIGUSR1 signal to a running `dd' process makes it
 	  print to standard error the number of records read and written
 	  print to standard error the number of records read and written
 	  so far, then to resume copying.
 	  so far, then to resume copying.
 
 
 	  $ dd if=/dev/zero of=/dev/null&
 	  $ dd if=/dev/zero of=/dev/null&
 	  $ pid=$! kill -USR1 $pid; sleep 1; kill $pid
 	  $ pid=$! kill -USR1 $pid; sleep 1; kill $pid
-	  10899206+0 records in 10899206+0 records out
+	  10899206+0 records in
+	  10899206+0 records out
+
+config BUSYBOX_FEATURE_DD_THIRD_STATUS_LINE
+	bool "Enable the third status line upon signal"
+	default n
+	depends on BUSYBOX_DD && BUSYBOX_FEATURE_DD_SIGNAL_HANDLING
+	help
+	  Displays a coreutils-like third status line with transferred bytes,
+	  elapsed time and speed.
 
 
 config BUSYBOX_FEATURE_DD_IBS_OBS
 config BUSYBOX_FEATURE_DD_IBS_OBS
 	bool "Enable ibs, obs and conv options"
 	bool "Enable ibs, obs and conv options"
@@ -505,7 +545,7 @@ config BUSYBOX_FEATURE_RMDIR_LONG_OPTIONS
 
 
 config BUSYBOX_SEQ
 config BUSYBOX_SEQ
 	bool "seq"
 	bool "seq"
-	default n
+	default y
 	help
 	help
 	  print a sequence of numbers
 	  print a sequence of numbers
 
 
@@ -829,13 +869,13 @@ config BUSYBOX_FEATURE_HUMAN_READABLE
 	help
 	help
 	  Allow df, du, and ls to have human readable output.
 	  Allow df, du, and ls to have human readable output.
 
 
-comment "Common options for md5sum, sha1sum"
-	depends on BUSYBOX_MD5SUM || BUSYBOX_SHA1SUM
+comment "Common options for md5sum, sha1sum, sha256sum, sha512sum"
+	depends on BUSYBOX_MD5SUM || BUSYBOX_SHA1SUM || BUSYBOX_SHA256SUM || BUSYBOX_SHA512SUM
 
 
 config BUSYBOX_FEATURE_MD5_SHA1_SUM_CHECK
 config BUSYBOX_FEATURE_MD5_SHA1_SUM_CHECK
 	bool "Enable -c, -s and -w options"
 	bool "Enable -c, -s and -w options"
 	default n
 	default n
-	depends on BUSYBOX_MD5SUM || BUSYBOX_SHA1SUM
+	depends on BUSYBOX_MD5SUM || BUSYBOX_SHA1SUM || BUSYBOX_SHA256SUM || BUSYBOX_SHA512SUM
 	help
 	help
 	  Enabling the -c options allows files to be checked
 	  Enabling the -c options allows files to be checked
 	  against pre-calculated hash values.
 	  against pre-calculated hash values.

+ 5 - 14
package/busybox/config/editors/Config.in

@@ -36,13 +36,12 @@ config BUSYBOX_DIFF
 	  differences between them in a form that can be given to
 	  differences between them in a form that can be given to
 	  the patch command.
 	  the patch command.
 
 
-config BUSYBOX_FEATURE_DIFF_BINARY
-	bool "Enable checks for binary files"
-	default y
-	depends on BUSYBOX_DIFF
+config BUSYBOX_FEATURE_DIFF_LONG_OPTIONS
+	bool "Enable long options"
+	default n
+	depends on BUSYBOX_DIFF && BUSYBOX_LONG_OPTS
 	help
 	help
-	  This option enables support for checking for binary files
-	  before a comparison is carried out.
+	  Enable use of long options.
 
 
 config BUSYBOX_FEATURE_DIFF_DIR
 config BUSYBOX_FEATURE_DIFF_DIR
 	bool "Enable directory support"
 	bool "Enable directory support"
@@ -52,14 +51,6 @@ config BUSYBOX_FEATURE_DIFF_DIR
 	  This option enables support for directory and subdirectory
 	  This option enables support for directory and subdirectory
 	  comparison.
 	  comparison.
 
 
-config BUSYBOX_FEATURE_DIFF_MINIMAL
-	bool "Enable -d option to find smaller sets of changes"
-	default n
-	depends on BUSYBOX_DIFF
-	help
-	  Enabling this option allows the use of -d to make diff
-	  try hard to find the smallest possible set of changes.
-
 config BUSYBOX_ED
 config BUSYBOX_ED
 	bool "ed"
 	bool "ed"
 	default n
 	default n

+ 17 - 10
package/busybox/config/findutils/Config.in

@@ -7,11 +7,19 @@ menu "Finding Utilities"
 
 
 config BUSYBOX_FIND
 config BUSYBOX_FIND
 	bool "find"
 	bool "find"
-	default y
 	depends on !ADK_PACKAGE_FINDUTILS
 	depends on !ADK_PACKAGE_FINDUTILS
+	default y
 	help
 	help
 	  find is used to search your system to find specified files.
 	  find is used to search your system to find specified files.
 
 
+config BUSYBOX_FEATURE_FIND_EMPTY
+	bool "Enable -empty option matching empty files and directories"
+	default y
+	depends on BUSYBOX_FIND
+	help
+	  Support the 'find -empty' option for searching empty files 
+	  and directories.
+
 config BUSYBOX_FEATURE_FIND_PRINT0
 config BUSYBOX_FEATURE_FIND_PRINT0
 	bool "Enable -print0: NUL-terminated output"
 	bool "Enable -print0: NUL-terminated output"
 	default y
 	default y
@@ -82,14 +90,6 @@ config BUSYBOX_FEATURE_FIND_INUM
 	help
 	help
 	  Support the 'find -inum' option for searching by inode number.
 	  Support the 'find -inum' option for searching by inode number.
 
 
-config BUSYBOX_FEATURE_FIND_EMPTY
-	bool "Enable -empty option matching empty files and directories"
-	default y
-	depends on BUSYBOX_FIND
-	help
-	  Support the 'find -empty' option for searching empty files 
-	  and directories.
-
 config BUSYBOX_FEATURE_FIND_EXEC
 config BUSYBOX_FEATURE_FIND_EXEC
 	bool "Enable -exec: execute commands"
 	bool "Enable -exec: execute commands"
 	default y
 	default y
@@ -180,10 +180,17 @@ config BUSYBOX_FEATURE_FIND_CONTEXT
 	help
 	help
 	  Support the 'find -context' option for matching security context.
 	  Support the 'find -context' option for matching security context.
 
 
+config BUSYBOX_FEATURE_FIND_LINKS
+	bool "Enable -links: link count matching"
+	default n
+	depends on BUSYBOX_FIND
+	help
+	  Support the 'find -links' option for matching number of links.
+
 config BUSYBOX_GREP
 config BUSYBOX_GREP
 	bool "grep"
 	bool "grep"
-	default y if !ADK_PACKAGE_GREP
 	depends on !ADK_PACKAGE_GREP
 	depends on !ADK_PACKAGE_GREP
+	default y
 	help
 	help
 	  grep is used to search files for a specified pattern.
 	  grep is used to search files for a specified pattern.
 
 

+ 2 - 3
package/busybox/config/libbb/Config.in

@@ -111,7 +111,7 @@ config BUSYBOX_FEATURE_EDITING_ASK_TERMINAL
 	  current cursor position. This information is used to make line
 	  current cursor position. This information is used to make line
 	  editing more robust in some cases.
 	  editing more robust in some cases.
 	  If you are not sure whether your terminals respond to this code
 	  If you are not sure whether your terminals respond to this code
-	  correctly, or want to save on code size (about 300 bytes),
+	  correctly, or want to save on code size (about 400 bytes),
 	  then do not turn this option on.
 	  then do not turn this option on.
 
 
 config BUSYBOX_FEATURE_NON_POSIX_CP
 config BUSYBOX_FEATURE_NON_POSIX_CP
@@ -134,9 +134,8 @@ config BUSYBOX_FEATURE_VERBOSE_CP_MESSAGE
 	    $ cp file /vmlinuz/file
 	    $ cp file /vmlinuz/file
 	    cp: cannot stat '/vmlinuz/file': Path has non-directory component
 	    cp: cannot stat '/vmlinuz/file': Path has non-directory component
 	  If this feature is not enabled, they will be, respectively:
 	  If this feature is not enabled, they will be, respectively:
-	    cp: cannot remove '/does_not_exist/file': No such file or directory
+	    cp: cannot create '/does_not_exist/file': No such file or directory
 	    cp: cannot stat '/vmlinuz/file': Not a directory
 	    cp: cannot stat '/vmlinuz/file': Not a directory
-	  respectively.
 	  This will cost you ~60 bytes.
 	  This will cost you ~60 bytes.
 
 
 config BUSYBOX_FEATURE_COPYBUF_KB
 config BUSYBOX_FEATURE_COPYBUF_KB

+ 18 - 5
package/busybox/config/miscutils/Config.in

@@ -137,11 +137,11 @@ config BUSYBOX_FEATURE_CROND_D
 	  -d sets loglevel to 0 (most verbose) and directs all output to stderr.
 	  -d sets loglevel to 0 (most verbose) and directs all output to stderr.
 
 
 config BUSYBOX_FEATURE_CROND_CALL_SENDMAIL
 config BUSYBOX_FEATURE_CROND_CALL_SENDMAIL
-	bool "Using /usr/sbin/sendmail?"
+	bool "Report command output via email (using sendmail)"
 	default n
 	default n
 	depends on BUSYBOX_CROND
 	depends on BUSYBOX_CROND
 	help
 	help
-	  Support calling /usr/sbin/sendmail for send cmd outputs.
+	  Command output will be sent to corresponding user via email.
 
 
 config BUSYBOX_FEATURE_CROND_DIR
 config BUSYBOX_FEATURE_CROND_DIR
 	string "crond spool directory"
 	string "crond spool directory"
@@ -272,6 +272,13 @@ config BUSYBOX_FBSPLASH
 	    "NN" (ASCII decimal number) - percentage to show on progress bar
 	    "NN" (ASCII decimal number) - percentage to show on progress bar
 	    "exit" - well you guessed it
 	    "exit" - well you guessed it
 
 
+config BUSYBOX_FLASHCP
+	bool "flashcp"
+	default n
+	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_FLASH_LOCK
 config BUSYBOX_FLASH_LOCK
 	bool "flash_lock"
 	bool "flash_lock"
 	default n
 	default n
@@ -334,8 +341,8 @@ endchoice
 
 
 config BUSYBOX_LESS
 config BUSYBOX_LESS
 	bool "less"
 	bool "less"
-	default y
 	depends on !ADK_PACKAGE_LESS
 	depends on !ADK_PACKAGE_LESS
+	default y
 	help
 	help
 	  'less' is a pager, meaning that it displays text files. It possesses
 	  'less' is a pager, meaning that it displays text files. It possesses
 	  a wide array of features, and is an improvement over 'more'.
 	  a wide array of features, and is an improvement over 'more'.
@@ -347,7 +354,7 @@ config BUSYBOX_FEATURE_LESS_MAXLINES
 
 
 config BUSYBOX_FEATURE_LESS_BRACKETS
 config BUSYBOX_FEATURE_LESS_BRACKETS
 	bool "Enable bracket searching"
 	bool "Enable bracket searching"
-	default n
+	default y
 	depends on BUSYBOX_LESS
 	depends on BUSYBOX_LESS
 	help
 	help
 	  This option adds the capability to search for matching left and right
 	  This option adds the capability to search for matching left and right
@@ -355,7 +362,7 @@ config BUSYBOX_FEATURE_LESS_BRACKETS
 
 
 config BUSYBOX_FEATURE_LESS_FLAGS
 config BUSYBOX_FEATURE_LESS_FLAGS
 	bool "Enable extra flags"
 	bool "Enable extra flags"
-	default n
+	default y
 	depends on BUSYBOX_LESS
 	depends on BUSYBOX_LESS
 	help
 	help
 	  The extra flags provided do the following:
 	  The extra flags provided do the following:
@@ -614,6 +621,12 @@ config BUSYBOX_VOLNAME
 	help
 	help
 	  Prints a CD-ROM volume name.
 	  Prints a CD-ROM volume name.
 
 
+config BUSYBOX_WALL
+	bool "wall"
+	default n
+	help
+	  Write a message to all users that are logged in.
+
 config BUSYBOX_WATCHDOG
 config BUSYBOX_WATCHDOG
 	bool "watchdog"
 	bool "watchdog"
 	depends on !ADK_PACKAGE_WATCHDOG
 	depends on !ADK_PACKAGE_WATCHDOG

+ 16 - 0
package/busybox/config/modutils/Config.in

@@ -121,6 +121,22 @@ config BUSYBOX_FEATURE_2_4_MODULES
 	  This increases size considerably. Say N unless you plan
 	  This increases size considerably. Say N unless you plan
 	  to run ancient kernels.
 	  to run ancient kernels.
 
 
+config BUSYBOX_FEATURE_INSMOD_TRY_MMAP
+	bool "Try to load module from a mmap'ed area"
+	default n
+	depends on BUSYBOX_INSMOD || BUSYBOX_MODPROBE_SMALL
+	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_FEATURE_INSMOD_VERSION_CHECKING
 config BUSYBOX_FEATURE_INSMOD_VERSION_CHECKING
 	bool "Enable module version checking"
 	bool "Enable module version checking"
 	default n
 	default n

+ 70 - 10
package/busybox/config/networking/Config.in

@@ -93,8 +93,8 @@ config BUSYBOX_DNSD
 
 
 config BUSYBOX_ETHER_WAKE
 config BUSYBOX_ETHER_WAKE
 	bool "ether-wake"
 	bool "ether-wake"
-	default n
 	depends on !ADK_PACKAGE_ETHER_WAKE
 	depends on !ADK_PACKAGE_ETHER_WAKE
+	default n
 	help
 	help
 	  Send a magic packet to wake up sleeping machines.
 	  Send a magic packet to wake up sleeping machines.
 
 
@@ -119,6 +119,17 @@ config BUSYBOX_FEATURE_FTP_WRITE
 	help
 	help
 	  Enable all kinds of FTP upload commands (-w option)
 	  Enable all kinds of FTP upload commands (-w option)
 
 
+config BUSYBOX_FEATURE_FTPD_ACCEPT_BROKEN_LIST
+	bool "Enable workaround for RFC-violating clients"
+	default y
+	depends on BUSYBOX_FTPD
+	help
+	  Some ftp-clients (among them KDE's Konqueror) issue illegal
+	  "LIST -la" requests. This option works around those 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_FTPGET
 config BUSYBOX_FTPGET
 	bool "ftpget"
 	bool "ftpget"
 	default n
 	default n
@@ -411,7 +422,7 @@ config BUSYBOX_FEATURE_IFUPDOWN_MAPPING
 
 
 config BUSYBOX_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 config BUSYBOX_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 	bool "Support for external dhcp clients"
 	bool "Support for external dhcp clients"
-	default n
+	default y
 	depends on BUSYBOX_IFUPDOWN
 	depends on BUSYBOX_IFUPDOWN
 	help
 	help
 	  This enables support for the external dhcp clients. Clients are
 	  This enables support for the external dhcp clients. Clients are
@@ -652,7 +663,7 @@ config BUSYBOX_FEATURE_NETSTAT_WIDE
 
 
 config BUSYBOX_FEATURE_NETSTAT_PRG
 config BUSYBOX_FEATURE_NETSTAT_PRG
 	bool "Enable PID/Program name output"
 	bool "Enable PID/Program name output"
-	default n
+	default y
 	depends on BUSYBOX_NETSTAT
 	depends on BUSYBOX_NETSTAT
 	help
 	help
 	  Add support for -p flag to print out PID and program name.
 	  Add support for -p flag to print out PID and program name.
@@ -664,6 +675,20 @@ config BUSYBOX_NSLOOKUP
 	help
 	help
 	  nslookup is a tool to query Internet name servers.
 	  nslookup is a tool to query Internet name servers.
 
 
+config BUSYBOX_NTPD
+	bool "ntpd"
+	default n
+	help
+	  The NTP client/server daemon.
+
+config BUSYBOX_FEATURE_NTPD_SERVER
+        bool "Make ntpd usable as a NTP server"
+        default y
+        depends on BUSYBOX_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_PING
 config BUSYBOX_PING
 	bool "ping"
 	bool "ping"
 	default y
 	default y
@@ -717,7 +742,7 @@ config BUSYBOX_SLATTACH
 
 
 config BUSYBOX_TELNET
 config BUSYBOX_TELNET
 	bool "telnet"
 	bool "telnet"
-	default n
+	default y
 	help
 	help
 	  Telnet is an interface to the TELNET protocol, but is also commonly
 	  Telnet is an interface to the TELNET protocol, but is also commonly
 	  used to test other simple protocols.
 	  used to test other simple protocols.
@@ -791,6 +816,27 @@ config BUSYBOX_FEATURE_TELNETD_STANDALONE
 	help
 	help
 	  Selecting this will make telnetd able to run standalone.
 	  Selecting this will make telnetd able to run standalone.
 
 
+config BUSYBOX_FEATURE_TELNETD_INETD_WAIT
+	bool "Support -w SEC option (inetd wait mode)"
+	default n
+	depends on BUSYBOX_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_TFTP
 config BUSYBOX_TFTP
 	bool "tftp"
 	bool "tftp"
 	default n
 	default n
@@ -828,12 +874,19 @@ config BUSYBOX_FEATURE_TFTP_PUT
 	  Also enable download support in tftpd, if tftpd is selected.
 	  Also enable download support in tftpd, if tftpd is selected.
 
 
 config BUSYBOX_FEATURE_TFTP_BLOCKSIZE
 config BUSYBOX_FEATURE_TFTP_BLOCKSIZE
-	bool "Enable \"blksize\" protocol option"
+	bool "Enable 'blksize' and 'tsize' protocol options"
 	default n
 	default n
 	depends on BUSYBOX_TFTP || BUSYBOX_TFTPD
 	depends on BUSYBOX_TFTP || BUSYBOX_TFTPD
 	help
 	help
 	  Allow tftp to specify block size, and tftpd to understand
 	  Allow tftp to specify block size, and tftpd to understand
-	  "blksize" option.
+	  "blksize" and "tsize" options.
+
+config BUSYBOX_FEATURE_TFTP_PROGRESS_BAR
+	bool "Enable tftp progress meter"
+	default n
+	depends on BUSYBOX_TFTP && BUSYBOX_FEATURE_TFTP_BLOCKSIZE
+	help
+	  Show progress bar.
 
 
 config BUSYBOX_TFTP_DEBUG
 config BUSYBOX_TFTP_DEBUG
 	bool "Enable debug"
 	bool "Enable debug"
@@ -845,10 +898,17 @@ config BUSYBOX_TFTP_DEBUG
 
 
 config BUSYBOX_TRACEROUTE
 config BUSYBOX_TRACEROUTE
 	bool "traceroute"
 	bool "traceroute"
-	default n
+	default y
 	help
 	help
 	  Utility to trace the route of IP packets.
 	  Utility to trace the route of IP packets.
 
 
+config BUSYBOX_TRACEROUTE6
+	bool "traceroute6"
+	default y
+	depends on BUSYBOX_FEATURE_IPV6 && BUSYBOX_TRACEROUTE
+	help
+	  Utility to trace the route of IPv6 packets.
+
 config BUSYBOX_FEATURE_TRACEROUTE_VERBOSE
 config BUSYBOX_FEATURE_TRACEROUTE_VERBOSE
 	bool "Enable verbose output"
 	bool "Enable verbose output"
 	default n
 	default n
@@ -867,7 +927,7 @@ config BUSYBOX_FEATURE_TRACEROUTE_SOURCE_ROUTE
 
 
 config BUSYBOX_FEATURE_TRACEROUTE_USE_ICMP
 config BUSYBOX_FEATURE_TRACEROUTE_USE_ICMP
 	bool "Use ICMP instead of UDP"
 	bool "Use ICMP instead of UDP"
-	default n
+	default y
 	depends on BUSYBOX_TRACEROUTE
 	depends on BUSYBOX_TRACEROUTE
 	help
 	help
 	  Add option -I to use ICMP ECHO instead of UDP datagrams.
 	  Add option -I to use ICMP ECHO instead of UDP datagrams.
@@ -877,7 +937,7 @@ source package/busybox/config/networking/udhcp/Config.in
 config BUSYBOX_IFUPDOWN_UDHCPC_CMD_OPTIONS
 config BUSYBOX_IFUPDOWN_UDHCPC_CMD_OPTIONS
 	string "ifup udhcpc command line options"
 	string "ifup udhcpc command line options"
 	default "-b -R"
 	default "-b -R"
-	depends on BUSYBOX_IFUPDOWN && BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_IFUPDOWN && BUSYBOX_UDHCPC
 	help
 	help
 	  Command line options to pass to udhcpc from ifup.
 	  Command line options to pass to udhcpc from ifup.
 	  Intended to alter options not available in /etc/network/interfaces.
 	  Intended to alter options not available in /etc/network/interfaces.
@@ -892,8 +952,8 @@ config BUSYBOX_VCONFIG
 
 
 config BUSYBOX_WGET
 config BUSYBOX_WGET
 	bool "wget"
 	bool "wget"
-	default y
 	depends on !ADK_PACKAGE_WGET
 	depends on !ADK_PACKAGE_WGET
+	default y
 	help
 	help
 	  wget is a utility for non-interactive download of files from HTTP,
 	  wget is a utility for non-interactive download of files from HTTP,
 	  HTTPS, and FTP servers.
 	  HTTPS, and FTP servers.

+ 14 - 14
package/busybox/config/networking/udhcp/Config.in

@@ -3,26 +3,26 @@
 # see scripts/kbuild/config-language.txt.
 # see scripts/kbuild/config-language.txt.
 #
 #
 
 
-config BUSYBOX_APP_UDHCPD
+config BUSYBOX_UDHCPD
 	bool "udhcp server (udhcpd)"
 	bool "udhcp server (udhcpd)"
 	default n
 	default n
 	help
 	help
 	  udhcpd is a DHCP server geared primarily toward embedded systems,
 	  udhcpd is a DHCP server geared primarily toward embedded systems,
 	  while striving to be fully functional and RFC compliant.
 	  while striving to be fully functional and RFC compliant.
 
 
-config BUSYBOX_APP_DHCPRELAY
+config BUSYBOX_DHCPRELAY
 	bool "dhcprelay"
 	bool "dhcprelay"
 	default n
 	default n
-	depends on BUSYBOX_APP_UDHCPD
+	depends on BUSYBOX_UDHCPD
 	help
 	help
 	  dhcprelay listens for dhcp requests on one or more interfaces
 	  dhcprelay listens for dhcp requests on one or more interfaces
 	  and forwards these requests to a different interface or dhcp
 	  and forwards these requests to a different interface or dhcp
 	  server.
 	  server.
 
 
-config BUSYBOX_APP_DUMPLEASES
+config BUSYBOX_DUMPLEASES
 	bool "Lease display utility (dumpleases)"
 	bool "Lease display utility (dumpleases)"
 	default n
 	default n
-	depends on BUSYBOX_APP_UDHCPD
+	depends on BUSYBOX_UDHCPD
 	help
 	help
 	  dumpleases displays the leases written out by the udhcpd server.
 	  dumpleases displays the leases written out by the udhcpd server.
 	  Lease times are stored in the file by time remaining in lease, or
 	  Lease times are stored in the file by time remaining in lease, or
@@ -31,7 +31,7 @@ config BUSYBOX_APP_DUMPLEASES
 config BUSYBOX_FEATURE_UDHCPD_WRITE_LEASES_EARLY
 config BUSYBOX_FEATURE_UDHCPD_WRITE_LEASES_EARLY
 	bool "Rewrite the lease file at every new acknowledge"
 	bool "Rewrite the lease file at every new acknowledge"
 	default n
 	default n
-	depends on BUSYBOX_APP_UDHCPD
+	depends on BUSYBOX_UDHCPD
 	help
 	help
 	  If selected, udhcpd will write a new file with leases every
 	  If selected, udhcpd will write a new file with leases every
 	  time a new lease has been accepted, thus eliminating the need
 	  time a new lease has been accepted, thus eliminating the need
@@ -41,12 +41,12 @@ config BUSYBOX_FEATURE_UDHCPD_WRITE_LEASES_EARLY
 config BUSYBOX_DHCPD_LEASES_FILE
 config BUSYBOX_DHCPD_LEASES_FILE
 	string "Absolute path to lease file"
 	string "Absolute path to lease file"
 	default "/var/lib/misc/udhcpd.leases"
 	default "/var/lib/misc/udhcpd.leases"
-	depends on BUSYBOX_APP_UDHCPD
+	depends on BUSYBOX_UDHCPD
 	help
 	help
 	  udhcpd stores addresses in a lease file. This is the absolute path
 	  udhcpd stores addresses in a lease file. This is the absolute path
 	  of the file. Normally it is safe to leave it untouched.
 	  of the file. Normally it is safe to leave it untouched.
 
 
-config BUSYBOX_APP_UDHCPC
+config BUSYBOX_UDHCPC
 	bool "udhcp client (udhcpc)"
 	bool "udhcp client (udhcpc)"
 	default y
 	default y
 	help
 	help
@@ -59,7 +59,7 @@ config BUSYBOX_APP_UDHCPC
 config BUSYBOX_FEATURE_UDHCPC_ARPING
 config BUSYBOX_FEATURE_UDHCPC_ARPING
 	bool "Verify that the offered address is free, using ARP ping"
 	bool "Verify that the offered address is free, using ARP ping"
 	default y
 	default y
-	depends on BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_UDHCPC
 	help
 	help
 	  If selected, udhcpc will send ARP probes and make sure
 	  If selected, udhcpc will send ARP probes and make sure
 	  the offered address is really not in use by anyone. The client
 	  the offered address is really not in use by anyone. The client
@@ -69,7 +69,7 @@ config BUSYBOX_FEATURE_UDHCPC_ARPING
 config BUSYBOX_FEATURE_UDHCP_PORT
 config BUSYBOX_FEATURE_UDHCP_PORT
 	bool "Enable '-P port' option for udhcpd and udhcpc"
 	bool "Enable '-P port' option for udhcpd and udhcpc"
 	default n
 	default n
-	depends on BUSYBOX_APP_UDHCPD || BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_UDHCPD || BUSYBOX_UDHCPC
 	help
 	help
 	  At the cost of ~300 bytes, enables -P port option.
 	  At the cost of ~300 bytes, enables -P port option.
 	  This feature is typically not needed.
 	  This feature is typically not needed.
@@ -78,7 +78,7 @@ config BUSYBOX_UDHCP_DEBUG
 	int "Maximum verbosity level for udhcp applets (0..9)"
 	int "Maximum verbosity level for udhcp applets (0..9)"
 	default 0
 	default 0
 	range 0 9
 	range 0 9
-	depends on BUSYBOX_APP_UDHCPD || BUSYBOX_APP_UDHCPC || BUSYBOX_APP_DHCPRELAY
+	depends on BUSYBOX_UDHCPD || BUSYBOX_UDHCPC || BUSYBOX_DHCPRELAY
 	help
 	help
 	  Verbosity can be increased with multiple -v options.
 	  Verbosity can be increased with multiple -v options.
 	  This options controls how high it can be cranked up.
 	  This options controls how high it can be cranked up.
@@ -89,7 +89,7 @@ config BUSYBOX_UDHCP_DEBUG
 config BUSYBOX_FEATURE_UDHCP_RFC3397
 config BUSYBOX_FEATURE_UDHCP_RFC3397
 	bool "Support for RFC3397 domain search (experimental)"
 	bool "Support for RFC3397 domain search (experimental)"
 	default n
 	default n
-	depends on BUSYBOX_APP_UDHCPD || BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_UDHCPD || BUSYBOX_UDHCPC
 	help
 	help
 	  If selected, both client and server will support passing of domain
 	  If selected, both client and server will support passing of domain
 	  search lists via option 119, specified in RFC3397.
 	  search lists via option 119, specified in RFC3397.
@@ -97,7 +97,7 @@ config BUSYBOX_FEATURE_UDHCP_RFC3397
 config BUSYBOX_UDHCPC_DEFAULT_SCRIPT
 config BUSYBOX_UDHCPC_DEFAULT_SCRIPT
 	string "Absolute path to config script"
 	string "Absolute path to config script"
 	default "/usr/share/udhcpc/default.script"
 	default "/usr/share/udhcpc/default.script"
-	depends on BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_UDHCPC
 	help
 	help
 	  This script is called after udhcpc receives an answer. See
 	  This script is called after udhcpc receives an answer. See
 	  examples/udhcp for a working example. Normally it is safe
 	  examples/udhcp for a working example. Normally it is safe
@@ -107,7 +107,7 @@ config BUSYBOX_UDHCPC_SLACK_FOR_BUGGY_SERVERS
 	int "DHCP options slack buffer size"
 	int "DHCP options slack buffer size"
 	default 80
 	default 80
 	range 0 924
 	range 0 924
-	depends on BUSYBOX_APP_UDHCPD || BUSYBOX_APP_UDHCPC
+	depends on BUSYBOX_UDHCPD || BUSYBOX_UDHCPC
 	help
 	help
 	  Some buggy DHCP servers send DHCP offer packets with option
 	  Some buggy DHCP servers send DHCP offer packets with option
 	  field larger than we expect (which might also be considered a
 	  field larger than we expect (which might also be considered a

+ 10 - 4
package/busybox/config/procps/Config.in

@@ -57,21 +57,21 @@ config BUSYBOX_PGREP
 
 
 config BUSYBOX_PIDOF
 config BUSYBOX_PIDOF
 	bool "pidof"
 	bool "pidof"
-	default y
+	default n
 	help
 	help
 	  Pidof finds the process id's (pids) of the named programs. It prints
 	  Pidof finds the process id's (pids) of the named programs. It prints
 	  those id's on the standard output.
 	  those id's on the standard output.
 
 
 config BUSYBOX_FEATURE_PIDOF_SINGLE
 config BUSYBOX_FEATURE_PIDOF_SINGLE
 	bool "Enable argument for single shot (-s)"
 	bool "Enable argument for single shot (-s)"
-	default y
+	default n
 	depends on BUSYBOX_PIDOF
 	depends on BUSYBOX_PIDOF
 	help
 	help
 	  Support argument '-s' for returning only the first pid found.
 	  Support argument '-s' for returning only the first pid found.
 
 
 config BUSYBOX_FEATURE_PIDOF_OMIT
 config BUSYBOX_FEATURE_PIDOF_OMIT
 	bool "Enable argument for omitting pids (-o)"
 	bool "Enable argument for omitting pids (-o)"
-	default y
+	default n
 	depends on BUSYBOX_PIDOF
 	depends on BUSYBOX_PIDOF
 	help
 	help
 	  Support argument '-o' for omitting the given pids in output.
 	  Support argument '-o' for omitting the given pids in output.
@@ -188,6 +188,13 @@ config BUSYBOX_FEATURE_TOPMEM
 	help
 	help
 	  Enable 's' in top (gives lots of memory info).
 	  Enable 's' in top (gives lots of memory info).
 
 
+config BUSYBOX_FEATURE_SHOW_THREADS
+	bool "Support for showing threads in ps/top"
+	default y
+	depends on BUSYBOX_PS || BUSYBOX_TOP
+	help
+	  Enables ps -T option and 'h' command in top
+
 config BUSYBOX_UPTIME
 config BUSYBOX_UPTIME
 	bool "uptime"
 	bool "uptime"
 	default y
 	default y
@@ -203,5 +210,4 @@ config BUSYBOX_WATCH
 	  watch is used to execute a program periodically, showing
 	  watch is used to execute a program periodically, showing
 	  output to the screen.
 	  output to the screen.
 
 
-
 endmenu
 endmenu

+ 11 - 18
package/busybox/config/shell/Config.in

@@ -15,6 +15,7 @@ choice
 config BUSYBOX_FEATURE_SH_IS_ASH
 config BUSYBOX_FEATURE_SH_IS_ASH
 	select BUSYBOX_ASH
 	select BUSYBOX_ASH
 	bool "ash"
 	bool "ash"
+	depends on !BUSYBOX_NOMMU
 
 
 config BUSYBOX_FEATURE_SH_IS_HUSH
 config BUSYBOX_FEATURE_SH_IS_HUSH
 	select BUSYBOX_HUSH
 	select BUSYBOX_HUSH
@@ -36,6 +37,7 @@ endchoice
 config BUSYBOX_ASH
 config BUSYBOX_ASH
 	bool "ash"
 	bool "ash"
 	default y
 	default y
+	depends on !BUSYBOX_NOMMU
 	help
 	help
 	  Tha 'ash' shell adds about 60k in the default configuration and is
 	  Tha 'ash' shell adds about 60k in the default configuration and is
 	  the most complete and most pedantically correct shell included with
 	  the most complete and most pedantically correct shell included with
@@ -57,23 +59,6 @@ config BUSYBOX_ASH_JOB_CONTROL
 	help
 	help
 	  Enable job control in the ash shell.
 	  Enable job control in the ash shell.
 
 
-config BUSYBOX_ASH_READ_NCHARS
-	bool "'read -n N' and 'read -s' support"
-	default n
-	depends on BUSYBOX_ASH
-	help
-	  'read -n N' will return a value after N characters have been read.
-	  'read -s' will read without echoing the user's input.
-
-config BUSYBOX_ASH_READ_TIMEOUT
-	bool "'read -t S' support"
-	default n
-	depends on BUSYBOX_ASH
-	help
-	  'read -t S' will return a value after S seconds have passed.
-	  This implementation will allow fractional seconds, expressed
-	  as a decimal fraction, e.g. 'read -t 2.5 foo'.
-
 config BUSYBOX_ASH_ALIAS
 config BUSYBOX_ASH_ALIAS
 	bool "alias support"
 	bool "alias support"
 	default y
 	default y
@@ -187,7 +172,7 @@ config BUSYBOX_HUSH_INTERACTIVE
 	help
 	help
 	  Enable interactive mode (prompt and command editing).
 	  Enable interactive mode (prompt and command editing).
 	  Without this, hush simply reads and executes commands
 	  Without this, hush simply reads and executes commands
-	  from stdin just like a shell script from the file.
+	  from stdin just like a shell script from a file.
 	  No prompt, no PS1/PS2 magic shell variables.
 	  No prompt, no PS1/PS2 magic shell variables.
 
 
 config BUSYBOX_HUSH_JOB
 config BUSYBOX_HUSH_JOB
@@ -250,6 +235,14 @@ config BUSYBOX_HUSH_EXPORT_N
 	help
 	help
 	  Enable support for export '-n' option in hush. It is a bash extension.
 	  Enable support for export '-n' option in hush. It is a bash extension.
 
 
+config BUSYBOX_HUSH_RANDOM_SUPPORT
+	bool "Pseudorandom generator and $RANDOM variable"
+	default n
+	depends on BUSYBOX_HUSH
+	help
+	  Enable pseudorandom generator and dynamic variable "$RANDOM".
+	  Each read of "$RANDOM" will generate a new pseudorandom value.
+
 config BUSYBOX_LASH
 config BUSYBOX_LASH
 	bool "lash (deprecated: aliased to hush)"
 	bool "lash (deprecated: aliased to hush)"
 	default n
 	default n

+ 1 - 1
package/busybox/config/sysklogd/Config.in

@@ -66,7 +66,7 @@ config BUSYBOX_FEATURE_IPC_SYSLOG
 
 
 config BUSYBOX_FEATURE_IPC_SYSLOG_BUFFER_SIZE
 config BUSYBOX_FEATURE_IPC_SYSLOG_BUFFER_SIZE
 	int "Circular buffer size in Kbytes (minimum 4KB)"
 	int "Circular buffer size in Kbytes (minimum 4KB)"
-	default 16
+	default 32
 	range 4 2147483647
 	range 4 2147483647
 	depends on BUSYBOX_FEATURE_IPC_SYSLOG
 	depends on BUSYBOX_FEATURE_IPC_SYSLOG
 	help
 	help

+ 41 - 3
package/busybox/config/util-linux/Config.in

@@ -213,6 +213,12 @@ config BUSYBOX_FSCK_MINIX
 	  check for and attempt to repair any corruption that occurs to a minix
 	  check for and attempt to repair any corruption that occurs to a minix
 	  filesystem.
 	  filesystem.
 
 
+config BUSYBOX_MKFS_EXT2
+	bool "mkfs_ext2"
+	default n
+	help
+	  Utility to create EXT2 filesystems.
+
 config BUSYBOX_MKFS_MINIX
 config BUSYBOX_MKFS_MINIX
 	bool "mkfs_minix"
 	bool "mkfs_minix"
 	default n
 	default n
@@ -233,6 +239,12 @@ config BUSYBOX_FEATURE_MINIX2
 	  this. If you enabled 'mkfs_minix' then you almost certainly want to
 	  this. If you enabled 'mkfs_minix' then you almost certainly want to
 	  be using the version 2 filesystem support.
 	  be using the version 2 filesystem support.
 
 
+config BUSYBOX_MKFS_REISER
+	bool "mkfs_reiser"
+	default n
+	help
+	  Utility to create ReiserFS filesystems.
+
 config BUSYBOX_MKFS_VFAT
 config BUSYBOX_MKFS_VFAT
 	bool "mkfs_vfat"
 	bool "mkfs_vfat"
 	default n
 	default n
@@ -259,7 +271,7 @@ config BUSYBOX_FEATURE_GETOPT_LONG
 
 
 config BUSYBOX_HEXDUMP
 config BUSYBOX_HEXDUMP
 	bool "hexdump"
 	bool "hexdump"
-	default n
+	default y
 	help
 	help
 	  The hexdump utility is used to display binary data in a readable
 	  The hexdump utility is used to display binary data in a readable
 	  way that is comparable to the output from most hex editors.
 	  way that is comparable to the output from most hex editors.
@@ -337,6 +349,24 @@ config BUSYBOX_LOSETUP
 	  file or block device, and to query the status of a loop device. This
 	  file or block device, and to query the status of a loop device. This
 	  version does not currently support enabling data encryption.
 	  version does not currently support enabling data encryption.
 
 
+config BUSYBOX_LSPCI
+	bool "lspci"
+	default n
+	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_LSUSB
+	bool "lsusb"
+	default n
+	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_MDEV
 config BUSYBOX_MDEV
 	bool "mdev"
 	bool "mdev"
 	default y
 	default y
@@ -446,6 +476,13 @@ config BUSYBOX_FEATURE_VOLUMEID_EXT
 	help
 	help
 	  TODO
 	  TODO
 
 
+config BUSYBOX_FEATURE_VOLUMEID_BTRFS
+	bool "btrfs filesystem"
+	default n
+	depends on BUSYBOX_VOLUMEID
+	help
+	  TODO
+
 config BUSYBOX_FEATURE_VOLUMEID_REISERFS
 config BUSYBOX_FEATURE_VOLUMEID_REISERFS
 	bool "Reiser filesystem"
 	bool "Reiser filesystem"
 	default n
 	default n
@@ -684,12 +721,13 @@ config BUSYBOX_FEATURE_MOUNT_HELPERS
 
 
 config BUSYBOX_FEATURE_MOUNT_LABEL
 config BUSYBOX_FEATURE_MOUNT_LABEL
 	bool "Support specifiying devices by label or UUID"
 	bool "Support specifiying devices by label or UUID"
-	default n
+	default y
 	depends on BUSYBOX_MOUNT
 	depends on BUSYBOX_MOUNT
 	select BUSYBOX_VOLUMEID
 	select BUSYBOX_VOLUMEID
 	help
 	help
 	  This allows for specifying a device by label or uuid, rather than by
 	  This allows for specifying a device by label or uuid, rather than by
 	  name. This feature utilizes the same functionality as blkid/findfs.
 	  name. This feature utilizes the same functionality as blkid/findfs.
+	  This also enables label or uuid support for swapon.
 
 
 config BUSYBOX_FEATURE_MOUNT_NFS
 config BUSYBOX_FEATURE_MOUNT_NFS
 	bool "Support mounting NFS file systems"
 	bool "Support mounting NFS file systems"
@@ -738,7 +776,7 @@ config BUSYBOX_PIVOT_ROOT
 
 
 config BUSYBOX_RDATE
 config BUSYBOX_RDATE
 	bool "rdate"
 	bool "rdate"
-	default n
+	default y
 	help
 	help
 	  The rdate utility allows you to synchronize the date and time of your
 	  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
 	  system clock with the date and time of a remote networked system using

+ 139 - 97
package/busybox/patches/001-ipkg.patch

@@ -1,6 +1,6 @@
 diff -Nur busybox-1.16.1.orig/archival/Config.in busybox-1.16.1/archival/Config.in
 diff -Nur busybox-1.16.1.orig/archival/Config.in busybox-1.16.1/archival/Config.in
 --- busybox-1.16.1.orig/archival/Config.in	2010-03-28 19:43:35.000000000 +0200
 --- busybox-1.16.1.orig/archival/Config.in	2010-03-28 19:43:35.000000000 +0200
-+++ busybox-1.16.1/archival/Config.in	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/Config.in	2010-04-22 19:18:12.000000000 +0200
 @@ -187,6 +187,14 @@
 @@ -187,6 +187,14 @@
  	  are actually slower than gzip at equivalent compression ratios
  	  are actually slower than gzip at equivalent compression ratios
  	  and take up 3.2K of code.
  	  and take up 3.2K of code.
@@ -18,7 +18,7 @@ diff -Nur busybox-1.16.1.orig/archival/Config.in busybox-1.16.1/archival/Config.
  	default n
  	default n
 diff -Nur busybox-1.16.1.orig/archival/ipkg.c busybox-1.16.1/archival/ipkg.c
 diff -Nur busybox-1.16.1.orig/archival/ipkg.c busybox-1.16.1/archival/ipkg.c
 --- busybox-1.16.1.orig/archival/ipkg.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/ipkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/ipkg.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/ipkg.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,28 @@
 @@ -0,0 +1,28 @@
 +/* ipkg.c - the itsy package management system
 +/* ipkg.c - the itsy package management system
 +
 +
@@ -50,7 +50,7 @@ diff -Nur busybox-1.16.1.orig/archival/ipkg.c busybox-1.16.1/archival/ipkg.c
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/Kbuild busybox-1.16.1/archival/Kbuild
 diff -Nur busybox-1.16.1.orig/archival/Kbuild busybox-1.16.1/archival/Kbuild
 --- busybox-1.16.1.orig/archival/Kbuild	2010-03-20 03:58:07.000000000 +0100
 --- busybox-1.16.1.orig/archival/Kbuild	2010-03-20 03:58:07.000000000 +0100
-+++ busybox-1.16.1/archival/Kbuild	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/Kbuild	2010-04-22 19:18:12.000000000 +0200
 @@ -16,6 +16,7 @@
 @@ -16,6 +16,7 @@
  lib-$(CONFIG_DPKG_DEB)		+= dpkg_deb.o
  lib-$(CONFIG_DPKG_DEB)		+= dpkg_deb.o
  lib-$(CONFIG_GUNZIP)		+= bbunzip.o
  lib-$(CONFIG_GUNZIP)		+= bbunzip.o
@@ -61,7 +61,7 @@ diff -Nur busybox-1.16.1.orig/archival/Kbuild busybox-1.16.1/archival/Kbuild
  lib-$(CONFIG_RPM2CPIO)		+= rpm2cpio.o
  lib-$(CONFIG_RPM2CPIO)		+= rpm2cpio.o
 diff -Nur busybox-1.16.1.orig/archival/libipkg/args.c busybox-1.16.1/archival/libipkg/args.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/args.c busybox-1.16.1/archival/libipkg/args.c
 --- busybox-1.16.1.orig/archival/libipkg/args.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/args.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/args.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/args.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,242 @@
 @@ -0,0 +1,242 @@
 +/* args.c - parse command-line args
 +/* args.c - parse command-line args
 + 
 + 
@@ -307,7 +307,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/args.c busybox-1.16.1/archival/li
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/args.h busybox-1.16.1/archival/libipkg/args.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/args.h busybox-1.16.1/archival/libipkg/args.h
 --- busybox-1.16.1.orig/archival/libipkg/args.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/args.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/args.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/args.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,72 @@
 @@ -0,0 +1,72 @@
 +/* args.h - parse command-line args
 +/* args.h - parse command-line args
 +
 +
@@ -383,7 +383,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/args.h busybox-1.16.1/archival/li
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.c busybox-1.16.1/archival/libipkg/conffile.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.c busybox-1.16.1/archival/libipkg/conffile.c
 --- busybox-1.16.1.orig/archival/libipkg/conffile.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/conffile.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/conffile.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/conffile.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,65 @@
 @@ -0,0 +1,65 @@
 +/* conffile.c - the itsy package management system
 +/* conffile.c - the itsy package management system
 +
 +
@@ -452,7 +452,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.c busybox-1.16.1/archiva
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.h busybox-1.16.1/archival/libipkg/conffile.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.h busybox-1.16.1/archival/libipkg/conffile.h
 --- busybox-1.16.1.orig/archival/libipkg/conffile.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/conffile.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/conffile.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/conffile.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,30 @@
 @@ -0,0 +1,30 @@
 +/* conffile.h - the itsy package management system
 +/* conffile.h - the itsy package management system
 +
 +
@@ -486,7 +486,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile.h busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.c busybox-1.16.1/archival/libipkg/conffile_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.c busybox-1.16.1/archival/libipkg/conffile_list.c
 --- busybox-1.16.1.orig/archival/libipkg/conffile_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/conffile_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/conffile_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/conffile_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,47 @@
 @@ -0,0 +1,47 @@
 +/* conffile_list.c - the itsy package management system
 +/* conffile_list.c - the itsy package management system
 +
 +
@@ -537,7 +537,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.c busybox-1.16.1/ar
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.h busybox-1.16.1/archival/libipkg/conffile_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.h busybox-1.16.1/archival/libipkg/conffile_list.h
 --- busybox-1.16.1.orig/archival/libipkg/conffile_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/conffile_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/conffile_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/conffile_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,36 @@
 @@ -0,0 +1,36 @@
 +/* conffile_list.h - the itsy package management system
 +/* conffile_list.h - the itsy package management system
 +
 +
@@ -577,7 +577,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/conffile_list.h busybox-1.16.1/ar
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.c busybox-1.16.1/archival/libipkg/file_util.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.c busybox-1.16.1/archival/libipkg/file_util.c
 --- busybox-1.16.1.orig/archival/libipkg/file_util.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/file_util.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/file_util.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/file_util.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,186 @@
 @@ -0,0 +1,186 @@
 +/* file_util.c - convenience routines for common stat operations
 +/* file_util.c - convenience routines for common stat operations
 +
 +
@@ -767,7 +767,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.c busybox-1.16.1/archiv
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.h busybox-1.16.1/archival/libipkg/file_util.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.h busybox-1.16.1/archival/libipkg/file_util.h
 --- busybox-1.16.1.orig/archival/libipkg/file_util.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/file_util.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/file_util.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/file_util.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,29 @@
 @@ -0,0 +1,29 @@
 +/* file_util.h - convenience routines for common file operations
 +/* file_util.h - convenience routines for common file operations
 +
 +
@@ -800,7 +800,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/file_util.h busybox-1.16.1/archiv
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.c busybox-1.16.1/archival/libipkg/hash_table.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.c busybox-1.16.1/archival/libipkg/hash_table.c
 --- busybox-1.16.1.orig/archival/libipkg/hash_table.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/hash_table.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/hash_table.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/hash_table.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,155 @@
 @@ -0,0 +1,155 @@
 +/* hash.c - hash tables for ipkg
 +/* hash.c - hash tables for ipkg
 +
 +
@@ -959,7 +959,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.c busybox-1.16.1/archi
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.h busybox-1.16.1/archival/libipkg/hash_table.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.h busybox-1.16.1/archival/libipkg/hash_table.h
 --- busybox-1.16.1.orig/archival/libipkg/hash_table.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/hash_table.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/hash_table.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/hash_table.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,44 @@
 @@ -0,0 +1,44 @@
 +/* hash.h - hash tables for ipkg
 +/* hash.h - hash tables for ipkg
 +
 +
@@ -1007,7 +1007,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/hash_table.h busybox-1.16.1/archi
 +#endif /* _HASH_TABLE_H_ */
 +#endif /* _HASH_TABLE_H_ */
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.c busybox-1.16.1/archival/libipkg/ipkg_cmd.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.c busybox-1.16.1/archival/libipkg/ipkg_cmd.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_cmd.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_cmd.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,1386 @@
 @@ -0,0 +1,1386 @@
 +/* ipkg_cmd.c - the itsy package management system
 +/* ipkg_cmd.c - the itsy package management system
 +
 +
@@ -2397,7 +2397,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.c busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.h busybox-1.16.1/archival/libipkg/ipkg_cmd.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.h busybox-1.16.1/archival/libipkg/ipkg_cmd.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_cmd.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_cmd.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,41 @@
 @@ -0,0 +1,41 @@
 +/* ipkg_cmd.h - the itsy package management system
 +/* ipkg_cmd.h - the itsy package management system
 +
 +
@@ -2442,7 +2442,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_cmd.h busybox-1.16.1/archiva
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.c busybox-1.16.1/archival/libipkg/ipkg_conf.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.c busybox-1.16.1/archival/libipkg/ipkg_conf.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_conf.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_conf.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_conf.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_conf.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,711 @@
 @@ -0,0 +1,711 @@
 +/* ipkg_conf.c - the itsy package management system
 +/* ipkg_conf.c - the itsy package management system
 +
 +
@@ -3157,7 +3157,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.c busybox-1.16.1/archiv
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.h busybox-1.16.1/archival/libipkg/ipkg_conf.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.h busybox-1.16.1/archival/libipkg/ipkg_conf.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_conf.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_conf.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_conf.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_conf.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,107 @@
 @@ -0,0 +1,107 @@
 +/* ipkg_conf.h - the itsy package management system
 +/* ipkg_conf.h - the itsy package management system
 +
 +
@@ -3268,7 +3268,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_conf.h busybox-1.16.1/archiv
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.c busybox-1.16.1/archival/libipkg/ipkg_configure.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.c busybox-1.16.1/archival/libipkg/ipkg_configure.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_configure.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_configure.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_configure.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_configure.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,40 @@
 @@ -0,0 +1,40 @@
 +/* ipkg_configure.c - the itsy package management system
 +/* ipkg_configure.c - the itsy package management system
 +
 +
@@ -3312,7 +3312,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.c busybox-1.16.1/a
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.h busybox-1.16.1/archival/libipkg/ipkg_configure.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.h busybox-1.16.1/archival/libipkg/ipkg_configure.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_configure.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_configure.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_configure.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_configure.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,25 @@
 @@ -0,0 +1,25 @@
 +/* ipkg_configure.h - the itsy package management system
 +/* ipkg_configure.h - the itsy package management system
 +
 +
@@ -3341,7 +3341,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_configure.h busybox-1.16.1/a
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.c busybox-1.16.1/archival/libipkg/ipkg_download.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.c busybox-1.16.1/archival/libipkg/ipkg_download.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_download.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_download.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_download.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_download.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,195 @@
 @@ -0,0 +1,195 @@
 +/* ipkg_download.c - the itsy package management system
 +/* ipkg_download.c - the itsy package management system
 +
 +
@@ -3540,7 +3540,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.c busybox-1.16.1/ar
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.h busybox-1.16.1/archival/libipkg/ipkg_download.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.h busybox-1.16.1/archival/libipkg/ipkg_download.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_download.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_download.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_download.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_download.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,30 @@
 @@ -0,0 +1,30 @@
 +/* ipkg_download.h - the itsy package management system
 +/* ipkg_download.h - the itsy package management system
 +
 +
@@ -3574,7 +3574,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_download.h busybox-1.16.1/ar
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg.h busybox-1.16.1/archival/libipkg/ipkg.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg.h busybox-1.16.1/archival/libipkg/ipkg.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,68 @@
 @@ -0,0 +1,68 @@
 +/* ipkg.h - the itsy package management system
 +/* ipkg.h - the itsy package management system
 +
 +
@@ -3646,7 +3646,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg.h busybox-1.16.1/archival/li
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_includes.h busybox-1.16.1/archival/libipkg/ipkg_includes.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_includes.h busybox-1.16.1/archival/libipkg/ipkg_includes.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_includes.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_includes.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_includes.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_includes.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,79 @@
 @@ -0,0 +1,79 @@
 +#ifndef IPKG_INCLUDES_H
 +#ifndef IPKG_INCLUDES_H
 +#define IPKG_INCLUDES_H
 +#define IPKG_INCLUDES_H
@@ -3729,7 +3729,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_includes.h busybox-1.16.1/ar
 +#endif /* IPKG_INCLUDES_H */
 +#endif /* IPKG_INCLUDES_H */
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.c busybox-1.16.1/archival/libipkg/ipkg_install.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.c busybox-1.16.1/archival/libipkg/ipkg_install.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_install.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_install.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_install.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_install.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,1982 @@
 @@ -0,0 +1,1982 @@
 +/* ipkg_install.c - the itsy package management system
 +/* ipkg_install.c - the itsy package management system
 +
 +
@@ -5715,7 +5715,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.c busybox-1.16.1/arc
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.h busybox-1.16.1/archival/libipkg/ipkg_install.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.h busybox-1.16.1/archival/libipkg/ipkg_install.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_install.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_install.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_install.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_install.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,35 @@
 @@ -0,0 +1,35 @@
 +/* ipkg_install.h - the itsy package management system
 +/* ipkg_install.h - the itsy package management system
 +
 +
@@ -5754,7 +5754,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_install.h busybox-1.16.1/arc
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.c busybox-1.16.1/archival/libipkg/ipkg_message.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.c busybox-1.16.1/archival/libipkg/ipkg_message.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_message.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_message.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_message.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_message.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,35 @@
 @@ -0,0 +1,35 @@
 +/* ipkg_message.c - the itsy package management system
 +/* ipkg_message.c - the itsy package management system
 +
 +
@@ -5793,7 +5793,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.c busybox-1.16.1/arc
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.h busybox-1.16.1/archival/libipkg/ipkg_message.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.h busybox-1.16.1/archival/libipkg/ipkg_message.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_message.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_message.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_message.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_message.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,32 @@
 @@ -0,0 +1,32 @@
 +/* ipkg_message.h - the itsy package management system
 +/* ipkg_message.h - the itsy package management system
 +
 +
@@ -5829,7 +5829,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_message.h busybox-1.16.1/arc
 +#endif /* _IPKG_MESSAGE_H_ */
 +#endif /* _IPKG_MESSAGE_H_ */
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.c busybox-1.16.1/archival/libipkg/ipkg_remove.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.c busybox-1.16.1/archival/libipkg/ipkg_remove.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_remove.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_remove.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_remove.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_remove.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,385 @@
 @@ -0,0 +1,385 @@
 +/* ipkg_remove.c - the itsy package management system
 +/* ipkg_remove.c - the itsy package management system
 +
 +
@@ -6218,7 +6218,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.c busybox-1.16.1/arch
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.h busybox-1.16.1/archival/libipkg/ipkg_remove.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.h busybox-1.16.1/archival/libipkg/ipkg_remove.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_remove.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_remove.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_remove.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_remove.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,33 @@
 @@ -0,0 +1,33 @@
 +/* ipkg_remove.h - the itsy package management system
 +/* ipkg_remove.h - the itsy package management system
 +
 +
@@ -6255,7 +6255,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_remove.h busybox-1.16.1/arch
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.c busybox-1.16.1/archival/libipkg/ipkg_upgrade.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.c busybox-1.16.1/archival/libipkg/ipkg_upgrade.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_upgrade.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_upgrade.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,79 @@
 @@ -0,0 +1,79 @@
 +/* ipkg_upgrade.c - the itsy package management system
 +/* ipkg_upgrade.c - the itsy package management system
 +
 +
@@ -6338,7 +6338,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.c busybox-1.16.1/arc
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.h busybox-1.16.1/archival/libipkg/ipkg_upgrade.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.h busybox-1.16.1/archival/libipkg/ipkg_upgrade.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_upgrade.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_upgrade.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,18 @@
 @@ -0,0 +1,18 @@
 +/* ipkg_upgrade.c - the itsy package management system
 +/* ipkg_upgrade.c - the itsy package management system
 +
 +
@@ -6360,7 +6360,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_upgrade.h busybox-1.16.1/arc
 +int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
 +int ipkg_upgrade_pkg(ipkg_conf_t *conf, pkg_t *old);
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.c busybox-1.16.1/archival/libipkg/ipkg_utils.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.c busybox-1.16.1/archival/libipkg/ipkg_utils.c
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_utils.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_utils.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_utils.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_utils.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,185 @@
 @@ -0,0 +1,185 @@
 +/* ipkg_utils.c - the itsy package management system
 +/* ipkg_utils.c - the itsy package management system
 +
 +
@@ -6549,7 +6549,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.c busybox-1.16.1/archi
 +       
 +       
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.h busybox-1.16.1/archival/libipkg/ipkg_utils.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.h busybox-1.16.1/archival/libipkg/ipkg_utils.h
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_utils.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/ipkg_utils.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/ipkg_utils.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/ipkg_utils.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,29 @@
 @@ -0,0 +1,29 @@
 +/* ipkg_utils.h - the itsy package management system
 +/* ipkg_utils.h - the itsy package management system
 +
 +
@@ -6582,7 +6582,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/ipkg_utils.h busybox-1.16.1/archi
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/Kbuild busybox-1.16.1/archival/libipkg/Kbuild
 diff -Nur busybox-1.16.1.orig/archival/libipkg/Kbuild busybox-1.16.1/archival/libipkg/Kbuild
 --- busybox-1.16.1.orig/archival/libipkg/Kbuild	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/Kbuild	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/Kbuild	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/Kbuild	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,60 @@
 @@ -0,0 +1,60 @@
 +# Makefile for busybox
 +# Makefile for busybox
 +#
 +#
@@ -6646,7 +6646,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/Kbuild busybox-1.16.1/archival/li
 +CFLAGS += -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(IPKG_ARCH)\""
 +CFLAGS += -DIPKGLIBDIR="\"/usr/lib\"" -DHOST_CPU_STR="\"$(IPKG_ARCH)\""
 diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.c busybox-1.16.1/archival/libipkg/libipkg.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.c busybox-1.16.1/archival/libipkg/libipkg.c
 --- busybox-1.16.1.orig/archival/libipkg/libipkg.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/libipkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/libipkg.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/libipkg.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,525 @@
 @@ -0,0 +1,525 @@
 +/* ipkglib.c - the itsy package management system
 +/* ipkglib.c - the itsy package management system
 +
 +
@@ -7175,7 +7175,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.c busybox-1.16.1/archival
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.h busybox-1.16.1/archival/libipkg/libipkg.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.h busybox-1.16.1/archival/libipkg/libipkg.h
 --- busybox-1.16.1.orig/archival/libipkg/libipkg.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/libipkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/libipkg.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/libipkg.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,78 @@
 @@ -0,0 +1,78 @@
 +/* ipkglib.h - the itsy package management system
 +/* ipkglib.h - the itsy package management system
 +
 +
@@ -7257,7 +7257,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/libipkg.h busybox-1.16.1/archival
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.c busybox-1.16.1/archival/libipkg/nv_pair.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.c busybox-1.16.1/archival/libipkg/nv_pair.c
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/nv_pair.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/nv_pair.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,40 @@
 @@ -0,0 +1,40 @@
 +/* nv_pair.c - the itsy package management system
 +/* nv_pair.c - the itsy package management system
 +
 +
@@ -7301,7 +7301,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.c busybox-1.16.1/archival
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.h busybox-1.16.1/archival/libipkg/nv_pair.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.h busybox-1.16.1/archival/libipkg/nv_pair.h
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/nv_pair.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/nv_pair.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,32 @@
 @@ -0,0 +1,32 @@
 +/* nv_pair.h - the itsy package management system
 +/* nv_pair.h - the itsy package management system
 +
 +
@@ -7337,7 +7337,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair.h busybox-1.16.1/archival
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.c busybox-1.16.1/archival/libipkg/nv_pair_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.c busybox-1.16.1/archival/libipkg/nv_pair_list.c
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/nv_pair_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/nv_pair_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,98 @@
 @@ -0,0 +1,98 @@
 +/* nv_pair_list.c - the itsy package management system
 +/* nv_pair_list.c - the itsy package management system
 +
 +
@@ -7439,7 +7439,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.c busybox-1.16.1/arc
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.h busybox-1.16.1/archival/libipkg/nv_pair_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.h busybox-1.16.1/archival/libipkg/nv_pair_list.h
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/nv_pair_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/nv_pair_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/nv_pair_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,60 @@
 @@ -0,0 +1,60 @@
 +/* nv_pair_list.h - the itsy package management system
 +/* nv_pair_list.h - the itsy package management system
 +
 +
@@ -7503,7 +7503,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/nv_pair_list.h busybox-1.16.1/arc
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.c busybox-1.16.1/archival/libipkg/pkg.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.c busybox-1.16.1/archival/libipkg/pkg.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,1757 @@
 @@ -0,0 +1,1757 @@
 +/* pkg.c - the itsy package management system
 +/* pkg.c - the itsy package management system
 +
 +
@@ -9264,7 +9264,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.c busybox-1.16.1/archival/lib
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.c busybox-1.16.1/archival/libipkg/pkg_depends.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.c busybox-1.16.1/archival/libipkg/pkg_depends.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_depends.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_depends.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_depends.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_depends.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,1032 @@
 @@ -0,0 +1,1032 @@
 +/* pkg_depends.c - the itsy package management system
 +/* pkg_depends.c - the itsy package management system
 +
 +
@@ -10300,7 +10300,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.c busybox-1.16.1/arch
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.h busybox-1.16.1/archival/libipkg/pkg_depends.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.h busybox-1.16.1/archival/libipkg/pkg_depends.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_depends.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_depends.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_depends.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_depends.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,105 @@
 @@ -0,0 +1,105 @@
 +/* pkg_depends.h - the itsy package management system
 +/* pkg_depends.h - the itsy package management system
 +
 +
@@ -10409,7 +10409,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_depends.h busybox-1.16.1/arch
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.c busybox-1.16.1/archival/libipkg/pkg_dest.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.c busybox-1.16.1/archival/libipkg/pkg_dest.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_dest.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_dest.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,92 @@
 @@ -0,0 +1,92 @@
 +/* pkg_dest.c - the itsy package management system
 +/* pkg_dest.c - the itsy package management system
 +
 +
@@ -10505,7 +10505,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.c busybox-1.16.1/archiva
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.h busybox-1.16.1/archival/libipkg/pkg_dest.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.h busybox-1.16.1/archival/libipkg/pkg_dest.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_dest.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_dest.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,38 @@
 @@ -0,0 +1,38 @@
 +/* pkg_dest.h - the itsy package management system
 +/* pkg_dest.h - the itsy package management system
 +
 +
@@ -10547,7 +10547,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest.h busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.c busybox-1.16.1/archival/libipkg/pkg_dest_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.c busybox-1.16.1/archival/libipkg/pkg_dest_list.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_dest_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_dest_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,85 @@
 @@ -0,0 +1,85 @@
 +/* pkg_dest_list.c - the itsy package management system
 +/* pkg_dest_list.c - the itsy package management system
 +
 +
@@ -10636,7 +10636,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.c busybox-1.16.1/ar
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.h busybox-1.16.1/archival/libipkg/pkg_dest_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.h busybox-1.16.1/archival/libipkg/pkg_dest_list.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_dest_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_dest_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,50 @@
 @@ -0,0 +1,50 @@
 +/* pkg_dest_list.h - the itsy package management system
 +/* pkg_dest_list.h - the itsy package management system
 +
 +
@@ -10690,8 +10690,8 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_dest_list.h busybox-1.16.1/ar
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/archival/libipkg/pkg_extract.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/archival/libipkg/pkg_extract.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_extract.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_extract.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_extract.c	2010-04-04 13:52:46.000000000 +0200
-@@ -0,0 +1,225 @@
++++ busybox-1.16.1/archival/libipkg/pkg_extract.c	2010-04-22 19:33:49.000000000 +0200
+@@ -0,0 +1,255 @@
 +/* pkg_extract.c - the itsy package management system
 +/* pkg_extract.c - the itsy package management system
 +
 +
 +   Carl D. Worth
 +   Carl D. Worth
@@ -10725,6 +10725,36 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +#define IPKG_DATA_ARCHIVE  "data.tar.gz"
 +#define IPKG_DATA_ARCHIVE  "data.tar.gz"
 +#define IPKG_CONTROL_FILE  "control"
 +#define IPKG_CONTROL_FILE  "control"
 +
 +
++static void FAST_FUNC ipkg_data_extract_all_prefix(archive_handle_t *archive_handle)
++{
++	char *name_ptr = archive_handle->file_header->name;
++
++	/* Skip all leading "/" */
++	while (*name_ptr == '/')
++		name_ptr++;
++	/* Skip all leading "./" and "../" */
++	while (name_ptr[0] == '.') {
++		if (name_ptr[1] == '.' && name_ptr[2] == '/')
++			name_ptr++;
++		if (name_ptr[1] != '/')
++			break;
++		name_ptr += 2;
++	}
++
++	if (name_ptr[0] != '\0') {
++		archive_handle->file_header->name = xasprintf("%s%s", archive_handle->dpkg__buffer, name_ptr);
++		data_extract_all(archive_handle);
++	}
++}
++
++static void FAST_FUNC ipkg_data_extract_to_buffer(archive_handle_t *archive_handle)
++{
++	unsigned size = archive_handle->file_header->size;
++
++	archive_handle->dpkg__buffer = xzalloc(size + 1);
++	xread(archive_handle->src_fd, archive_handle->dpkg__buffer, size);
++}
++
 +static void extract_ipkg_file_to_dir(pkg_t *pkg, const char *dir, const char *filename)
 +static void extract_ipkg_file_to_dir(pkg_t *pkg, const char *dir, const char *filename)
 +{
 +{
 +	archive_handle_t *archive;
 +	archive_handle_t *archive;
@@ -10735,9 +10765,9 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +	archive->src_fd = xopen(pkg->local_filename, O_RDONLY);
 +	archive->src_fd = xopen(pkg->local_filename, O_RDONLY);
 +	archive->filter = filter_accept_list;
 +	archive->filter = filter_accept_list;
 +	llist_add_to(&(archive->accept), (char *)filename);
 +	llist_add_to(&(archive->accept), (char *)filename);
-+	archive->buffer = path;
-+	archive->action_data = data_extract_all_prefix;
-+	archive->ah_flags |= ARCHIVE_EXTRACT_UNCONDITIONAL;
++	archive->dpkg__buffer = path;
++	archive->action_data = ipkg_data_extract_all_prefix;
++	archive->ah_flags |= ARCHIVE_UNLINK_OLD;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
 +	close(archive->src_fd);
 +	free(archive->accept);
 +	free(archive->accept);
@@ -10749,15 +10779,15 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +{
 +{
 +	unsigned int size = strlen(archive->file_header->name) + 2;
 +	unsigned int size = strlen(archive->file_header->name) + 2;
 +
 +
-+	if (archive->buffer == NULL) {
-+		archive->buffer = xmalloc(size);
-+		strcpy(archive->buffer, archive->file_header->name);
++	if (archive->dpkg__buffer == NULL) {
++		archive->dpkg__buffer = xmalloc(size);
++		strcpy(archive->dpkg__buffer, archive->file_header->name);
 +	} else {
 +	} else {
-+		size += strlen(archive->buffer);
-+		archive->buffer = xrealloc(archive->buffer, size);
-+		strcat(archive->buffer, archive->file_header->name);
++		size += strlen(archive->dpkg__buffer);
++		archive->dpkg__buffer = xrealloc(archive->dpkg__buffer, size);
++		strcat(archive->dpkg__buffer, archive->file_header->name);
 +	} 
 +	} 
-+	strcat(archive->buffer, "\n");
++	strcat(archive->dpkg__buffer, "\n");
 +	data_skip(archive);
 +	data_skip(archive);
 +}
 +}
 +
 +
@@ -10773,11 +10803,11 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->filter = filter_accept_list;
 +	archive->filter = filter_accept_list;
 +	llist_add_to(&(archive->accept), (char *)filename);
 +	llist_add_to(&(archive->accept), (char *)filename);
-+	archive->action_data = data_extract_to_buffer;
++	archive->action_data = ipkg_data_extract_to_buffer;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
 +	close(archive->src_fd);
-+	fputs(archive->buffer, stream);
-+	free(archive->buffer);
++	fputs(archive->dpkg__buffer, stream);
++	free(archive->dpkg__buffer);
 +	free(archive->accept);
 +	free(archive->accept);
 +	free(archive);
 +	free(archive);
 +	free(name);
 +	free(name);
@@ -10802,9 +10832,9 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +	archive = init_handle();
 +	archive = init_handle();
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->filter = filter_accept_all;
 +	archive->filter = filter_accept_all;
-+	archive->buffer = path;
-+	archive->action_data = data_extract_all_prefix;
-+	archive->ah_flags |= ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_PRESERVE_DATE | ARCHIVE_EXTRACT_UNCONDITIONAL;
++	archive->dpkg__buffer = path;
++	archive->action_data = ipkg_data_extract_all_prefix;
++	archive->ah_flags |= ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_RESTORE_DATE | ARCHIVE_UNLINK_OLD;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
 +	close(archive->src_fd);
 +	free(archive);
 +	free(archive);
@@ -10826,9 +10856,9 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +	archive = init_handle();
 +	archive = init_handle();
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->src_fd = xopen(name, O_RDONLY);
 +	archive->filter = filter_accept_all;
 +	archive->filter = filter_accept_all;
-+	archive->buffer = path;
-+	archive->action_data = data_extract_all_prefix;
-+	archive->ah_flags |= ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_PRESERVE_DATE | ARCHIVE_EXTRACT_UNCONDITIONAL;
++	archive->dpkg__buffer = path;
++	archive->action_data = ipkg_data_extract_all_prefix;
++	archive->ah_flags |= ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_RESTORE_DATE | ARCHIVE_UNLINK_OLD;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
 +	close(archive->src_fd);
 +	free(archive);
 +	free(archive);
@@ -10910,8 +10940,8 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +	archive->action_data = data_extract_file_name_to_buffer;
 +	archive->action_data = data_extract_file_name_to_buffer;
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	while( get_header_tar_gz(archive) == EXIT_SUCCESS );
 +	close(archive->src_fd);
 +	close(archive->src_fd);
-+	fputs(archive->buffer, file);
-+	free(archive->buffer);
++	fputs(archive->dpkg__buffer, file);
++	free(archive->dpkg__buffer);
 +	free(archive);
 +	free(archive);
 +	free(name);
 +	free(name);
 +	
 +	
@@ -10919,7 +10949,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.c busybox-1.16.1/arch
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.h busybox-1.16.1/archival/libipkg/pkg_extract.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.h busybox-1.16.1/archival/libipkg/pkg_extract.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_extract.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_extract.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_extract.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_extract.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,32 @@
 @@ -0,0 +1,32 @@
 +/* pkg_extract.c - the itsy package management system
 +/* pkg_extract.c - the itsy package management system
 +
 +
@@ -10955,7 +10985,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_extract.h busybox-1.16.1/arch
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.h busybox-1.16.1/archival/libipkg/pkg.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.h busybox-1.16.1/archival/libipkg/pkg.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,229 @@
 @@ -0,0 +1,229 @@
 +/* pkg.h - the itsy package management system
 +/* pkg.h - the itsy package management system
 +
 +
@@ -11188,7 +11218,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg.h busybox-1.16.1/archival/lib
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.c busybox-1.16.1/archival/libipkg/pkg_hash.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.c busybox-1.16.1/archival/libipkg/pkg_hash.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_hash.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_hash.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_hash.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_hash.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,623 @@
 @@ -0,0 +1,623 @@
 +/* ipkg_hash.c - the itsy package management system
 +/* ipkg_hash.c - the itsy package management system
 +
 +
@@ -11815,7 +11845,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.c busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.h busybox-1.16.1/archival/libipkg/pkg_hash.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.h busybox-1.16.1/archival/libipkg/pkg_hash.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_hash.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_hash.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_hash.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_hash.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,61 @@
 @@ -0,0 +1,61 @@
 +/* pkg_hash.h - the itsy package management system
 +/* pkg_hash.h - the itsy package management system
 +
 +
@@ -11880,7 +11910,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_hash.h busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.c busybox-1.16.1/archival/libipkg/pkg_parse.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.c busybox-1.16.1/archival/libipkg/pkg_parse.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_parse.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_parse.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_parse.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_parse.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,368 @@
 @@ -0,0 +1,368 @@
 +/* pkg_parse.c - the itsy package management system
 +/* pkg_parse.c - the itsy package management system
 +
 +
@@ -12252,7 +12282,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.c busybox-1.16.1/archiv
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.h busybox-1.16.1/archival/libipkg/pkg_parse.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.h busybox-1.16.1/archival/libipkg/pkg_parse.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_parse.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_parse.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_parse.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_parse.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,31 @@
 @@ -0,0 +1,31 @@
 +/* pkg_parse.h - the itsy package management system
 +/* pkg_parse.h - the itsy package management system
 +
 +
@@ -12287,7 +12317,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_parse.h busybox-1.16.1/archiv
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.c busybox-1.16.1/archival/libipkg/pkg_src.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.c busybox-1.16.1/archival/libipkg/pkg_src.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_src.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_src.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,43 @@
 @@ -0,0 +1,43 @@
 +/* pkg_src.c - the itsy package management system
 +/* pkg_src.c - the itsy package management system
 +
 +
@@ -12334,7 +12364,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.c busybox-1.16.1/archival
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.h busybox-1.16.1/archival/libipkg/pkg_src.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.h busybox-1.16.1/archival/libipkg/pkg_src.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_src.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_src.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,34 @@
 @@ -0,0 +1,34 @@
 +/* pkg_src.h - the itsy package management system
 +/* pkg_src.h - the itsy package management system
 +
 +
@@ -12372,7 +12402,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src.h busybox-1.16.1/archival
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.c busybox-1.16.1/archival/libipkg/pkg_src_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.c busybox-1.16.1/archival/libipkg/pkg_src_list.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_src_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_src_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,75 @@
 @@ -0,0 +1,75 @@
 +/* pkg_src_list.c - the itsy package management system
 +/* pkg_src_list.c - the itsy package management system
 +
 +
@@ -12451,7 +12481,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.c busybox-1.16.1/arc
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.h busybox-1.16.1/archival/libipkg/pkg_src_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.h busybox-1.16.1/archival/libipkg/pkg_src_list.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_src_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_src_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_src_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,57 @@
 @@ -0,0 +1,57 @@
 +/* pkg_src_list.h - the itsy package management system
 +/* pkg_src_list.h - the itsy package management system
 +
 +
@@ -12512,7 +12542,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_src_list.h busybox-1.16.1/arc
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.c busybox-1.16.1/archival/libipkg/pkg_vec.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.c busybox-1.16.1/archival/libipkg/pkg_vec.c
 --- busybox-1.16.1.orig/archival/libipkg/pkg_vec.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_vec.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_vec.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_vec.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,231 @@
 @@ -0,0 +1,231 @@
 +/* pkg_vec.c - the itsy package management system
 +/* pkg_vec.c - the itsy package management system
 +
 +
@@ -12747,7 +12777,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.c busybox-1.16.1/archival
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.h busybox-1.16.1/archival/libipkg/pkg_vec.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.h busybox-1.16.1/archival/libipkg/pkg_vec.h
 --- busybox-1.16.1.orig/archival/libipkg/pkg_vec.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/pkg_vec.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/pkg_vec.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/pkg_vec.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,62 @@
 @@ -0,0 +1,62 @@
 +/* pkg_vec.h - the itsy package management system
 +/* pkg_vec.h - the itsy package management system
 +
 +
@@ -12813,7 +12843,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/pkg_vec.h busybox-1.16.1/archival
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/sprintf_alloc.h busybox-1.16.1/archival/libipkg/sprintf_alloc.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/sprintf_alloc.h busybox-1.16.1/archival/libipkg/sprintf_alloc.h
 --- busybox-1.16.1.orig/archival/libipkg/sprintf_alloc.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/sprintf_alloc.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/sprintf_alloc.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/sprintf_alloc.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,25 @@
 @@ -0,0 +1,25 @@
 +/* sprintf_alloca.c -- like sprintf with memory allocation
 +/* sprintf_alloca.c -- like sprintf with memory allocation
 +
 +
@@ -12842,7 +12872,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/sprintf_alloc.h busybox-1.16.1/ar
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.c busybox-1.16.1/archival/libipkg/str_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.c busybox-1.16.1/archival/libipkg/str_list.c
 --- busybox-1.16.1.orig/archival/libipkg/str_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/str_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/str_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/str_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,76 @@
 @@ -0,0 +1,76 @@
 +/* str_list.c - the itsy package management system
 +/* str_list.c - the itsy package management system
 +
 +
@@ -12922,7 +12952,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.c busybox-1.16.1/archiva
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.h busybox-1.16.1/archival/libipkg/str_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.h busybox-1.16.1/archival/libipkg/str_list.h
 --- busybox-1.16.1.orig/archival/libipkg/str_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/str_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/str_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/str_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,51 @@
 @@ -0,0 +1,51 @@
 +/* str_list.h - the itsy package management system
 +/* str_list.h - the itsy package management system
 +
 +
@@ -12977,7 +13007,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/str_list.h busybox-1.16.1/archiva
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.c busybox-1.16.1/archival/libipkg/str_util.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.c busybox-1.16.1/archival/libipkg/str_util.c
 --- busybox-1.16.1.orig/archival/libipkg/str_util.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/str_util.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/str_util.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/str_util.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,69 @@
 @@ -0,0 +1,69 @@
 +/* str_utils.c - the itsy package management system
 +/* str_utils.c - the itsy package management system
 +
 +
@@ -13050,7 +13080,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.c busybox-1.16.1/archiva
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.h busybox-1.16.1/archival/libipkg/str_util.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.h busybox-1.16.1/archival/libipkg/str_util.h
 --- busybox-1.16.1.orig/archival/libipkg/str_util.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/str_util.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/str_util.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/str_util.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,27 @@
 @@ -0,0 +1,27 @@
 +/* str_utils.h - the itsy package management system
 +/* str_utils.h - the itsy package management system
 +
 +
@@ -13081,7 +13111,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/str_util.h busybox-1.16.1/archiva
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/user.c busybox-1.16.1/archival/libipkg/user.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/user.c busybox-1.16.1/archival/libipkg/user.c
 --- busybox-1.16.1.orig/archival/libipkg/user.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/user.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/user.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/user.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,49 @@
 @@ -0,0 +1,49 @@
 +/* user.c - the itsy package management system
 +/* user.c - the itsy package management system
 +
 +
@@ -13134,7 +13164,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/user.c busybox-1.16.1/archival/li
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/user.h busybox-1.16.1/archival/libipkg/user.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/user.h busybox-1.16.1/archival/libipkg/user.h
 --- busybox-1.16.1.orig/archival/libipkg/user.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/user.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/user.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/user.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,23 @@
 @@ -0,0 +1,23 @@
 +/* user.c - the itsy package management system
 +/* user.c - the itsy package management system
 +
 +
@@ -13161,7 +13191,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/user.h busybox-1.16.1/archival/li
 +
 +
 diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.c busybox-1.16.1/archival/libipkg/void_list.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.c busybox-1.16.1/archival/libipkg/void_list.c
 --- busybox-1.16.1.orig/archival/libipkg/void_list.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/void_list.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/void_list.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/void_list.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,194 @@
 @@ -0,0 +1,194 @@
 +/* void_list.c - the itsy package management system
 +/* void_list.c - the itsy package management system
 +
 +
@@ -13359,7 +13389,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.c busybox-1.16.1/archiv
 +}
 +}
 diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.h busybox-1.16.1/archival/libipkg/void_list.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.h busybox-1.16.1/archival/libipkg/void_list.h
 --- busybox-1.16.1.orig/archival/libipkg/void_list.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/void_list.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/void_list.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/void_list.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,59 @@
 @@ -0,0 +1,59 @@
 +/* void_list.h - the itsy package management system
 +/* void_list.h - the itsy package management system
 +
 +
@@ -13422,7 +13452,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/void_list.h busybox-1.16.1/archiv
 +#endif
 +#endif
 diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.c busybox-1.16.1/archival/libipkg/xsystem.c
 diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.c busybox-1.16.1/archival/libipkg/xsystem.c
 --- busybox-1.16.1.orig/archival/libipkg/xsystem.c	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/xsystem.c	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/xsystem.c	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/xsystem.c	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,64 @@
 @@ -0,0 +1,64 @@
 +/* xsystem.c - system(3) with error messages
 +/* xsystem.c - system(3) with error messages
 +
 +
@@ -13490,7 +13520,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.c busybox-1.16.1/archival
 +	 
 +	 
 diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.h busybox-1.16.1/archival/libipkg/xsystem.h
 diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.h busybox-1.16.1/archival/libipkg/xsystem.h
 --- busybox-1.16.1.orig/archival/libipkg/xsystem.h	1970-01-01 01:00:00.000000000 +0100
 --- busybox-1.16.1.orig/archival/libipkg/xsystem.h	1970-01-01 01:00:00.000000000 +0100
-+++ busybox-1.16.1/archival/libipkg/xsystem.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libipkg/xsystem.h	2010-04-22 19:18:12.000000000 +0200
 @@ -0,0 +1,34 @@
 @@ -0,0 +1,34 @@
 +/* xsystem.h - system(3) with error messages
 +/* xsystem.h - system(3) with error messages
 +
 +
@@ -13528,7 +13558,7 @@ diff -Nur busybox-1.16.1.orig/archival/libipkg/xsystem.h busybox-1.16.1/archival
 +	 
 +	 
 diff -Nur busybox-1.16.1.orig/archival/libunarchive/Kbuild busybox-1.16.1/archival/libunarchive/Kbuild
 diff -Nur busybox-1.16.1.orig/archival/libunarchive/Kbuild busybox-1.16.1/archival/libunarchive/Kbuild
 --- busybox-1.16.1.orig/archival/libunarchive/Kbuild	2010-03-20 03:58:07.000000000 +0100
 --- busybox-1.16.1.orig/archival/libunarchive/Kbuild	2010-03-20 03:58:07.000000000 +0100
-+++ busybox-1.16.1/archival/libunarchive/Kbuild	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/archival/libunarchive/Kbuild	2010-04-22 19:18:12.000000000 +0200
 @@ -40,6 +40,7 @@
 @@ -40,6 +40,7 @@
  lib-$(CONFIG_DPKG)                      += $(DPKG_FILES)
  lib-$(CONFIG_DPKG)                      += $(DPKG_FILES)
  lib-$(CONFIG_DPKG_DEB)                  += $(DPKG_FILES)
  lib-$(CONFIG_DPKG_DEB)                  += $(DPKG_FILES)
@@ -13539,7 +13569,7 @@ diff -Nur busybox-1.16.1.orig/archival/libunarchive/Kbuild busybox-1.16.1/archiv
  lib-$(CONFIG_TAR)                       += get_header_tar.o
  lib-$(CONFIG_TAR)                       += get_header_tar.o
 diff -Nur busybox-1.16.1.orig/include/applets.h busybox-1.16.1/include/applets.h
 diff -Nur busybox-1.16.1.orig/include/applets.h busybox-1.16.1/include/applets.h
 --- busybox-1.16.1.orig/include/applets.h	2010-03-28 19:43:35.000000000 +0200
 --- busybox-1.16.1.orig/include/applets.h	2010-03-28 19:43:35.000000000 +0200
-+++ busybox-1.16.1/include/applets.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/include/applets.h	2010-04-22 19:18:12.000000000 +0200
 @@ -214,6 +214,7 @@
 @@ -214,6 +214,7 @@
  IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
  IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
@@ -13548,9 +13578,21 @@ diff -Nur busybox-1.16.1.orig/include/applets.h busybox-1.16.1/include/applets.h
  IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_DROP))
  IF_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_DROP))
+diff -Nur busybox-1.16.1.orig/include/unarchive.h busybox-1.16.1/include/unarchive.h
+--- busybox-1.16.1.orig/include/unarchive.h	2010-03-28 19:43:35.000000000 +0200
++++ busybox-1.16.1/include/unarchive.h	2010-04-22 19:21:25.000000000 +0200
+@@ -65,7 +65,7 @@
+ 	struct hardlinks_t *cpio__hardlinks_to_create;
+ 	struct hardlinks_t *cpio__created_hardlinks;
+ #endif
+-#if ENABLE_DPKG || ENABLE_DPKG_DEB
++#if ENABLE_DPKG || ENABLE_DPKG_DEB || ENABLE_IPKG
+ 	/* Temporary storage */
+ 	char *dpkg__buffer;
+ 	/* How to process any sub archive, e.g. get_header_tar_gz */
 diff -Nur busybox-1.16.1.orig/include/usage.h busybox-1.16.1/include/usage.h
 diff -Nur busybox-1.16.1.orig/include/usage.h busybox-1.16.1/include/usage.h
 --- busybox-1.16.1.orig/include/usage.h	2010-03-28 19:44:04.000000000 +0200
 --- busybox-1.16.1.orig/include/usage.h	2010-03-28 19:44:04.000000000 +0200
-+++ busybox-1.16.1/include/usage.h	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/include/usage.h	2010-04-22 19:18:12.000000000 +0200
 @@ -1592,6 +1592,82 @@
 @@ -1592,6 +1592,82 @@
         "$ ls -la /tmp/busybox*\n" \
         "$ ls -la /tmp/busybox*\n" \
         "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
         "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
@@ -13636,7 +13678,7 @@ diff -Nur busybox-1.16.1.orig/include/usage.h busybox-1.16.1/include/usage.h
  #define halt_full_usage "\n\n" \
  #define halt_full_usage "\n\n" \
 diff -Nur busybox-1.16.1.orig/Makefile busybox-1.16.1/Makefile
 diff -Nur busybox-1.16.1.orig/Makefile busybox-1.16.1/Makefile
 --- busybox-1.16.1.orig/Makefile	2010-03-28 19:44:09.000000000 +0200
 --- busybox-1.16.1.orig/Makefile	2010-03-28 19:44:09.000000000 +0200
-+++ busybox-1.16.1/Makefile	2010-04-04 13:52:46.000000000 +0200
++++ busybox-1.16.1/Makefile	2010-04-22 19:18:12.000000000 +0200
 @@ -454,6 +454,7 @@
 @@ -454,6 +454,7 @@
  
  
  libs-y		:= \
  libs-y		:= \

+ 1 - 1
package/cfgfs/Makefile

@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
 
 
 PKG_NAME:=		cfgfs
 PKG_NAME:=		cfgfs
 PKG_VERSION:=		1.0.7
 PKG_VERSION:=		1.0.7
-PKG_RELEASE:=		1
+PKG_RELEASE:=		2
 PKG_DESCR:=		compressed config filesystem
 PKG_DESCR:=		compressed config filesystem
 PKG_SECTION:=		base
 PKG_SECTION:=		base
 
 

+ 2 - 0
package/cfgfs/src/fwcf.sh

@@ -328,6 +328,8 @@ if test $1 = status; then
 		echo "<NULL> $name" >>$f
 		echo "<NULL> $name" >>$f
 	done
 	done
 	# this implementation of sort -o sucks: doesn't do in-place edits
 	# this implementation of sort -o sucks: doesn't do in-place edits
+	# workaround a busybox bug?
+	touch sold_status snew_status
 	sort -k2 -o sold_status $f
 	sort -k2 -o sold_status $f
 	sort -k2 -o snew_status cur_status
 	sort -k2 -o snew_status cur_status
 	gotany=0
 	gotany=0

+ 1 - 1
package/igmpproxy/Makefile

@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
 
 
 PKG_NAME:=		igmpproxy
 PKG_NAME:=		igmpproxy
 PKG_VERSION:=		0.1
 PKG_VERSION:=		0.1
-PKG_RELEASE:=		1
+PKG_RELEASE:=		2
 PKG_MD5SUM:=		c56f41ec195bc1fe016369bf74efc5a1
 PKG_MD5SUM:=		c56f41ec195bc1fe016369bf74efc5a1
 PKG_DESCR:=		a simple dynamic Multicast Routing Daemon
 PKG_DESCR:=		a simple dynamic Multicast Routing Daemon
 PKG_SECTION:=		net
 PKG_SECTION:=		net

+ 1 - 0
package/igmpproxy/files/igmpproxy.conffiles

@@ -0,0 +1 @@
+/etc/igmpproxy.conf

+ 26 - 0
package/igmpproxy/files/igmpproxy.init

@@ -0,0 +1,26 @@
+#!/bin/sh
+#PKG igmpproxy
+#INIT 70
+. /etc/rc.conf
+
+case $1 in
+autostop) ;;
+autostart)
+	test x"${igmpproxy:-NO}" = x"NO"
+	exec sh $0 start
+	;;
+start)
+	/usr/sbin/igmpproxy /etc/igmpproxy.conf &
+	;;
+stop)
+	pkill igmpproxy
+	;;
+restart)
+	sh $0 stop
+	sh $0 start
+	;;
+*)
+	echo "Usage: $0 {start | stop | restart}"
+	;;
+esac
+exit $?

+ 3 - 0
package/igmpproxy/files/igmpproxy.postinst

@@ -0,0 +1,3 @@
+#!/bin/sh
+. $IPKG_INSTROOT/etc/functions.sh
+add_rcconf igmpproxy igmpproxy NO

+ 9 - 3
package/krb5/Makefile

@@ -25,6 +25,10 @@ include $(TOPDIR)/mk/package.mk
 $(eval $(call PKG_template,KRB5_SERVER,krb5-server,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
 $(eval $(call PKG_template,KRB5_SERVER,krb5-server,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
 $(eval $(call PKG_template,LIBKRB5,libkrb5,$(PKG_VERSION)-${PKG_RELEASE},,${PKG_DESCR_LIB},${PKG_SECTION_LIB}))
 $(eval $(call PKG_template,LIBKRB5,libkrb5,$(PKG_VERSION)-${PKG_RELEASE},,${PKG_DESCR_LIB},${PKG_SECTION_LIB}))
 
 
+SUB_INSTALLS-y:=
+SUB_INSTALLS-m:=
+SUB_INSTALLS-${ADK_PACKAGE_LIBKRB5}+=	libkrb5-install
+
 TCFLAGS+=		-I${STAGING_DIR}/usr/include/et
 TCFLAGS+=		-I${STAGING_DIR}/usr/include/et
 CONFIGURE_ARGS+=	--disable-static \
 CONFIGURE_ARGS+=	--disable-static \
 			--disable-profiled \
 			--disable-profiled \
@@ -40,7 +44,7 @@ CONFIGURE_ENV+=		krb5_cv_attr_constructor_destructor=yes,yes \
 post-extract:
 post-extract:
 	(cd ${WRKDIR}; tar xzf ${PKG_NAME}-${PKG_VERSION}.tar.gz)
 	(cd ${WRKDIR}; tar xzf ${PKG_NAME}-${PKG_VERSION}.tar.gz)
 
 
-post-install:
+post-install: ${SUB_INSTALLS-m} ${SUB_INSTALLS-y}
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/etc
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/etc
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/etc/krb5kdc
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/etc/krb5kdc
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/usr/sbin
 	${INSTALL_DIR} ${IDIR_KRB5_SERVER}/usr/sbin
@@ -55,12 +59,14 @@ post-install:
 		${IDIR_KRB5_SERVER}/usr/lib/krb5/plugins/kdb
 		${IDIR_KRB5_SERVER}/usr/lib/krb5/plugins/kdb
 	${CP} ${WRKINST}/usr/lib/lib{gssrpc,kadm5clnt,kadm5srv,kdb5}.so* \
 	${CP} ${WRKINST}/usr/lib/lib{gssrpc,kadm5clnt,kadm5srv,kdb5}.so* \
 		${IDIR_KRB5_SERVER}/usr/lib
 		${IDIR_KRB5_SERVER}/usr/lib
-	# krb5-libs
+
+libkrb5-install:
 	${INSTALL_DIR} ${IDIR_LIBKRB5}/etc
 	${INSTALL_DIR} ${IDIR_LIBKRB5}/etc
 	${INSTALL_DIR} ${IDIR_LIBKRB5}/usr/lib
 	${INSTALL_DIR} ${IDIR_LIBKRB5}/usr/lib
 	${INSTALL_DATA} ./files/krb5.conf ${IDIR_LIBKRB5}/etc
 	${INSTALL_DATA} ./files/krb5.conf ${IDIR_LIBKRB5}/etc
 	${CP} ${WRKINST}/usr/lib/lib{gssapi_krb5,k5crypto,krb5,krb5support}.so* \
 	${CP} ${WRKINST}/usr/lib/lib{gssapi_krb5,k5crypto,krb5,krb5support}.so* \
 		${IDIR_LIBKRB5}/usr/lib
 		${IDIR_LIBKRB5}/usr/lib
-	echo '/usr/lib/libgssapi_krb5.so		mechglue_internal_krb5_init' > ${IDIR_LIBKRB5}/etc/gssapi_mech.conf
+	echo '/usr/lib/libgssapi_krb5.so		mechglue_internal_krb5_init' \
+		> ${IDIR_LIBKRB5}/etc/gssapi_mech.conf
 
 
 include ${TOPDIR}/mk/pkg-bottom.mk
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 1 - 1
package/nand/src/nand.c

@@ -494,7 +494,7 @@ usage(void)
 	"        -q                      quiet mode\n"
 	"        -q                      quiet mode\n"
 	"        -r                      reboot after successful command\n"
 	"        -r                      reboot after successful command\n"
 	"Example: To write linux.img to mtd partition labeled as linux\n"
 	"Example: To write linux.img to mtd partition labeled as linux\n"
-	"         mtd write linux.img linux\n\n");
+	"         nand write linux.img linux\n\n");
 	exit(1);
 	exit(1);
 }
 }
 
 

+ 38 - 0
package/rtsp/Makefile

@@ -0,0 +1,38 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+PKG_NAME:=		rtsp
+PKG_VERSION:=		1.0
+PKG_RELEASE:=		1
+PKG_MD5SUM:=		92bb09883dd8a77ec5cfbff1c8932b15
+PKG_DESCR:=		Netfilter connection tracking for RTSP
+PKG_SECTION:=		net
+PKG_URL:=		http://github.com/maru-sama/rtsp-linux-v2.6
+
+NO_DISTFILES:=          1
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,KMOD_RTSP,kmod-rtsp,${KERNEL_VERSION}-${ADK_TARGET}-${PKG_RELEASE},,${PKG_DESCR},${PKG_SECTION}))
+
+CONFIG_STYLE:=		manual
+BUILD_STYLE:=		manual
+INSTALL_STYLE:=		manual
+
+pre-build:
+	ARCH=${ARCH} KERNELDIR=${LINUX_DIR} \
+	PREFIX=/usr CROSS_COMPILE="${TARGET_CROSS}" \
+	LD=$(TARGET_CROSS)gcc LDFLAGS="" CFLAGS="-Wall" \
+	$(MAKE) -C ${WRKBUILD} debug V=1
+
+do-install:
+	${INSTALL_DIR} ${IDIR_KMOD_RTSP}/etc/modules.d/
+	echo "nf_conntrack_rtsp" > ${IDIR_KMOD_RTSP}/etc/modules.d/60-nf-nat-rtsp
+	echo "nf_nat_rtsp" >> ${IDIR_KMOD_RTSP}/etc/modules.d/60-nf-nat-rtsp
+	${INSTALL_DIR} ${IDIR_KMOD_RTSP}/lib/modules/${KERNEL_VERSION}/
+	${INSTALL_DATA} ${WRKBUILD}/*.ko \
+		${IDIR_KMOD_RTSP}/lib/modules/${KERNEL_VERSION}
+
+include ${TOPDIR}/mk/pkg-bottom.mk

+ 24 - 0
package/rtsp/src/Makefile

@@ -0,0 +1,24 @@
+ifneq ($(KERNELRELEASE),)
+# kbuild part of makefile
+ifndef CONFIG_NF_CONNTRACK
+$(error ** You need to enable NF_CONNTRACK in your kernel **)
+endif
+
+obj-m := nf_conntrack_rtsp.o nf_nat_rtsp.o
+else
+
+# Normal Makefile
+
+all: 
+	$(MAKE) -C $(KERNELDIR) M=`pwd` modules
+
+debug:
+	$(MAKE) -C $(KERNELDIR) EXTRA_CFLAGS=-DDEBUG M=`pwd` modules
+
+modules_install:
+	$(MAKE) -C $(KERNELDIR) M=`pwd` modules_install
+
+clean:
+	rm -rf *.o *.ko *.mod.c .*.cmd Module.symvers modules.order .tmp_versions
+
+endif

+ 40 - 0
package/rtsp/src/README.rst

@@ -0,0 +1,40 @@
+Disclaimer: 
+===========
+
+This software is provided as is. I take no responsibility if it destroys your
+data or opens up a security hole on your firewall. That said, I have yet to
+hear something about this happening.
+
+I did not create this code myself, most was written by Tom Marshall, later on
+Harald Welte and then Steven van Acker ported it to the new 2.6 netfilter API.
+I just picked up this code in 2007 and made it compile and hopefully work with
+the new changed netfilter API.
+
+Bugs: 
+=====
+
+Of course there are. One of the most important ones, is that you MUST NOT
+filter outgoing connections otherwise the reply packes go missing. I tried to
+figure out, why the _expect call is not taking care of the outgoing connections
+but I was not able to figure this out. I gladly welcome patches that fix this
+and other bugs.
+
+Build Instructions: 
+===================
+
+Have the kernel source ready in some place and NF_CONNTRACK_NAT enabled in the
+configuration otherwise you will get an error during make. The Kbuild setup
+looks in /lib/modules/\`uname -r\`/build for the source. 
+
+If the source is located in another place set the KERNELDIR environment
+variable accordingly.
+
+After that a:
+
+	* make 
+	* make modules_install (as root)
+
+should be enough.  
+Then do a "modprobe nf_nat_rtsp" as root and try to connect to a RTSP
+service.
+

+ 133 - 0
package/rtsp/src/netfilter_helpers.h

@@ -0,0 +1,133 @@
+/*
+ * Helpers for netfiler modules.  This file provides implementations for basic
+ * functions such as strncasecmp(), etc.
+ *
+ * gcc will warn for defined but unused functions, so we only include the
+ * functions requested.  The following macros are used:
+ *   NF_NEED_STRNCASECMP        nf_strncasecmp()
+ *   NF_NEED_STRTOU16           nf_strtou16()
+ *   NF_NEED_STRTOU32           nf_strtou32()
+ */
+#ifndef _NETFILTER_HELPERS_H
+#define _NETFILTER_HELPERS_H
+
+/* Only include these functions for kernel code. */
+#ifdef __KERNEL__
+
+#include <linux/ctype.h>
+#define iseol(c) ( (c) == '\r' || (c) == '\n' )
+
+/*
+ * The standard strncasecmp()
+ */
+#ifdef NF_NEED_STRNCASECMP
+static int
+nf_strncasecmp(const char* s1, const char* s2, u_int32_t len)
+{
+    if (s1 == NULL || s2 == NULL)
+    {
+        if (s1 == NULL && s2 == NULL)
+        {
+            return 0;
+        }
+        return (s1 == NULL) ? -1 : 1;
+    }
+    while (len > 0 && tolower(*s1) == tolower(*s2))
+    {
+        len--;
+        s1++;
+        s2++;
+    }
+    return ( (len == 0) ? 0 : (tolower(*s1) - tolower(*s2)) );
+}
+#endif /* NF_NEED_STRNCASECMP */
+
+/*
+ * Parse a string containing a 16-bit unsigned integer.
+ * Returns the number of chars used, or zero if no number is found.
+ */
+#ifdef NF_NEED_STRTOU16
+static int
+nf_strtou16(const char* pbuf, u_int16_t* pval)
+{
+    int n = 0;
+
+    *pval = 0;
+    while (isdigit(pbuf[n]))
+    {
+        *pval = (*pval * 10) + (pbuf[n] - '0');
+        n++;
+    }
+
+    return n;
+}
+#endif /* NF_NEED_STRTOU16 */
+
+/*
+ * Parse a string containing a 32-bit unsigned integer.
+ * Returns the number of chars used, or zero if no number is found.
+ */
+#ifdef NF_NEED_STRTOU32
+static int
+nf_strtou32(const char* pbuf, u_int32_t* pval)
+{
+    int n = 0;
+
+    *pval = 0;
+    while (pbuf[n] >= '0' && pbuf[n] <= '9')
+    {
+        *pval = (*pval * 10) + (pbuf[n] - '0');
+        n++;
+    }
+
+    return n;
+}
+#endif /* NF_NEED_STRTOU32 */
+
+/*
+ * Given a buffer and length, advance to the next line and mark the current
+ * line.
+ */
+#ifdef NF_NEED_NEXTLINE
+static int
+nf_nextline(char* p, uint len, uint* poff, uint* plineoff, uint* plinelen)
+{
+    uint    off = *poff;
+    uint    physlen = 0;
+
+    if (off >= len)
+    {
+        return 0;
+    }
+
+    while (p[off] != '\n')
+    {
+        if (len-off <= 1)
+        {
+            return 0;
+        }
+
+        physlen++;
+        off++;
+    }
+
+    /* if we saw a crlf, physlen needs adjusted */
+    if (physlen > 0 && p[off] == '\n' && p[off-1] == '\r')
+    {
+        physlen--;
+    }
+
+    /* advance past the newline */
+    off++;
+
+    *plineoff = *poff;
+    *plinelen = physlen;
+    *poff = off;
+
+    return 1;
+}
+#endif /* NF_NEED_NEXTLINE */
+
+#endif /* __KERNEL__ */
+
+#endif /* _NETFILTER_HELPERS_H */

+ 89 - 0
package/rtsp/src/netfilter_mime.h

@@ -0,0 +1,89 @@
+/*
+ * MIME functions for netfilter modules.  This file provides implementations
+ * for basic MIME parsing.  MIME headers are used in many protocols, such as
+ * HTTP, RTSP, SIP, etc.
+ *
+ * gcc will warn for defined but unused functions, so we only include the
+ * functions requested.  The following macros are used:
+ *   NF_NEED_MIME_NEXTLINE      nf_mime_nextline()
+ */
+#ifndef _NETFILTER_MIME_H
+#define _NETFILTER_MIME_H
+
+/* Only include these functions for kernel code. */
+#ifdef __KERNEL__
+
+#include <linux/ctype.h>
+
+/*
+ * Given a buffer and length, advance to the next line and mark the current
+ * line.  If the current line is empty, *plinelen will be set to zero.  If
+ * not, it will be set to the actual line length (including CRLF).
+ *
+ * 'line' in this context means logical line (includes LWS continuations).
+ * Returns 1 on success, 0 on failure.
+ */
+#ifdef NF_NEED_MIME_NEXTLINE
+static int
+nf_mime_nextline(char* p, uint len, uint* poff, uint* plineoff, uint* plinelen)
+{
+    uint    off = *poff;
+    uint    physlen = 0;
+    int     is_first_line = 1;
+
+    if (off >= len)
+    {
+        return 0;
+    }
+
+    do
+    {
+        while (p[off] != '\n')
+        {
+            if (len-off <= 1)
+            {
+                return 0;
+            }
+
+            physlen++;
+            off++;
+        }
+
+        /* if we saw a crlf, physlen needs adjusted */
+        if (physlen > 0 && p[off] == '\n' && p[off-1] == '\r')
+        {
+            physlen--;
+        }
+
+        /* advance past the newline */
+        off++;
+
+        /* check for an empty line */
+        if (physlen == 0)
+        {
+            break;
+        }
+
+        /* check for colon on the first physical line */
+        if (is_first_line)
+        {
+            is_first_line = 0;
+            if (memchr(p+(*poff), ':', physlen) == NULL)
+            {
+                return 0;
+            }
+        }
+    }
+    while (p[off] == ' ' || p[off] == '\t');
+
+    *plineoff = *poff;
+    *plinelen = (physlen == 0) ? 0 : (off - *poff);
+    *poff = off;
+
+    return 1;
+}
+#endif /* NF_NEED_MIME_NEXTLINE */
+
+#endif /* __KERNEL__ */
+
+#endif /* _NETFILTER_MIME_H */

+ 545 - 0
package/rtsp/src/nf_conntrack_rtsp.c

@@ -0,0 +1,545 @@
+/*
+ * RTSP extension for IP connection tracking
+ * (C) 2003 by Tom Marshall <tmarshall at real.com>
+ * based on ip_conntrack_irc.c
+ *
+ *      This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ *
+ * Module load syntax:
+ *   insmod nf_conntrack_rtsp.o ports=port1,port2,...port<MAX_PORTS>
+ *                              max_outstanding=n setup_timeout=secs
+ *
+ * If no ports are specified, the default will be port 554.
+ *
+ * With max_outstanding you can define the maximum number of not yet
+ * answered SETUP requests per RTSP session (default 8).
+ * With setup_timeout you can specify how long the system waits for
+ * an expected data channel (default 300 seconds).
+ *
+ * 2005-02-13: Harald Welte <laforge at netfilter.org>
+ * 	- port to 2.6
+ * 	- update to recent post-2.6.11 api changes
+ * 2006-09-14: Steven Van Acker <deepstar at singularity.be>
+ *      - removed calls to NAT code from conntrack helper: NAT no longer needed to use rtsp-conntrack
+ * 2007-04-18: Michael Guntsche <mike at it-loops.com>
+ * 			- Port to new NF API
+ */
+
+#include <linux/module.h>
+#include <linux/netfilter.h>
+#include <linux/ip.h>
+#include <linux/inet.h>
+#include <net/tcp.h>
+
+#include <net/netfilter/nf_conntrack.h>
+#include <net/netfilter/nf_conntrack_expect.h>
+#include <net/netfilter/nf_conntrack_helper.h>
+#include "nf_conntrack_rtsp.h"
+
+#define NF_NEED_STRNCASECMP
+#define NF_NEED_STRTOU16
+#define NF_NEED_STRTOU32
+#define NF_NEED_NEXTLINE
+#include "netfilter_helpers.h"
+#define NF_NEED_MIME_NEXTLINE
+#include "netfilter_mime.h"
+
+#include <linux/ctype.h>
+#define MAX_SIMUL_SETUP 8 /* XXX: use max_outstanding */
+
+#define MAX_PORTS 8
+static int ports[MAX_PORTS];
+static int num_ports = 0;
+static int max_outstanding = 8;
+static unsigned int setup_timeout = 300;
+
+MODULE_AUTHOR("Tom Marshall <tmarshall at real.com>");
+MODULE_DESCRIPTION("RTSP connection tracking module");
+MODULE_LICENSE("GPL");
+module_param_array(ports, int, &num_ports, 0400);
+MODULE_PARM_DESC(ports, "port numbers of RTSP servers");
+module_param(max_outstanding, int, 0400);
+MODULE_PARM_DESC(max_outstanding, "max number of outstanding SETUP requests per RTSP session");
+module_param(setup_timeout, int, 0400);
+MODULE_PARM_DESC(setup_timeout, "timeout on for unestablished data channels");
+
+static char *rtsp_buffer;
+static DEFINE_SPINLOCK(rtsp_buffer_lock);
+
+static struct nf_conntrack_expect_policy rtsp_exp_policy; 
+
+unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned int matchoff, unsigned int matchlen,struct ip_ct_rtsp_expect* prtspexp,
+				 struct nf_conntrack_expect *exp);
+void (*nf_nat_rtsp_hook_expectfn)(struct nf_conn *ct, struct nf_conntrack_expect *exp);
+
+EXPORT_SYMBOL_GPL(nf_nat_rtsp_hook);
+
+/*
+ * Max mappings we will allow for one RTSP connection (for RTP, the number
+ * of allocated ports is twice this value).  Note that SMIL burns a lot of
+ * ports so keep this reasonably high.  If this is too low, you will see a
+ * lot of "no free client map entries" messages.
+ */
+#define MAX_PORT_MAPS 16
+
+/*** default port list was here in the masq code: 554, 3030, 4040 ***/
+
+#define SKIP_WSPACE(ptr,len,off) while(off < len && isspace(*(ptr+off))) { off++; }
+
+/*
+ * Parse an RTSP packet.
+ *
+ * Returns zero if parsing failed.
+ *
+ * Parameters:
+ *  IN      ptcp        tcp data pointer
+ *  IN      tcplen      tcp data len
+ *  IN/OUT  ptcpoff     points to current tcp offset
+ *  OUT     phdrsoff    set to offset of rtsp headers
+ *  OUT     phdrslen    set to length of rtsp headers
+ *  OUT     pcseqoff    set to offset of CSeq header
+ *  OUT     pcseqlen    set to length of CSeq header
+ */
+static int
+rtsp_parse_message(char* ptcp, uint tcplen, uint* ptcpoff,
+                   uint* phdrsoff, uint* phdrslen,
+                   uint* pcseqoff, uint* pcseqlen,
+                   uint* transoff, uint* translen)
+{
+	uint    entitylen = 0;
+	uint    lineoff;
+	uint    linelen;
+	
+	if (!nf_nextline(ptcp, tcplen, ptcpoff, &lineoff, &linelen))
+		return 0;
+	
+	*phdrsoff = *ptcpoff;
+	while (nf_mime_nextline(ptcp, tcplen, ptcpoff, &lineoff, &linelen)) {
+		if (linelen == 0) {
+			if (entitylen > 0)
+				*ptcpoff += min(entitylen, tcplen - *ptcpoff);
+			break;
+		}
+		if (lineoff+linelen > tcplen) {
+			pr_info("!! overrun !!\n");
+			break;
+		}
+		
+		if (nf_strncasecmp(ptcp+lineoff, "CSeq:", 5) == 0) {
+			*pcseqoff = lineoff;
+			*pcseqlen = linelen;
+		} 
+
+		if (nf_strncasecmp(ptcp+lineoff, "Transport:", 10) == 0) {
+			*transoff = lineoff;
+			*translen = linelen;
+		}
+		
+		if (nf_strncasecmp(ptcp+lineoff, "Content-Length:", 15) == 0) {
+			uint off = lineoff+15;
+			SKIP_WSPACE(ptcp+lineoff, linelen, off);
+			nf_strtou32(ptcp+off, &entitylen);
+		}
+	}
+	*phdrslen = (*ptcpoff) - (*phdrsoff);
+	
+	return 1;
+}
+
+/*
+ * Find lo/hi client ports (if any) in transport header
+ * In:
+ *   ptcp, tcplen = packet
+ *   tranoff, tranlen = buffer to search
+ *
+ * Out:
+ *   pport_lo, pport_hi = lo/hi ports (host endian)
+ *
+ * Returns nonzero if any client ports found
+ *
+ * Note: it is valid (and expected) for the client to request multiple
+ * transports, so we need to parse the entire line.
+ */
+static int
+rtsp_parse_transport(char* ptran, uint tranlen,
+                     struct ip_ct_rtsp_expect* prtspexp)
+{
+	int     rc = 0;
+	uint    off = 0;
+	
+	if (tranlen < 10 || !iseol(ptran[tranlen-1]) ||
+	    nf_strncasecmp(ptran, "Transport:", 10) != 0) {
+		pr_info("sanity check failed\n");
+		return 0;
+	}
+
+	pr_debug("t='%.*s'\n", (int)tranlen-2, ptran);
+	off += 10;
+	SKIP_WSPACE(ptran, tranlen, off);
+	
+	/* Transport: tran;field;field=val,tran;field;field=val,... */
+	while (off < tranlen) {
+		const char* pparamend;
+		const char* pdestport;
+		uint        nextparamoff;
+		
+		pparamend = memchr(ptran+off, ',', tranlen-off);
+		pparamend = (pparamend == NULL) ? ptran+tranlen : pparamend+1;
+		nextparamoff = pparamend-ptran;
+		
+		while (off < nextparamoff) {
+			const char* pfieldend;
+			uint        nextfieldoff;
+			
+			pfieldend = memchr(ptran+off, ';', nextparamoff-off);
+			nextfieldoff = (pfieldend == NULL) ? nextparamoff : pfieldend-ptran+1;
+		   
+			if (strncmp(ptran+off, "client_port=", 12) == 0) {
+				u_int16_t   port;
+				uint        numlen;
+		    
+				off += 12;
+				numlen = nf_strtou16(ptran+off, &port);
+				off += numlen;
+				if (prtspexp->loport != 0 && prtspexp->loport != port)
+					pr_debug("multiple ports found, port %hu ignored\n", port);
+				else {
+					pr_debug("lo port found : %hu\n", port);
+					prtspexp->loport = prtspexp->hiport = port;
+					if (ptran[off] == '-') {
+						off++;
+						numlen = nf_strtou16(ptran+off, &port);
+						off += numlen;
+						prtspexp->pbtype = pb_range;
+						prtspexp->hiport = port;
+						
+						// If we have a range, assume rtp:
+						// loport must be even, hiport must be loport+1
+						if ((prtspexp->loport & 0x0001) != 0 ||
+						    prtspexp->hiport != prtspexp->loport+1) {
+							pr_debug("incorrect range: %hu-%hu, correcting\n",
+							       prtspexp->loport, prtspexp->hiport);
+							prtspexp->loport &= 0xfffe;
+							prtspexp->hiport = prtspexp->loport+1;
+						}
+					} else if (ptran[off] == '/') {
+						off++;
+						numlen = nf_strtou16(ptran+off, &port);
+						off += numlen;
+						prtspexp->pbtype = pb_discon;
+						prtspexp->hiport = port;
+					}
+					rc = 1;
+				}
+			}
+			else if ((strncmp(ptran+off, "destination=",12) == 0) &&
+				((pdestport = memchr(ptran+off, ':', nextparamoff-off)) != NULL))
+			{
+				u_int16_t   port;
+				uint        numlen;
+
+				off += 12;
+				pdestport++;
+
+				off = pdestport - ptran;
+				numlen = nf_strtou16(ptran + off, &port);
+				off += numlen + 1;
+
+				if (prtspexp->loport != 0 && prtspexp->loport != port)
+				{
+					pr_debug("multiple ports found, port %hu ignored\n", port);
+				}
+				else
+				{
+					prtspexp->pbtype = pb_single;
+					prtspexp->loport = port;
+					prtspexp->hiport = port;
+					rc = 1;
+				}
+			}
+			
+			/*
+			 * Note we don't look for the destination parameter here.
+			 * If we are using NAT, the NAT module will handle it.  If not,
+			 * and the client is sending packets elsewhere, the expectation
+			 * will quietly time out.
+			 */
+			
+			off = nextfieldoff;
+		}
+		
+		off = nextparamoff;
+	}
+	
+	return rc;
+}
+
+void expected(struct nf_conn *ct, struct nf_conntrack_expect *exp)
+{
+		typeof(nf_nat_rtsp_hook_expectfn) nf_nat_rtsp_expectfn;
+		nf_nat_rtsp_expectfn = rcu_dereference(nf_nat_rtsp_hook_expectfn);
+    if(nf_nat_rtsp_expectfn && ct->master->status & IPS_NAT_MASK) {
+        nf_nat_rtsp_expectfn(ct,exp);
+    }
+}
+
+/*** conntrack functions ***/
+
+/* outbound packet: client->server */
+
+static inline int
+help_out(struct sk_buff *skb, unsigned char *rb_ptr, unsigned int datalen,
+                struct nf_conn *ct, enum ip_conntrack_info ctinfo)
+{
+	struct ip_ct_rtsp_expect expinfo;
+	
+	int dir = CTINFO2DIR(ctinfo);   /* = IP_CT_DIR_ORIGINAL */
+	//struct  tcphdr* tcph = (void*)iph + iph->ihl * 4;
+	//uint    tcplen = pktlen - iph->ihl * 4;
+	char*   pdata = rb_ptr;
+	//uint    datalen = tcplen - tcph->doff * 4;
+	uint    dataoff = 0;
+	int ret = NF_ACCEPT;
+	
+	struct nf_conntrack_expect *exp;
+	
+	__be16 be_loport;
+	
+	typeof(nf_nat_rtsp_hook) nf_nat_rtsp;
+
+	memset(&expinfo, 0, sizeof(expinfo));
+	
+	while (dataoff < datalen) {
+		uint    cmdoff = dataoff;
+		uint    hdrsoff = 0;
+		uint    hdrslen = 0;
+		uint    cseqoff = 0;
+		uint    cseqlen = 0;
+		uint    transoff = 0;
+		uint    translen = 0;
+		uint    off;
+		
+		if (!rtsp_parse_message(pdata, datalen, &dataoff,
+					&hdrsoff, &hdrslen,
+					&cseqoff, &cseqlen,
+					&transoff, &translen))
+			break;      /* not a valid message */
+		
+		if (strncmp(pdata+cmdoff, "SETUP ", 6) != 0)
+			continue;   /* not a SETUP message */
+		pr_debug("found a setup message\n");
+
+		off = 0;
+		if(translen) {
+			rtsp_parse_transport(pdata+transoff, translen, &expinfo);
+		}
+
+		if (expinfo.loport == 0) {
+			pr_debug("no udp transports found\n");
+			continue;   /* no udp transports found */
+		}
+
+		pr_debug("udp transport found, ports=(%d,%hu,%hu)\n",
+		       (int)expinfo.pbtype, expinfo.loport, expinfo.hiport);
+
+		exp = nf_ct_expect_alloc(ct);
+		if (!exp) {
+			ret = NF_DROP;
+			goto out;
+		}
+
+		be_loport = htons(expinfo.loport);
+
+		nf_ct_expect_init(exp, NF_CT_EXPECT_CLASS_DEFAULT, nf_ct_l3num(ct),
+			&ct->tuplehash[!dir].tuple.src.u3, &ct->tuplehash[!dir].tuple.dst.u3,
+			IPPROTO_UDP, NULL, &be_loport); 
+
+		exp->master = ct;
+
+		exp->expectfn = expected;
+		exp->flags = 0;
+
+		if (expinfo.pbtype == pb_range) {
+			pr_debug("Changing expectation mask to handle multiple ports\n");
+			//exp->mask.dst.u.udp.port  = 0xfffe;
+		}
+
+		pr_debug("expect_related %u.%u.%u.%u:%u-%u.%u.%u.%u:%u\n",
+		       NIPQUAD(exp->tuple.src.u3.ip),
+		       ntohs(exp->tuple.src.u.udp.port),
+		       NIPQUAD(exp->tuple.dst.u3.ip),
+		       ntohs(exp->tuple.dst.u.udp.port));
+
+		nf_nat_rtsp = rcu_dereference(nf_nat_rtsp_hook);
+		if (nf_nat_rtsp && ct->status & IPS_NAT_MASK)
+			/* pass the request off to the nat helper */
+			ret = nf_nat_rtsp(skb, ctinfo, hdrsoff, hdrslen, &expinfo, exp);
+		else if (nf_ct_expect_related(exp) != 0) {
+			pr_info("nf_conntrack_expect_related failed\n");
+			ret  = NF_DROP;
+		}
+		nf_ct_expect_put(exp);
+		goto out;
+	}
+out:
+
+	return ret;
+}
+
+
+static inline int
+help_in(struct sk_buff *skb, size_t pktlen,
+ struct nf_conn* ct, enum ip_conntrack_info ctinfo)
+{
+ return NF_ACCEPT;
+}
+
+static int help(struct sk_buff *skb, unsigned int protoff,
+		struct nf_conn *ct, enum ip_conntrack_info ctinfo) 
+{
+	struct tcphdr _tcph, *th;
+	unsigned int dataoff, datalen;
+	char *rb_ptr;
+	int ret = NF_DROP;
+
+	/* Until there's been traffic both ways, don't look in packets. */
+	if (ctinfo != IP_CT_ESTABLISHED && 
+	    ctinfo != IP_CT_ESTABLISHED + IP_CT_IS_REPLY) {
+		pr_debug("conntrackinfo = %u\n", ctinfo);
+		return NF_ACCEPT;
+	} 
+
+	/* Not whole TCP header? */
+	th = skb_header_pointer(skb,protoff, sizeof(_tcph), &_tcph);
+
+	if (!th)
+		return NF_ACCEPT;
+   
+	/* No data ? */
+	dataoff = protoff + th->doff*4;
+	datalen = skb->len - dataoff;
+	if (dataoff >= skb->len)
+		return NF_ACCEPT;
+
+	spin_lock_bh(&rtsp_buffer_lock);
+	rb_ptr = skb_header_pointer(skb, dataoff,
+				    skb->len - dataoff, rtsp_buffer);
+	BUG_ON(rb_ptr == NULL);
+
+#if 0
+	/* Checksum invalid?  Ignore. */
+	/* FIXME: Source route IP option packets --RR */
+	if (tcp_v4_check(tcph, tcplen, iph->saddr, iph->daddr,
+			 csum_partial((char*)tcph, tcplen, 0)))
+	{
+		DEBUGP("bad csum: %p %u %u.%u.%u.%u %u.%u.%u.%u\n",
+		       tcph, tcplen, NIPQUAD(iph->saddr), NIPQUAD(iph->daddr));
+		return NF_ACCEPT;
+	}
+#endif
+
+	switch (CTINFO2DIR(ctinfo)) {
+	case IP_CT_DIR_ORIGINAL:
+		ret = help_out(skb, rb_ptr, datalen, ct, ctinfo);
+		break;
+	case IP_CT_DIR_REPLY:
+		pr_debug("IP_CT_DIR_REPLY\n");
+		/* inbound packet: server->client */
+		ret = NF_ACCEPT;
+		break;
+	}
+
+	spin_unlock_bh(&rtsp_buffer_lock);
+
+	return ret;
+}
+
+static struct nf_conntrack_helper rtsp_helpers[MAX_PORTS];
+static char rtsp_names[MAX_PORTS][10];
+
+/* This function is intentionally _NOT_ defined as __exit */
+static void
+fini(void)
+{
+	int i;
+	for (i = 0; i < num_ports; i++) {
+		pr_debug("unregistering port %d\n", ports[i]);
+		nf_conntrack_helper_unregister(&rtsp_helpers[i]);
+	}
+	kfree(rtsp_buffer);
+}
+
+static int __init
+init(void)
+{
+	int i, ret;
+	struct nf_conntrack_helper *hlpr;
+	char *tmpname;
+
+	printk("nf_conntrack_rtsp v" IP_NF_RTSP_VERSION " loading\n");
+
+	if (max_outstanding < 1) {
+		printk("nf_conntrack_rtsp: max_outstanding must be a positive integer\n");
+		return -EBUSY;
+	}
+	if (setup_timeout < 0) {
+		printk("nf_conntrack_rtsp: setup_timeout must be a positive integer\n");
+		return -EBUSY;
+	}
+
+  rtsp_exp_policy.max_expected = max_outstanding;
+  rtsp_exp_policy.timeout = setup_timeout;
+	
+	rtsp_buffer = kmalloc(65536, GFP_KERNEL);
+	if (!rtsp_buffer) 
+		return -ENOMEM;
+
+	/* If no port given, default to standard rtsp port */
+	if (ports[0] == 0) {
+		ports[0] = RTSP_PORT;
+	}
+
+	for (i = 0; (i < MAX_PORTS) && ports[i]; i++) {
+		hlpr = &rtsp_helpers[i];
+		memset(hlpr, 0, sizeof(struct nf_conntrack_helper));
+		hlpr->tuple.src.l3num = AF_INET;
+		hlpr->tuple.src.u.tcp.port = htons(ports[i]);
+		hlpr->tuple.dst.protonum = IPPROTO_TCP;
+		//hlpr->mask.src.u.tcp.port = 0xFFFF;
+		//hlpr->mask.dst.protonum = 0xFF;
+		hlpr->expect_policy = &rtsp_exp_policy;
+		hlpr->me = THIS_MODULE;
+		hlpr->help = help;
+
+		tmpname = &rtsp_names[i][0];
+		if (ports[i] == RTSP_PORT) {
+			sprintf(tmpname, "rtsp");
+		} else {
+			sprintf(tmpname, "rtsp-%d", i);
+		}
+		hlpr->name = tmpname;
+
+		pr_debug("port #%d: %d\n", i, ports[i]);
+
+		ret = nf_conntrack_helper_register(hlpr);
+
+		if (ret) {
+			printk("nf_conntrack_rtsp: ERROR registering port %d\n", ports[i]);
+			fini();
+			return -EBUSY;
+		}
+		num_ports++;
+	}
+	return 0;
+}
+
+module_init(init);
+module_exit(fini);
+
+EXPORT_SYMBOL(nf_nat_rtsp_hook_expectfn);
+

+ 63 - 0
package/rtsp/src/nf_conntrack_rtsp.h

@@ -0,0 +1,63 @@
+/*
+ * RTSP extension for IP connection tracking.
+ * (C) 2003 by Tom Marshall <tmarshall at real.com>
+ * based on ip_conntrack_irc.h
+ *
+ *      This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ */
+#ifndef _IP_CONNTRACK_RTSP_H
+#define _IP_CONNTRACK_RTSP_H
+
+//#define IP_NF_RTSP_DEBUG 1
+#define IP_NF_RTSP_VERSION "0.6.21"
+
+#ifdef __KERNEL__
+/* port block types */
+typedef enum {
+    pb_single,  /* client_port=x */
+    pb_range,   /* client_port=x-y */
+    pb_discon   /* client_port=x/y (rtspbis) */
+} portblock_t;
+
+/* We record seq number and length of rtsp headers here, all in host order. */
+
+/*
+ * This structure is per expected connection.  It is a member of struct
+ * ip_conntrack_expect.  The TCP SEQ for the conntrack expect is stored
+ * there and we are expected to only store the length of the data which
+ * needs replaced.  If a packet contains multiple RTSP messages, we create
+ * one expected connection per message.
+ *
+ * We use these variables to mark the entire header block.  This may seem
+ * like overkill, but the nature of RTSP requires it.  A header may appear
+ * multiple times in a message.  We must treat two Transport headers the
+ * same as one Transport header with two entries.
+ */
+struct ip_ct_rtsp_expect
+{
+    u_int32_t   len;        /* length of header block */
+    portblock_t pbtype;     /* Type of port block that was requested */
+    u_int16_t   loport;     /* Port that was requested, low or first */
+    u_int16_t   hiport;     /* Port that was requested, high or second */
+#if 0
+    uint        method;     /* RTSP method */
+    uint        cseq;       /* CSeq from request */
+#endif
+};
+
+extern unsigned int (*nf_nat_rtsp_hook)(struct sk_buff *skb,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned int matchoff, unsigned int matchlen,
+				 struct ip_ct_rtsp_expect *prtspexp,
+				 struct nf_conntrack_expect *exp);
+
+extern void (*nf_nat_rtsp_hook_expectfn)(struct nf_conn *ct, struct nf_conntrack_expect *exp);
+
+#define RTSP_PORT   554
+
+#endif /* __KERNEL__ */
+
+#endif /* _IP_CONNTRACK_RTSP_H */

+ 531 - 0
package/rtsp/src/nf_nat_rtsp.c

@@ -0,0 +1,531 @@
+/*
+ * RTSP extension for TCP NAT alteration
+ * (C) 2003 by Tom Marshall <tmarshall at real.com>
+ * based on ip_nat_irc.c
+ *
+ *      This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ *
+ * Module load syntax:
+ *      insmod nf_nat_rtsp.o ports=port1,port2,...port<MAX_PORTS>
+ *                           stunaddr=<address>
+ *                           destaction=[auto|strip|none]
+ *
+ * If no ports are specified, the default will be port 554 only.
+ *
+ * stunaddr specifies the address used to detect that a client is using STUN.
+ * If this address is seen in the destination parameter, it is assumed that
+ * the client has already punched a UDP hole in the firewall, so we don't
+ * mangle the client_port.  If none is specified, it is autodetected.  It
+ * only needs to be set if you have multiple levels of NAT.  It should be
+ * set to the external address that the STUN clients detect.  Note that in
+ * this case, it will not be possible for clients to use UDP with servers
+ * between the NATs.
+ *
+ * If no destaction is specified, auto is used.
+ *   destaction=auto:  strip destination parameter if it is not stunaddr.
+ *   destaction=strip: always strip destination parameter (not recommended).
+ *   destaction=none:  do not touch destination parameter (not recommended).
+ */
+
+#include <linux/module.h>
+#include <net/tcp.h>
+#include <net/netfilter/nf_nat_helper.h>
+#include <net/netfilter/nf_nat_rule.h>
+#include "nf_conntrack_rtsp.h"
+#include <net/netfilter/nf_conntrack_expect.h>
+
+#include <linux/inet.h>
+#include <linux/ctype.h>
+#define NF_NEED_STRNCASECMP
+#define NF_NEED_STRTOU16
+#include "netfilter_helpers.h"
+#define NF_NEED_MIME_NEXTLINE
+#include "netfilter_mime.h"
+
+#define MAX_PORTS       8
+#define DSTACT_AUTO     0
+#define DSTACT_STRIP    1
+#define DSTACT_NONE     2
+
+static char*    stunaddr = NULL;
+static char*    destaction = NULL;
+
+static u_int32_t extip = 0;
+static int       dstact = 0;
+
+MODULE_AUTHOR("Tom Marshall <tmarshall at real.com>");
+MODULE_DESCRIPTION("RTSP network address translation module");
+MODULE_LICENSE("GPL");
+module_param(stunaddr, charp, 0644);
+MODULE_PARM_DESC(stunaddr, "Address for detecting STUN");
+module_param(destaction, charp, 0644);
+MODULE_PARM_DESC(destaction, "Action for destination parameter (auto/strip/none)");
+
+#define SKIP_WSPACE(ptr,len,off) while(off < len && isspace(*(ptr+off))) { off++; }
+
+/*** helper functions ***/
+
+static void
+get_skb_tcpdata(struct sk_buff* skb, char** pptcpdata, uint* ptcpdatalen)
+{
+    struct iphdr*   iph  = ip_hdr(skb);
+    struct tcphdr*  tcph = (void *)iph + ip_hdrlen(skb);
+
+    *pptcpdata = (char*)tcph +  tcph->doff*4;
+    *ptcpdatalen = ((char*)skb_transport_header(skb) + skb->len) - *pptcpdata;
+}
+
+/*** nat functions ***/
+
+/*
+ * Mangle the "Transport:" header:
+ *   - Replace all occurences of "client_port=<spec>"
+ *   - Handle destination parameter
+ *
+ * In:
+ *   ct, ctinfo = conntrack context
+ *   skb        = packet
+ *   tranoff    = Transport header offset from TCP data
+ *   tranlen    = Transport header length (incl. CRLF)
+ *   rport_lo   = replacement low  port (host endian)
+ *   rport_hi   = replacement high port (host endian)
+ *
+ * Returns packet size difference.
+ *
+ * Assumes that a complete transport header is present, ending with CR or LF
+ */
+static int
+rtsp_mangle_tran(enum ip_conntrack_info ctinfo,
+                 struct nf_conntrack_expect* exp,
+								 struct ip_ct_rtsp_expect* prtspexp,
+                 struct sk_buff* skb, uint tranoff, uint tranlen)
+{
+    char*       ptcp;
+    uint        tcplen;
+    char*       ptran;
+    char        rbuf1[16];      /* Replacement buffer (one port) */
+    uint        rbuf1len;       /* Replacement len (one port) */
+    char        rbufa[16];      /* Replacement buffer (all ports) */
+    uint        rbufalen;       /* Replacement len (all ports) */
+    u_int32_t   newip;
+    u_int16_t   loport, hiport;
+    uint        off = 0;
+    uint        diff;           /* Number of bytes we removed */
+
+    struct nf_conn *ct = exp->master;
+    struct nf_conntrack_tuple *t;
+
+    char    szextaddr[15+1];
+    uint    extaddrlen;
+    int     is_stun;
+
+    get_skb_tcpdata(skb, &ptcp, &tcplen);
+    ptran = ptcp+tranoff;
+
+    if (tranoff+tranlen > tcplen || tcplen-tranoff < tranlen ||
+        tranlen < 10 || !iseol(ptran[tranlen-1]) ||
+        nf_strncasecmp(ptran, "Transport:", 10) != 0)
+    {
+        pr_debug("sanity check failed\n");
+        return 0;
+    }
+    off += 10;
+    SKIP_WSPACE(ptcp+tranoff, tranlen, off);
+
+    newip = ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u3.ip;
+    t = &exp->tuple;
+    t->dst.u3.ip = newip;
+
+    extaddrlen = extip ? sprintf(szextaddr, "%u.%u.%u.%u", NIPQUAD(extip))
+                       : sprintf(szextaddr, "%u.%u.%u.%u", NIPQUAD(newip));
+    pr_debug("stunaddr=%s (%s)\n", szextaddr, (extip?"forced":"auto"));
+
+    rbuf1len = rbufalen = 0;
+    switch (prtspexp->pbtype)
+    {
+    case pb_single:
+        for (loport = prtspexp->loport; loport != 0; loport++) /* XXX: improper wrap? */
+        {
+            t->dst.u.udp.port = htons(loport);
+            if (nf_ct_expect_related(exp) == 0)
+            {
+                pr_debug("using port %hu\n", loport);
+                break;
+            }
+        }
+        if (loport != 0)
+        {
+            rbuf1len = sprintf(rbuf1, "%hu", loport);
+            rbufalen = sprintf(rbufa, "%hu", loport);
+        }
+        break;
+    case pb_range:
+        for (loport = prtspexp->loport; loport != 0; loport += 2) /* XXX: improper wrap? */
+        {
+            t->dst.u.udp.port = htons(loport);
+            if (nf_ct_expect_related(exp) == 0)
+            {
+                hiport = loport + 1; //~exp->mask.dst.u.udp.port;
+                pr_debug("using ports %hu-%hu\n", loport, hiport);
+                break;
+            }
+        }
+        if (loport != 0)
+        {
+            rbuf1len = sprintf(rbuf1, "%hu", loport);
+            rbufalen = sprintf(rbufa, "%hu-%hu", loport, loport+1);
+        }
+        break;
+    case pb_discon:
+        for (loport = prtspexp->loport; loport != 0; loport++) /* XXX: improper wrap? */
+        {
+            t->dst.u.udp.port = htons(loport);
+            if (nf_ct_expect_related(exp) == 0)
+            {
+                pr_debug("using port %hu (1 of 2)\n", loport);
+                break;
+            }
+        }
+        for (hiport = prtspexp->hiport; hiport != 0; hiport++) /* XXX: improper wrap? */
+        {
+            t->dst.u.udp.port = htons(hiport);
+            if (nf_ct_expect_related(exp) == 0)
+            {
+                pr_debug("using port %hu (2 of 2)\n", hiport);
+                break;
+            }
+        }
+        if (loport != 0 && hiport != 0)
+        {
+            rbuf1len = sprintf(rbuf1, "%hu", loport);
+            if (hiport == loport+1)
+            {
+                rbufalen = sprintf(rbufa, "%hu-%hu", loport, hiport);
+            }
+            else
+            {
+                rbufalen = sprintf(rbufa, "%hu/%hu", loport, hiport);
+            }
+        }
+        break;
+    }
+
+    if (rbuf1len == 0)
+    {
+        return 0;   /* cannot get replacement port(s) */
+    }
+
+    /* Transport: tran;field;field=val,tran;field;field=val,... */
+    while (off < tranlen)
+    {
+        uint        saveoff;
+        const char* pparamend;
+        uint        nextparamoff;
+
+        pparamend = memchr(ptran+off, ',', tranlen-off);
+        pparamend = (pparamend == NULL) ? ptran+tranlen : pparamend+1;
+        nextparamoff = pparamend-ptcp;
+
+        /*
+         * We pass over each param twice.  On the first pass, we look for a
+         * destination= field.  It is handled by the security policy.  If it
+         * is present, allowed, and equal to our external address, we assume
+         * that STUN is being used and we leave the client_port= field alone.
+         */
+        is_stun = 0;
+        saveoff = off;
+        while (off < nextparamoff)
+        {
+            const char* pfieldend;
+            uint        nextfieldoff;
+
+            pfieldend = memchr(ptran+off, ';', nextparamoff-off);
+            nextfieldoff = (pfieldend == NULL) ? nextparamoff : pfieldend-ptran+1;
+
+	    /*
+            if (dstact != DSTACT_NONE && strncmp(ptran+off, "destination=", 12) == 0)
+            {
+                if (strncmp(ptran+off+12, szextaddr, extaddrlen) == 0)
+                {
+                    is_stun = 1;
+                }
+                if (dstact == DSTACT_STRIP || (dstact == DSTACT_AUTO && !is_stun))
+                {
+                    diff = nextfieldoff-off;
+                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
+                                                         off, diff, NULL, 0))
+                    {
+			nf_ct_unexpect_related(exp);
+                        return 0;
+                    }
+                    get_skb_tcpdata(skb, &ptcp, &tcplen);
+                    ptran = ptcp+tranoff;
+                    tranlen -= diff;
+                    nextparamoff -= diff;
+                    nextfieldoff -= diff;
+                }
+            }
+	    */
+
+            off = nextfieldoff;
+        }
+        if (is_stun)
+        {
+            continue;
+        }
+        off = saveoff;
+        while (off < nextparamoff)
+        {
+            const char* pfieldend;
+            const char* pdestport;
+            uint        nextfieldoff;
+
+            pfieldend = memchr(ptran+off, ';', nextparamoff-off);
+            nextfieldoff = (pfieldend == NULL) ? nextparamoff : pfieldend-ptran+1;
+
+            if (strncmp(ptran+off, "client_port=", 12) == 0)
+            {
+                u_int16_t   port;
+                uint        numlen;
+                uint        origoff;
+                uint        origlen;
+                char*       rbuf    = rbuf1;
+                uint        rbuflen = rbuf1len;
+
+                off += 12;
+                origoff = (ptran-ptcp)+off;
+                origlen = 0;
+                numlen = nf_strtou16(ptran+off, &port);
+                off += numlen;
+                origlen += numlen;
+                if (port != prtspexp->loport)
+                {
+                    pr_debug("multiple ports found, port %hu ignored\n", port);
+                }
+                else
+                {
+                    if (ptran[off] == '-' || ptran[off] == '/')
+                    {
+                        off++;
+                        origlen++;
+                        numlen = nf_strtou16(ptran+off, &port);
+                        off += numlen;
+                        origlen += numlen;
+                        rbuf = rbufa;
+                        rbuflen = rbufalen;
+                    }
+
+                    /*
+                     * note we cannot just memcpy() if the sizes are the same.
+                     * the mangle function does skb resizing, checks for a
+                     * cloned skb, and updates the checksums.
+                     *
+                     * parameter 4 below is offset from start of tcp data.
+                     */
+                    diff = origlen-rbuflen;
+                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
+                                              origoff, origlen, rbuf, rbuflen))
+                    {
+                        /* mangle failed, all we can do is bail */
+			nf_ct_unexpect_related(exp);
+                        return 0;
+                    }
+                    get_skb_tcpdata(skb, &ptcp, &tcplen);
+                    ptran = ptcp+tranoff;
+                    tranlen -= diff;
+                    nextparamoff -= diff;
+                    nextfieldoff -= diff;
+                }
+            }
+            else if ((strncmp(ptran+off, "destination=", 12) == 0) && ((pdestport = memchr(ptran+off+12, ':', nextparamoff-(off + 12))) != NULL))
+	        {
+                u_int16_t   port;
+                uint        numlen;
+                uint        origoff;
+                uint        origlen;
+                char        rbuf[32];
+                uint        rbuflen = sprintf(rbuf, "%s:%s",szextaddr,rbuf1);
+
+	        pdestport++;
+
+                off += 12;
+                origoff = (ptran + off) - ptcp;
+                origlen = pdestport - (ptran + off);
+		off += origlen;
+                numlen = nf_strtou16(ptran+off, &port);
+                off += numlen;
+                origlen += numlen;
+		
+		if (port != prtspexp->loport)
+                {
+                    pr_debug("multiple ports found, port %hu ignored\n", port);
+                }
+                else
+                {
+	            diff = origlen-rbuflen;
+                    if (!nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
+                                                  origoff, origlen, rbuf, rbuflen))
+                    {
+                        /* mangle failed, all we can do is bail */
+                        nf_ct_unexpect_related(exp);
+                        return 0;
+                    }
+                    get_skb_tcpdata(skb, &ptcp, &tcplen);
+                    ptran = ptcp+tranoff;
+                    tranlen -= diff;
+                    nextparamoff -= diff;
+                    nextfieldoff -= diff;
+                }
+            }
+
+            off = nextfieldoff;
+        }
+
+        off = nextparamoff;
+    }
+
+    return 1;
+}
+
+static uint
+help_out(struct sk_buff *skb, enum ip_conntrack_info ctinfo,
+	 unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp, 
+	 struct nf_conntrack_expect* exp)
+{
+    char*   ptcp;
+    uint    tcplen;
+    uint    hdrsoff;
+    uint    hdrslen;
+    uint    lineoff;
+    uint    linelen;
+    uint    off;
+
+    //struct iphdr* iph = (struct iphdr*)(*pskb)->nh.iph;
+    //struct tcphdr* tcph = (struct tcphdr*)((void*)iph + iph->ihl*4);
+
+    get_skb_tcpdata(skb, &ptcp, &tcplen);
+    hdrsoff = matchoff;//exp->seq - ntohl(tcph->seq);
+    hdrslen = matchlen;
+    off = hdrsoff;
+    pr_debug("NAT rtsp help_out\n");
+
+    while (nf_mime_nextline(ptcp, hdrsoff+hdrslen, &off, &lineoff, &linelen))
+    {
+        if (linelen == 0)
+        {
+            break;
+        }
+        if (off > hdrsoff+hdrslen)
+        {
+            pr_debug("!! overrun !!");
+            break;
+        }
+        pr_debug("hdr: len=%u, %.*s", linelen, (int)linelen, ptcp+lineoff);
+
+        if (nf_strncasecmp(ptcp+lineoff, "Transport:", 10) == 0)
+        {
+            uint oldtcplen = tcplen;
+	    pr_debug("hdr: Transport\n");
+            if (!rtsp_mangle_tran(ctinfo, exp, prtspexp, skb, lineoff, linelen))
+            {
+		pr_debug("hdr: Transport mangle failed");
+                break;
+            }
+            get_skb_tcpdata(skb, &ptcp, &tcplen);
+            hdrslen -= (oldtcplen-tcplen);
+            off -= (oldtcplen-tcplen);
+            lineoff -= (oldtcplen-tcplen);
+            linelen -= (oldtcplen-tcplen);
+            pr_debug("rep: len=%u, %.*s", linelen, (int)linelen, ptcp+lineoff);
+        }
+    }
+
+    return NF_ACCEPT;
+}
+
+static unsigned int
+help(struct sk_buff *skb, enum ip_conntrack_info ctinfo, 
+     unsigned int matchoff, unsigned int matchlen, struct ip_ct_rtsp_expect* prtspexp,
+     struct nf_conntrack_expect* exp)
+{
+    int dir = CTINFO2DIR(ctinfo);
+    int rc = NF_ACCEPT;
+
+    switch (dir)
+    {
+    case IP_CT_DIR_ORIGINAL:
+        rc = help_out(skb, ctinfo, matchoff, matchlen, prtspexp, exp);
+        break;
+    case IP_CT_DIR_REPLY:
+	pr_debug("unmangle ! %u\n", ctinfo);
+    	/* XXX: unmangle */
+	rc = NF_ACCEPT;
+        break;
+    }
+    //UNLOCK_BH(&ip_rtsp_lock);
+
+    return rc;
+}
+
+static void expected(struct nf_conn* ct, struct nf_conntrack_expect *exp)
+{
+    struct nf_nat_multi_range_compat mr;
+    u_int32_t newdstip, newsrcip, newip;
+
+    struct nf_conn *master = ct->master;
+
+    newdstip = master->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip;
+    newsrcip = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip;
+    //FIXME (how to port that ?)
+    //code from 2.4 : newip = (HOOK2MANIP(hooknum) == IP_NAT_MANIP_SRC) ? newsrcip : newdstip;
+    newip = newdstip;
+
+    pr_debug("newsrcip=%u.%u.%u.%u, newdstip=%u.%u.%u.%u, newip=%u.%u.%u.%u\n",
+           NIPQUAD(newsrcip), NIPQUAD(newdstip), NIPQUAD(newip));
+
+    mr.rangesize = 1;
+    // We don't want to manip the per-protocol, just the IPs. 
+    mr.range[0].flags = IP_NAT_RANGE_MAP_IPS;
+    mr.range[0].min_ip = mr.range[0].max_ip = newip;
+
+    nf_nat_setup_info(ct, &mr.range[0], IP_NAT_MANIP_DST);
+}
+
+
+static void __exit fini(void)
+{
+	nf_nat_rtsp_hook = NULL;
+        nf_nat_rtsp_hook_expectfn = NULL;
+	synchronize_net();
+}
+
+static int __init init(void)
+{
+	printk("nf_nat_rtsp v" IP_NF_RTSP_VERSION " loading\n");
+
+	BUG_ON(nf_nat_rtsp_hook);
+	nf_nat_rtsp_hook = help;
+        nf_nat_rtsp_hook_expectfn = &expected;
+
+	if (stunaddr != NULL)
+		extip = in_aton(stunaddr);
+
+	if (destaction != NULL) {
+	        if (strcmp(destaction, "auto") == 0)
+			dstact = DSTACT_AUTO;
+
+		if (strcmp(destaction, "strip") == 0)
+			dstact = DSTACT_STRIP;
+
+		if (strcmp(destaction, "none") == 0)
+			dstact = DSTACT_NONE;
+	}
+
+	return 0;
+}
+
+module_init(init);
+module_exit(fini);

+ 0 - 1
package/zlib/Makefile

@@ -38,7 +38,6 @@ ifeq ($(ADK_STATIC),)
 CONFIGURE_OPTS:=	--shared
 CONFIGURE_OPTS:=	--shared
 endif
 endif
 
 
-#--includedir=$(STAGING_DIR)/usr/include 
 do-configure:
 do-configure:
 	(cd $(WRKBUILD); $(COPTS) \
 	(cd $(WRKBUILD); $(COPTS) \
 		CFLAGS="$(TARGET_CFLAGS) -fPIC" \
 		CFLAGS="$(TARGET_CFLAGS) -fPIC" \

+ 3 - 0
target/Config.in

@@ -860,6 +860,9 @@ config ADK_TARGET_ROOTFS_SQUASHFS
 
 
 config ADK_TARGET_ROOTFS_YAFFS
 config ADK_TARGET_ROOTFS_YAFFS
 	bool "YAFFS2 rootfilesystem (NAND)"
 	bool "YAFFS2 rootfilesystem (NAND)"
+	select ADK_KERNEL_MISC_FILESYSTEMS
+	select ADK_KERNEL_YAFFS_FS
+	select ADK_KERNEL_YAFFS_YAFFS2
 	depends on \
 	depends on \
 		ADK_LINUX_MIPS_RB532 || \
 		ADK_LINUX_MIPS_RB532 || \
 		ADK_LINUX_MIPS_RB433 || \
 		ADK_LINUX_MIPS_RB433 || \

+ 24 - 0
target/linux/config/Config.in.fs

@@ -1,5 +1,29 @@
 menu "Filesystems support"
 menu "Filesystems support"
 
 
+config ADK_KERNEL_YAFFS_FS
+	tristate
+	default n
+
+config ADK_KERNEL_YAFFS_YAFFS1
+	boolean
+	default n
+
+config ADK_KERNEL_YAFFS_YAFFS2
+	boolean
+	default n
+
+config ADK_KERNEL_YAFFS_AUTO_YAFFS2
+	boolean
+	default n
+
+config ADK_KERNEL_YAFFS_CHECKPOINT_RESERVED_BLOCKS
+	int
+	default 0
+
+config ADK_KERNEL_YAFFS_SHORT_NAMES_IN_RAM
+	boolean
+	default n
+
 config ADK_KERNEL_MISC_FILESYSTEMS
 config ADK_KERNEL_MISC_FILESYSTEMS
 	boolean
 	boolean
 	default n
 	default n

+ 5 - 287
target/linux/config/Config.in.netfilter

@@ -138,62 +138,7 @@ config ADK_KERNEL_IP_NF_MATCH_STRING
 	default n
 	default n
 
 
 menu "Core Netfilter Configuration"
 menu "Core Netfilter Configuration"
-
-config ADK_KPACKAGE_KMOD_NF_CONNTRACK
-	tristate 'Netfilter connection tracking support'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	help
-	  Connection tracking keeps a record of what packets have passed
-	  through your machine, in order to figure out how they are related
-	  into connections.
-
-	  Layer 3 independent connection tracking is experimental scheme
-	  which generalize ip_conntrack to support other layer 3 protocols.
-
-config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_CLASSIFY
-	tristate '"CLASSIFY" target support'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	help
-	  This option adds a `CLASSIFY' target, which enables the user to set
-	  the priority of a packet. Some qdiscs can use this value for
-	  classification, among these are:
-
-  	  atm, cbq, dsmark, pfifo_fast, htb, prio
-
-config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_CONNMARK
-	tristate '"CONNMARK" target support'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	select ADK_KPACKAGE_KMOD_NF_CONNTRACK
-	help
-	  This option adds a `CONNMARK' target, which allows one to manipulate
-	  the connection mark value.  Similar to the MARK target, but
-	  affects the connection mark value rather than the packet mark value.
-
-config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_MARK
-	tristate '"MARK" target support'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	help
-	  This option adds a `MARK' target, which allows you to create rules
-	  in the `mangle' table which alter the netfilter mark (nfmark) field
-	  associated with the packet prior to routing. This can change
-	  the routing method (see `Use netfilter MARK value as routing
-	  key') and can also be used by other subsystems to change their
-	  behavior.
-
-config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_NFQUEUE
-	tristate '"NFQUEUE" target support'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	help
-	  This target replaced the old obsolete QUEUE target.
-
-	  As opposed to QUEUE, it supports 65535 different queues,
-	  not just one.
-
-config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_TCPMSS
-	tristate 'TCPMSS target'
-	select ADK_KERNEL_NETFILTER_XTABLES
-	help
-
+source target/linux/config/Config.in.netfilter.core
 endmenu
 endmenu
 
 
 menu "IP: Netfilter Configuration"
 menu "IP: Netfilter Configuration"
@@ -206,239 +151,12 @@ source target/linux/config/Config.in.netfilter.ip6
 endmenu
 endmenu
 
 
 menu "Ethernet bridge firewalling"
 menu "Ethernet bridge firewalling"
-
-config ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	tristate 'Ethernet Bridge tables (ebtables) support'
-	select ADK_KERNEL_BRIDGE_NETFILTER
-	help
-	  ebtables is a general, extensible frame/packet identification
-	  framework. Say 'Y' or 'M' here if you want to do Ethernet
-	  filtering/NAT/brouting on the Ethernet bridge.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_BROUTE
-	tristate "ebt: broute table support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  The ebtables broute table is used to define rules that decide between
-	  bridging and routing frames, giving Linux the functionality of a
-	  brouter. See the man page for ebtables(8) and examples on the ebtables
-	  website.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_T_FILTER
-	tristate "ebt: filter table support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  The ebtables filter table is used to define frame filtering rules at
-	  local input, forwarding and local output. See the man page for
-	  ebtables(8).
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_T_NAT
-	tristate "ebt: nat table support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  The ebtables nat table is used to define rules that alter the MAC
-	  source address (MAC SNAT) or the MAC destination address (MAC DNAT).
-	  See the man page for ebtables(8).
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-#
-# matches
-#
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_802_3
-	tristate "ebt: 802.3 filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds matching support for 802.3 Ethernet frames.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_AMONG
-	tristate "ebt: among filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the among match, which allows matching the MAC source
-	  and/or destination address on a list of addresses. Optionally,
-	  MAC/IP address pairs can be matched, f.e. for anti-spoofing rules.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ARP
-	tristate "ebt: ARP filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the ARP match, which allows ARP and RARP header field
-	  filtering.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_IP
-	tristate "ebt: IP filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the IP match, which allows basic IP header field
-	  filtering.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_IP6
-	tristate "ebt: IP6 filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES && ADK_KPACKAGE_KMOD_IPV6
-	help
-	  This option adds the IP6 match, which allows basic IPV6 header field
-	  filtering.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_LIMIT
-	tristate "ebt: limit match support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the limit match, which allows you to control
-	  the rate at which a rule can be matched. This match is the
-	  equivalent of the iptables limit match.
-
-	  If you want to compile it as a module, say M here and read
-	  <file:Documentation/kbuild/modules.txt>.  If unsure, say `N'.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_MARK
-	tristate "ebt: mark filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the mark match, which allows matching frames based on
-	  the 'nfmark' value in the frame. This can be set by the mark target.
-	  This value is the same as the one used in the iptables mark match and
-	  target.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_PKTTYPE
-	tristate "ebt: packet type filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the packet type match, which allows matching on the
-	  type of packet based on its Ethernet "class" (as determined by
-	  the generic networking code): broadcast, multicast,
-	  for this host alone or for another host.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_STP
-	tristate "ebt: STP filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the Spanning Tree Protocol match, which
-	  allows STP header field filtering.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_VLAN
-	tristate "ebt: 802.1Q VLAN filter support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the 802.1Q vlan match, which allows the filtering of
-	  802.1Q vlan fields.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-#
-# targets
-#
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ARPREPLY
-	tristate "ebt: arp reply target support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the arp reply target, which allows
-	  automatically sending arp replies to arp requests.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_DNAT
-	tristate "ebt: dnat target support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the MAC DNAT target, which allows altering the MAC
-	  destination address of frames.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_MARK_T
-	tristate "ebt: mark target support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the mark target, which allows marking frames by
-	  setting the 'nfmark' value in the frame.
-	  This value is the same as the one used in the iptables mark match and
-	  target.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_REDIRECT
-	tristate "ebt: redirect target support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the MAC redirect target, which allows altering the MAC
-	  destination address of a frame to that of the device it arrived on.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_SNAT
-	tristate "ebt: snat target support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the MAC SNAT target, which allows altering the MAC
-	  source address of frames.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-#
-# watchers
-#
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_LOG
-	tristate "ebt: log support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option adds the log watcher, that you can use in any rule
-	  in any ebtables table. It records info about the frame header
-	  to the syslog.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ULOG
-	tristate "ebt: ulog support (OBSOLETE)"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option enables the old bridge-specific "ebt_ulog" implementation
-	  which has been obsoleted by the new "nfnetlink_log" code (see
-	  CONFIG_NETFILTER_NETLINK_LOG).
-
-	  This option adds the ulog watcher, that you can use in any rule
-	  in any ebtables table. The packet is passed to a userspace
-	  logging daemon using netlink multicast sockets. This differs
-	  from the log watcher in the sense that the complete packet is
-	  sent to userspace instead of a descriptive text and that
-	  netlink multicast sockets are used instead of the syslog.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-config ADK_KPACKAGE_KMOD_BRIDGE_EBT_NFLOG
-	tristate "ebt: nflog support"
-	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
-	help
-	  This option enables the nflog watcher, which allows to LOG
-	  messages through the netfilter logging API, which can use
-	  either the old LOG target, the old ULOG target or nfnetlink_log
-	  as backend.
-
-	  This option adds the nflog watcher, that you can use in any rule
-	  in any ebtables table.
-
-	  To compile it as a module, choose M here.  If unsure, say N.
-
-
+source target/linux/config/Config.in.netfilter.ebt
 endmenu
 endmenu
 
 
+menu "Netfilter Addons"
 source package/ipset/Config.in.kmod
 source package/ipset/Config.in.kmod
+source package/rtsp/Config.in.kmod
+endmenu
 
 
 endmenu
 endmenu

+ 182 - 0
target/linux/config/Config.in.netfilter.core

@@ -0,0 +1,182 @@
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	tristate 'Netfilter connection tracking support'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	help
+	  Connection tracking keeps a record of what packets have passed
+	  through your machine, in order to figure out how they are related
+	  into connections.
+
+	  Layer 3 independent connection tracking is experimental scheme
+	  which generalize ip_conntrack to support other layer 3 protocols.
+
+config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_CLASSIFY
+	tristate '"CLASSIFY" target support'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	help
+	  This option adds a `CLASSIFY' target, which enables the user to set
+	  the priority of a packet. Some qdiscs can use this value for
+	  classification, among these are:
+
+  	  atm, cbq, dsmark, pfifo_fast, htb, prio
+
+config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_CONNMARK
+	tristate '"CONNMARK" target support'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	select ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  This option adds a `CONNMARK' target, which allows one to manipulate
+	  the connection mark value.  Similar to the MARK target, but
+	  affects the connection mark value rather than the packet mark value.
+
+config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_MARK
+	tristate '"MARK" target support'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	help
+	  This option adds a `MARK' target, which allows you to create rules
+	  in the `mangle' table which alter the netfilter mark (nfmark) field
+	  associated with the packet prior to routing. This can change
+	  the routing method (see `Use netfilter MARK value as routing
+	  key') and can also be used by other subsystems to change their
+	  behavior.
+
+config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_NFQUEUE
+	tristate '"NFQUEUE" target support'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	help
+	  This target replaced the old obsolete QUEUE target.
+
+	  As opposed to QUEUE, it supports 65535 different queues,
+	  not just one.
+
+config ADK_KPACKAGE_KMOD_NETFILTER_XT_TARGET_TCPMSS
+	tristate 'TCPMSS target'
+	select ADK_KERNEL_NETFILTER_XTABLES
+	help
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_MARK
+	bool 'Connection mark tracking support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	select ADK_KERNEL_IP_NF_MATCH_CONNMARK
+	help
+	  This option enables support for connection marks, used by the
+	  `CONNMARK' target and `connmark' match. Similar to the mark value
+	  of packets, but this mark value is kept in the conntrack session
+	  instead of the individual packets.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_SECMARK
+	bool 'Connection tracking security mark support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	#FIXME select NETWORK_SECMARK
+	help
+	  This option enables security markings to be applied to
+	  connections.  Typically they are copied to connections from
+	  packets using the CONNSECMARK target and copied back from
+	  connections to packets with the same target, with the packets
+	  being originally labeled via SECMARK.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_FTP
+	tristate 'FTP protocol support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  Tracking FTP connections is problematic: special helpers are
+	  required for tracking them, and doing masquerading and other forms
+	  of Network Address Translation on them.
+
+#config ADK_KPACKAGE_KMOD_NF_CONNTRACK_RTSP
+#	tristate 'RTSP protocol support'
+#	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+#	help
+#	  Tracking RTSP connections might be required for IPTV.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_IRC
+	tristate 'IRC protocol support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  There is a commonly-used extension to IRC called
+	  Direct Client-to-Client Protocol (DCC).  This enables users to send
+	  files to each other, and also chat to each other without the need
+	  of a server.  DCC Sending is used anywhere you send files over IRC,
+	  and DCC Chat is most commonly used by Eggdrop bots.  If you are
+	  using NAT, this extension will enable you to send files and initiate
+	  chats.  Note that you do NOT need this extension to get files or
+	  have others initiate chats, or everything else in IRC.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_NETBIOS_NS
+	tristate 'NetBIOS name service protocol support (EXPERIMENTAL)'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  NetBIOS name service requests are sent as broadcast messages from an
+	  unprivileged port and responded to with unicast messages to the
+	  same port. This make them hard to firewall properly because connection
+	  tracking doesn't deal with broadcasts. This helper tracks locally
+	  originating NetBIOS name service requests and the corresponding
+	  responses. It relies on correct IP address configuration, specifically
+	  netmask and broadcast address. When properly configured, the output
+	  of "ip address show" should look similar to this:
+
+	  $ ip -4 address show eth0
+	  4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
+	      inet 172.16.2.252/24 brd 172.16.2.255 scope global eth0
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_TFTP
+	tristate 'TFTP protocol support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  TFTP connection tracking helper, this is required depending
+	  on how restrictive your ruleset is.
+	  If you are using a tftp client behind -j SNAT or -j MASQUERADING
+	  you will need this.
+
+#config ADK_KPACKAGE_KMOD_NF_CONNTRACK_AMANDA
+#	tristate 'Amanda backup protocol support'
+#	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+#	#FIXME TEXTSEARCH && TEXTSEARCH_KMP
+#	help
+#	  If you are running the Amanda backup package <http://www.amanda.org/>
+#	  on this machine or machines that will be MASQUERADED through this
+#	  machine, then you may want to enable this feature.  This allows the
+#	  connection tracking and natting code to allow the sub-channels that
+#	  Amanda requires for communication of the backup data, messages and
+#	  index.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_PPTP
+	tristate 'PPTP protocol support'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  This module adds support for PPTP (Point to Point Tunnelling
+	  Protocol, RFC2637) connection tracking and NAT. 
+	
+	  If you are running PPTP sessions over a stateful firewall or NAT
+	  box, you may want to enable this feature.  
+	
+	  Please note that not all PPTP modes of operation are supported yet.
+	  For more info, read top of the file
+	  net/ipv4/netfilter/ip_conntrack_pptp.c
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_H323
+	tristate 'H.323 protocol support (EXPERIMENTAL)'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
+	  important VoIP protocols, it is widely used by voice hardware and
+	  software including voice gateways, IP phones, Netmeeting, OpenPhone,
+	  Gnomemeeting, etc.
+
+	  With this module you can support H.323 on a connection tracking/NAT
+	  firewall.
+
+	  This module supports RAS, Fast Start, H.245 Tunnelling, Call
+	  Forwarding, RTP/RTCP and T.120 based audio, video, fax, chat,
+	  whiteboard, file transfer, etc. For more information, please
+	  visit http://nath323.sourceforge.net/.
+
+config ADK_KPACKAGE_KMOD_NF_CONNTRACK_SIP
+	tristate 'SIP protocol support (EXPERIMENTAL)'
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	help
+	  SIP is an application-layer control protocol that can establish,
+	  modify, and terminate multimedia sessions (conferences) such as
+	  Internet telephony calls. With the ip_conntrack_sip and
+	  the ip_nat_sip modules you can support the protocol on a connection
+	  tracking/NATing firewall.
+

+ 229 - 0
target/linux/config/Config.in.netfilter.ebt

@@ -0,0 +1,229 @@
+config ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	tristate 'Ethernet Bridge tables (ebtables) support'
+	select ADK_KERNEL_BRIDGE_NETFILTER
+	help
+	  ebtables is a general, extensible frame/packet identification
+	  framework. Say 'Y' or 'M' here if you want to do Ethernet
+	  filtering/NAT/brouting on the Ethernet bridge.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_BROUTE
+	tristate "ebt: broute table support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  The ebtables broute table is used to define rules that decide between
+	  bridging and routing frames, giving Linux the functionality of a
+	  brouter. See the man page for ebtables(8) and examples on the ebtables
+	  website.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_T_FILTER
+	tristate "ebt: filter table support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  The ebtables filter table is used to define frame filtering rules at
+	  local input, forwarding and local output. See the man page for
+	  ebtables(8).
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_T_NAT
+	tristate "ebt: nat table support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  The ebtables nat table is used to define rules that alter the MAC
+	  source address (MAC SNAT) or the MAC destination address (MAC DNAT).
+	  See the man page for ebtables(8).
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+#
+# matches
+#
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_802_3
+	tristate "ebt: 802.3 filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds matching support for 802.3 Ethernet frames.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_AMONG
+	tristate "ebt: among filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the among match, which allows matching the MAC source
+	  and/or destination address on a list of addresses. Optionally,
+	  MAC/IP address pairs can be matched, f.e. for anti-spoofing rules.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ARP
+	tristate "ebt: ARP filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the ARP match, which allows ARP and RARP header field
+	  filtering.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_IP
+	tristate "ebt: IP filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the IP match, which allows basic IP header field
+	  filtering.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_IP6
+	tristate "ebt: IP6 filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES && ADK_KPACKAGE_KMOD_IPV6
+	help
+	  This option adds the IP6 match, which allows basic IPV6 header field
+	  filtering.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_LIMIT
+	tristate "ebt: limit match support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the limit match, which allows you to control
+	  the rate at which a rule can be matched. This match is the
+	  equivalent of the iptables limit match.
+
+	  If you want to compile it as a module, say M here and read
+	  <file:Documentation/kbuild/modules.txt>.  If unsure, say `N'.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_MARK
+	tristate "ebt: mark filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the mark match, which allows matching frames based on
+	  the 'nfmark' value in the frame. This can be set by the mark target.
+	  This value is the same as the one used in the iptables mark match and
+	  target.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_PKTTYPE
+	tristate "ebt: packet type filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the packet type match, which allows matching on the
+	  type of packet based on its Ethernet "class" (as determined by
+	  the generic networking code): broadcast, multicast,
+	  for this host alone or for another host.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_STP
+	tristate "ebt: STP filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the Spanning Tree Protocol match, which
+	  allows STP header field filtering.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_VLAN
+	tristate "ebt: 802.1Q VLAN filter support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the 802.1Q vlan match, which allows the filtering of
+	  802.1Q vlan fields.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+#
+# targets
+#
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ARPREPLY
+	tristate "ebt: arp reply target support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the arp reply target, which allows
+	  automatically sending arp replies to arp requests.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_DNAT
+	tristate "ebt: dnat target support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the MAC DNAT target, which allows altering the MAC
+	  destination address of frames.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_MARK_T
+	tristate "ebt: mark target support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the mark target, which allows marking frames by
+	  setting the 'nfmark' value in the frame.
+	  This value is the same as the one used in the iptables mark match and
+	  target.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_REDIRECT
+	tristate "ebt: redirect target support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the MAC redirect target, which allows altering the MAC
+	  destination address of a frame to that of the device it arrived on.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_SNAT
+	tristate "ebt: snat target support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the MAC SNAT target, which allows altering the MAC
+	  source address of frames.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+#
+# watchers
+#
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_LOG
+	tristate "ebt: log support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option adds the log watcher, that you can use in any rule
+	  in any ebtables table. It records info about the frame header
+	  to the syslog.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_ULOG
+	tristate "ebt: ulog support (OBSOLETE)"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option enables the old bridge-specific "ebt_ulog" implementation
+	  which has been obsoleted by the new "nfnetlink_log" code (see
+	  CONFIG_NETFILTER_NETLINK_LOG).
+
+	  This option adds the ulog watcher, that you can use in any rule
+	  in any ebtables table. The packet is passed to a userspace
+	  logging daemon using netlink multicast sockets. This differs
+	  from the log watcher in the sense that the complete packet is
+	  sent to userspace instead of a descriptive text and that
+	  netlink multicast sockets are used instead of the syslog.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+
+config ADK_KPACKAGE_KMOD_BRIDGE_EBT_NFLOG
+	tristate "ebt: nflog support"
+	depends on ADK_KPACKAGE_KMOD_BRIDGE_NF_EBTABLES
+	help
+	  This option enables the nflog watcher, which allows to LOG
+	  messages through the netfilter logging API, which can use
+	  either the old LOG target, the old ULOG target or nfnetlink_log
+	  as backend.
+
+	  This option adds the nflog watcher, that you can use in any rule
+	  in any ebtables table.
+
+	  To compile it as a module, choose M here.  If unsure, say N.
+

+ 1 - 122
target/linux/config/Config.in.netfilter.ip4

@@ -8,7 +8,7 @@ config ADK_KPACKAGE_KMOD_NF_CONNTRACK_IPV4
 
 
 config ADK_KPACKAGE_KMOD_IP_NF_CT_ACCT
 config ADK_KPACKAGE_KMOD_IP_NF_CT_ACCT
 	bool 'Connection tracking flow accounting'
 	bool 'Connection tracking flow accounting'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
+	depends on ADK_KPACKAGE_KMOD_NF_CONNTRACK
 	help
 	help
 	  If this option is enabled, the connection tracking code will
 	  If this option is enabled, the connection tracking code will
 	  keep per-flow packet and byte counters.
 	  keep per-flow packet and byte counters.
@@ -16,127 +16,6 @@ config ADK_KPACKAGE_KMOD_IP_NF_CT_ACCT
 	  Those counters can be used for flow-based accounting or the
 	  Those counters can be used for flow-based accounting or the
 	  `connbytes' match.
 	  `connbytes' match.
 
 
-config ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK_MARK
-	bool 'Connection mark tracking support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	select ADK_KERNEL_IP_NF_MATCH_CONNMARK
-	help
-	  This option enables support for connection marks, used by the
-	  `CONNMARK' target and `connmark' match. Similar to the mark value
-	  of packets, but this mark value is kept in the conntrack session
-	  instead of the individual packets.
-
-config ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK_SECMARK
-	bool 'Connection tracking security mark support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	#FIXME select NETWORK_SECMARK
-	help
-	  This option enables security markings to be applied to
-	  connections.  Typically they are copied to connections from
-	  packets using the CONNSECMARK target and copied back from
-	  connections to packets with the same target, with the packets
-	  being originally labeled via SECMARK.
-
-config ADK_KPACKAGE_KMOD_IP_NF_FTP
-	tristate 'FTP protocol support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  Tracking FTP connections is problematic: special helpers are
-	  required for tracking them, and doing masquerading and other forms
-	  of Network Address Translation on them.
-
-config ADK_KPACKAGE_KMOD_IP_NF_IRC
-	tristate 'IRC protocol support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  There is a commonly-used extension to IRC called
-	  Direct Client-to-Client Protocol (DCC).  This enables users to send
-	  files to each other, and also chat to each other without the need
-	  of a server.  DCC Sending is used anywhere you send files over IRC,
-	  and DCC Chat is most commonly used by Eggdrop bots.  If you are
-	  using NAT, this extension will enable you to send files and initiate
-	  chats.  Note that you do NOT need this extension to get files or
-	  have others initiate chats, or everything else in IRC.
-
-config ADK_KPACKAGE_KMOD_IP_NF_NETBIOS_NS
-	tristate 'NetBIOS name service protocol support (EXPERIMENTAL)'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  NetBIOS name service requests are sent as broadcast messages from an
-	  unprivileged port and responded to with unicast messages to the
-	  same port. This make them hard to firewall properly because connection
-	  tracking doesn't deal with broadcasts. This helper tracks locally
-	  originating NetBIOS name service requests and the corresponding
-	  responses. It relies on correct IP address configuration, specifically
-	  netmask and broadcast address. When properly configured, the output
-	  of "ip address show" should look similar to this:
-
-	  $ ip -4 address show eth0
-	  4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
-	      inet 172.16.2.252/24 brd 172.16.2.255 scope global eth0
-
-config ADK_KPACKAGE_KMOD_IP_NF_TFTP
-	tristate 'TFTP protocol support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  TFTP connection tracking helper, this is required depending
-	  on how restrictive your ruleset is.
-	  If you are using a tftp client behind -j SNAT or -j MASQUERADING
-	  you will need this.
-
-config ADK_KPACKAGE_KMOD_IP_NF_AMANDA
-	tristate 'Amanda backup protocol support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	#FIXME TEXTSEARCH && TEXTSEARCH_KMP
-	help
-	  If you are running the Amanda backup package <http://www.amanda.org/>
-	  on this machine or machines that will be MASQUERADED through this
-	  machine, then you may want to enable this feature.  This allows the
-	  connection tracking and natting code to allow the sub-channels that
-	  Amanda requires for communication of the backup data, messages and
-	  index.
-
-config ADK_KPACKAGE_KMOD_IP_NF_PPTP
-	tristate 'PPTP protocol support'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  This module adds support for PPTP (Point to Point Tunnelling
-	  Protocol, RFC2637) connection tracking and NAT. 
-	
-	  If you are running PPTP sessions over a stateful firewall or NAT
-	  box, you may want to enable this feature.  
-	
-	  Please note that not all PPTP modes of operation are supported yet.
-	  For more info, read top of the file
-	  net/ipv4/netfilter/ip_conntrack_pptp.c
-
-config ADK_KPACKAGE_KMOD_IP_NF_H323
-	tristate 'H.323 protocol support (EXPERIMENTAL)'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
-	  important VoIP protocols, it is widely used by voice hardware and
-	  software including voice gateways, IP phones, Netmeeting, OpenPhone,
-	  Gnomemeeting, etc.
-
-	  With this module you can support H.323 on a connection tracking/NAT
-	  firewall.
-
-	  This module supports RAS, Fast Start, H.245 Tunnelling, Call
-	  Forwarding, RTP/RTCP and T.120 based audio, video, fax, chat,
-	  whiteboard, file transfer, etc. For more information, please
-	  visit http://nath323.sourceforge.net/.
-
-config ADK_KPACKAGE_KMOD_IP_NF_SIP
-	tristate 'SIP protocol support (EXPERIMENTAL)'
-	depends on ADK_KPACKAGE_KMOD_IP_NF_CONNTRACK
-	help
-	  SIP is an application-layer control protocol that can establish,
-	  modify, and terminate multimedia sessions (conferences) such as
-	  Internet telephony calls. With the ip_conntrack_sip and
-	  the ip_nat_sip modules you can support the protocol on a connection
-	  tracking/NATing firewall.
-
 
 
 config ADK_KPACKAGE_KMOD_IP_NF_IPTABLES
 config ADK_KPACKAGE_KMOD_IP_NF_IPTABLES
 	tristate 'IP tables support (required for filtering/masq/NAT)'
 	tristate 'IP tables support (required for filtering/masq/NAT)'

+ 2 - 0
target/linux/config/Config.in.netfilter.ip6

@@ -1,6 +1,7 @@
 config ADK_KPACKAGE_KMOD_NF_CONNTRACK_IPV6
 config ADK_KPACKAGE_KMOD_NF_CONNTRACK_IPV6
 	tristate "IPv6 connection tracking support"
 	tristate "IPv6 connection tracking support"
 	select ADK_KPACKAGE_KMOD_NF_CONNTRACK
 	select ADK_KPACKAGE_KMOD_NF_CONNTRACK
+	select ADK_KPACKAGE_KMOD_IPV6
 	---help---
 	---help---
 	  Connection tracking keeps a record of what packets have passed
 	  Connection tracking keeps a record of what packets have passed
 	  through your machine, in order to figure out how they are related
 	  through your machine, in order to figure out how they are related
@@ -15,6 +16,7 @@ config ADK_KPACKAGE_KMOD_NF_CONNTRACK_IPV6
 config ADK_KPACKAGE_KMOD_IP6_NF_IPTABLES
 config ADK_KPACKAGE_KMOD_IP6_NF_IPTABLES
 	tristate "IP6 tables support (required for filtering)"
 	tristate "IP6 tables support (required for filtering)"
 	select ADK_KERNEL_NETFILTER_XTABLES
 	select ADK_KERNEL_NETFILTER_XTABLES
+	select ADK_KPACKAGE_KMOD_IPV6
 	help
 	help
 	  ip6tables is a general, extensible packet identification framework.
 	  ip6tables is a general, extensible packet identification framework.
 	  Currently only the packet filtering and packet mangling subsystem
 	  Currently only the packet filtering and packet mangling subsystem

+ 1 - 3
target/rb532/kernel.config

@@ -1,7 +1,7 @@
 #
 #
 # Automatically generated make config: don't edit
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.33
 # Linux kernel version: 2.6.33
-# Mon Mar  1 19:47:56 2010
+# Thu Apr 22 20:08:10 2010
 #
 #
 CONFIG_MIPS=y
 CONFIG_MIPS=y
 
 
@@ -332,8 +332,6 @@ CONFIG_UNIX=y
 CONFIG_INET=y
 CONFIG_INET=y
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_MULTICAST is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
 # CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_ASK_IP_FIB_HASH is not set
-# CONFIG_IP_FIB_TRIE is not set
 CONFIG_IP_FIB_HASH=y
 CONFIG_IP_FIB_HASH=y
 # CONFIG_IP_PNP is not set
 # CONFIG_IP_PNP is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPIP is not set