diff options
author | David S. Miller | 2015-08-14 01:23:11 +0200 |
---|---|---|
committer | David S. Miller | 2015-08-14 01:23:11 +0200 |
commit | 182ad468e70fc7e8ff2e5d64344c690beaa00ddd (patch) | |
tree | af0b9b8da89ed03629c71f6829845c301485d289 /net/ipv6/route.c | |
parent | documentation: bring vxlan documentation more up-to-date (diff) | |
parent | Merge tag 'dm-4.2-fixes-5' of git://git.kernel.org/pub/scm/linux/kernel/git/d... (diff) | |
download | kernel-qcow2-linux-182ad468e70fc7e8ff2e5d64344c690beaa00ddd.tar.gz kernel-qcow2-linux-182ad468e70fc7e8ff2e5d64344c690beaa00ddd.tar.xz kernel-qcow2-linux-182ad468e70fc7e8ff2e5d64344c690beaa00ddd.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/cavium/Kconfig
The cavium conflict was overlapping dependency
changes.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r-- | net/ipv6/route.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 54fccf0d705d..c0fa61eba8f2 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -1844,6 +1844,7 @@ int ip6_route_add(struct fib6_config *cfg) int gwa_type; gw_addr = &cfg->fc_gateway; + gwa_type = ipv6_addr_type(gw_addr); /* if gw_addr is local we will fail to detect this in case * address is still TENTATIVE (DAD in progress). rt6_lookup() @@ -1851,11 +1852,12 @@ int ip6_route_add(struct fib6_config *cfg) * prefix route was assigned to, which might be non-loopback. */ err = -EINVAL; - if (ipv6_chk_addr_and_flags(net, gw_addr, NULL, 0, 0)) + if (ipv6_chk_addr_and_flags(net, gw_addr, + gwa_type & IPV6_ADDR_LINKLOCAL ? + dev : NULL, 0, 0)) goto out; rt->rt6i_gateway = *gw_addr; - gwa_type = ipv6_addr_type(gw_addr); if (gwa_type != (IPV6_ADDR_LINKLOCAL|IPV6_ADDR_UNICAST)) { struct rt6_info *grt; |