c9cc7aea41
Modify minigraph parser output format so it fit DB schema Modify configuration templates to fit new schema Systemd services dependencies are modified so database starts before any configuration consumer
125 lines
4.0 KiB
Django/Jinja
125 lines
4.0 KiB
Django/Jinja
!
|
|
{% block banner %}
|
|
! =========== Managed by sonic-cfggen DO NOT edit manually! ====================
|
|
! generated by templates/quagga/bgpd.conf.j2 with config DB data
|
|
! file: bgpd.conf
|
|
!
|
|
{% endblock banner %}
|
|
!
|
|
{% block system_init %}
|
|
hostname {{ DEVICE_METADATA['localhost']['hostname'] }}
|
|
password zebra
|
|
log syslog informational
|
|
log facility local4
|
|
! enable password {# {{ en_passwd }} TODO: param needed #}
|
|
{% endblock system_init %}
|
|
!
|
|
{% if DEVICE_METADATA['localhost'].has_key('bgp_asn') %}
|
|
{% block bgp_init %}
|
|
!
|
|
! bgp multiple-instance
|
|
!
|
|
route-map FROM_BGP_SPEAKER_V4 permit 10
|
|
!
|
|
route-map TO_BGP_SPEAKER_V4 deny 10
|
|
!
|
|
router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }}
|
|
bgp log-neighbor-changes
|
|
bgp bestpath as-path multipath-relax
|
|
no bgp default ipv4-unicast
|
|
{# Advertise graceful restart capability for ToR #}
|
|
{% if DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %}
|
|
bgp graceful-restart
|
|
{% endif %}
|
|
{% for (name, prefix) in LOOPBACK_INTERFACE %}
|
|
{# TODO: use v4 lo for backward compatibility, will revisit the case with multiple lo interfaces #}
|
|
{% if prefix | ipv4 %}
|
|
bgp router-id {{ prefix | ip }}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{# advertise loopback #}
|
|
{% for (name, prefix) in LOOPBACK_INTERFACE %}
|
|
{% if prefix | ipv4 %}
|
|
network {{ prefix | ip }}/32
|
|
{% elif prefix | ipv6 %}
|
|
address-family ipv6
|
|
network {{ prefix | ip }}/128
|
|
exit-address-family
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endblock bgp_init %}
|
|
{% endif %}
|
|
{% block vlan_advertisement %}
|
|
{% for (name, prefix) in VLAN_INTERFACE %}
|
|
{% if prefix | ipv4 %}
|
|
network {{ prefix }}
|
|
{% elif prefix | ipv6 %}
|
|
address-family ipv6
|
|
network {{ prefix }}
|
|
exit-address-family
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endblock vlan_advertisement %}
|
|
{% block bgp_sessions %}
|
|
{% for neighbor_addr, bgp_session in BGP_NEIGHBOR.iteritems() %}
|
|
{% if bgp_session['asn'] != 0 %}
|
|
neighbor {{ neighbor_addr }} remote-as {{ bgp_session['asn'] }}
|
|
neighbor {{ neighbor_addr }} description {{ bgp_session['name'] }}
|
|
{% if bgp_session.has_key('admin_status') and bgp_session['admin_status'] == 'down' or not bgp_session.has_key('admin_status') and DEVICE_METADATA['localhost'].has_key('default_bgp_status') and DEVICE_METADATA['localhost']['default_bgp_status'] == 'down' %}
|
|
neighbor {{ neighbor_addr }} shutdown
|
|
{% endif %}
|
|
{% if neighbor_addr | ipv4 %}
|
|
address-family ipv4
|
|
{% if DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %}
|
|
neighbor {{ neighbor_addr }} allowas-in 1
|
|
{% endif %}
|
|
neighbor {{ neighbor_addr }} activate
|
|
maximum-paths 64
|
|
exit-address-family
|
|
{% endif %}
|
|
{% if neighbor_addr | ipv6 %}
|
|
address-family ipv6
|
|
{% if DEVICE_METADATA['localhost']['type'] == 'ToRRouter' %}
|
|
neighbor {{ neighbor_addr }} allowas-in 1
|
|
{% endif %}
|
|
neighbor {{ neighbor_addr }} activate
|
|
maximum-paths 64
|
|
exit-address-family
|
|
{% endif %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endblock bgp_sessions %}
|
|
{% block bgp_peers_with_range %}
|
|
{% if BGP_PEER_RANGE %}
|
|
{% for bgp_peer in BGP_PEER_RANGE.values() %}
|
|
neighbor {{ bgp_peer['name'] }} peer-group
|
|
neighbor {{ bgp_peer['name'] }} passive
|
|
neighbor {{ bgp_peer['name'] }} remote-as {{deployment_id_asn_map[deployment_id] }}
|
|
neighbor {{ bgp_peer['name'] }} ebgp-multihop 255
|
|
neighbor {{ bgp_peer['name'] }} soft-reconfiguration inbound
|
|
neighbor {{ bgp_peer['name'] }} update-source Loopback0
|
|
neighbor {{ bgp_peer['name'] }} route-map FROM_BGP_SPEAKER_V4 in
|
|
neighbor {{ bgp_peer['name'] }} route-map TO_BGP_SPEAKER_V4 out
|
|
{% for ip_range in bgp_peer['ip_range'] %}
|
|
bgp listen range {{ip_range}} peer-group {{ bgp_peer['name'] }}
|
|
{% endfor %}
|
|
address-family ipv4
|
|
neighbor {{ bgp_peer['name'] }} activate
|
|
maximum-paths 64
|
|
exit-address-family
|
|
address-family ipv6
|
|
neighbor {{ bgp_peer['name'] }} activate
|
|
maximum-paths 64
|
|
exit-address-family
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endblock bgp_peers_with_range %}
|
|
!
|
|
{% if DEVICE_METADATA['localhost'].has_key('bgp_asn') %}
|
|
maximum-paths 64
|
|
!
|
|
route-map ISOLATE permit 10
|
|
set as-path prepend {{ DEVICE_METADATA['localhost']['bgp_asn'] }}
|
|
{% endif %}
|
|
!
|