Subject: Re: IPv6 routes inserted into the kernel with 'route' end up with invalid type

From: Toke Høiland-Jørgensen <[email-masked]>
Date: Fri, 23 Aug 2019 14:59:04 +0200

David Ahern <[email-masked]> writes:

> On 8/23/19 8:43 AM, Toke Høiland-Jørgensen wrote:
>> Hi David
>> 
>> Tom noticed[0] that on newer kernels, the Bird routing daemon rejects IPv6
>> routes received from the kernel if those routes were inserted with the
>> old 'route' utility (i.e., when they're inserted through the ioctl
>> interface).
>> 
>> We tracked it down to the routes having an rtm_type of RTN_UNKNOWN, and
>> a bit of git archaeology points suggestively at this commit:
>> 
>> e8478e80e5a ("net/ipv6: Save route type in rt6_info")
>> 
>> The same setup works with older kernels, so this seems like it's a
>> regression, the age of 'route' notwithstanding. Any good ideas for the
>> proper way to fix this?
>> 
>
> Should be fixed by:
>
> commit c7036d97acd2527cef145b5ef9ad1a37ed21bbe6
> Author: David Ahern <[email-masked]>
> Date:   Wed Jun 19 10:50:24 2019 -0700
>
>     ipv6: Default fib6_type to RTN_UNICAST when not set
>
>     A user reported that routes are getting installed with type 0
> (RTN_UNSPEC)
>     where before the routes were RTN_UNICAST. One example is from accel-ppp
>     which apparently still uses the ioctl interface and does not set
>     rtmsg_type. Another is the netlink interface where ipv6 does not require
>     rtm_type to be set (v4 does). Prior to the commit in the Fixes tag the
>     ipv6 stack converted type 0 to RTN_UNICAST, so restore that behavior.
>
>     Fixes: e8478e80e5a7 ("net/ipv6: Save route type in rt6_info")
>     Signed-off-by: David Ahern <[email-masked]>
>     Signed-off-by: David S. Miller <[email-masked]>

Ah, great! Guess that hasn't made its way to the stable and distribution
kernels yet. Thanks for the pointer! :)

-Toke