[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