Re: [PATCH net-next 1/3] ipv4: properly refresh rtable entries on pmtu/redirect events
From: Julian Anastasov <ja@ssi.bg>
Date: 2013-05-28 19:40:59
Hello, On Tue, 28 May 2013, Timo Teras wrote:
quoted
quoted
+static void fill_route_from_fnhe(struct rtable *rt, struct fib_nh_exception *fnhe) +{ + rt->rt_pmtu = fnhe->fnhe_pmtu; + rt->dst.expires = fnhe->fnhe_expires;The 'if (time_before' ... dst_set_expires() logic from rt_bind_exception() is removed, may be it should be moved here, i.e. fnhe_pmtu should be ignored if expired.That code would not help much. The route's rt_pmtu is never reset to zero after the fnhe expires, so this would not make much difference. The old rt_pmtu and dst.expires would be left there anyway. All rt accesses check for expires too.
I see, ipv4_mtu validates rt_pmtu expiration, so such checks are not needed in rt_bind_exception and fill_route_from_fnhe.
This was actually intentional on the old code, as non-zero rt_pmtu implied that we had "next hop exception route" instead of "next hop route" and affected how the rt was invalidated in pmtu update. If we want to clear out these fields, then it would make sense to have rt_bind_exception() to reset these on expiry to the struct fib_nh_exception directly and keep the direct assignments in fill_route_from_fnhe(). - Timo
Regards -- Julian Anastasov [off-list ref]