On Mon, Sep 06, 2010 at 08:18:06PM +0300, Alexander Shikoff wrote: > On Mon, Sep 06, 2010 at 07:00:58PM +0200, Ondrej Zajicek wrote: > > On Mon, Sep 06, 2010 at 07:45:15PM +0300, Alexander Shikoff wrote: > > > Hello, > > > > > > is it possible in filter to delete all communities except ones which > > > are stored in pre-defined list? > > > > It is possible to do that, but you have to manually invert the list > > of communities. For example instead of a list of allowed communities: > > > > [(123,100), (456,200), (789,300)] > > > > you would use a list of rejected communities: > > > > [(0,0)..(123,99), (123,101)..(456,199), (456,201)..(789,299), > > (789,301)..(65535,65535)] > > > > in bgp_community.delete(). > > Ondrej, thank you for reply. > > I tried the following code: > > function check_community (clist c) > clist wrong; > { > wrong = [ > (0,0)..(0,25371), > (0,25373)..(0,31209), > (0,31211)..(31209,65535), > (31210,0)..(31210,25371), > (31210,25373)..(31210,65535), > (31211,0)..(65535,65281), > (65535,65283)..(65535,65535) > ]; > c.delete(wrong); > } > > But bird reports error: > bird> configure > Reading configuration from /usr/local/etc/bird.conf > /usr/local/etc/bird.conf, line 37: syntax error > > Line 37 is: > > c.delete(wrong); > > I tried both c.delete(wrong) and delete(c,wrong) - the result is the same: > syntax error.
ok, I got it: c = delete(c,wrong); did make the error to dissapear. But there is another issue: function check_community (clist c) pair set wrong; { wrong = [ (0,0)..(0,25371), (0,25373)..(0,31209), (0,31211)..(31209,65535), (31210,0)..(31210,25371), (31210,25373)..(31210,65535), (31211,0)..(65535,65281), (65535,65283)..(65535,65535) ]; c = delete(c,wrong); print c; } bird reports in log file: Sep 6 20:26:38 crete bird: filters, line 37: Can't add/delete non-pair If declare 'wrong' as clist, then assignments like wrong = [ (0,0)..(0,25371), (0,25373)..(0,31209), (0,31211)..(31209,65535), (31210,0)..(31210,25371), (31210,25373)..(31210,65535), (31211,0)..(65535,65281), (65535,65283)..(65535,65535) ]; do not work: Sep 6 20:23:38 crete bird: filters, line 36: Assigning to variable of incompatible type Any ideas? -- MINO-RIPE