build: work around broken kernel headers
Thanks to a lack of coordination between kernel and glibc folks, it has been impossible to mix code using <linux/in.h> and <net/in.h> for some time now (see for example commit c308a9ae). On at least RHEL 6, <linux/if_bridge.h> tries to use the kernel side, and fails due to our desire to use the glibc side elsewhere: In file included from /usr/include/linux/if_bridge.h:17, from util/virnetdevbridge.c:42: /usr/include/linux/in6.h:31: error: redefinition of ‘struct in6_addr’ /usr/include/linux/in6.h:48: error: redefinition of ‘struct sockaddr_in6’ /usr/include/linux/in6.h:56: error: redefinition of ‘struct ipv6_mreq’ Thankfully, the kernel layout of these structs is ABI-compatible, they only differ in the type system presented to the C compiler. While there are other versions of kernel headers that avoid the problem, it is easier to just work around the issue than to expect all developers to upgrade to working kernel headers. * src/util/virnetdevbridge.c (includes): Coerce the kernel version of in.h to not collide with the normal version. Signed-off-by: NEric Blake <eblake@redhat.com>
Showing