Subject: Re: linux-3.0.x regression with ipv4 routes having mtu

From: Steffen Klassert <[email-masked]>
Date: Wed, 21 Dec 2011 09:56:16 +0100

On Tue, Dec 20, 2011 at 01:35:42PM -0500, David Miller wrote:
> From: Steffen Klassert <[email-masked]>
> Date: Tue, 20 Dec 2011 08:18:43 +0100
> 
> > On Tue, Dec 20, 2011 at 02:03:55AM -0500, David Miller wrote:
> >> From: Timo Teräs <[email-masked]>
> >> Date: Tue, 20 Dec 2011 08:53:09 +0200
> >> 
> >> > Or maybe I missed the place where that updated would happen?
> >> 
> >> It should happen on every routing cache lookup hit just like we
> >> validate the peer for redirect information.
> > 
> > The problem is that we need to do a route cache lookup to
> > validate the peer informations. This does not happen if
> > somebody adds a new route. I tried already to add a pmtu specific
> > generation id and it appears to not solve the problem. We would
> > still need to overwrite the cached value if we add a route with mtu.
> 
> Why?
> 
> Every use of a routing cache entry does a dst_check() or a routing
> cache lookup.
> 
> You can check the generation ID in both locations, and if the
> comparison fails then you force the routing cache entry to be killed
> and the caller performs a lookup.  At that time the refreshing of the
> new FIB entry will be realized.

My decscription was a bit missleading, sorry. This seems to be not
even related to pmtu handling. It's just that we don't use the
user configured metrics on the fib entry if we find an inetpeer
with metrics that are not in INETPEER_METRICS_NEW state when we
initialize the routing metrics in rt_init_metrics(). I tried to add
a route with a hoplimit, this has also no effect if the metrics on
the inetpeer are not new.