[ovs-dev] [PATCH] datapath: Fix build errors for 4.9.172+ kernels
Yifeng Sun
pkusunyifeng at gmail.com
Tue May 21 18:06:55 UTC 2019
Forgot to put reported-by.
Reported-by: Ilya Maximets <i.maximets at samsung.com>
On Mon, May 20, 2019 at 4:58 PM Yifeng Sun <pkusunyifeng at gmail.com> wrote:
>
> 4.9.172+ kernel backported upstream patch 70b095c843266
> ("ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module")
> and this caused compilation errors of OVS kernel module.
>
> This patch fixes it by checking and using new functions
> introduced by the upstream patch.
>
> Travis tests passed at
> https://travis-ci.org/yifsun/ovs-travis/builds/535047469
> with latest Linux kernel version.
>
> Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
> ---
> datapath/linux/compat/nf_conntrack_reasm.c | 22 +++++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/datapath/linux/compat/nf_conntrack_reasm.c b/datapath/linux/compat/nf_conntrack_reasm.c
> index 9d77d982712c..ac5ec6dd30ab 100644
> --- a/datapath/linux/compat/nf_conntrack_reasm.c
> +++ b/datapath/linux/compat/nf_conntrack_reasm.c
> @@ -41,6 +41,7 @@
> #include <net/inet_frag.h>
>
> #include <net/ipv6.h>
> +#include <net/ipv6_frag.h>
> #include <net/protocol.h>
> #include <net/transp_v6.h>
> #include <net/rawv6.h>
> @@ -138,8 +139,12 @@ static void nf_ct_frag6_expire(unsigned long data)
> #ifdef HAVE_INET_FRAGS_RND
> ip6_expire_frag_queue(net, fq, &nf_frags);
> #else
> +#ifdef HAVE_IPV6_FRAG_H
> + ip6frag_expire_frag_queue(net, fq);
> +#else
> ip6_expire_frag_queue(net, fq);
> #endif
> +#endif /* HAVE_INET_FRAGS_RND */
> }
>
> #ifdef HAVE_INET_FRAGS_RND
> @@ -673,6 +678,16 @@ static struct pernet_operations nf_ct_net_ops = {
> .exit = nf_ct_net_exit,
> };
>
> +#ifdef HAVE_IPV6_FRAG_H
> +static const struct rhashtable_params nfct_rhash_params = {
> + .head_offset = offsetof(struct inet_frag_queue, node),
> + .hashfn = ip6frag_key_hashfn,
> + .obj_hashfn = ip6frag_obj_hashfn,
> + .obj_cmpfn = ip6frag_obj_cmpfn,
> + .automatic_shrinking = true,
> +};
> +#endif
> +
> int rpl_nf_ct_frag6_init(void)
> {
> int ret = 0;
> @@ -684,9 +699,14 @@ int rpl_nf_ct_frag6_init(void)
> nf_frags.hashfn = nf_hashfn;
> nf_frags.match = ip6_frag_match;
> #else
> +#ifdef HAVE_IPV6_FRAG_H
> + nf_frags.rhash_params = nfct_rhash_params;
> + nf_frags.constructor = ip6frag_init;
> +#else
> nf_frags.rhash_params = ip6_rhash_params;
> -#endif
> nf_frags.constructor = ip6_frag_init;
> +#endif
> +#endif /* HAVE_INET_FRAGS_RND */
> nf_frags.destructor = NULL;
> nf_frags.qsize = sizeof(struct frag_queue);
> nf_frags.frag_expire = nf_ct_frag6_expire;
> --
> 2.7.4
>
More information about the dev
mailing list