X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=net%2Fipv6%2Fip6_vti.c;h=cbee6b00de49072fcf0a605ca47b705f8ca02907;hb=8f54298dd8fabb33560a2ec7b8d101d03992ff07;hp=5dd544c5cfe21289b36b685974561753f36092b4;hpb=a99ac1920cdf2c5906d74b41f026f34194b512ea;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c index 5dd544c5cfe2..cbee6b00de49 100644 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c @@ -441,8 +441,17 @@ vti6_xmit(struct sk_buff *skb, struct net_device *dev, struct flowi *fl) int err = -1; int mtu; - if (!dst) - goto tx_err_link_failure; + if (!dst) { + fl->u.ip6.flowi6_oif = dev->ifindex; + fl->u.ip6.flowi6_flags |= FLOWI_FLAG_ANYSRC; + dst = ip6_route_output(dev_net(dev), NULL, &fl->u.ip6); + if (dst->error) { + dst_release(dst); + dst = NULL; + goto tx_err_link_failure; + } + skb_dst_set(skb, dst); + } dst_hold(dst); dst = xfrm_lookup(t->net, dst, fl, NULL, 0);