[From nobody Thu Jun 25 05:54:43 2020
Received: from amarth.morgul.net ([2603:400a:ffff:bb8::801f:3c])
 by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux))
 id 1fZQbZ-0000Jc-Tv
 for openwrt-devel@lists.openwrt.org; Sun, 01 Jul 2018 00:52:46 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=morgul.net; 
 s=20141010;
 h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:
 Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=BpLMROEaCRm8W/umodU4oa80T6cA6TI8Dpg8hhlpzek=; b=s/xkDKMyD8yFgrWX4cEgmE0svE
 12zoDuwB094JTeVC2UtLU2dJPwV5N4S9NvnI4zzC0237NqnvtJVo7DUUVF4WwSAas/O13xQkx0UIo
 pKK6vHFlEBQndY0QCRKddd4OpFi5R+ANPtxQrrHcnE8N+qXZtZ0sAoX4XZJNK+VM0A7w=;
Received: from [2601:602:9400:2a22:2ab2:bdff:fee6:a550]
 (helo=ctrl.internal.morgul.net)
 by amarth.morgul.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.89) (envelope-from &lt;frodo@morgul.net&gt;)
 id 1fZQbO-0005BK-8D; Sat, 30 Jun 2018 20:52:30 -0400
Received: from noahm by ctrl.internal.morgul.net with local (Exim 4.89)
 (envelope-from &lt;frodo@morgul.net&gt;)
 id 1fZQbM-0003SW-GA; Sat, 30 Jun 2018 17:52:28 -0700
Date: Sat, 30 Jun 2018 17:52:28 -0700
From: Noah Meyerhans &lt;frodo@morgul.net&gt;
To: Karl Palsson &lt;karlp@tweak.net.au&gt;
Cc: openwrt-devel &lt;openwrt-devel@lists.openwrt.org&gt;
Subject: Re: [OpenWrt-Devel] iputils packaging
Message-ID: &lt;20180701005228.v6ojy6pptghfqyvz@ctrl.internal.morgul.net&gt;
Mail-Followup-To: Noah Meyerhans &lt;frodo@morgul.net&gt;,
 Karl Palsson &lt;karlp@tweak.net.au&gt;,
 openwrt-devel &lt;openwrt-devel@lists.openwrt.org&gt;
References: &lt;mailman.7656.1530337906.25356.openwrt-devel@lists.openwrt.org&gt;
 &lt;sdUhXP4rKzhCgU9q9fTwrqD4AqJgDZH24SqeEQ5i2298@mailpile&gt;
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol=&quot;application/pgp-signature&quot;; boundary=&quot;cpvuzyxgjiwppxja&quot;
Content-Disposition: inline
In-Reply-To: &lt;sdUhXP4rKzhCgU9q9fTwrqD4AqJgDZH24SqeEQ5i2298@mailpile&gt;
User-Agent: NeoMutt/20170113 (1.7.2)
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 
X-CRM114-CacheID: sfid-20180630_175242_184088_738093F7 
X-CRM114-Status: GOOD (  20.07  )
X-Spam-Score: -0.1 (/)
X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary:
 Content analysis details:   (-0.1 points)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
 domain
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
 not necessarily valid
 -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature


--cpvuzyxgjiwppxja
Content-Type: multipart/mixed; boundary=&quot;w3r54q634nk5a44y&quot;
Content-Disposition: inline


--w3r54q634nk5a44y
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Jun 30, 2018 at 10:39:42PM -0000, Karl Palsson wrote:
&gt; &gt; Is there a reason OpenWRT hasn't switched? I'm happy to send
&gt; &gt; patches if they'll be considered.
&gt;=20
&gt; Perhaps a better question would be, why should they? Personally I
&gt; don't find the &quot;some other distros did&quot; to be at all compelling,
&gt; but I'd certainly be interested in hearing the _reasoning_ of why
&gt; they switched?

Sorry for not making it clear. Prior to David's fork, every distro was
carrying their own set of patches for bugfixes, etc. In Debian I had 12
patches; Today the only one left is a tiny Debian-specific build
environment change.  In OpenWRT, we've got a patch to support uClibc,
which would likely go away with the switch. There are several patches to
the build system, which also may go away.

A responsive upstream helps to ensure that the behavior of the software
is consistent, regardless of who's distributing the software, by
minimizing the need for distributors to modify the software.

I've attached the &quot;show-branch&quot; output from David's master branch back
to when he imported it. Many of the changes are bug fixes. Some are
trivial, but even those are useful to have. Many of them aren't
user-visible at all, but instead focus on code quality. ping's code has
a very long history, and much of it is in an archaic coding style.
Beyond that, with all the changes over the years, a lot of sloppiness
has crept it. There were unused variables, code disabled by preprocessor
directive (#if 0, etc) and other cruft. Coverity and Travis tests are
now run against the code with regularity, and there's attention given to
their results. See e.g. https://travis-ci.org/iputils/iputils for the
travis builds, which are performed with multiple different
configurations (different compilers, build options, etc)

The iputils fork is, put simply, a better-maintained project. That's why
the other distros have switched.

noah


--w3r54q634nk5a44y
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=&quot;iputils-changes.txt&quot;

! [608419a7804caf36a359875d2fdae0b3eb181387] tracepath, tracepath6: Support -m (maximum hops) option.
 ! [HEAD] iputils-s20180629
--
 + [HEAD] iputils-s20180629
 + [HEAD^^2] ping: Fix signed overflow/conversion warning
 + [HEAD~2^2] ping: Fix ping name encoded using ACE on C locale
 + [HEAD~3^2] fix checksum always success in IPv4 ping.
 + [HEAD~4^2] Ping: Correct rounding of timing displays
 + [HEAD~5^2] ping6: Fix device binding
 + [HEAD~6^2] ping: read from error queue when POLLERR is set
 + [HEAD~7^2] docs: Tiny fixes in README.md
 + [HEAD~8^2] doc/ping: Update Interface section
 + [HEAD~9^2] doc/ping: Replace deprecated commands in &quot;SEE ALSO&quot; section
 + [HEAD~10^2] Revert &quot;correctly initialize first hop&quot;
 + [HEAD~11^2] ping: Remove workaround for bug in IP_RECVERR on raw sockets
 + [HEAD~12^2] tracepath: Support calling `tracepath` as `tracepath4` or `tracepath6`
 + [HEAD~13^2] .travis.yml: corrected variable values in matrix
 + [HEAD~13^2^] .travis.yml: install libidn2
 + [HEAD~13^2~2] ping: use libidn2 instead of libidn
 + [HEAD~13^2~3] ping6: simplified IDNA usage
 + [HEAD~13^2~4] traceroute6: use getaddrinfo IDNA conversion
 + [HEAD~13^2~5] arping,tracepath: removed unused idna header
 + [HEAD~14^2] tracepath: fix heap-buffer-overflow [asan]
 + [HEAD~15^2] ping: remove spurious error message
 + [HEAD~16^2] arping: do not use libsysfs to read from /sys
 + [HEAD~17] cleanup: really old code, simplify little bit
 + [HEAD~18] licenses: fill missing clockdiff.c and ping_common.c license
 + [HEAD~19] LICENSE: convert BSD4 to BSD3 license
 + [HEAD~20] doc: ping - document mdev behaviour
 + [HEAD~21] LICENSE: add information about licenses
 + [HEAD~22] ping: fix incorrect packet loss calculation
 + [HEAD~23^2] ping_common.c: POLLERRR is ignored in events
 + [HEAD~24] doc: convert from converting SGML to XML
 + [HEAD~25] travis-ci: cleanup and switch to Ubuntu 14.04 build
 + [HEAD~26] RELNOTES: deprecated in favor of git history &amp; github
 + [HEAD~27] remove iputils.spec
 + [HEAD~28] ping: fix conflicting defines
 + [HEAD~29] ping: flowinfo: fixup checks for flowinfo and also add decimal numbers support
 + [HEAD~30] ping: parsetos verification is enough, allow decimal values
 + [HEAD~31] ping: fix typo in error tos error message
 + [HEAD~32] meson: add experimental meson buildsystem support
 + [HEAD~33] gitignore: prepare for Meson
 + [HEAD~34^2] ping: fix pmtu discovery for ipv6
 + [HEAD~35] traceroute6: Fix traceroute to IPv6 address
 + [HEAD~36] traceroute6: Fix leaking the idn memory
 + [HEAD~37] traceroute6: Fix use after free for hostname
 + [HEAD~38] tracepath,doc: Added -4, -6 Parameter in doc and void usage(void)
 + [HEAD~39] fix multicast setsockopt calls on big endian
 + [HEAD~40] arping: exit if network disappears while running
 + [HEAD~41] ping: prevent possible double free after cap_free()
 + [HEAD~42^2] traceroute6: Fix udp packet port specification.
 + [HEAD~43^2] Add strict pattern matching on response when pattern was provided
 + [HEAD~44] iputils-s20161105
 + [HEAD~45] doc: Inserted a missing word
 + [HEAD~46^2] ping: also bind the ICMP socket to the specific device
 + [HEAD~47^2] ping: fix error message when getting EACCES from connect()
 + [HEAD~48^2] ping: fix ping -6 -I
 + [HEAD~47^2^] arping,doc: fix documentation of -I
 + [HEAD~50] tftpd: Drop supplementary groups for root
 + [HEAD~51] ping: work with older kernels that don't support ping sockets
 + [HEAD~52] docs: remove references to ping6 and traceroute6
 + [HEAD~53] (re)structured INSTALL.md and transformed into markdown; added hint that installation into prefix has to be done with DESTDIR make variable and that there's no prefix support in configure, close #21
 + [HEAD~54] renamed INSTALL to INSTALL.md
 + [HEAD~55] ping: remove assignments of values that are never read
 + [HEAD~56^2] docs: fix parallel build of manpages
 + [HEAD~57^2] correctly initialize first hop
 + [HEAD~58^2] tracepath: remove now redundant tracepath6
 + [HEAD~58^2^] tracepath: switch to dual-stack operation
 + [HEAD~58^2~2] tracepath: borrow everything good from tracepath6
 + [HEAD~58^2~3] tracepath6: avoid redundant family variable
 + [HEAD~59] ping: Silence GCC warnings when building with -fstrict-aliasing
 + [HEAD~60^2] libgcrypt: fix static linking
 + [HEAD~61^2] ping: do not allow oversized packets to root
 + [HEAD~62] ping: eliminate deadcode &amp; simplify
 + [HEAD~63^2] reorder -I option parsing
 + [HEAD~63^2^] Revert &quot;ping_common.c: fix message flood when EPERM is encountered in ping&quot;
 + [HEAD~64] iputils-s20160308
 + [HEAD~65^2] 'admin prohibited' should print !X not !S.
 + [HEAD~66^2] ninfod: remove unused variables
 + [HEAD~67^2] ping: link against libm
 + [HEAD~68^2] ping: ICMP error replies while errno &lt; 0 is a hard error
 + [HEAD~69^2] doc: don't timestamp manpages by default
 + [HEAD~70^2] ping: always use POSIX locale when parsing -i
 + [HEAD~71^2] ping: handle single protocol systems
 + [HEAD~71^2^] ping: fix defines and libs in Makefile
 + [HEAD~72] doc/Makefile: require bash, because we use pushd and popd
 + [HEAD~73^2] Fix building with musl
 + [HEAD~74^2] doc: ping: add missing options and remove ping6
 + [HEAD~75] iputils-s20150815
 + [HEAD~76] Makefile: use #define as in previous code changes
 + [HEAD~77] ping: merge IPv4 and IPv6 `pr_addr()`
 + [HEAD~78] ping: refactor ping socket code
 + [HEAD~79] ping: refactor ping options
 + [HEAD~80] ping: merge `ping6` command into `ping`
 + [HEAD~81] ping: merge all ping header files into a single one
 + [HEAD~82] ping: avoid name clashes between IPv4 and IPv6 code
 + [HEAD~83] ping: remove obsolete preprocessor directives
 + [HEAD~84] remove IPV4_TARGETS and IPV6_TARGETS
 + [HEAD~85] Allow using nettle instead of libgcrypt for MD5
 + [HEAD~86] travis.yml: install nettle-dev
 + [HEAD~87] ping: perform dual-stack ping by default
 + [HEAD~88] enable IDN by default
 + [HEAD~89] make `getaddrinfo()` and `getnameinfo()` usage consistent
 + [HEAD~90] avoid compiler warning caused by snapshot.h
 + [HEAD~91] ping: status() now returns received/transmitted instead of trans/recv
 + [HEAD~92] use better names for socket variables
 + [HEAD~93] ping,ping6 doc: More description on CAP_NET_RAW usage.
 + [HEAD~94] This patch allows running ping and ping6 without root privileges on kernels that support it. Almost identical to Lorenzo Colitti's original patch except:
 + [HEAD~95] combine sock and errno into a single structure
 + [HEAD~96] ping: allow option -4 which forces IPv4
 + [HEAD~97] ping: in usage print the 'ping -6' options as well
 + [HEAD~98] if IPv4 resolving fails fallback to ping6
 + [HEAD~99] Allow ping to use IPv6 addresses
 + [HEAD~100] made ping functions protocol independent
 + [HEAD~101^2] Use svg instead of png to get better image quality
 + [HEAD~102] iputils ping/ping6: Add a function to check if a packet is ours
 + [HEAD~103] ping: don't mess with internals of struct msghdr
 + [HEAD~104] make,spec: Add rpm target.
 + [HEAD~105] spec: Fix date in %changelog.
 + [HEAD~106] spec: Configure before building ninfod.
 + [HEAD~107] ninfod: libgcrypt support.
 + [HEAD~108] ninfod: Regenerate configure by autoconf-2.69.
 + [HEAD~109] ping6: Use libgcrypt instead of gnutls for MD5.
 + [HEAD~110] ping6: Use GNUTLS API directly for MD5. (v2)
 + [HEAD~111] ping: Add &lt;linux/types.h&gt; to fix compilation error.
 + [HEAD~112] use syntax compatible with busybox date in Makefile
 + [HEAD~113^2] tracepath,doc: fix corrupted tag
 + [HEAD~114] iputils-s20140519
 + [HEAD~115] cleanup, get rid of if(1), #if 0 and constify on
 + [HEAD~116] get rid of unused lint and copyright array
 + [HEAD~117^2] arping: Clarify and correct interaction of -c and -w options
 + [HEAD~117^2^] arping: Use monotonic clock for timeouts
 + [HEAD~117^2~2] arping: Avoid confusing local names
 + [HEAD~117^2~3] ping_common.c: fix message flood when EPERM is encountered in ping
 + [HEAD~117^2~4] arping: fix arping hang if SIGALRM is blocked
 + [HEAD~117^2~5] ninfod: Fix more unused variables.
 + [HEAD~118] rdisc: ifdef only apply on historic glibc &lt; 2
 + [HEAD~119] iputils-s20140420
 + [HEAD~120] tftpd: check return value of set*id calls
 + [HEAD~121] fix handling of CFLAGS
 + [HEAD~122] ping6: allow disabling of openssl support
 + [HEAD~123] doc: fix parallel build of html/man pages
 + [HEAD~124] improve gitignore
 + [HEAD~125] improve autobuild bot configuration
 + [HEAD~126] iputils-s20140419
 + [HEAD~127] .travis.yml, improve build testing
 + [HEAD~128] add README.md
 + [HEAD~129] Makefile: set CC only if it's not defined before
 + [HEAD~130] fix tracepath docs
 + [HEAD~131] remove bogus check required for &lt; 2.4.9 kernels
 + [HEAD~132] replace gethostbyname with gethostbyname2
 + [HEAD~133] ping: flush stdout when a truncated response is received
 + [HEAD~134] arping: return immediately
 + [HEAD~135] tracepath: return correct number of hops
 + [HEAD~136] Disable DNS-lookup on every ping
 + [HEAD~137] Only emit an audible ping when requested (including flooding).
 + [HEAD~138] ping_common.c: fix typo
 + [HEAD~139] add .gitignore and .travis.yml
 + [HEAD~140] replace u_TYPE with compilant unsigned TYPE
 + [HEAD~141] replace non-POSIX compilant caddr_t with char *
 + [HEAD~142] fix ifdef to apply only on uclibc and old glibc
 + [HEAD~143] protocol/timed.h is no longer required
 + [HEAD~144] fix include paths, now compile with both glibc and musl
 + [HEAD~145] in case that HZ is undefined, define it
 + [HEAD~146] add missing limits.h
++ [608419a7804caf36a359875d2fdae0b3eb181387] tracepath, tracepath6: Support -m (maximum hops) option.


--w3r54q634nk5a44y--

--cpvuzyxgjiwppxja
Content-Type: application/pgp-signature; name=&quot;signature.asc&quot;

-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE65xaF5r2LDCTz+zyV68+Bn2yWDMFAls4JcMACgkQV68+Bn2y
WDPB+w//bb5argY3hBdRZaTv0+hTTEl+fP3Pna0MesmOytmoLvqzERxEHxTzS6k8
Ir1F5GFeayyubdr8l8lMYTROoNBvkU2wi9bnC8wNvSw2RfctyWXVfJ+lRYiPRD13
xqztKwDYATAS8oEJOjfQzZwy+M6Xf8hBHtJlvLjlTEq8JvnYETVquEgF1vKajWdH
DtCthnGxHdwwC1rnb+VnltkNhXmfEteppfPRovTT3XMnPkeVHz3eaTjlT+tKveFu
Nu0aNi5FDmODzyD1REDh1qWndPZrnep+UHFVXFPHtCS8KpZXdHp+/gO/h5nqYZZx
yp34kLing/r5IjXz7av8zYvgRxs5vk9JqstslLuoWFfpanxjgJiCWhSxBxrngo4G
Y6HR47GMYOCUAKNYqXXu32GEvfTXIBTgz2y10oQgKvhbBBjd3lkfp9ZfLXKvJa3R
1G41RXonaS5Szk8DXEzRgH0Mb/qSIhAZDr28ckcCrMCcgqVDqxhKM6iVyOGXzvJP
Q8ZPybKkiR1BfJwR/5WMUhi4MfMEwIGEubVQBAK7hl9j2gje4M2jDvTVPWleWHc/
QYHGo4jEU7gWw04gn7qNPhBpR8I/M+D+jFHUOl1tJA/48qT/ewraQ5CoipKxme+j
rUdPqR6lf/VMzzvTh+fQiit+IBYbnkyspwI5hFBOgJPPHNspMsA=
=gNN3
-----END PGP SIGNATURE-----

--cpvuzyxgjiwppxja--

]