Re: [PATCH] ipv6: Fix problem with expired dst cache
From: Gao feng <hidden>
Date: 2012-02-24 07:09:34
于 2012年02月24日 14:47, David Miller 写道:
From: Gao feng <redacted> Date: Fri, 24 Feb 2012 14:20:04 +0800quoted
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index b26bb81..3da4d58c 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h@@ -106,6 +106,7 @@ struct rt6_info { u32 rt6i_metric; u32 rt6i_peer_genid; + struct rt6_info *rt6i_copy; struct inet6_dev *rt6i_idev; struct inet_peer *rt6i_peer;This bloats up every route and cached entry in the machine, find another way.
Another way is set dst cache's RTF_EXPIRES flag and expires in ip6_rt_copy and when receive RA packet,update all the related dst cache's expires. I don't think this is a good idea.
quoted
+ if ((rt->rt6i_flags & RTF_EXPIRES) && + time_after(jiffies, rt->dst.expires))Poorly formatted, correct way is: if ((rt->rt6i_flags & RTF_EXPIRES) && time_after(jiffies, rt->dst.expires))quoted
+ if (rt->rt6i_copy && (rt->rt6i_copy->rt6i_flags & RTF_EXPIRES) && + time_after(jiffies, rt->rt6i_copy->dst.expires))Same problem.