((const unsigned char *)&addr)[3]
# define NIPQUAD_FMT "%hhu.%hhu.%hhu.%hhu"
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0) || \
+ LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 9) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)
+#else
+# define ip_route_me_harder(xnet, xsk, xskb, xaddrtype) ip_route_me_harder((xnet), (xskb), (xaddrtype))
+# define ip6_route_me_harder(xnet, xsk, xskb) ip_route_me_harder((xnet), (xskb))
+#endif
static inline struct net *par_net(const struct xt_action_param *par)
{
/* ip_route_me_harder expects skb->dst to be set */
skb_dst_set(nskb, dst_clone(skb_dst(oldskb)));
-
- if (ip_route_me_harder(net, nskb, addr_type))
+ if (ip_route_me_harder(net, nskb->sk, nskb, addr_type))
goto free_nskb;
else
niph = ip_hdr(nskb);
/* ip_route_me_harder expects the skb's dst to be set */
skb_dst_set(newskb, dst_clone(skb_dst(oldskb)));
-
- if (ip_route_me_harder(par_net(par), newskb, RTN_UNSPEC) != 0)
+ if (ip_route_me_harder(par_net(par), newskb->sk, newskb, RTN_UNSPEC) != 0)
goto free_nskb;
newip->ttl = ip4_dst_hoplimit(skb_dst(newskb));
#endif
addr_type = RTN_LOCAL;
- if (ip_route_me_harder(net, nskb, addr_type))
+ if (ip_route_me_harder(net, nskb->sk, nskb, addr_type))
goto free_nskb;
else
niph = ip_hdr(nskb);
&ipv6_hdr(nskb)->daddr, sizeof(struct tcphdr),
IPPROTO_TCP,
csum_partial(tcph, sizeof(struct tcphdr), 0));
-
- if (ip6_route_me_harder(net, nskb))
+ if (ip6_route_me_harder(net, nskb->sk, nskb))
goto free_nskb;
nskb->ip_summed = CHECKSUM_NONE;