On 09/05/2015 01:32 πμ, Ondrej Zajicek wrote: > On Fri, May 08, 2015 at 11:35:33PM +0200, Pavlos Parissis wrote: >> Hi, >> >> For each ip_prefix I advertize I need to add a BGP community in the form >> of (ASN,<RouterID>). >> I have the following mapping between IPs and RouterIDs >> >> ip_prefix, RouterID >> 10.10.10.1, 1 >> 10.10.10.2, 2 >> 10.10.10.3, 3 >> 10.10.10.4, 1 >> 10.10.10.5, 2 >> 10.10.10.6, 3 >> ..... >> >> So, inside a function I need to express the following >> lookup_community_router_id() { >> return some_kind_of_dict_structure(net.ip) >> } >> >> and the use it in a filter/function >> filter { >> bgp.community((1111, lookup_community_router_id(net))); >> accept; >> } >> >> Is this possible? > > Hi > > Surprisingly, it is possible - you could use big case expression which > returns appropriate value. As case uses the same implementation as sets, > it will be fairly efficient: > > function lookup(ip val) > { > case val { > 10.10.10.1: return 1; > 10.10.10.2: return 2; > ... > } > return 0; > } > >
I am impressed, Thanks a lot for the assistance. Next time I should read twice Control structures: http://bird.network.cz/?get_doc&f=bird-5.html#ss5.4. Sorry for the noise, Pavlos
signature.asc
Description: OpenPGP digital signature