Extracting octets/quads from IP addresses in filter expressions

Maria Matejka maria.matejka at nic.cz
Wed Apr 8 11:57:01 CEST 2026


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20260408/03351c3b/attachment.htm>


More information about the Bird-users mailing list