summaryrefslogtreecommitdiffstats
path: root/net/ipv4/route.c
diff options
context:
space:
mode:
authorRobert Shearman <rshearma@brocade.com>2015-08-03 17:39:21 +0100
committerDavid S. Miller <davem@davemloft.net>2015-08-03 22:26:14 -0700
commit0335f5b500adcc28bc3fd5d8a1e4482c348cff4a (patch)
treeb4d102911e7e8af04d0f94df4dc734a331260fb7 /net/ipv4/route.c
parentabf7c1c540f8330fead5d50730d92606dcbe7a7e (diff)
downloadlinux-stable-0335f5b500adcc28bc3fd5d8a1e4482c348cff4a.tar.gz
linux-stable-0335f5b500adcc28bc3fd5d8a1e4482c348cff4a.tar.bz2
linux-stable-0335f5b500adcc28bc3fd5d8a1e4482c348cff4a.zip
ipv4: apply lwtunnel encap for locally-generated packets
lwtunnel encap is applied for forwarded packets, but not for locally-generated packets. This is because the output function is not overridden in __mkroute_output, unlike it is in __mkroute_input. The lwtunnel state is correctly set on the rth through the call to rt_set_nexthop, so all that needs to be done is to override the dst output function to be lwtunnel_output if there is lwtunnel state present and it requires output redirection. Signed-off-by: Robert Shearman <rshearma@brocade.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/route.c')
-rw-r--r--net/ipv4/route.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 908f7ef2f12a..18fd7c9095c7 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2022,6 +2022,8 @@ add:
}
rt_set_nexthop(rth, fl4->daddr, res, fnhe, fi, type, 0);
+ if (lwtunnel_output_redirect(rth->rt_lwtstate))
+ rth->dst.output = lwtunnel_output;
return rth;
}