|
|
@@ -887,13 +887,15 @@ void ip_rt_send_redirect(struct sk_buff *skb)
|
|
|
/* No redirected packets during ip_rt_redirect_silence;
|
|
|
* reset the algorithm.
|
|
|
*/
|
|
|
- if (time_after(jiffies, peer->rate_last + ip_rt_redirect_silence))
|
|
|
+ if (time_after(jiffies, peer->rate_last + ip_rt_redirect_silence)) {
|
|
|
peer->rate_tokens = 0;
|
|
|
+ peer->n_redirects = 0;
|
|
|
+ }
|
|
|
|
|
|
/* Too many ignored redirects; do not send anything
|
|
|
* set dst.rate_last to the last seen redirected packet.
|
|
|
*/
|
|
|
- if (peer->rate_tokens >= ip_rt_redirect_number) {
|
|
|
+ if (peer->n_redirects >= ip_rt_redirect_number) {
|
|
|
peer->rate_last = jiffies;
|
|
|
goto out_put_peer;
|
|
|
}
|
|
|
@@ -910,6 +912,7 @@ void ip_rt_send_redirect(struct sk_buff *skb)
|
|
|
icmp_send(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, gw);
|
|
|
peer->rate_last = jiffies;
|
|
|
++peer->rate_tokens;
|
|
|
+ ++peer->n_redirects;
|
|
|
#ifdef CONFIG_IP_ROUTE_VERBOSE
|
|
|
if (log_martians &&
|
|
|
peer->rate_tokens == ip_rt_redirect_number)
|