function is_peer_route() { if (LOCAL_ASN, 110, 0) ~ bgp_large_community then return false; if (LOCAL_ASN, 110, 10) ~ bgp_large_community then return false; if !pub_is_downstream_route() then return false; return true; } function direct_peer_import_filter(int ASN) { if !is_valid() then return false; if !is_peer_route() then return false; pub_add_communities(ASN, 0); pub_preprocess_communities(); bgp_local_pref = 500 - bgp_path.len * 10; pub_route_controller_specific(); return true; } function direct_peer_export_filter(int ASN) { pub_process_path(); if !is_valid() then return false; if !is_peer_route() then return false; pub_add_communities(ASN, 30); if pub_process_communities(ASN, 0) then return true; else return false; }