Files

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 %}