aboutsummaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-02-04 12:35:49 -0800
committerBen Pfaff <blp@nicira.com>2011-02-04 12:36:21 -0800
commit1269f7ae5f4bf23205de2cd45220b2382af78393 (patch)
treec34356f33f39ad797ab262015fdeac2ce84e2818 /m4
parent5e5ce0741f8b7dbee54d1407e7b0af5ee813b38f (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.m421
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],