[LEDE-DEV] [PATCH] busybox: update to 1.27.1

Baptiste Jonglez baptiste at bitsofnetworks.org
Sat Jul 29 13:48:37 PDT 2017


Hi,

On Sat, Jul 29, 2017 at 10:09:07PM +0200, Magnus Kroken wrote:
> Refresh patches, delete patches backported from upstream.

Thanks for the update!  You can drop 120-remove_uclibc_rpc_check.patch
altogether, since the check has been changed from an error to a warning.

> Some BusyBox config symbols have been renamed and/or moved
> from being global to applet-specific. I have attempted to retain
> the same behavior as previous config defaults would.

Out of curiosity, which tool do you use to refresh Config-defaults.in?
It seems to reorder items quite a lot.

Also, the previous update of busybox refreshed the configuration of all
applets in config/, is it unneeded for this release?

> Compile and run-time tested on x86/generic and powerpc/mpc85xx.
> 
> Size comparison with default build settings:
> 210075 busybox_1.27.1-1_i386_pentium4.ipk
> 210107 busybox_1.26.2-7_i386_pentium4.ipk
> 
>  package/utils/busybox/Config-defaults.in           | 346 ++++++++++++++-------
>  package/utils/busybox/Makefile                     |   6 +-
>  package/utils/busybox/config/Config.in             |  32 +-
>  .../patches/120-remove_uclibc_rpc_check.patch      |   5 +-
>  .../busybox/patches/200-udhcpc_reduce_msgs.patch   |   4 +-
>  .../patches/201-udhcpc_changed_ifindex.patch       |   2 +-
>  .../patches/203-udhcpc_renew_no_deconfig.patch     |   2 +-
>  .../patches/301-ip-link-fix-netlink-msg-size.patch |   2 +-
>  .../302-ip-rule-add-suppress-prefixlength.patch    | 145 ---------
>  ...t-touch-file-with-x-when-modified_count-0.patch | 100 ------
>  ...uching-a-new-file-with-ZZ-when-no-editing.patch |  53 ----
>  11 files changed, 264 insertions(+), 433 deletions(-)
>  delete mode 100644 package/utils/busybox/patches/302-ip-rule-add-suppress-prefixlength.patch
>  delete mode 100644 package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
>  delete mode 100644 package/utils/busybox/patches/402-vi-avoid-touching-a-new-file-with-ZZ-when-no-editing.patch
> 
> diff --git a/package/utils/busybox/Config-defaults.in b/package/utils/busybox/Config-defaults.in
> index 9438cb26e7..dd497f24cf 100644
> --- a/package/utils/busybox/Config-defaults.in
> +++ b/package/utils/busybox/Config-defaults.in
> @@ -13,9 +13,6 @@ config BUSYBOX_DEFAULT_INCLUDE_SUSv2
>  config BUSYBOX_DEFAULT_USE_PORTABLE_CODE
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_PLATFORM_LINUX
> -	bool
> -	default y
>  config BUSYBOX_DEFAULT_SHOW_USAGE
>  	bool
>  	default y
> @@ -82,6 +79,9 @@ config BUSYBOX_DEFAULT_FEATURE_SYSLOG
>  config BUSYBOX_DEFAULT_FEATURE_HAVE_RPC
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_PLATFORM_LINUX
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_STATIC
>  	bool
>  	default n
> @@ -196,9 +196,6 @@ config BUSYBOX_DEFAULT_FEATURE_FAST_TOP
>  config BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_USE_TERMIOS
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_FEATURE_EDITING
>  	bool
>  	default y
> @@ -355,6 +352,9 @@ config BUSYBOX_DEFAULT_XZ
>  config BUSYBOX_DEFAULT_BZIP2
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_CPIO
>  	bool
>  	default n
> @@ -382,6 +382,9 @@ config BUSYBOX_DEFAULT_GZIP_FAST
>  config BUSYBOX_DEFAULT_FEATURE_GZIP_LEVELS
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_GZIP_DECOMPRESS
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_LZOP
>  	bool
>  	default n
> @@ -403,6 +406,9 @@ config BUSYBOX_DEFAULT_RPM2CPIO
>  config BUSYBOX_DEFAULT_TAR
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FEATURE_TAR_CREATE
>  	bool
>  	default y
> @@ -421,9 +427,6 @@ config BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY
>  config BUSYBOX_DEFAULT_FEATURE_TAR_GNU_EXTENSIONS
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND
>  	bool
>  	default n
> @@ -439,16 +442,25 @@ config BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX
>  config BUSYBOX_DEFAULT_UNZIP
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_BASENAME
> +config BUSYBOX_DEFAULT_FEATURE_UNZIP_CDF
>  	bool
> -	default y
> -config BUSYBOX_DEFAULT_CAL
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_UNZIP_BZIP2
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_UNZIP_LZMA
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_UNZIP_XZ
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_BASENAME
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_CAT
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_CATV
> +config BUSYBOX_DEFAULT_FEATURE_CATV
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_CHGRP
> @@ -559,6 +571,9 @@ config BUSYBOX_DEFAULT_EXPR
>  config BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_FACTOR
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FALSE
>  	bool
>  	default y
> @@ -589,6 +604,9 @@ config BUSYBOX_DEFAULT_INSTALL
>  config BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_LINK
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_LN
>  	bool
>  	default y
> @@ -607,6 +625,9 @@ config BUSYBOX_DEFAULT_FEATURE_LS_FOLLOWLINKS
>  config BUSYBOX_DEFAULT_FEATURE_LS_RECURSIVE
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_FEATURE_LS_WIDTH
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES
>  	bool
>  	default y
> @@ -652,6 +673,9 @@ config BUSYBOX_DEFAULT_MKFIFO
>  config BUSYBOX_DEFAULT_MKNOD
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_MKTEMP
> +	bool
> +	default y
>  config BUSYBOX_DEFAULT_MV
>  	bool
>  	default y
> @@ -661,12 +685,21 @@ config BUSYBOX_DEFAULT_FEATURE_MV_LONG_OPTIONS
>  config BUSYBOX_DEFAULT_NICE
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_NL
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_NOHUP
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_NPROC
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_OD
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_PASTE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_PRINTENV
>  	bool
>  	default n
> @@ -697,6 +730,9 @@ config BUSYBOX_DEFAULT_FEATURE_RMDIR_LONG_OPTIONS
>  config BUSYBOX_DEFAULT_SEQ
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_SHRED
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_SHUF
>  	bool
>  	default n
> @@ -769,6 +805,9 @@ config BUSYBOX_DEFAULT_TEST2
>  config BUSYBOX_DEFAULT_FEATURE_TEST_64
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_TIMEOUT
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_TOUCH
>  	bool
>  	default y
> @@ -829,6 +868,9 @@ config BUSYBOX_DEFAULT_FEATURE_WC_LARGE
>  config BUSYBOX_DEFAULT_WHO
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_W
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_USERS
>  	bool
>  	default n
> @@ -844,9 +886,6 @@ config BUSYBOX_DEFAULT_FEATURE_VERBOSE
>  config BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_FEATURE_AUTOWIDTH
> -	bool
> -	default y
>  config BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE
>  	bool
>  	default y
> @@ -916,9 +955,6 @@ config BUSYBOX_DEFAULT_SETLOGCONS
>  config BUSYBOX_DEFAULT_SHOWKEY
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_MKTEMP
> -	bool
> -	default y
>  config BUSYBOX_DEFAULT_PIPE_PROGRESS
>  	bool
>  	default n
> @@ -934,10 +970,10 @@ config BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY
>  config BUSYBOX_DEFAULT_START_STOP_DAEMON
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY
> +config BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
> +config BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_WHICH
> @@ -1174,7 +1210,7 @@ config BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY
>  config BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_EXTRA_QUIET
> +config BUSYBOX_DEFAULT_FEATURE_INIT_QUIET
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS
> @@ -1186,12 +1222,6 @@ config BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE
>  config BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_MESG
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS
>  	bool
>  	default y
> @@ -1294,6 +1324,9 @@ config BUSYBOX_DEFAULT_FEATURE_SU_SYSLOG
>  config BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_SULOGIN
>  	bool
>  	default n
> @@ -1330,12 +1363,6 @@ config BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
>  config BUSYBOX_DEFAULT_MODINFO
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_MODPROBE
>  	bool
>  	default n
> @@ -1345,10 +1372,13 @@ config BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST
>  config BUSYBOX_DEFAULT_RMMOD
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_2_4_MODULES
> +config BUSYBOX_DEFAULT_FEATURE_CMDLINE_MODULE_OPTIONS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP
> +config BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_2_4_MODULES
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING
> @@ -1369,6 +1399,9 @@ config BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL
>  config BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS
>  	bool
>  	default n
> @@ -1399,12 +1432,27 @@ config BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE
>  config BUSYBOX_DEFAULT_BLOCKDEV
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_CAL
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_CHRT
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_DMESG
>  	bool
>  	default y
>  config BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_EJECT
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FALLOCATE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FATATTR
>  	bool
>  	default n
> @@ -1462,6 +1510,9 @@ config BUSYBOX_DEFAULT_FREERAMDISK
>  config BUSYBOX_DEFAULT_FSCK_MINIX
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FSFREEZE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FSTRIM
>  	bool
>  	default n
> @@ -1480,6 +1531,9 @@ config BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE
>  config BUSYBOX_DEFAULT_HD
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_XXD
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_HWCLOCK
>  	bool
>  	default y
> @@ -1489,12 +1543,21 @@ config BUSYBOX_DEFAULT_FEATURE_HWCLOCK_LONG_OPTIONS
>  config BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_IONICE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_IPCRM
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_IPCS
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_LAST
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_LAST_FANCY
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_LOSETUP
>  	bool
>  	default n
> @@ -1522,6 +1585,12 @@ config BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
>  config BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_MESG
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_MKE2FS
>  	bool
>  	default n
> @@ -1582,6 +1651,9 @@ config BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB
>  config BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_MOUNTPOINT
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_NSENTER
>  	bool
>  	default n
> @@ -1600,6 +1672,9 @@ config BUSYBOX_DEFAULT_RDEV
>  config BUSYBOX_DEFAULT_READPROFILE
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_RENICE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_REV
>  	bool
>  	default n
> @@ -1621,6 +1696,12 @@ config BUSYBOX_DEFAULT_LINUX32
>  config BUSYBOX_DEFAULT_LINUX64
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_SETPRIV
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_SETSID
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_SWAPON
>  	bool
>  	default n
> @@ -1636,6 +1717,12 @@ config BUSYBOX_DEFAULT_SWAPOFF
>  config BUSYBOX_DEFAULT_SWITCH_ROOT
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_TASKSET
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_UEVENT
>  	bool
>  	default n
> @@ -1648,6 +1735,9 @@ config BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL
>  config BUSYBOX_DEFAULT_UNSHARE
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_WALL
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP
>  	bool
>  	default y
> @@ -1771,9 +1861,6 @@ config BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN
>  config BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_CHRT
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_CONSPY
>  	bool
>  	default n
> @@ -1816,12 +1903,6 @@ config BUSYBOX_DEFAULT_FEATURE_DEVFS
>  config BUSYBOX_DEFAULT_DEVMEM
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_EJECT
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_FBSPLASH
>  	bool
>  	default n
> @@ -1873,15 +1954,6 @@ config BUSYBOX_DEFAULT_I2CDETECT
>  config BUSYBOX_DEFAULT_INOTIFYD
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_IONICE
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_LAST
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_FEATURE_LAST_FANCY
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_LESS
>  	bool
>  	default y
> @@ -1918,6 +1990,9 @@ config BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS
>  config BUSYBOX_DEFAULT_LOCK
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_LSSCSI
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_MAKEDEVS
>  	bool
>  	default n
> @@ -1933,9 +2008,6 @@ config BUSYBOX_DEFAULT_MAN
>  config BUSYBOX_DEFAULT_MICROCOM
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_MOUNTPOINT
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_MT
>  	bool
>  	default n
> @@ -1945,6 +2017,9 @@ config BUSYBOX_DEFAULT_NANDWRITE
>  config BUSYBOX_DEFAULT_NANDDUMP
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_PARTPROBE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_RAIDAUTORUN
>  	bool
>  	default n
> @@ -1963,24 +2038,12 @@ config BUSYBOX_DEFAULT_RX
>  config BUSYBOX_DEFAULT_SETSERIAL
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_SETSID
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_STRINGS
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_TASKSET
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_TIME
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_TIMEOUT
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_TTYSIZE
>  	bool
>  	default n
> @@ -2008,9 +2071,6 @@ config BUSYBOX_DEFAULT_UBIRENAME
>  config BUSYBOX_DEFAULT_VOLNAME
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_WALL
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_WATCHDOG
>  	bool
>  	default n
> @@ -2227,10 +2287,10 @@ config BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS
>  config BUSYBOX_DEFAULT_IPCALC
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY
> +config BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS
> +config BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_FAKEIDENTD
> @@ -2275,6 +2335,9 @@ config BUSYBOX_DEFAULT_NSLOOKUP
>  config BUSYBOX_DEFAULT_NSLOOKUP_LEDE
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_LEDE_LONG_OPTIONS
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_NTPD
>  	bool
>  	default y
> @@ -2302,6 +2365,9 @@ config BUSYBOX_DEFAULT_ROUTE
>  config BUSYBOX_DEFAULT_SLATTACH
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_SSL_CLIENT
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_TCPSVD
>  	bool
>  	default n
> @@ -2317,6 +2383,9 @@ config BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE
>  config BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_TELNET_WIDTH
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_TELNETD
>  	bool
>  	default n
> @@ -2347,6 +2416,9 @@ config BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR
>  config BUSYBOX_DEFAULT_TFTP_DEBUG
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_TLS
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_TRACEROUTE
>  	bool
>  	default y
> @@ -2371,22 +2443,22 @@ config BUSYBOX_DEFAULT_VCONFIG
>  config BUSYBOX_DEFAULT_WGET
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR
> +config BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
> +config BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS
> +config BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL
> +config BUSYBOX_DEFAULT_FEATURE_WGET_HTTPS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_WGET_SSL_HELPER
> +config BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_WHOIS
> @@ -2398,13 +2470,16 @@ config BUSYBOX_DEFAULT_ZCIP
>  config BUSYBOX_DEFAULT_UDHCPC6
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_UDHCPD
> +config BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_DHCPRELAY
> +config BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_DUMPLEASES
> +config BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_UDHCPD
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY
> @@ -2416,6 +2491,12 @@ config BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC
>  config BUSYBOX_DEFAULT_DHCPD_LEASES_FILE
>  	string
>  	default ""
> +config BUSYBOX_DEFAULT_DUMPLEASES
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_DHCPRELAY
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_UDHCPC
>  	bool
>  	default y
> @@ -2425,6 +2506,9 @@ config BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING
>  config BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT
> +	string
> +	default "/usr/share/udhcpc/default.script"
>  config BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT
>  	bool
>  	default n
> @@ -2437,9 +2521,6 @@ config BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397
>  config BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT
> -	string
> -	default "/usr/share/udhcpc/default.script"
>  config BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS
>  	int
>  	default 80
> @@ -2524,6 +2605,9 @@ config BUSYBOX_DEFAULT_PMAP
>  config BUSYBOX_DEFAULT_POWERTOP
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_FEATURE_POWERTOP_INTERACTIVE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_PS
>  	bool
>  	default y
> @@ -2536,10 +2620,10 @@ config BUSYBOX_DEFAULT_FEATURE_PS_LONG
>  config BUSYBOX_DEFAULT_FEATURE_PS_TIME
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS
> +config BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS
> +config BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_PSTREE
> @@ -2548,9 +2632,6 @@ config BUSYBOX_DEFAULT_PSTREE
>  config BUSYBOX_DEFAULT_PWDX
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_RENICE
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_SMEMCAP
>  	bool
>  	default n
> @@ -2560,6 +2641,9 @@ config BUSYBOX_DEFAULT_BB_SYSCTL
>  config BUSYBOX_DEFAULT_TOP
>  	bool
>  	default y
> +config BUSYBOX_DEFAULT_FEATURE_TOP_INTERACTIVE
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
>  	bool
>  	default y
> @@ -2698,45 +2782,45 @@ config BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE
>  config BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT
> -	bool
> -	default n
> -config BUSYBOX_DEFAULT_ASH_EXPAND_PRMT
> -	bool
> -	default y
>  config BUSYBOX_DEFAULT_ASH_BASH_COMPAT
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_ASH_JOB_CONTROL
>  	bool
>  	default y
>  config BUSYBOX_DEFAULT_ASH_ALIAS
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_GETOPTS
> +config BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_ASH_EXPAND_PRMT
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_BUILTIN_ECHO
> +config BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_ASH_MAIL
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_ASH_ECHO
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_BUILTIN_PRINTF
> +config BUSYBOX_DEFAULT_ASH_PRINTF
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_BUILTIN_TEST
> +config BUSYBOX_DEFAULT_ASH_TEST
>  	bool
>  	default y
>  config BUSYBOX_DEFAULT_ASH_HELP
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_ASH_CMDCMD
> +config BUSYBOX_DEFAULT_ASH_GETOPTS
>  	bool
>  	default y
> -config BUSYBOX_DEFAULT_ASH_MAIL
> +config BUSYBOX_DEFAULT_ASH_CMDCMD
>  	bool
> -	default n
> +	default y
>  config BUSYBOX_DEFAULT_CTTYHACK
>  	bool
>  	default n
> @@ -2749,9 +2833,6 @@ config BUSYBOX_DEFAULT_HUSH_BASH_COMPAT
>  config BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_HUSH_HELP
> -	bool
> -	default n
>  config BUSYBOX_DEFAULT_HUSH_INTERACTIVE
>  	bool
>  	default n
> @@ -2782,10 +2863,55 @@ config BUSYBOX_DEFAULT_HUSH_LOCAL
>  config BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT
>  	bool
>  	default n
> +config BUSYBOX_DEFAULT_HUSH_MODE_X
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_ECHO
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_PRINTF
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_TEST
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_HELP
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_EXPORT
> +	bool
> +	default n
>  config BUSYBOX_DEFAULT_HUSH_EXPORT_N
>  	bool
>  	default n
> -config BUSYBOX_DEFAULT_HUSH_MODE_X
> +config BUSYBOX_DEFAULT_HUSH_KILL
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_WAIT
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_TRAP
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_TYPE
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_READ
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_SET
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_UNSET
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_ULIMIT
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_UMASK
> +	bool
> +	default n
> +config BUSYBOX_DEFAULT_HUSH_MEMLEAK
>  	bool
>  	default n
>  config BUSYBOX_DEFAULT_MSH
> diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
> index ebc824e435..653d09ca47 100644
> --- a/package/utils/busybox/Makefile
> +++ b/package/utils/busybox/Makefile
> @@ -8,14 +8,14 @@
>  include $(TOPDIR)/rules.mk
>  
>  PKG_NAME:=busybox
> -PKG_VERSION:=1.26.2
> -PKG_RELEASE:=7
> +PKG_VERSION:=1.27.1
> +PKG_RELEASE:=1
>  PKG_FLAGS:=essential
>  
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
>  PKG_SOURCE_URL:=https://www.busybox.net/downloads \
>  		http://sources.buildroot.net
> -PKG_HASH:=da3e44913fc1a9c9b7c5337ea5292da518683cbff32be630777f565d6036af16
> +PKG_HASH:=c890ac53fb218eb4c6ad9ed3207a896783b142e6d306f292b8d9bec82af5f936
>  
>  PKG_BUILD_DEPENDS:=BUSYBOX_USE_LIBRPC:librpc BUSYBOX_CONFIG_PAM:libpam
>  PKG_BUILD_PARALLEL:=1
> diff --git a/package/utils/busybox/config/Config.in b/package/utils/busybox/config/Config.in
> index 3ee3aa2f47..ebcf526428 100644
> --- a/package/utils/busybox/config/Config.in
> +++ b/package/utils/busybox/config/Config.in
> @@ -49,17 +49,6 @@ config BUSYBOX_CONFIG_USE_PORTABLE_CODE
>  	  compiler other than gcc.
>  	  If you do use gcc, this option may needlessly increase code size.
>  
> -config BUSYBOX_CONFIG_PLATFORM_LINUX
> -	bool "Enable Linux-specific applets and features"
> -	default BUSYBOX_DEFAULT_PLATFORM_LINUX
> -	help
> -	  For the most part, busybox requires only POSIX compatibility
> -	  from the target system, but some applets and features use
> -	  Linux-specific interfaces.
> -
> -	  Answering 'N' here will disable such applets and hide the
> -	  corresponding configuration options.
> -
>  config BUSYBOX_CONFIG_SHOW_USAGE
>  	bool "Show applet usage messages"
>  	default BUSYBOX_DEFAULT_SHOW_USAGE
> @@ -123,14 +112,14 @@ config BUSYBOX_CONFIG_INSTALL_NO_USR
>  	  never to /usr/bin or /usr/sbin.
>  
>  config BUSYBOX_CONFIG_PAM
> -	bool "Support for PAM (Pluggable Authentication Modules)"
> +	bool "Support PAM (Pluggable Authentication Modules)"
>  	default BUSYBOX_DEFAULT_PAM
>  	help
>  	  Use PAM in some busybox applets (currently login and httpd) instead
>  	  of direct access to password database.
>  
>  config BUSYBOX_CONFIG_LONG_OPTS
> -	bool "Support for --long-options"
> +	bool "Support --long-options"
>  	default BUSYBOX_DEFAULT_LONG_OPTS
>  	help
>  	  Enable this if you want busybox applets to use the gnu --long-option
> @@ -197,7 +186,7 @@ config BUSYBOX_CONFIG_PID_FILE_PATH
>  	  specify a pidfile path.
>  
>  config BUSYBOX_CONFIG_FEATURE_SUID
> -	bool "Support for SUID/SGID handling"
> +	bool "Support SUID/SGID handling"
>  	default BUSYBOX_DEFAULT_FEATURE_SUID
>  	help
>  	  With this option you can install the busybox binary belonging
> @@ -337,6 +326,17 @@ config BUSYBOX_CONFIG_FEATURE_HAVE_RPC
>  	#  This is automatically selected if any of enabled applets need it.
>  	#  You do not need to select it manually.
>  
> +config BUSYBOX_CONFIG_PLATFORM_LINUX
> +	bool #No description makes it a hidden option
> +	default BUSYBOX_DEFAULT_PLATFORM_LINUX
> +	#help
> +	#  For the most part, busybox requires only POSIX compatibility
> +	#  from the target system, but some applets and features use
> +	#  Linux-specific interfaces.
> +	#
> +	#  This is automatically selected if any applet or feature requires
> +	#  Linux-specific interfaces. You do not need to select it manually.
> +
>  comment 'Build Options'
>  
>  config BUSYBOX_CONFIG_STATIC
> @@ -610,6 +610,8 @@ config BUSYBOX_CONFIG_DEBUG_SANITIZE
>  	  catch bad memory accesses (e.g. buffer overflows), but will make
>  	  the executable larger and slow down runtime a bit.
>  
> +	  This adds -fsanitize=foo options to gcc command line.
> +
>  	  If you aren't developing/testing busybox, say N here.
>  
>  config BUSYBOX_CONFIG_UNIT_TEST
> @@ -624,7 +626,7 @@ config BUSYBOX_CONFIG_WERROR
>  	bool "Abort compilation on any warning"
>  	default BUSYBOX_DEFAULT_WERROR
>  	help
> -	  Selecting this will add -Werror to gcc command line.
> +	  This adds -Werror to gcc command line.
>  
>  	  Most people should answer N.
>  
> diff --git a/package/utils/busybox/patches/120-remove_uclibc_rpc_check.patch b/package/utils/busybox/patches/120-remove_uclibc_rpc_check.patch
> index 682a68eebd..1f5b10859b 100644
> --- a/package/utils/busybox/patches/120-remove_uclibc_rpc_check.patch
> +++ b/package/utils/busybox/patches/120-remove_uclibc_rpc_check.patch
> @@ -1,11 +1,12 @@
>  --- a/util-linux/mount.c
>  +++ b/util-linux/mount.c
> -@@ -245,9 +245,6 @@
> +@@ -245,10 +245,6 @@
>   #if ENABLE_FEATURE_MOUNT_NFS
>   /* This is just a warning of a common mistake.  Possibly this should be a
>    * uclibc faq entry rather than in busybox... */
>  -# if defined(__UCLIBC__) && ! defined(__UCLIBC_HAS_RPC__)
> --#  error "You need to build uClibc with UCLIBC_HAS_RPC for NFS support"
> +-#  warning "You probably need to build uClibc with UCLIBC_HAS_RPC for NFS support"
> +-   /* not #error, since user may be using e.g. libtirpc instead */
>  -# endif
>   # include <rpc/rpc.h>
>   # include <rpc/pmap_prot.h>
> diff --git a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
> index 8ef8f2211b..5f64c19d05 100644
> --- a/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
> +++ b/package/utils/busybox/patches/200-udhcpc_reduce_msgs.patch
> @@ -1,6 +1,6 @@
>  --- a/networking/udhcp/dhcpc.c
>  +++ b/networking/udhcp/dhcpc.c
> -@@ -704,6 +704,7 @@ static int bcast_or_ucast(struct dhcp_pa
> +@@ -706,6 +706,7 @@ static int bcast_or_ucast(struct dhcp_pa
>   static NOINLINE int send_discover(uint32_t xid, uint32_t requested)
>   {
>   	struct dhcp_packet packet;
> @@ -8,7 +8,7 @@
>   
>   	/* Fill in: op, htype, hlen, cookie, chaddr fields,
>   	 * random xid field (we override it below),
> -@@ -721,6 +722,7 @@ static NOINLINE int send_discover(uint32
> +@@ -723,6 +724,7 @@ static NOINLINE int send_discover(uint32
>   	 */
>   	add_client_options(&packet);
>   
> diff --git a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
> index f5e3a075ae..727f69409c 100644
> --- a/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
> +++ b/package/utils/busybox/patches/201-udhcpc_changed_ifindex.patch
> @@ -1,6 +1,6 @@
>  --- a/networking/udhcp/dhcpc.c
>  +++ b/networking/udhcp/dhcpc.c
> -@@ -1439,6 +1439,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
> +@@ -1442,6 +1442,12 @@ int udhcpc_main(int argc UNUSED_PARAM, c
>   		/* silence "uninitialized!" warning */
>   		unsigned timestamp_before_wait = timestamp_before_wait;
>   
> diff --git a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch b/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
> index 3df8d930b1..7b77d2970b 100644
> --- a/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
> +++ b/package/utils/busybox/patches/203-udhcpc_renew_no_deconfig.patch
> @@ -1,6 +1,6 @@
>  --- a/networking/udhcp/dhcpc.c
>  +++ b/networking/udhcp/dhcpc.c
> -@@ -1110,7 +1110,6 @@ static void perform_renew(void)
> +@@ -1112,7 +1112,6 @@ static void perform_renew(void)
>   		state = RENEW_REQUESTED;
>   		break;
>   	case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
> diff --git a/package/utils/busybox/patches/301-ip-link-fix-netlink-msg-size.patch b/package/utils/busybox/patches/301-ip-link-fix-netlink-msg-size.patch
> index 360324bf7c..ca76c44cc8 100644
> --- a/package/utils/busybox/patches/301-ip-link-fix-netlink-msg-size.patch
> +++ b/package/utils/busybox/patches/301-ip-link-fix-netlink-msg-size.patch
> @@ -1,6 +1,6 @@
>  --- a/networking/libiproute/iplink.c
>  +++ b/networking/libiproute/iplink.c
> -@@ -470,7 +470,7 @@ static int do_add_or_delete(char **argv,
> +@@ -598,7 +598,7 @@ static int do_add_or_delete(char **argv,
>   	}
>   	xrtnl_open(&rth);
>   	ll_init_map(&rth);
> diff --git a/package/utils/busybox/patches/302-ip-rule-add-suppress-prefixlength.patch b/package/utils/busybox/patches/302-ip-rule-add-suppress-prefixlength.patch
> deleted file mode 100644
> index 7b4797505e..0000000000
> --- a/package/utils/busybox/patches/302-ip-rule-add-suppress-prefixlength.patch
> +++ /dev/null
> @@ -1,145 +0,0 @@
> -From dbac30c3784c267bbe44a2a3ebed4e827c8fe82a Mon Sep 17 00:00:00 2001
> -From: Stefan Tomanek <stefan.tomanek at wertarbyte.de>
> -Date: Tue, 13 Jun 2017 19:06:09 +0200
> -Subject: [PATCH] ip rule: add suppress_{prefixlength,ifgroup} options
> -
> -(cherry-picked from 192dce4b84fb32346ebc5194de7daa5da3b8d1b4)
> -
> -function                                             old     new   delta
> -iprule_modify                                        816     887     +71
> -print_rule                                           610     680     +70
> -------------------------------------------------------------------------------
> -(add/remove: 0/0 grow/shrink: 2/0 up/down: 141/0)             Total: 141 bytes
> -
> -Signed-off-by: Stefan Tomanek <stefan.tomanek at wertarbyte.de>
> -Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
> ----
> - networking/libiproute/iprule.c | 73 ++++++++++++++++++++++++++----------------
> - 1 file changed, 46 insertions(+), 27 deletions(-)
> -
> ---- a/networking/libiproute/iprule.c
> -+++ b/networking/libiproute/iprule.c
> -@@ -17,25 +17,32 @@
> - #include <netinet/ip.h>
> - #include <arpa/inet.h>
> - 
> -+/* from <linux/fib_rules.h>: */
> -+#define FRA_SUPPRESS_IFGROUP   13
> -+#define FRA_SUPPRESS_PREFIXLEN 14
> -+
> - #include "ip_common.h"  /* #include "libbb.h" is inside */
> - #include "rt_names.h"
> - #include "utils.h"
> - 
> --/*
> --static void usage(void) __attribute__((noreturn));
> --
> --static void usage(void)
> --{
> --	fprintf(stderr, "Usage: ip rule [ list | add | del ] SELECTOR ACTION\n");
> --	fprintf(stderr, "SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK ]\n");
> --	fprintf(stderr, "            [ dev STRING ] [ pref NUMBER ]\n");
> --	fprintf(stderr, "ACTION := [ table TABLE_ID ] [ nat ADDRESS ]\n");
> --	fprintf(stderr, "          [ prohibit | reject | unreachable ]\n");
> --	fprintf(stderr, "          [ realms [SRCREALM/]DSTREALM ]\n");
> --	fprintf(stderr, "TABLE_ID := [ local | main | default | NUMBER ]\n");
> --	exit(-1);
> --}
> --*/
> -+/* If you add stuff here, update iprule_full_usage */
> -+static const char keywords[] ALIGN1 =
> -+	"from\0""to\0""preference\0""order\0""priority\0"
> -+	"tos\0""fwmark\0""realms\0""table\0""lookup\0"
> -+	"suppress_prefixlength\0""suppress_ifgroup\0"
> -+	"dev\0""iif\0""nat\0""map-to\0""type\0""help\0"
> -+	;
> -+#define keyword_preference            (keywords           + sizeof("from") + sizeof("to"))
> -+#define keyword_fwmark                (keyword_preference + sizeof("preference") + sizeof("order") + sizeof("priority") + sizeof("tos"))
> -+#define keyword_realms                (keyword_fwmark     + sizeof("fwmark"))
> -+#define keyword_suppress_prefixlength (keyword_realms     + sizeof("realms") + sizeof("table") + sizeof("lookup"))
> -+#define keyword_suppress_ifgroup      (keyword_suppress_prefixlength + sizeof("suppress_prefixlength"))
> -+enum {
> -+	ARG_from = 1, ARG_to, ARG_preference, ARG_order, ARG_priority,
> -+	ARG_tos, ARG_fwmark, ARG_realms, ARG_table, ARG_lookup,
> -+	ARG_suppress_prefixlength, ARG_suppress_ifgroup,
> -+	ARG_dev, ARG_iif, ARG_nat, ARG_map_to, ARG_type, ARG_help,
> -+};
> - 
> - static int FAST_FUNC print_rule(const struct sockaddr_nl *who UNUSED_PARAM,
> - 					struct nlmsghdr *n, void *arg UNUSED_PARAM)
> -@@ -119,6 +126,17 @@ static int FAST_FUNC print_rule(const st
> - 	else if (r->rtm_table)
> - 		printf("lookup %s ", rtnl_rttable_n2a(r->rtm_table));
> - 
> -+	if (tb[FRA_SUPPRESS_PREFIXLEN]) {
> -+		int pl = *(uint32_t*)RTA_DATA(tb[FRA_SUPPRESS_PREFIXLEN]);
> -+		if (pl != -1)
> -+			printf("%s %d ", keyword_suppress_prefixlength, pl);
> -+	}
> -+	if (tb[FRA_SUPPRESS_IFGROUP]) {
> -+		int grp = *(uint32_t*)RTA_DATA(tb[FRA_SUPPRESS_IFGROUP]);
> -+		if (grp != -1)
> -+			printf("%s %d ", keyword_suppress_ifgroup, grp);
> -+	}
> -+
> - 	if (tb[RTA_FLOW]) {
> - 		uint32_t to = *(uint32_t*)RTA_DATA(tb[RTA_FLOW]);
> - 		uint32_t from = to>>16;
> -@@ -174,15 +192,6 @@ static int iprule_list(char **argv)
> - /* Return value becomes exitcode. It's okay to not return at all */
> - static int iprule_modify(int cmd, char **argv)
> - {
> --	static const char keywords[] ALIGN1 =
> --		"from\0""to\0""preference\0""order\0""priority\0"
> --		"tos\0""fwmark\0""realms\0""table\0""lookup\0""dev\0"
> --		"iif\0""nat\0""map-to\0""type\0""help\0";
> --	enum {
> --		ARG_from = 1, ARG_to, ARG_preference, ARG_order, ARG_priority,
> --		ARG_tos, ARG_fwmark, ARG_realms, ARG_table, ARG_lookup, ARG_dev,
> --		ARG_iif, ARG_nat, ARG_map_to, ARG_type, ARG_help
> --	};
> - 	bool table_ok = 0;
> - 	struct rtnl_handle rth;
> - 	struct {
> -@@ -232,7 +241,7 @@ static int iprule_modify(int cmd, char *
> - 		) {
> - 			uint32_t pref;
> - 			NEXT_ARG();
> --			pref = get_u32(*argv, "preference");
> -+			pref = get_u32(*argv, keyword_preference);
> - 			addattr32(&req.n, sizeof(req), RTA_PRIORITY, pref);
> - 		} else if (key == ARG_tos) {
> - 			uint32_t tos;
> -@@ -243,13 +252,13 @@ static int iprule_modify(int cmd, char *
> - 		} else if (key == ARG_fwmark) {
> - 			uint32_t fwmark;
> - 			NEXT_ARG();
> --			fwmark = get_u32(*argv, "fwmark");
> -+			fwmark = get_u32(*argv, keyword_fwmark);
> - 			addattr32(&req.n, sizeof(req), RTA_PROTOINFO, fwmark);
> - 		} else if (key == ARG_realms) {
> - 			uint32_t realm;
> - 			NEXT_ARG();
> - 			if (get_rt_realms(&realm, *argv))
> --				invarg_1_to_2(*argv, "realms");
> -+				invarg_1_to_2(*argv, keyword_realms);
> - 			addattr32(&req.n, sizeof(req), RTA_FLOW, realm);
> - 		} else if (key == ARG_table ||
> - 			   key == ARG_lookup
> -@@ -265,6 +274,16 @@ static int iprule_modify(int cmd, char *
> - 				addattr32(&req.n, sizeof(req), RTA_TABLE, tid);
> - 			}
> - 			table_ok = 1;
> -+		} else if (key == ARG_suppress_prefixlength) {
> -+			int prefix_length;
> -+			NEXT_ARG();
> -+			prefix_length = get_u32(*argv, keyword_suppress_prefixlength);
> -+			addattr32(&req.n, sizeof(req), FRA_SUPPRESS_PREFIXLEN, prefix_length);
> -+		} else if (key == ARG_suppress_ifgroup) {
> -+			int grp;
> -+			NEXT_ARG();
> -+			grp = get_u32(*argv, keyword_suppress_ifgroup);
> -+			addattr32(&req.n, sizeof(req), FRA_SUPPRESS_IFGROUP, grp);
> - 		} else if (key == ARG_dev ||
> - 			   key == ARG_iif
> - 		) {
> diff --git a/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch b/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
> deleted file mode 100644
> index e83999d303..0000000000
> --- a/package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch
> +++ /dev/null
> @@ -1,100 +0,0 @@
> -From e88608eae24ae5934034e1ecb6c494fefbf1b9ae Mon Sep 17 00:00:00 2001
> -From: Denys Vlasenko <vda.linux at googlemail.com>
> -Date: Mon, 13 Mar 2017 20:50:42 +0100
> -Subject: [PATCH 1/2] vi: don't touch file with :x when modified_count == 0
> -
> -Along with it, there are other changes
> -
> - - Check for uppercase X is removed as the expression will be always false and
> -   :X itself is another totally different command in standard vim
> - - The status line will show number of written lines instead of lines requested
> -   by the colon command.  This is also how the standard vim is doing, though
> -   the difference is that '!' has to be explicitly specified in vim to allow
> -   partial writes
> -
> -Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> -Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
> ----
> - editors/vi.c | 43 ++++++++++++++++++++++++++-----------------
> - 1 file changed, 26 insertions(+), 17 deletions(-)
> -
> ---- a/editors/vi.c
> -+++ b/editors/vi.c
> -@@ -1038,7 +1038,9 @@ static void colon(char *buf)
> - 	 || strncmp(p, "wn", cnt) == 0
> - 	 || (p[0] == 'x' && !p[1])
> - 	) {
> --		cnt = file_write(current_filename, text, end - 1);
> -+		if (modified_count != 0 || p[0] != 'x') {
> -+			cnt = file_write(current_filename, text, end - 1);
> -+		}
> - 		if (cnt < 0) {
> - 			if (cnt == -1)
> - 				status_line_bold("Write error: %s", strerror(errno));
> -@@ -1049,8 +1051,9 @@ static void colon(char *buf)
> - 				current_filename,
> - 				count_lines(text, end - 1), cnt
> - 			);
> --			if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n'
> --			 || p[0] == 'X' || p[1] == 'Q' || p[1] == 'N'
> -+			if (p[0] == 'x'
> -+			 || p[1] == 'q' || p[1] == 'n'
> -+			 || p[1] == 'Q' || p[1] == 'N'
> - 			) {
> - 				editing = 0;
> - 			}
> -@@ -1480,16 +1483,19 @@ static void colon(char *buf)
> - 			goto ret;
> - 		}
> - #endif
> --		// how many lines in text[]?
> --		li = count_lines(q, r);
> --		size = r - q + 1;
> - 		//if (useforce) {
> - 			// if "fn" is not write-able, chmod u+w
> - 			// sprintf(syscmd, "chmod u+w %s", fn);
> - 			// system(syscmd);
> - 			// forced = TRUE;
> - 		//}
> --		l = file_write(fn, q, r);
> -+		if (modified_count != 0 || cmd[0] != 'x') {
> -+			size = r - q + 1;
> -+			l = file_write(fn, q, r);
> -+		} else {
> -+			size = 0;
> -+			l = 0;
> -+		}
> - 		//if (useforce && forced) {
> - 			// chmod u-w
> - 			// sprintf(syscmd, "chmod u-w %s", fn);
> -@@ -1500,17 +1506,20 @@ static void colon(char *buf)
> - 			if (l == -1)
> - 				status_line_bold_errno(fn);
> - 		} else {
> -+			// how many lines written
> -+			li = count_lines(q, q + l - 1);
> - 			status_line("'%s' %dL, %dC", fn, li, l);
> --			if (q == text && r == end - 1 && l == size) {
> --				modified_count = 0;
> --				last_modified_count = -1;
> --			}
> --			if ((cmd[0] == 'x' || cmd[1] == 'q' || cmd[1] == 'n'
> --			    || cmd[0] == 'X' || cmd[1] == 'Q' || cmd[1] == 'N'
> --			    )
> --			 && l == size
> --			) {
> --				editing = 0;
> -+			if (l == size) {
> -+				if (q == text && q + l == end) {
> -+					modified_count = 0;
> -+					last_modified_count = -1;
> -+				}
> -+				if (cmd[0] == 'x'
> -+				 || cmd[1] == 'q' || cmd[1] == 'n'
> -+				 || cmd[1] == 'Q' || cmd[1] == 'N'
> -+				) {
> -+					editing = 0;
> -+				}
> - 			}
> - 		}
> - #if ENABLE_FEATURE_VI_YANKMARK
> diff --git a/package/utils/busybox/patches/402-vi-avoid-touching-a-new-file-with-ZZ-when-no-editing.patch b/package/utils/busybox/patches/402-vi-avoid-touching-a-new-file-with-ZZ-when-no-editing.patch
> deleted file mode 100644
> index b56cf735c2..0000000000
> --- a/package/utils/busybox/patches/402-vi-avoid-touching-a-new-file-with-ZZ-when-no-editing.patch
> +++ /dev/null
> @@ -1,53 +0,0 @@
> -From 8f3bf4f0d3605b50a8e4c48c89aeabc455f04884 Mon Sep 17 00:00:00 2001
> -From: Yousong Zhou <yszhou4tech at gmail.com>
> -Date: Fri, 24 Mar 2017 21:13:10 +0100
> -Subject: [PATCH 2/2] vi: avoid touching a new file with ZZ when no editing has
> - been done
> -
> -This is the behaviour observed with standard vim and busybox vi of at
> -least 1.22.1.  It was changed with commit "32afd3a vi: some
> -simplifications" which happened before 1.23.0.
> -
> -Mistyping filename on command line happens fairly often and it's better
> -we restore the old behaviour to avoid a few unnecessary flash writes and
> -sometimes efforts of debugging bugs caused by those unneeded stray
> -files.
> -
> -Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> -Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
> ----
> - editors/vi.c | 16 ++++++++--------
> - 1 file changed, 8 insertions(+), 8 deletions(-)
> -
> ---- a/editors/vi.c
> -+++ b/editors/vi.c
> -@@ -719,14 +719,6 @@ static int init_text_buffer(char *fn)
> - {
> - 	int rc;
> - 
> --	flush_undo_data();
> --	modified_count = 0;
> --	last_modified_count = -1;
> --#if ENABLE_FEATURE_VI_YANKMARK
> --	/* init the marks */
> --	memset(mark, 0, sizeof(mark));
> --#endif
> --
> - 	/* allocate/reallocate text buffer */
> - 	free(text);
> - 	text_size = 10240;
> -@@ -741,6 +733,14 @@ static int init_text_buffer(char *fn)
> - 		// file doesnt exist. Start empty buf with dummy line
> - 		char_insert(text, '\n', NO_UNDO);
> - 	}
> -+
> -+	flush_undo_data();
> -+	modified_count = 0;
> -+	last_modified_count = -1;
> -+#if ENABLE_FEATURE_VI_YANKMARK
> -+	/* init the marks */
> -+	memset(mark, 0, sizeof(mark));
> -+#endif
> - 	return rc;
> - }
> - 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/lede-dev/attachments/20170729/9af7825e/attachment-0001.sig>


More information about the Lede-dev mailing list