From ac9cd0d28a6590136a9f69ad1e3785039b35b39e Mon Sep 17 00:00:00 2001 From: Joe Stringer Date: Thu, 24 Dec 2015 11:29:34 -0800 Subject: [PATCH] compat: Detect and use struct nf_conntrack_zone. Rather than relying on version checks, detect the presence of this structure and use it if available. Signed-off-by: Joe Stringer Acked-by: Pravin B Shelar --- acinclude.m4 | 2 ++ .../linux/compat/include/net/netfilter/nf_conntrack_expect.h | 4 ++-- .../linux/compat/include/net/netfilter/nf_conntrack_zones.h | 4 ++-- datapath/linux/compat/nf_conntrack_core.c | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index 41284ea92..f1ee8f873 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -392,6 +392,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack.h], [tmpl_alloc.*conntrack_zone], [OVS_DEFINE([HAVE_NF_CT_TMPL_ALLOC_TAKES_STRUCT_ZONE])]) + OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_zones.h], + [nf_ct_zone_init]) OVS_GREP_IFELSE([$KSRC/include/linux/random.h], [prandom_u32]) OVS_GREP_IFELSE([$KSRC/include/linux/random.h], [prandom_u32_max]) diff --git a/datapath/linux/compat/include/net/netfilter/nf_conntrack_expect.h b/datapath/linux/compat/include/net/netfilter/nf_conntrack_expect.h index 98c6d6b4c..a13f0ce60 100644 --- a/datapath/linux/compat/include/net/netfilter/nf_conntrack_expect.h +++ b/datapath/linux/compat/include/net/netfilter/nf_conntrack_expect.h @@ -3,7 +3,7 @@ #include_next -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) +#ifndef HAVE_NF_CT_ZONE_INIT #include #include @@ -17,5 +17,5 @@ rpl___nf_ct_expect_find(struct net *net, } #define __nf_ct_expect_find rpl___nf_ct_expect_find -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) */ +#endif /* HAVE_NF_CT_ZONE_INIT */ #endif /* _NF_CONNTRACK_EXPECT_WRAPPER_H */ diff --git a/datapath/linux/compat/include/net/netfilter/nf_conntrack_zones.h b/datapath/linux/compat/include/net/netfilter/nf_conntrack_zones.h index 3c5e3979c..fb43acba3 100644 --- a/datapath/linux/compat/include/net/netfilter/nf_conntrack_zones.h +++ b/datapath/linux/compat/include/net/netfilter/nf_conntrack_zones.h @@ -7,7 +7,7 @@ #include_next #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) +#ifndef HAVE_NF_CT_ZONE_INIT #include #include @@ -99,5 +99,5 @@ static inline bool nf_ct_zone_equal_any(const struct nf_conn *a, return nf_ct_zone(a)->id == b->id; } #endif /* IS_ENABLED(CONFIG_NF_CONNTRACK) */ -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) */ +#endif /* HAVE_NF_CT_ZONE_INIT */ #endif /* _NF_CONNTRACK_ZONES_WRAPPER_H */ diff --git a/datapath/linux/compat/nf_conntrack_core.c b/datapath/linux/compat/nf_conntrack_core.c index a26620809..a7d3d4331 100644 --- a/datapath/linux/compat/nf_conntrack_core.c +++ b/datapath/linux/compat/nf_conntrack_core.c @@ -1,6 +1,6 @@ #include -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) +#ifndef HAVE_NF_CT_ZONE_INIT #include @@ -10,4 +10,4 @@ const struct nf_conntrack_zone nf_ct_zone_dflt = { .dir = NF_CT_DEFAULT_ZONE_DIR, }; -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) */ +#endif /* HAVE_NF_CT_ZONE_INIT */ -- 2.20.1