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" <luk...@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.