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