Hi folks!

I have played with extended communities with some of my peers, and have written 
this function below to facilitate my checks.

On the examples found on github 
(https://gitlab.labs.nic.cz/labs/bird/wikis/Route_server_with_community_based_filtering_and_multiple_RIBs
 and 
https://gitlab.labs.nic.cz/labs/bird/wikis/Route_server_with_community_based_filtering_and_single_RIB)
 

I have noticed that RO are used :
if (ro,myas,peeras) ~ bgp_ext_community then return true;
bgp_ext_community.delete([(ro,0,*)]);

But according to my tests, RT should be used.
Did anybody made the same ascertainment?


-----

### Chek if the community or ext_community is present
function is_community(int left; int right)
{
  if right > 65535 then {
    #Check of the extended community for 32b ASN
    if (rt,left,right) ~ bgp_ext_community then return true;
  } else {
    #Check of the extended (and not ext) community for 16b ASN
    if ((left,right) ~ bgp_community) || ((rt,left,right) ~ bgp_ext_community) 
then return true;
  }
  return false;
}

----

Cheers,

--
Arnaud Fenioux
Network Engineer - FranceIX


Reply via email to