From 6003b56274838dc655b46806263bcdaa34c87b26 Mon Sep 17 00:00:00 2001 From: YOSHIFUJI Hideaki Date: Wed, 23 Aug 2006 17:12:24 -0700 Subject: [PATCH] --- yaml --- r: 34539 b: refs/heads/master c: 5e032e32ecc2e6cb0385dc115ca9bfe5e19a9539 h: refs/heads/master i: 34537: 234c6ef9915feed88f696dfe1e466a6ea9574fd4 34535: d8517755e300ef89b1282a7fe11e4dcb27eef114 v: v3 --- [refs] | 2 +- trunk/include/net/ip6_route.h | 1 + trunk/net/ipv6/ndisc.c | 3 ++- trunk/net/ipv6/route.c | 5 +++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 97c166cd012c..1caa318b19e2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a57d27fc7107ddcc655ba2812cfebfce3163fd62 +refs/heads/master: 5e032e32ecc2e6cb0385dc115ca9bfe5e19a9539 diff --git a/trunk/include/net/ip6_route.h b/trunk/include/net/ip6_route.h index 3f170f667c7b..249ce4545ef0 100644 --- a/trunk/include/net/ip6_route.h +++ b/trunk/include/net/ip6_route.h @@ -110,6 +110,7 @@ extern int rt6_route_rcv(struct net_device *dev, struct in6_addr *gwaddr); extern void rt6_redirect(struct in6_addr *dest, + struct in6_addr *src, struct in6_addr *saddr, struct neighbour *neigh, u8 *lladdr, diff --git a/trunk/net/ipv6/ndisc.c b/trunk/net/ipv6/ndisc.c index 419d65163819..32f28dec399e 100644 --- a/trunk/net/ipv6/ndisc.c +++ b/trunk/net/ipv6/ndisc.c @@ -1346,7 +1346,8 @@ static void ndisc_redirect_rcv(struct sk_buff *skb) neigh = __neigh_lookup(&nd_tbl, target, skb->dev, 1); if (neigh) { - rt6_redirect(dest, &skb->nh.ipv6h->saddr, neigh, lladdr, + rt6_redirect(dest, &skb->nh.ipv6h->daddr, + &skb->nh.ipv6h->saddr, neigh, lladdr, on_link); neigh_release(neigh); } diff --git a/trunk/net/ipv6/route.c b/trunk/net/ipv6/route.c index 5d6e9083ca2c..a9b08a2422e0 100644 --- a/trunk/net/ipv6/route.c +++ b/trunk/net/ipv6/route.c @@ -1279,7 +1279,8 @@ static int ip6_route_del(struct fib6_config *cfg) /* * Handle redirects */ -void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr, +void rt6_redirect(struct in6_addr *dest, struct in6_addr *src, + struct in6_addr *saddr, struct neighbour *neigh, u8 *lladdr, int on_link) { struct rt6_info *rt, *nrt = NULL; @@ -1304,7 +1305,7 @@ void rt6_redirect(struct in6_addr *dest, struct in6_addr *saddr, */ read_lock_bh(&table->tb6_lock); - fn = fib6_lookup(&table->tb6_root, dest, NULL); + fn = fib6_lookup(&table->tb6_root, dest, src); restart: for (rt = fn->leaf; rt; rt = rt->u.next) { /*