diff mbox

[ovs-dev,05/13] compat: Detect and use struct nf_conntrack_zone.

Message ID 1452563641-33507-6-git-send-email-joe@ovn.org
State Accepted
Headers show

Commit Message

Joe Stringer Jan. 12, 2016, 1:53 a.m. UTC
Rather than relying on version checks, detect the presence of this
structure and use it if available.

Signed-off-by: Joe Stringer <joe@ovn.org>
---
 acinclude.m4                                                      | 2 ++
 datapath/linux/compat/include/net/netfilter/nf_conntrack_expect.h | 4 ++--
 datapath/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 mbox

Patch

diff --git a/acinclude.m4 b/acinclude.m4
index 8dfbc2371b03..3e3426dcf2b4 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -393,6 +393,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 98c6d6b4c093..a13f0ce609f2 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 <net/netfilter/nf_conntrack_expect.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
+#ifndef HAVE_NF_CT_ZONE_INIT
 
 #include <net/netfilter/nf_conntrack.h>
 #include <net/netfilter/nf_conntrack_zones.h>
@@ -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 3c5e3979c995..fb43acba31f5 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 <net/netfilter/nf_conntrack_zones.h>
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
+#ifndef HAVE_NF_CT_ZONE_INIT
 
 #include <linux/kconfig.h>
 #include <linux/types.h>
@@ -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 a26620809ce1..a7d3d4331e4a 100644
--- a/datapath/linux/compat/nf_conntrack_core.c
+++ b/datapath/linux/compat/nf_conntrack_core.c
@@ -1,6 +1,6 @@ 
 #include <linux/version.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)
+#ifndef HAVE_NF_CT_ZONE_INIT
 
 #include <net/netfilter/nf_conntrack_zones.h>
 
@@ -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 */