kernel: fix rtcache compilation with 4.18+ with IPv6 support
authorRafał Miłecki <rafal@milecki.pl>
Thu, 4 Apr 2019 07:31:41 +0000 (09:31 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Thu, 4 Apr 2019 08:59:11 +0000 (10:59 +0200)
Please note that modified code isn't currently being compiled with
kernels 4.19+ due to the dropped CONFIG_NF_CONNTRACK_IPV6 in upstream
Linux. That requires a separated fix.

This fixes:
net/netfilter/nf_conntrack_rtcache.c: In function 'nf_rtcache_get_cookie':
net/netfilter/nf_conntrack_rtcache.c:82:11: error: 'const struct rt6_info' has no member named 'rt6i_node'; did you mean 'rt6i_idev'?
   if (rt->rt6i_node)
           ^~~~~~~~~
           rt6i_idev

IPv6 structs were reworked in upstream kernel by:
commit a64efe142f5e ("net/ipv6: introduce fib6_info struct and helpers")
commit 77634cc67dc1 ("net/ipv6: Remove unused code and variables for rt6_info")
commit 93c2fb253d17 ("net/ipv6: Rename fib6_info struct elements")

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
target/linux/generic/backport-4.19/020-backport_netfilter_rtcache.patch

index 32b43082be937619a4af7b9c0f0283a7a44bdbf8..3a35381ce3008cc8c6362890b2c48a7276e0bd08 100644 (file)
@@ -209,8 +209,8 @@ Signed-off-by: Florian Westphal <fw@strlen.de>
 +      if (pf == NFPROTO_IPV6) {
 +              const struct rt6_info *rt = (const struct rt6_info *)dst;
 +
 +      if (pf == NFPROTO_IPV6) {
 +              const struct rt6_info *rt = (const struct rt6_info *)dst;
 +
-+              if (rt->rt6i_node)
-+                      return (u32)rt->rt6i_node->fn_sernum;
++              if (rt->from && rt->from->fib6_node)
++                      return (u32)rt->from->fib6_node->fn_sernum;
 +      }
 +#endif
 +      return 0;
 +      }
 +#endif
 +      return 0;