summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2009-10-09 09:41:29 -0700
committerBen Pfaff <blp@nicira.com>2009-10-09 09:44:51 -0700
commitaed944953be7c8d71beada565ac9923ab86855e5 (patch)
treef2451382fd9d4d814b7ad59ffe48842e7923980d
parentbf7446a4f4b17cebb4500fe9d57b8d240567795e (diff)
downloadopenvswitch-aed944953be7c8d71beada565ac9923ab86855e5.tar.gz
datapath: Fix build with Centos 5.3 kernel.
Centos 5.3 backports more functions from later kernel versions to 2.6.18, so the kernel version number is no longer a reliable way to check for these functions. Thus, add a "configure" test for them. Reported-by: Paulo Cravero <pcravero@as2594.net>
-rw-r--r--acinclude.m44
-rw-r--r--datapath/linux-2.6/compat-2.6/include/linux/skbuff.h4
-rw-r--r--datapath/linux-2.6/compat-2.6/include/net/checksum.h7
3 files changed, 8 insertions, 7 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 429492097..d5d7c0959 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -133,6 +133,10 @@ AC_DEFUN([OVS_CHECK_LINUX26_COMPAT], [
[OVS_DEFINE([HAVE_NLA_NUL_STRING])])
OVS_GREP_IFELSE([$KSRC26/include/linux/err.h], [ERR_CAST],
[OVS_DEFINE([HAVE_ERR_CAST])])
+ OVS_GREP_IFELSE([$KSRC26/include/net/checksum.h], [csum_unfold],
+ [OVS_DEFINE([HAVE_CSUM_UNFOLD])])
+ OVS_GREP_IFELSE([$KSRC26/include/linux/skbuff.h], [skb_cow],
+ [OVS_DEFINE([HAVE_SKB_COW])])
OVS_CHECK_LOG2_H
OVS_CHECK_VETH
if cmp -s datapath/linux-2.6/kcompat.h.new \
diff --git a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
index 666ef8504..283172126 100644
--- a/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
+++ b/datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
@@ -42,7 +42,7 @@ static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb,
#define NET_SKB_PAD 16
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
+#ifndef HAVE_SKB_COW
static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom,
int cloned)
{
@@ -63,7 +63,7 @@ static inline int skb_cow_head(struct sk_buff *skb, unsigned int headroom)
{
return __skb_cow(skb, headroom, skb_header_cloned(skb));
}
-#endif /* linux < 2.6.23 */
+#endif /* !HAVE_SKB_COW */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
diff --git a/datapath/linux-2.6/compat-2.6/include/net/checksum.h b/datapath/linux-2.6/compat-2.6/include/net/checksum.h
index c64c6bd0c..3b6debb1d 100644
--- a/datapath/linux-2.6/compat-2.6/include/net/checksum.h
+++ b/datapath/linux-2.6/compat-2.6/include/net/checksum.h
@@ -3,14 +3,11 @@
#include_next <net/checksum.h>
-#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-
+#ifndef HAVE_CSUM_UNFOLD
static inline __wsum csum_unfold(__sum16 n)
{
return (__force __wsum)n;
}
-
-#endif /* linux kernel < 2.6.20 */
+#endif /* !HAVE_CSUM_UNFOLD */
#endif /* checksum.h */