unable to install leaked routes with krt_prefsrc set/how to unset an attribute?

jo+bird at swagspace.org jo+bird at swagspace.org
Tue May 16 15:51:07 CEST 2023


Hello.

I am currently trying to get route leaking to work on Linux with bird.

I have several VRFs and want to leak some of the routes from one VRF 
into an other. For this I have several routing tables in bird, one 
kernel protocol per table and pipe protocols to leak to routes between 
the tables. This works as intended.
However I have a problem when exporting my leaked routes to the kernel.

I get the log message

May 16 15:28:24 host-1 bird[7349]: kernel4: 0.0.0.0/0: reinstalling
May 16 15:28:24 host-1 bird[7349]: Netlink: Invalid argument
May 16 15:28:24 host-1 bird[7349]: kernel4: 172.21.0.1/32: reinstalling
May 16 15:28:24 host-1 bird[7349]: Netlink: Invalid argument

Those 2 routes are not installed into the corresponding kernel routing 
table. These are exactly the routes that have the 
Kernel.prefsrc/krt_prefsrc attribute set.
If I try to install these routes manually with all the attributes they 
have in the bird routing table I get the error

 > root at host-1:~# ip r add table 5 0.0.0.0/0 via 172.21.0.1 dev 
vlan-uplink-1 metric 1024 src 172.21.0.153
 > Error: Invalid prefsrc address.

This is because the IP address that is used here comes from an other VRF 
where it is available however it is not available in the VRF I am trying 
to install it.
(I also don't need the prefsrc option to where the route is installed.)
If I add the route to the Linux FIB without the prefsrc value or with an 
IP address that is available in the corresponding VRF, then it works out 
as intended.
A workaround that I found is to set the krt_prefsrc attribute on export 
to something that is available in the target VRF. However it would be 
nicer to simply remove the attribute.
So is it possible to remove an attribute from a route in bird?

Greetings
Jo



More information about the Bird-users mailing list