54 lines
1.4 KiB
Django/Jinja
54 lines
1.4 KiB
Django/Jinja
{% if enable_bgp %}
|
|
{% if transits is defined and transits | length > 0 %}
|
|
{% for peer in transits | sort(attribute='asn,name') %}
|
|
|
|
filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_import' {
|
|
if ! ebgp_import_transit({{ peer.asn }}) then reject;
|
|
|
|
bgp_large_community.add((myasn, lc_route_relation, 4)); # Learned from transit
|
|
bgp_large_community.add((myasn, lc_from_transit, {{ peer.asn }}));
|
|
|
|
accept;
|
|
}
|
|
|
|
filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_export' {
|
|
if ! ebgp_export({{ peer.asn }}) then reject;
|
|
accept;
|
|
}
|
|
|
|
{% for afi in afis %}
|
|
{% if afi == 4 and peer.peer_ipv4 is defined %}
|
|
protocol bgp 'transit_AS{{ peer.asn }}_{{ peer.name }}_v{{ afi }}' {
|
|
local as myasn;
|
|
hold time 90;
|
|
neighbor {{ peer.peer_ipv4 }} as {{ peer.asn }};
|
|
|
|
ipv{{ afi }} {
|
|
import keep filtered;
|
|
import filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_import';
|
|
export filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_export';
|
|
};
|
|
}
|
|
|
|
{% elif afi == 6 and peer.peer_ipv6 is defined %}
|
|
protocol bgp 'transit_AS{{ peer.asn }}_{{ peer.name }}_v{{ afi }}' {
|
|
local as myasn;
|
|
hold time 90;
|
|
neighbor {{ peer.peer_ipv6 }} as {{ peer.asn }};
|
|
|
|
ipv{{ afi }} {
|
|
import keep filtered;
|
|
import filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_import';
|
|
export filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_export';
|
|
};
|
|
}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
# bgp is not enabled
|
|
{% endif %}
|