function add_control(int kkkey; int value) { bgp_large_community.add((OWNAS, kkkey, value)); } function strip_control() { bgp_large_community.delete([(OWNAS, *, *)]); } function has_control(int kkkey; int value) { return (OWNAS,kkkey,value) ~ bgp_large_community; } function tag_route(int origin) { add_control(ROUTEORIGIN, origin); add_control(ORIGINROUTER, MYID); } function ix_import() { strip_control(); tag_route(DFZ); } function ix_export() { if !has_control(ANNOUNCETO, DFZ) then reject; strip_control(); } template bgp ixpeers { local as OWNAS; import limit 1000 action disable; import keep filtered; import filter { ix_import(); accept; }; export filter { ix_export(); accept; }; next hop self; }