Strange behaviour on filtering bgp_large_community ...

Tim Weippert weiti+bird-users at weiti.org
Sat May 20 10:21:22 CEST 2023


Hi Ondrej, 

On Fri, May 19, 2023 at 01:43:48AM +0200, Ondrej Zajicek wrote:
> On Mon, May 15, 2023 at 12:59:11PM +0200, Tim Weippert via Bird-users wrote:
> > Hi List, 
> > 
> > maybe i'm doing something wrong, but if i use some quick and dirty
> > filter on the CLI all is working as expecting:
> > 
> > show route where bgp_large_community ~ [(65000, 0, 1001)]
> > show route where (65000, 0, 1001) ~ bgp_large_community

[ ... ]

> Hi
> 
> Set expressions like [...] in BIRD are static and created in parse-time.
> Therefore [(65000, 0, 1001)] is valid, while [(65000, 0, TestID)] is
> valid only if TestID is constant (like  with 'define TestID = 100;').
> 
> In your case of filter_large() the TestID is a local variable, so
> [(65000, 0, TestID)] should fail during configuration parsing as
> non-constant expression. It seems it is not checked, so it is probably
> just evaluated TestID to zero or some random value and used that.

Understood, so it depends if it is a static text like in my CLI tests or
an "variable which are changed in runtime". But the usage of 
'(65000, 0, TestID) ~ bgp_large_community' will work with both
expressions. So for my use case it would be good to stick with one
variant which works in both situations.

thanks & regards, 
tim

-- 
Tim Weippert
http://weiti.org - weiti at weiti.org
GPG Fingerprint - E704 7303 6FF0 8393 ADB1  398E 67F2 94AE 5995 7DD8


More information about the Bird-users mailing list