Hello Łukasz, the warning lines are also for several latest versions of BIRD 2 and they just tell you that the return type of the function has been inferred from the return call, instead of you specifying "function foo() -> bool". More on that in docs: <https://bird.nic.cz/doc/bird-3.1.2.html#filters-intro> Also please note that 3.1.1 has some serious problems with channel reload when import table is not present, please try 3.1.2 instead. Maria On June 3, 2025 5:00:39 PM GMT+02:00, "Łukasz Trąbiński" <lukasz@trabinski.net> wrote:
Hello
Could You send me example of rpki config for Bird 3.x.x? In 2.x.x, I’m use something like below, but it’s not working with 3.x.x
Jun 2 23:29:16 peer bird[2100437]: bird: 2025-06-02 23:29:16.712 [0001] <WARN> /etc/bird.conf:67:71: Inferring function is_v4_rpki_invalid return type from its return value: bool Jun 2 23:29:16 peer bird[2100437]: bird: 2025-06-02 23:29:16.712 [0001] <WARN> /etc/bird.conf:71:71: Inferring function is_v6_rpki_invalid return type from its return value: bool Jun 2 23:29:16 peer bird[2100437]: /etc/bird.conf:67:71: Inferring function is_v4_rpki_invalid return type from its return value: bool Jun 2 23:29:16 peer bird[2100437]: /etc/bird.conf:71:71: Inferring function is_v6_rpki_invalid return type from its return value: bool
—snip--
roa4 table r4; roa6 table r6;
protocol rpki rpki1 { roa4 { table r4; }; roa6 { table r6; }; remote xx.xx.xx.xx port 3323; retry 300; }
function is_v4_rpki_invalid () { return roa_check(r4, net, bgp_path.last_nonaggregated) = ROA_INVALID; }
function is_v6_rpki_invalid () { return roa_check(r6, net, bgp_path.last_nonaggregated) = ROA_INVALID; }
filters bgp_import { if is_v4_rpki_invalid() then reject; accept; }
— snip —
-- Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.