aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2006-08-23 20:12:24 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 17:55:41 -0400
commit5e032e32ecc2e6cb0385dc115ca9bfe5e19a9539 (patch)
treea920b2450737c8688ed7fbbbc73b47a7402f04c6 /net/ipv6/route.c
parenta57d27fc7107ddcc655ba2812cfebfce3163fd62 (diff)
[IPV6] NDISC: Take source address into account for redirects.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: Ville Nuorvala <vnuorval@tcs.hut.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 5d6e9083ca2c..a9b08a2422e0 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1279,7 +1279,8 @@ static int ip6_route_del(struct fib6_config *cfg)
1279/* 1279/*
1280 * Handle redirects 1280 * Handle redirects
1281 */ 1281 */
1282void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr, 1282void rt6_redirect(struct in6_addr *dest, struct in6_addr *src,
1283 struct in6_addr *saddr,
1283 struct neighbour *neigh, u8 *lladdr, int on_link) 1284 struct neighbour *neigh, u8 *lladdr, int on_link)
1284{ 1285{
1285 struct rt6_info *rt, *nrt = NULL; 1286 struct rt6_info *rt, *nrt = NULL;
@@ -1304,7 +1305,7 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr,
1304 */ 1305 */
1305 1306
1306 read_lock_bh(&table->tb6_lock); 1307 read_lock_bh(&table->tb6_lock);
1307 fn = fib6_lookup(&table->tb6_root, dest, NULL); 1308 fn = fib6_lookup(&table->tb6_root, dest, src);
1308restart: 1309restart:
1309 for (rt = fn->leaf; rt; rt = rt->u.next) { 1310 for (rt = fn->leaf; rt; rt = rt->u.next) {
1310 /* 1311 /*