Well, some observations:
You need to make sure that the dhcp client assigns the default routes
with different metrics so they appear in the kernel routing table in the
first place.
Also it appears like bird imports only the first default route:
# bird.conf
filter test {
print net, " interface: ", ifname;
accept;
}
protocol kernel {
ipv4 {
import filter test;
export none;
};
learn;
}
root@host-1:/etc/bird# ip r
default via 172.21.0.1 dev bond0.300
default via 172.21.101.1 dev eno1 metric 200
<... snip ...>
root@host-1:/etc/bird# birdc show route all
BIRD 2.0.7 ready.
Table master4:
0.0.0.0/0 unicast [kernel1 21:54:15.332] (10)
via 172.21.0.1 on bond0.300
Type: inherit univ
Kernel.source: 3
Kernel.metric: 0
I assume this is an intended behavior, because a second route with a
higher metric would usually not be used?
Greetings
Jo