# Re: \[PATCH\] ipv6: Fix problem with expired dst cache

- From: David Miller \<davem@davemloft.net\>
- Date: 2012-02-24 06:47:24 
- List: netdev
- Page: https://ratatoskr.run/netdev/2012/02/10889335
- Thread: https://ratatoskr.run/netdev/2012/02/10889334/t.md

```text
From: Gao feng <redacted>
Date: Fri, 24 Feb 2012 14:20:04 +0800

> 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.

> +	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))

> +	if (rt->rt6i_copy && (rt->rt6i_copy->rt6i_flags & RTF_EXPIRES) &&
> +		time_after(jiffies, rt->rt6i_copy->dst.expires))

Same problem.
```
