diff --git a/configure.ac b/configure.ac index a8a530a08c5..62224b9867d 100644 --- a/configure.ac +++ b/configure.ac @@ -67,8 +67,6 @@ AC_CHECK_DECLS([sys_siglist], [], [], [[#include ]]) AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec], [], [], [[#include ]]) AC_CHECK_MEMBERS([struct ifreq.ifr_flagshigh], [], [], [[#include ]]) -AC_CHECK_TYPES([struct rtnl_link_stats64], [], [], - [[#include ]]) AC_CHECK_FUNCS([mlockall strnlen getloadavg statvfs getmntent_r]) AC_CHECK_HEADERS([mntent.h sys/statvfs.h linux/types.h linux/if_ether.h stdatomic.h]) AC_CHECK_HEADERS([net/if_mib.h], [], [], [[#include diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index ff7c2748383..d19220b6690 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -138,9 +138,17 @@ struct tpacket_auxdata { uint16_t tp_vlan_tpid; }; -/* Linux 2.6.35 introduced IFLA_STATS64 and rtnl_link_stats64. */ -#ifndef HAVE_STRUCT_RTNL_LINK_STATS64 +/* Linux 2.6.35 introduced IFLA_STATS64 and rtnl_link_stats64. + * + * Tests for rtnl_link_stats64 don't seem to consistently work, e.g. on + * 2.6.32-431.29.2.el6.x86_64 (see report at + * http://openvswitch.org/pipermail/dev/2014-October/047978.html). Maybe + * if_link.h is not self-contained on those kernels. It is easiest to + * unconditionally define a replacement. */ +#ifndef IFLA_STATS64 #define IFLA_STATS64 23 +#endif +#define rtnl_link_stats64 rpl_rtnl_link_stats64 struct rtnl_link_stats64 { uint64_t rx_packets; uint64_t tx_packets; @@ -169,7 +177,6 @@ struct rtnl_link_stats64 { uint64_t rx_compressed; uint64_t tx_compressed; }; -#endif /* !HAVE_STRUCT_RTNL_LINK_STATS64 */ enum { VALID_IFINDEX = 1 << 0,