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