Files
as205079-automation/ansible/roles/bird2/templates/bgp_transits.conf.j2

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