ipv6: use lwtunnel_output6() only if flag redirect is set
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Fri, 24 Jul 2015 08:59:41 +0000 (10:59 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jul 2015 08:00:51 +0000 (01:00 -0700)
This function make sense only when LWTUNNEL_STATE_OUTPUT_REDIRECT is set.
The check is already done in IPv4.

CC: Thomas Graf <tgraf@suug.ch>
CC: Roopa Prabhu <roopa@cumulusnetworks.com>
Fixes: 74a0f2fe8ed5 ("ipv6: rt6_info output redirect to tunnel output")
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index 7f2214f8fde7176ab655f0a5e337b03103e3c8ce..f91d2637072bf7889bdc65f8a6616450998aba04 100644 (file)
@@ -1780,7 +1780,8 @@ int ip6_route_add(struct fib6_config *cfg)
                        goto out;
                lwtunnel_state_get(lwtstate);
                rt->rt6i_lwtstate = lwtstate;
-               rt->dst.output = lwtunnel_output6;
+               if (lwtunnel_output_redirect(rt->rt6i_lwtstate))
+                       rt->dst.output = lwtunnel_output6;
        }
 
        ipv6_addr_prefix(&rt->rt6i_dst.addr, &cfg->fc_dst, cfg->fc_dst_len);