@@ -1181,12 +1181,18 @@ restart:
} else {
if (chain_length > rt_chain_length_max) {
struct net *net = dev_net(rt->u.dst.dev);
- int num = ++net->ipv4.current_rt_cache_rebuild_count;
- if (!rt_caching(dev_net(rt->u.dst.dev))) {
- printk(KERN_WARNING "%s: %d rebuilds is over limit, route caching disabled\n",
- rt->u.dst.dev->name, num);
+
+ if (net->ipv4.sysctl_rt_cache_rebuild_count > 0) {
+ int num = ++net->ipv4.current_rt_cache_rebuild_count;
+
+ if (!rt_caching(net))
+ printk(KERN_WARNING
+ "%s: %d rebuilds is over limit, "
+ "route caching disabled\n",
+ rt->u.dst.dev->name, num);
+
+ rt_emergency_hash_rebuild(net);
}
- rt_emergency_hash_rebuild(dev_net(rt->u.dst.dev));
}
}