On Mon, Jan 11, 2016 at 5:53 PM, Joe Stringer <j...@ovn.org> wrote: > This function is a likely candidate for backporting, and currently > relies on version checks to include the source or not. Grep for the > appropriate functions instead, and include the backport based on that. > > Signed-off-by: Joe Stringer <j...@ovn.org> > --- > acinclude.m4 | 4 ++++ > .../compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h | 14 > ++++++++++++-- > datapath/linux/compat/nf_conntrack_reasm.c | 6 +++--- > 3 files changed, 19 insertions(+), 5 deletions(-) > > diff --git a/acinclude.m4 b/acinclude.m4 > index f0ea2fcea62d..7357a9fdfc74 100644 > --- a/acinclude.m4 > +++ b/acinclude.m4 > @@ -404,6 +404,10 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ > [nf_ct_zone_init]) > OVS_GREP_IFELSE([$KSRC/include/net/netfilter/nf_conntrack_labels.h], > [nf_connlabels_get]) > + OVS_GREP_IFELSE([$KSRC/include/net/netfilter/ipv6/nf_defrag_ipv6.h], > + [nf_ct_frag6_consume_orig]) > + OVS_GREP_IFELSE([$KSRC/include/net/netfilter/ipv6/nf_defrag_ipv6.h], > + [nf_ct_frag6_output]) > > 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/ipv6/nf_defrag_ipv6.h > b/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h > index 7d51491a9c1b..97052ccc4d99 100644 > --- a/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h > +++ b/datapath/linux/compat/include/net/netfilter/ipv6/nf_defrag_ipv6.h > @@ -7,8 +7,14 @@ > #include_next <net/netfilter/ipv6/nf_defrag_ipv6.h> > #endif > > -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0) > +/* Upstream commit 029f7f3b8701 ("netfilter: ipv6: nf_defrag: avoid/free > clone > + * operations") changed the semantics of nf_ct_frag6_gather(), so we backport > + * it for all prior kernels. > + */ > +#if defined(HAVE_NF_CT_FRAG6_CONSUME_ORIG) || \ > + defined(HAVE_NF_CT_FRAG6_OUTPUT) > #if defined(OVS_FRAGMENT_BACKPORT) > +#define OVS_NF_DEFRAG6_BACKPORT 1 > struct sk_buff *rpl_nf_ct_frag6_gather(struct sk_buff *skb, u32 user); > int __init rpl_nf_ct_frag6_init(void); > void rpl_nf_ct_frag6_cleanup(void); > @@ -24,9 +30,13 @@ static inline void rpl_nf_ct_frag6_cleanup(void) { } > static inline void rpl_nf_ct_frag6_consume_orig(struct sk_buff *skb) { } > #endif /* OVS_FRAGMENT_BACKPORT */ > #define nf_ct_frag6_gather rpl_nf_ct_frag6_gather > +#else /* HAVE_NF_CT_FRAG6_CONSUME_ORIG */ > +static inline int __init rpl_nf_ct_frag6_init(void) { return 0; } > +static inline void rpl_nf_ct_frag6_cleanup(void) { } > +static inline void rpl_nf_ct_frag6_consume_orig(struct sk_buff *skb) { } > +#endif /* HAVE_NF_CT_FRAG6_CONSUME_ORIG */ > #define nf_ct_frag6_init rpl_nf_ct_frag6_init > #define nf_ct_frag6_cleanup rpl_nf_ct_frag6_cleanup > #define nf_ct_frag6_consume_orig rpl_nf_ct_frag6_consume_orig > -#endif /* < 4.3 */ > > #endif /* __NF_DEFRAG_IPV6_WRAPPER_H */ > diff --git a/datapath/linux/compat/nf_conntrack_reasm.c > b/datapath/linux/compat/nf_conntrack_reasm.c > index 89a39789d322..fec9e5794f88 100644 > --- a/datapath/linux/compat/nf_conntrack_reasm.c > +++ b/datapath/linux/compat/nf_conntrack_reasm.c > @@ -21,8 +21,6 @@ > > #include <linux/version.h> > > -#ifdef OVS_FRAGMENT_BACKPORT > - > #include <linux/errno.h> > #include <linux/types.h> > #include <linux/string.h> > @@ -56,6 +54,8 @@ > #include <linux/module.h> > #include <net/netfilter/ipv6/nf_defrag_ipv6.h> > > +#ifdef OVS_NF_DEFRAG6_BACKPORT > + > static const char nf_frags_cache_name[] = "nf-frags"; >
This is not related to this patch, But we should use different cache name to avoid confusion in case both kmem caches are created. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev