diff --git a/src/util/virnetdevbridge.c b/src/util/virnetdevbridge.c index ae9276c06907b2c8ca630626275acf7514e34991..5d52e2385b240ed384901c7cd779002f9ab9ff1b 100644 --- a/src/util/virnetdevbridge.c +++ b/src/util/virnetdevbridge.c @@ -39,7 +39,18 @@ #ifdef __linux__ # include <linux/sockios.h> # include <linux/param.h> /* HZ */ +/* Depending on the version of kernel vs. glibc, there may be a collision + * between <net/in.h> and kernel IPv6 structures. The different types + * are ABI compatible, but choke the C type system; work around it by + * using temporary redefinitions. */ +# define in6_addr in6_addr_ +# define sockaddr_in6 sockaddr_in6_ +# define ipv6_mreq ipv6_mreq_ +# include <linux/in6.h> # include <linux/if_bridge.h> /* SYSFS_BRIDGE_ATTR */ +# undef in6_addr +# undef sockaddr_in6 +# undef ipv6_mreq # define JIFFIES_TO_MS(j) (((j)*1000)/HZ) # define MS_TO_JIFFIES(ms) (((ms)*HZ)/1000)