Files

78 lines
1.7 KiB
Django/Jinja

# template
template bgp transit {
local as MYASN;
ipv6 {
import none;
export none;
import filtered keep;
next hop self none;
};
}
# filter f_transit_in_v6 {
# scrub_own_communities();
# reject_rpki_rov_invalid();
# reject_bogon_asns();
# reject_long_aspaths();
# reject_bogon_prefixes_v6();
# reject_small_prefixes_v6();
# reject_ixp_lan();
# reject_default_route_v6();
# honor_graceful_shutdown();
# strip_too_many_communities();
#
# bgp_large_community.add((MYASN, 3, 4)); # Route learned from a transit provider
#
# if check_rpki_rov_valid() then {
# bgp_large_community.add((MYASN, 6, 1)); # Valid matching ROA exists
# }
#
# accept;
# }
# filter functions
function transit_import(int transit_id) {
scrub_own_communities();
reject_rpki_rov_invalid();
reject_bogon_asns();
reject_long_aspaths();
reject_bogon_prefixes_v6();
reject_small_prefixes_v6();
reject_ixp_lan();
reject_default_route_v6();
honor_graceful_shutdown();
strip_too_many_communities();
bgp_large_community.add((MYASN, 1, 4)); # Route learned from a transit provider
if check_rpki_rov_valid() then {
bgp_large_community.add((MYASN, 6, 1)); # Valid matching ROA exists
}
return true;
}
{% for transit in transits | sort(attribute='asn,name') %}
function transit_{{ transit.name }}_export() {
}
{% endfor %}
# sessions
{% for transit in transits | sort(attribute='asn,name') %}
protocol bgp transit_{{ transit.name }} from transit {
neigbor {{ transit.peer_ipv6 }} as {{ transit.as }};
{% if transit.description is defined %}
description {{ transit.description }};
{% endif %}
ipv6 {
import where transit_{{ transit.name }}_import()
export where transit_{{ transit.name }}_export()
};
}
{% endfor %}