kernel protocol ignores default preference during scan

Alexander Zubkov green at qrator.net
Wed Sep 21 17:15:07 CEST 2022


I made a trivial patch for the case.

On Tue, Sep 20, 2022 at 6:23 PM Alexander Zubkov <green at qrator.net> wrote:
>
> Hi,
>
> Bird from master branch ignores the default preference set in channel
> for a kernel protocol, like that:
>
> protocol kernel {
>         learn yes;
>         ipv4 {
>                 preference 200;
>                 import all;
>                 export none;
>         };
> }
>
> Version 2.0.10 seems ok. I suppose the change was introduced with this commit:
>
> https://gitlab.nic.cz/labs/bird/-/commit/eb937358c087eaeb6f209660cc7ecfe6d6eff739
>
> It adds setting of the preference to the krt_learn_async() function.
> But as I understand when route is learned with netlink hook it is
> processed like this:
> nl_parse_route -> krt_got_route_async -> krt_learn_async
> But when it is learned from scan, it is processed like this:
> nl_parse_route -> krt_got_route -> krt_learn_scan
>
> And setting preference was not added to krt_learn_scan() function.
>
> I also saw that in my test - when I added a new route to the kernel
> while bird was running, it appeared in bird with correct preference.
> But some time after, the scan updated the route and it was replaced
> with the default preference.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix-kernel-pref.patch
Type: text/x-patch
Size: 1733 bytes
Desc: not available
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20220921/56714b30/attachment.bin>


More information about the Bird-users mailing list