78 lines
1.7 KiB
Django/Jinja
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 %}
|