diff options
author | David S. Miller <davem@davemloft.net> | 2016-09-23 12:46:57 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-09-23 12:46:57 +0200 |
commit | d6989d4bbe6c4d1c2a76696833a07f044e85694d (patch) | |
tree | 2d9a70d0feee4d4a20568be1b39a961fa0d27d81 /net/ipv6/route.c | |
parent | xen-netback: switch to threaded irq for control ring (diff) | |
parent | Merge tag 'media/v4.8-7' of git://git.kernel.org/pub/scm/linux/kernel/git/mch... (diff) | |
download | linux-d6989d4bbe6c4d1c2a76696833a07f044e85694d.tar.xz linux-d6989d4bbe6c4d1c2a76696833a07f044e85694d.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r-- | net/ipv6/route.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 4dab585f7642..5a5aeb92b4ec 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1992,9 +1992,18 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg) if (!(gwa_type & IPV6_ADDR_UNICAST)) goto out; - if (cfg->fc_table) + if (cfg->fc_table) { grt = ip6_nh_lookup_table(net, cfg, gw_addr); + if (grt) { + if (grt->rt6i_flags & RTF_GATEWAY || + (dev && dev != grt->dst.dev)) { + ip6_rt_put(grt); + grt = NULL; + } + } + } + if (!grt) grt = rt6_lookup(net, gw_addr, NULL, cfg->fc_ifindex, 1); |