Subject: Re: [PATCH RFC 1/6] ipv6: also increase fib6_node sernum on deletion events

From: Nicolas Dichtel <[email-masked]>
Date: Tue, 16 Sep 2014 18:18:53 +0200

Le 12/09/2014 01:21, Hannes Frederic Sowa a écrit :
> fib6_add increases the fn_sernum of fib6_nodes while it traverses the
> tree. This serial number is used by ip6_dst_check to judge whether a
> relookup for the socket cache should be done (e.g. a better route is
> available).
>
> We didn't do so for fib6_del, so we missed relookups on ipv6 address
> deletion events. Because this caused trouble in the SCTP stack, instead
> the genid for ipv6 was bumped. Also TCP connections used old source
> addresses, which were not available anymore.
>
> Because we have static rt6_nodes in the tree (no RTF_GATEWAY,
> RTF_NONEXTHOP nor RTF_CACHE nodes but still DST_HOST) flag, we ended up
> in a situation where the genid of the routing node was always smaller
> than the published genid in the namespace. That caused ip6_dst_check to
> always discard the current dst_entry and a relookup happend.
>
> This patch prepares for the removal of the ipv6 genid by also modifying
> the fn_sernum on route deletion.
>
> Thanks to Eric Dumazet who noticed this problem!
>
> Cc: Eric Dumazet <[email-masked]>
> Cc: Vlad Yasevich <[email-masked]>
> Cc: Nicolas Dichtel <[email-masked]>
> Signed-off-by: Hannes Frederic Sowa <[email-masked]>
This serie looks good to me. Thank you for working on this topic!

Regards,
Nicolas