Skip to content

Commit

Permalink
Merge branch 'lwtunnel-encap-local'
Browse files Browse the repository at this point in the history
Robert Shearman says:

====================
lwtunnel: encap locally-generated ipv4 packets

Locally-generated IPv4 packets, such as from applications running on
the host or traceroute/ping currently don't have lwtunnel output
redirected encap applied. However, they should do in the same way as
for forwarded packets and this patch series addresses that.
====================

Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
davem330 committed Aug 4, 2015
2 parents 58da018 + 0335f5b commit c961b1c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
12 changes: 10 additions & 2 deletions net/core/lwtunnel.c
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,12 @@ int lwtunnel_output6(struct sock *sk, struct sk_buff *skb)
struct rt6_info *rt = (struct rt6_info *)skb_dst(skb);
struct lwtunnel_state *lwtstate = NULL;

if (rt)
if (rt) {
lwtstate = rt->rt6i_lwtstate;
skb->dev = rt->dst.dev;
}

skb->protocol = htons(ETH_P_IPV6);

return __lwtunnel_output(sk, skb, lwtstate);
}
Expand All @@ -227,8 +231,12 @@ int lwtunnel_output(struct sock *sk, struct sk_buff *skb)
struct rtable *rt = (struct rtable *)skb_dst(skb);
struct lwtunnel_state *lwtstate = NULL;

if (rt)
if (rt) {
lwtstate = rt->rt_lwtstate;
skb->dev = rt->dst.dev;
}

skb->protocol = htons(ETH_P_IP);

return __lwtunnel_output(sk, skb, lwtstate);
}
Expand Down
2 changes: 2 additions & 0 deletions net/ipv4/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -2022,6 +2022,8 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
}

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;
}
Expand Down

0 comments on commit c961b1c

Please sign in to comment.