Hi Stefan, On Wed, Apr 08, 2026 at 08:54:52AM +0000, Stefan Pisjak wrote:
I've searched through the documentation/this mailing list, but I haven't found anyone trying to build a similar filter so far.
I'm trying to build a filter to only allow BGP routes if the "host part" of `ip from` matches the route that is being announced, e.g.:
10.0.1.2 is allowed to announce 10.100.1.2/32 10.0.1.3 is allowed to announce 10.100.1.3/32 [...] 10.0.X.Y is allowed to announce 10.100.X.Y/32
The easiest way would probably be to extend the `FI_BITAND` and `FI_BITOR` operators for not only `T_INT` but also `T_IP`. Relevant code is in `filter/f-inst.c`, test file is `filter/test.conf`, feel free to send a patch. These two operators are currently in BIRD 3 only because the weren't needed in BIRD 2; feel free to backport them if needed.
But as far as I can tell, it's not possible to somehow convert the type ip to type quad or something like that. Is there a better way to build this filter, or can you somehow create a new variable of the type ip and modify it or convert the ip to a quad and then do the manipulations?
Explicit type conversion of this kind is something much harder to implement in a maintainable way. Happy routing! Maria -- Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.