ipv4: redirect dst output to lwtunnel output
authorRoopa Prabhu <roopa@cumulusnetworks.com>
Tue, 21 Jul 2015 08:43:50 +0000 (10:43 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Jul 2015 17:39:04 +0000 (10:39 -0700)
For input routes with tunnel encap state this patch redirects
dst output functions to lwtunnel_output which later resolves to
the corresponding lwtunnel output function.

This has been tested to work with mpls ip tunnels.

Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 226570b..cd3157c 100644 (file)
@@ -1633,6 +1633,8 @@ static int __mkroute_input(struct sk_buff *skb,
        rth->dst.output = ip_output;
 
        rt_set_nexthop(rth, daddr, res, fnhe, res->fi, res->type, itag);
+       if (lwtunnel_output_redirect(rth->rt_lwtstate))
+               rth->dst.output = lwtunnel_output;
        skb_dst_set(skb, &rth->dst);
 out:
        err = 0;