frr defaults datacenter hostname {{ansible_hostname}} ! service integrated-vtysh-config ! log syslog informational ! {% if autobgp_interfaces is defined and autobgp_interfaces != [] %} {% for item in autobgp_interfaces %} interface {{ item['name'] }} ipv6 nd ra-interval 10 no ipv6 nd suppress-ra ! {% endfor %} {% endif %} router bgp {{host_ASN}} bgp router-id {% if host_loopback_IP is defined %}{{host_loopback_IP}}{% else %}{{hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}{% endif %} bgp bestpath as-path multipath-relax bgp bestpath compare-routerid {% if autobgp_interfaces is defined and autobgp_interfaces != [] %} neighbor fabric peer-group neighbor fabric remote-as external neighbor fabric description Internal Fabric Network neighbor fabric capability extended-nexthop {% endif %} {% if addressed_interfaces is defined and addressed_interfaces != [] %} {% for item in addressed_interfaces %} {% if item['bgpPeerIP'] is defined %} neighbor {{ item['bgpPeerIP'] }} remote-as {{ item['bgpPeerASN'] }} {% endif %} {% endfor %} {% endif %} {% if autobgp_interfaces is defined and autobgp_interfaces != [] %} {% for item in autobgp_interfaces %} neighbor {{ item['name'] }} interface peer-group fabric {% endfor %} {% endif %} {% if frr_other_peers is defined and frr_other_peers != [] %} {% for item in frr_other_peers %} neighbor {{ item['ip'] }} remote-as {{ item['remote_ASN'] }} {% endfor %} {% endif %} {% if bond_interfaces is defined and bond_interfaces != [] %} {% for item in bond_interfaces %} neighbor {{ item['ip'] }} remote-as {{ item['remote_ASN'] }} {% endfor %} {% endif %} ! address-family ipv4 unicast {% if host_loopback_IP is defined %} network {{host_loopback_IP}}/32 {% endif %} {% if bgp_redistribute_connected is defined and bgp_redistribute_connected %} redistribute connected {% endif %} {% if networks_to_announce_ipv4 is defined and networks_to_announce_ipv4 != [] %} {% for item in networks_to_announce_ipv4 %} network {{ item }} {% endfor %} {% endif %} {% if autobgp_interfaces is defined and autobgp_interfaces != [] %} neighbor fabric activate neighbor fabric prefix-list AS{{host_ASN}}-OUT out {% endif %} {% if frr_other_peers is defined and frr_other_peers != [] %} {% for item in frr_other_peers %} neighbor {{ item['ip'] }} remote-as {{ item['remote_ASN'] }} prefix-list AS{{host_ASN}}-OUT out {% endfor %} {% endif %} {% if addressed_interfaces is defined and addressed_interfaces != [] %} {% for item in addressed_interfaces %} {% if item['bgpPeerIP'] is defined %} neighbor {{ item['bgpPeerIP'] }} prefix-list AS{{host_ASN}}-OUT out {% endif %} {% endfor %} {% endif %} exit-address-family ! address-family ipv6 unicast {% if host_loopback_IP_v6 is defined %} network {{host_loopback_IP_v6}}/128 {% endif %} {% if frr_other_peers is defined and frr_other_peers != [] %} {% for item in frr_other_peers %} neighbor {{ item['ip'] }} prefix-list AS{{host_ASN}}-OUT out {% endfor %} {% endif %} {% if autobgp_interfaces is defined and autobgp_interfaces != [] %} neighbor fabric activate neighbor fabric prefix-list AS{{host_ASN}}-OUT out {% endif %} {% if addressed_interfaces is defined and addressed_interfaces != [] %} {% for item in addressed_interfaces %} {% if item['bgpPeerIP'] is defined %} neighbor {{ item['bgpPeerIP'] }} prefix-list AS{{host_ASN}}-OUT out {% endif %} {% endfor %} {% endif %} exit-address-family ! address-family l2vpn evpn neighbor fabric activate advertise-all-vni advertise-default-gw exit-address-family ! {% if host_loopback_IP is defined %}ip prefix-list AS{{host_ASN}}-OUT seq 5 permit {{host_loopback_IP}}/32{% endif %} {% if networks_to_announce_ipv4 is defined and networks_to_announce_ipv4 != [] %} {% for item in networks_to_announce_ipv4 %} ip prefix-list AS{{host_ASN}}-OUT seq {{loop.index+5}} permit {{ item }} {% endfor %} {% endif %} {% if host_loopback_IP_v6 is defined %}ipv6 prefix-list AS{{host_ASN}}-OUT seq 5 permit {{host_loopback_IP_v6}}/128{% endif %}