From aed944953be7c8d71beada565ac9923ab86855e5 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 9 Oct 2009 09:41:29 -0700 Subject: [PATCH] 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 --- acinclude.m4 | 4 ++++ datapath/linux-2.6/compat-2.6/include/linux/skbuff.h | 4 ++-- datapath/linux-2.6/compat-2.6/include/net/checksum.h | 7 ++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 42949209..d5d7c095 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 666ef850..28317212 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 c64c6bd0..3b6debb1 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 -#include -#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 */ -- 2.30.2