Loading include/net/ip6_route.h +1 −0 Original line number Diff line number Diff line Loading @@ -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, Loading net/ipv6/ndisc.c +2 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading net/ipv6/route.c +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { /* Loading Loading
include/net/ip6_route.h +1 −0 Original line number Diff line number Diff line Loading @@ -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, Loading
net/ipv6/ndisc.c +2 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading
net/ipv6/route.c +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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) { /* Loading