datapath: Fix build with Centos 5.3 kernel.
authorBen Pfaff <blp@nicira.com>
Fri, 9 Oct 2009 16:41:29 +0000 (09:41 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 9 Oct 2009 16:44:51 +0000 (09:44 -0700)
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>
acinclude.m4
datapath/linux-2.6/compat-2.6/include/linux/skbuff.h
datapath/linux-2.6/compat-2.6/include/net/checksum.h

index 4294920..d5d7c09 100644 (file)
@@ -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 \
index 666ef85..2831721 100644 (file)
@@ -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)
index c64c6bd..3b6debb 100644 (file)
@@ -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 */