# router id is not required for babeld, but necessary for bird startup router id 192.0.2.0; ipv4 table fff4; ipv6 sadr table fff6; protocol device { scan time 15; } # device routes for ipv4 peering address protocol direct { ipv4 { table fff4; import filter { include "/tmp/bird/include/nat-filter.conf"; if (net ~ 10.50.0.0/16 || net ~ 10.83.0.0/16) && net.len = 32 then { accept; } reject; }; }; } # device routes on loopback interface protocol direct { ipv4 { table fff4; import filter { include "/tmp/bird/include/nat-filter.conf"; if net ~ 10.50.0.0/16 || net ~ 10.83.0.0/16 then { accept; } reject; }; }; ipv6 sadr { table fff6; import filter { if net ~ fdff::/64 from ::/0 then { reject; } # only import GUA + ULA addresses if net !~ 2000::/3 from ::/0 && net !~ fc00::/7 from ::/0 then { reject; } accept; }; import keep filtered; }; interface "lo"; } # ipv6 kernel route interface protocol kernel { ipv6 sadr { table fff6; import filter { # only import routes from kernel with proto static if krt_source != 4 then { reject; } if net ~ fdff::/64 from ::/0 then { reject; } accept; }; export all; preference 200; }; kernel table 10; scan time 15; learn yes; } # ipv4 kernel route interface protocol kernel { ipv4 { table fff4; import filter { include "/tmp/bird/include/nat-filter.conf"; # only import routes from kernel with proto static if krt_source = 4 then { accept; } reject; }; export all; preference 200; }; kernel table 10; scan time 15; learn yes; } protocol babel { # required due to static configuration of global router id. # also improves reconnect speed after restart. randomize router id yes; ipv4 { table fff4; import all; export all; }; ipv6 sadr { table fff6; import all; export all; }; include "/tmp/bird/include/babelpeers.conf"; };