diff options
author | Ben Pfaff <blp@nicira.com> | 2011-02-04 12:35:49 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2011-02-04 12:36:21 -0800 |
commit | 1269f7ae5f4bf23205de2cd45220b2382af78393 (patch) | |
tree | c34356f33f39ad797ab262015fdeac2ce84e2818 /m4 | |
parent | 5e5ce0741f8b7dbee54d1407e7b0af5ee813b38f (diff) |
datapath: Tolerate backporting of rtnl_link_stats64 (as in RHEL 6).
Red Hat Enterprise Linux 6 has a 2.6.32 kernel but it backports the
rtnl_link_stats64 structure that was introduced in 2.6.35, so we need to
check whether it was defined instead of just guessing based on the kernel
version number.
Build-tested only, on 2.6.32-71.14.1.el6 (RHEL 6),
linux-2.6.18-128.1.6.el5.xs5.5.0.496.101 (XenServer 5.5.0),
2.6.18-128.1.6.el5.xs5.5.0.505.1024xen (XenServer 5.5.0 update 1),
and upstream 2.6.18, 2.6.26, 2.6.29, 2.6.33, 2.6.34, 2.6.36, all for i386,
plus 2.6.36 for x86-64.
My machine's userspace headers have <linux/if_link.h> but not
rtnl_link_stats64. Jesse Gross tested the case where <linux/if_link.h>
has rtnl_link_stats64, on Ubuntu 10.10.
Reported-by: Geoff White <gwhite@nicira.com>
Tested-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'm4')
-rw-r--r-- | m4/openvswitch.m4 | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/m4/openvswitch.m4 b/m4/openvswitch.m4 index 077c29b9..e6d03a6b 100644 --- a/m4/openvswitch.m4 +++ b/m4/openvswitch.m4 @@ -1,6 +1,6 @@ # -*- autoconf -*- -# Copyright (c) 2008, 2009, 2010 Nicira Networks. +# Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -46,6 +46,25 @@ AC_DEFUN([OVS_CHECK_NDEBUG], [ndebug=false]) AM_CONDITIONAL([NDEBUG], [test x$ndebug = xtrue])]) +dnl Checks for struct rtnl_link_stats64. +dnl +dnl (OVS checks for this structure in both kernel and userspace headers. This +dnl is not redundant, because the kernel and userspace builds have completely +dnl different include paths. It is possible for the kernel to have this +dnl structure but not userspace, and vice versa.) +AC_DEFUN([OVS_CHECK_RTNL_LINK_STATS64], + [AC_REQUIRE([OVS_CHECK_NETLINK]) + if test $HAVE_NETLINK = yes; then + AC_CHECK_MEMBER( + [struct rtnl_link_stats64.tx_packets], + [AC_DEFINE([HAVE_RTNL_LINK_STATS64], [1], + [Define to 1 if <linux/if_link.h> defines + struct rtnl_link_stats64.])], + [], [#include <sys/socket.h> /* Provides sa_family_t. */ +#include <linux/if_link.h> +]) + fi]) + dnl Checks for Netlink support. AC_DEFUN([OVS_CHECK_NETLINK], [AC_CHECK_HEADER([linux/netlink.h], |