diff --git a/extensions/compat_xtables.h b/extensions/compat_xtables.h index 36f3223..ee0caa0 100644 --- a/extensions/compat_xtables.h +++ b/extensions/compat_xtables.h @@ -41,6 +41,12 @@ ((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) { diff --git a/extensions/xt_DELUDE.c b/extensions/xt_DELUDE.c index b384c8e..89cc41a 100644 --- a/extensions/xt_DELUDE.c +++ b/extensions/xt_DELUDE.c @@ -121,8 +121,7 @@ static void delude_send_reset(struct net *net, struct sk_buff *oldskb, /* 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); diff --git a/extensions/xt_ECHO.c b/extensions/xt_ECHO.c index e99312b..4376d2f 100644 --- a/extensions/xt_ECHO.c +++ b/extensions/xt_ECHO.c @@ -191,8 +191,7 @@ echo_tg4(struct sk_buff *oldskb, const struct xt_action_param *par) /* 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)); diff --git a/extensions/xt_TARPIT.c b/extensions/xt_TARPIT.c index 4926f2e..118c26c 100644 --- a/extensions/xt_TARPIT.c +++ b/extensions/xt_TARPIT.c @@ -265,7 +265,7 @@ static void tarpit_tcp4(struct net *net, struct sk_buff *oldskb, #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); @@ -398,8 +398,7 @@ static void tarpit_tcp6(struct net *net, struct sk_buff *oldskb, &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;