aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r--net/ipv6/ip6_output.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 5f8d242be3f3..2600e2288724 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -479,10 +479,13 @@ int ip6_forward(struct sk_buff *skb)
479 else 479 else
480 target = &hdr->daddr; 480 target = &hdr->daddr;
481 481
482 if (!rt->rt6i_peer)
483 rt6_bind_peer(rt, 1);
484
482 /* Limit redirects both by destination (here) 485 /* Limit redirects both by destination (here)
483 and by source (inside ndisc_send_redirect) 486 and by source (inside ndisc_send_redirect)
484 */ 487 */
485 if (xrlim_allow(dst, 1*HZ)) 488 if (inet_peer_xrlim_allow(rt->rt6i_peer, 1*HZ))
486 ndisc_send_redirect(skb, n, target); 489 ndisc_send_redirect(skb, n, target);
487 } else { 490 } else {
488 int addrtype = ipv6_addr_type(&hdr->saddr); 491 int addrtype = ipv6_addr_type(&hdr->saddr);