53 lines
1.3 KiB
Django/Jinja
53 lines
1.3 KiB
Django/Jinja
{% if enable_bgp %}
|
|
{% if peers is defined and peers | length > 0 %}
|
|
{% for peer in peers | sort(attribute='asn,name') %}
|
|
|
|
filter 'ebgp_AS{{ peer.asn }}_{{ peer.name }}_import' {
|
|
if ! ebgp_import_peer({{ peer.asn }}) then reject;
|
|
|
|
bgp_large_community.add((myasn, lc_route_relation, 3)); # Learned from peering partner
|
|
|
|
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 'peer_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 'peer_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 %}
|