! {% block banner %} ! =========== Managed by sonic-cfggen DO NOT edit manually! ==================== ! generated by templates/quagga/bgpd.conf.j2 using minigraph_facts.py ! file: bgpd.conf ! {% endblock banner %} ! {% block system_init %} hostname {{ inventory_hostname }} password zebra log syslog informational log facility local4 ! enable password {# {{ en_passwd }} TODO: param needed #} {% endblock system_init %} ! {% block bgp_init %} ! ! bgp multiple-instance ! router bgp {{ minigraph_bgp_asn }} bgp log-neighbor-changes bgp bestpath as-path multipath-relax {# TODO: use lo[0] for backward compatibility, will revisit the case with multiple lo interfaces #} bgp router-id {{ minigraph_lo_interfaces[0]['addr'] }} {# advertise loopback #} {% for lo in minigraph_lo_interfaces %} {% if lo['addr'] | ipv4 %} network {{ lo['addr'] }}/32 {% elif lo['addr'] | ipv6 %} address-family ipv6 network {{ lo['addr'] }}/128 exit-address-family {% endif %} {% endfor %} {% endblock bgp_init %} {% block vlan_advertisement %} {% for interface in minigraph_interfaces %} {% if interface['name'].startswith('Vlan') %} network {{ interface['subnet'] }} {% endif %} {% endfor %} {% endblock vlan_advertisement %} {% block bgp_sessions %} {% for bgp_session in minigraph_bgp %} {% if bgp_session['asn'] != 0 %} neighbor {{ bgp_session['addr'] }} remote-as {{ bgp_session['asn'] }} neighbor {{ bgp_session['addr'] }} description {{ bgp_session['name'] }} {% if minigraph_devices[inventory_hostname]['type'] == 'ToRRouter' %} neighbor {{ bgp_session['addr'] }} allowas-in 1 {% endif %} {% if bgp_session['addr'] | ipv6 %} address-family ipv6 neighbor {{ bgp_session['addr'] }} activate maximum-paths 64 exit-address-family {% endif %} {% endif %} {% endfor %} {% endblock bgp_sessions %} ! maximum-paths 64 ! route-map ISOLATE permit 10 set as-path prepend {{ minigraph_bgp_asn }} !