2121{% elif switch_item .bgp .graceful_restart_helper is not defined and (item .bgp .graceful_restart_helper | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .graceful_restart_helper )) %}
2222 graceful-restart-helper
2323{% endif %}
24- {% if switch_item .bgp .local_as %}
24+ {% if switch_item .bgp .local_as and item . vrf . lower () != 'default' %}
2525 local-as {{ switch_item.bgp.local_as }}
26- {% elif item .bgp .local_as %}
26+ {% elif item .bgp .local_as and item . vrf . lower () != 'default' %}
2727 local-as {{ item.bgp.local_as }}
2828{% endif %}
29- {% set address_family = {'address_family_v4' : false , 'address_family_v6' : false } %}
30- {% if switch_item .bgp_peers is defined %}
31- {% for peer in switch_item .bgp_peers %}
32- {% if "address_family_ipv4_unicast" in peer %}
33- {% set _ = address_family .update ({'address_family_v4' : true }) %}
34- {% elif "address_family_ipv6_unicast" in peer %}
35- {% set _ = address_family .update ({'address_family_v6' : true }) %}
36- {% endif %}
37- {% endfor %}
38- {% endif %}
39- {% if switch_item .bgp .address_family_ipv 4_unicast or address_family ["address_family_v4" ] is true %}
4029 address-family ipv4 unicast
30+ {% if switch_item .bgp .address_family_ipv 4_unicast %}
4131 {% if (switch_item .bgp .address_family_ipv 4_unicast .ebgp_distance or switch_item .bgp .address_family_ipv 4_unicast .ibgp_distance or switch_item .bgp .address_family_ipv 4_unicast .local_distance ) %}
4232 distance {{ switch_item.bgp.address_family_ipv4_unicast.ebgp_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv4_unicast.ebgp_distance) }} {{ switch_item.bgp.address_family_ipv4_unicast.ibgp_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv4_unicast.ibgp_distance) }} {{ switch_item.bgp.address_family_ipv4_unicast.local_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv4_unicast.local_distance) }}
4333 {% endif %}
5343 {% if switch_item .bgp .address_family_ipv 4_unicast .additional_paths_selection_route_map %}
5444 additional-paths selection route-map {{ switch_item.bgp.address_family_ipv4_unicast.additional_paths_selection_route_map }}
5545 {% endif %}
56- {% if switch_item .redistribution %}
57- {% for switch_redist in switch_item .redistribution %}
58- {% if switch_redist .source == 'static' and switch_redist .route_map_ipv 4 %}
46+ {% endif %}
47+ {% if switch_item .redistribution %}
48+ {% for switch_redist in switch_item .redistribution %}
49+ {% if switch_redist .source == 'static' and switch_redist .route_map_ipv 4 %}
5950 redistribute static route-map {{ switch_redist.route_map_ipv4 }}
60- {% endif %}
61- {% endfor %}
62- {% endif %}
63- !
51+ {% endif %}
52+ {% if switch_redist .source == 'ospf' and switch_redist .route_map_ipv 4 %}
53+ redistribute ospf {{ switch_redist.protocol_tag }} route-map {{ switch_redist.route_map_ipv4 }}
54+ {% endif %}
55+ {% endfor %}
6456{% endif %}
65- {% if switch_item .bgp .address_family_ipv 6_unicast or address_family ["address_family_v6" ] is true %}
6657 address-family ipv6 unicast
58+ {% if switch_item .bgp .address_family_ipv 6_unicast %}
6759 {% if (switch_item .bgp .address_family_ipv 6_unicast .ebgp_distance or switch_item .bgp .address_family_ipv 6_unicast .ibgp_distance or switch_item .bgp .address_family_ipv 6_unicast .local_distance ) %}
6860 distance {{ switch_item.bgp.address_family_ipv6_unicast.ebgp_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv6_unicast.ebgp_distance) }} {{ switch_item.bgp.address_family_ipv6_unicast.ibgp_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv6_unicast.ibgp_distance) }} {{ switch_item.bgp.address_family_ipv6_unicast.local_distance | default(defaults.vxlan.overlay_extensions.vrf_lites.bgp.address_family_ipv6_unicast.local_distance) }}
6961 {% endif %}
7971 {% if switch_item .bgp .address_family_ipv 6_unicast .additional_paths_selection_route_map %}
8072 additional-paths selection route-map {{ switch_item.bgp.address_family_ipv6_unicast.additional_paths_selection_route_map }}
8173 {% endif %}
82- {% if switch_item .redistribution %}
83- {% for switch_redist in switch_item .redistribution %}
84- {% if switch_redist .source == 'static' and switch_redist .route_map_ipv 6 %}
74+ {% endif %}
75+ {% if switch_item .redistribution %}
76+ {% for switch_redist in switch_item .redistribution %}
77+ {% if switch_redist .source == 'static' and switch_redist .route_map_ipv 6 %}
8578 redistribute static route-map {{ switch_redist.route_map_ipv6 }}
86- {% endif %}
87- {% endfor %}
88- {% endif %}
89- !
79+ {% endif %}
80+ {% if switch_redist .source == 'ospf' and switch_redist .route_map_ipv 6 %}
81+ redistribute ospf {{ switch_redist.protocol_tag }} route-map {{ switch_redist.route_map_ipv6 }}
82+ {% endif %}
83+ {% endfor %}
9084{% endif %}
85+ {# bgp peer loop #}
9186{% if switch_item .bgp_peers %}
92- {% for peer in switch_item .bgp_peers %}
93- neighbor {{ peer.address }}
94- remote-as {{ peer.remote_as }}
95- {% if peer .local_as %}
96- local-as {{ peer.local_as }} no-prepend replace-as
87+ {% for peer in switch_item .bgp_peers %}
88+ neighbor {{ peer.address }}
89+ remote-as {{ peer.remote_as }}
90+ {% if peer .local_as %}
91+ local-as {{ peer.local_as }} no-prepend replace-as
92+ {% endif %}
93+ {% if peer .description %}
94+ description {{ peer.description }}
95+ {% endif %}
96+ {% if peer .update_source %}
97+ update-source {{ peer.update_source }}
98+ {% elif switch_item .loopback_id %}
99+ update-source loopback{{ switch_item.loopback_id }}
100+ {% endif %}
101+ {% if peer .bfd .enabled | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .bfd .enabled ) %}
102+ bfd
103+ {% endif %}
104+ {% if peer .disable_connected_check | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .disable_connected_check ) %}
105+ disable-connected-check
106+ {% endif %}
107+ {% if peer .remove_private_as_all | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .remove_private_as_all ) %}
108+ remove-private-as all
109+ {% elif peer .remove_private_as | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .remove_private_as ) %}
110+ remove-private-as
111+ {% endif %}
112+ {% if peer .ebgp_multihop is defined %}
113+ ebgp-multihop {{ peer.ebgp_multihop }}
114+ {% endif %}
115+ {% if peer .password is defined %}
116+ password 3 {{ peer.password }}
117+ {% endif %}
118+ {% if (peer .address | ipv 4()) or peer .address_family_ipv 4_unicast is defined %}
119+ address-family ipv4 unicast
120+ {% endif %}
121+ {% if peer .address_family_ipv 4_unicast %}
122+ {% if peer .address_family_ipv 4_unicast .route_map_in %}
123+ route-map {{ peer.address_family_ipv4_unicast.route_map_in }} in
97124 {% endif %}
98- {% if peer .description %}
99- description {{ peer.description }}
125+ {% if peer .address_family_ipv 4 _unicast . route_map_out %}
126+ route-map {{ peer.address_family_ipv4_unicast.route_map_out }} out
100127 {% endif %}
101- {% if peer .update_source %}
102- update-source {{ peer.update_source }}
103- {% elif switch_item .loopback_id %}
104- update-source Loopback{{ switch_item.loopback_id }}
128+ {% if peer .address_family_ipv 4_unicast .weight %}
129+ weight {{ peer.address_family_ipv4_unicast.weight }}
105130 {% endif %}
106- {% if peer .bfd .enabled | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .bfd .enabled ) %}
107- bfd
108- {% endif %}
109- {% if peer .disable_connected_check | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .disable_connected_check ) %}
110- disable-connected-check
111- {% endif %}
112- {% if peer .remove_private_as_all | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .remove_private_as_all ) %}
113- remove-private-as all
114- {% elif peer .remove_private_as | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .remove_private_as ) %}
115- remove-private-as
116- {% endif %}
117- {% if peer .ebgp_multihop is defined %}
118- ebgp-multihop {{ peer.ebgp_multihop }}
119- {% endif %}
120- {% if peer .password is defined %}
121- password 3 {{ peer.password }}
122- {% endif %}
123- {% if peer .address_family_ipv 4_unicast %}
124- address-family ipv4 unicast
125- {% if peer .address_family_ipv 4_unicast .route_map_in %}
126- route-map {{ peer.address_family_ipv4_unicast.route_map_in }} in
127- {% endif %}
128- {% if peer .address_family_ipv 4_unicast .route_map_out %}
129- route-map {{ peer.address_family_ipv4_unicast.route_map_out }} out
130- {% endif %}
131- {% if peer .address_family_ipv 4_unicast .weight %}
132- weight {{ peer.address_family_ipv4_unicast.weight }}
133- {% endif %}
134- {% if peer .address_family_ipv 4_unicast .allow_as_in %}
135- allowas-in {{ peer.address_family_ipv4_unicast.allow_as_in_number | default(defaults.vxlan.overlay_extensions.vrf_lites.switches.bgp_peers.address_family_ipv4_unicast.allow_as_in_number) }}
136- {% endif %}
137- {% if peer .address_family_ipv 4_unicast .send_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 4_unicast .send_community ) %}
138- send-community
139- {% endif %}
140- {% if peer .address_family_ipv 4_unicast .send_ext_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 4_unicast .send_ext_community ) %}
141- send-community extended
142- {% endif %}
143- {% if peer .address_family_ipv 4_unicast .as_override | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .as_override ) %}
144- as-override
145- {% endif %}
146- {% if peer .address_family_ipv 4_unicast .next_hop_self | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .next_hop_self ) %}
147- next-hop-self
148- {% endif %}
149- {% if peer .address_family_ipv 4_unicast .default_originate | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .default_originate ) %}
150- default-originate
151- {% endif %}
152- !
131+ {% if peer .address_family_ipv 4_unicast .allow_as_in %}
132+ allowas-in {{ peer.address_family_ipv4_unicast.allow_as_in_number | default(defaults.vxlan.overlay_extensions.vrf_lites.switches.bgp_peers.address_family_ipv4_unicast.allow_as_in_number) }}
153133 {% endif %}
154- {% if peer .address_family_ipv 6_unicast %}
155- address-family ipv6 unicast
156- {% if peer .address_family_ipv 6_unicast .route_map_in %}
157- route-map {{ peer.address_family_ipv6_unicast.route_map_in }} in
158- {% endif %}
159- {% if peer .address_family_ipv 6_unicast .route_map_out %}
160- route-map {{ peer.address_family_ipv6_unicast.route_map_out }} out
161- {% endif %}
162- {% if peer .address_family_ipv 6_unicast .weight %}
163- weight {{ peer.address_family_ipv6_unicast.weight }}
164- {% endif %}
165- {% if peer .address_family_ipv 6_unicast .allow_as_in %}
166- allowas-in {{ peer.address_family_ipv6_unicast.allow_as_in_number | default(defaults.vxlan.overlay_extensions.vrf_lites.switches.bgp_peers.address_family_ipv6_unicast.allow_as_in_number) }}
167- {% endif %}
168- {% if peer .address_family_ipv 6_unicast .send_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .send_community ) %}
169- send-community
170- {% endif %}
171- {% if peer .address_family_ipv 6_unicast .send_ext_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .send_ext_community ) %}
172- send-community extended
173- {% endif %}
174- {% if peer .address_family_ipv 6_unicast .as_override | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .as_override ) %}
175- as-override
176- {% endif %}
177- {% if peer .address_family_ipv 6_unicast .next_hop_self | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .next_hop_self ) %}
178- next-hop-self
179- {% endif %}
180- {% if peer .address_family_ipv 6_unicast .default_originate | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .default_originate ) %}
181- default-originate
182- {% endif %}
134+ {% if peer .address_family_ipv 4_unicast .send_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 4_unicast .send_community ) %}
135+ send-community
183136 {% endif %}
184- {% endfor %}
137+ {% if peer .address_family_ipv 4_unicast .send_ext_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 4_unicast .send_ext_community ) %}
138+ send-community extended
139+ {% endif %}
140+ {% if peer .address_family_ipv 4_unicast .as_override | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .as_override ) %}
141+ as-override
142+ {% endif %}
143+ {% if peer .address_family_ipv 4_unicast .next_hop_self | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .next_hop_self ) %}
144+ next-hop-self
145+ {% endif %}
146+ {% if peer .address_family_ipv 4_unicast .default_originate | default (defaults .vxlan .overlay_extensions .vrf_lites .bgp .address_family_ipv 4_unicast .default_originate ) %}
147+ default-originate
148+ {% endif %}
149+ {% endif %}
150+ {% if (peer .address | ipv 6()) or peer .address_family_ipv 6_unicast is defined %}
151+ address-family ipv6 unicast
152+ {% endif %}
153+ {% if peer .address_family_ipv 6_unicast %}
154+ {% if peer .address_family_ipv 6_unicast .route_map_in %}
155+ route-map {{ peer.address_family_ipv6_unicast.route_map_in }} in
156+ {% endif %}
157+ {% if peer .address_family_ipv 6_unicast .route_map_out %}
158+ route-map {{ peer.address_family_ipv6_unicast.route_map_out }} out
159+ {% endif %}
160+ {% if peer .address_family_ipv 6_unicast .weight %}
161+ weight {{ peer.address_family_ipv6_unicast.weight }}
162+ {% endif %}
163+ {% if peer .address_family_ipv 6_unicast .allow_as_in %}
164+ allowas-in {{ peer.address_family_ipv6_unicast.allow_as_in_number | default(defaults.vxlan.overlay_extensions.vrf_lites.switches.bgp_peers.address_family_ipv6_unicast.allow_as_in_number) }}
165+ {% endif %}
166+ {% if peer .address_family_ipv 6_unicast .send_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .send_community ) %}
167+ send-community
168+ {% endif %}
169+ {% if peer .address_family_ipv 6_unicast .send_ext_community | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .send_ext_community ) %}
170+ send-community extended
171+ {% endif %}
172+ {% if peer .address_family_ipv 6_unicast .as_override | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .as_override ) %}
173+ as-override
174+ {% endif %}
175+ {% if peer .address_family_ipv 6_unicast .next_hop_self | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .next_hop_self ) %}
176+ next-hop-self
177+ {% endif %}
178+ {% if peer .address_family_ipv 6_unicast .default_originate | default (defaults .vxlan .overlay_extensions .vrf_lites .switches .bgp_peers .address_family_ipv 6_unicast .default_originate ) %}
179+ default-originate
180+ {% endif %}
181+ {% endif %}
182+ {% endfor %}
185183{% endif %}
186184{% endmacro %}
187185
@@ -202,5 +200,6 @@ router bgp {{ MD_Extended.vxlan.global[simplified_fabric_type].bgp_asn }}
202200router bgp {{ MD_Extended.vxlan.global[simplified_fabric_type] .bgp_asn }}
203201 {# Other VRFs #}
204202 vrf {{ item.vrf }}
203+
205204 {{- vrf_lite_ebgp_vrf_config(item, switch_item, defaults) | indent(2) -}}
206205{% endif %}
0 commit comments