Skip to content

Commit

Permalink
[IPV6] NDISC: Take source address into account for redirects.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
YOSHIFUJI Hideaki authored and David S. Miller committed Sep 22, 2006
1 parent a57d27f commit 5e032e3
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 3 deletions.
1 change: 1 addition & 0 deletions include/net/ip6_route.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion net/ipv6/ndisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
5 changes: 3 additions & 2 deletions net/ipv6/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
/*
Expand Down

0 comments on commit 5e032e3

Please sign in to comment.