Re: Redefinition of struct in6_addr in <netinet/in.h> and <linux/in6.h>

From: Mike Frysinger
Date: Thu Jan 17 2013 - 23:11:02 EST


On Wednesday 16 January 2013 16:45:11 David Miller wrote:
> What would be really nice is if GCC treated multiple identical
> definitions of structures the same way it handles multiple identical
> definitions of CPP defines. Which is to silently accept them.
>
> But that's not the case, so we need a different solution.
>
> Another thing to do is to use a new structure for in6_addr in kernel
> headers exported to userland.

the kernel already exports many types with a __kernel_ prefix. i changed the
kernel headers in Gentoo for a few releases (2.6.28 - 2.6.34) to do the same
thing to pretty much all the networking headers. a few packages broke, but
the number was low, and trivial to fix (a sed would do it most of the time).

it's also trivial for userland packages to detect that they need to do this
sort of thing in a local header by using linux/version.h and a set of defines
to redirect the new structure name back to the old one.

would be a lot cleaner to just break it and be done.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.