ipvs: no need to update skb route entry for local destination packets.
authorzhang kai <zhangkaiheb@126.com>
Mon, 30 Sep 2019 05:14:55 +0000 (13:14 +0800)
committerSimon Horman <horms@verge.net.au>
Tue, 8 Oct 2019 09:28:33 +0000 (11:28 +0200)
In the end of function __ip_vs_get_out_rt/__ip_vs_get_out_rt_v6,the
'local' variable is always zero.

Signed-off-by: zhang kai <zhangkaiheb@126.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
net/netfilter/ipvs/ip_vs_xmit.c

index 888d306..b1e300f 100644 (file)
@@ -407,12 +407,9 @@ __ip_vs_get_out_rt(struct netns_ipvs *ipvs, int skb_af, struct sk_buff *skb,
                goto err_put;
 
        skb_dst_drop(skb);
-       if (noref) {
-               if (!local)
-                       skb_dst_set_noref(skb, &rt->dst);
-               else
-                       skb_dst_set(skb, dst_clone(&rt->dst));
-       } else
+       if (noref)
+               skb_dst_set_noref(skb, &rt->dst);
+       else
                skb_dst_set(skb, &rt->dst);
 
        return local;
@@ -574,12 +571,9 @@ __ip_vs_get_out_rt_v6(struct netns_ipvs *ipvs, int skb_af, struct sk_buff *skb,
                goto err_put;
 
        skb_dst_drop(skb);
-       if (noref) {
-               if (!local)
-                       skb_dst_set_noref(skb, &rt->dst);
-               else
-                       skb_dst_set(skb, dst_clone(&rt->dst));
-       } else
+       if (noref)
+               skb_dst_set_noref(skb, &rt->dst);
+       else
                skb_dst_set(skb, &rt->dst);
 
        return local;