Re: Re: [PATCH] uapi: Prevent redefinition of struct iphdr
From: Rich Felker <dalias@libc.org>
Date: 2019-12-30 17:12:29
Also in:
netdev
On Thu, Dec 26, 2019 at 12:13:37PM +0100, Daniel Kolesa wrote:
On Thu, Dec 26, 2019, at 04:49, David Miller wrote:quoted
From: Rich Felker <dalias@libc.org> Date: Wed, 25 Dec 2019 20:05:15 -0500quoted
On Wed, Dec 25, 2019 at 04:34:11PM -0800, David Miller wrote:quoted
I find it really strange that this, therefore, only happens for musl and we haven't had thousands of reports of this conflict with glibc over the years.It's possible that there's software that's including just one of the headers conditional on __GLIBC__, and including both otherwise, or something like that. Arguably this should be considered unsupported usage; there are plenty of headers where that doesn't work and shouldn't be expected to.I don't buy that, this is waaaaaay too common a header to use.In case of net-tools, only <linux/ip.h> is included, and never <netinet/ip.h> directly. Chances are in musl the indirect include tree happens to be different and conflicting, while in glibc it is not.
musl has no indirect inclusion of netinet/ip.h from standard headers, but does include it from netinet/ip_icmp.h. It seems glibc only does this conditional on __USE_MISC, which doesn't make much sense to me since this is not a standardized header with namespace rules, but normally __USE_MISC is defined anyway on glibc so I kinda doubt this is the difference. Any other ideas? Rich