From 5831bc9abe8fabc23da445282cfdf068e1673dee Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Fri, 4 Oct 2024 01:55:19 -0700 Subject: [PATCH 1/8] Updated the redistribute routes model --- .../documentation/devices/router-bgp-base.md | 1 - .../router-bgp-vrf-address-families.md | 12 +- .../intended/configs/router-bgp-base.cfg | 1 - .../router-bgp-vrf-address-families.cfg | 12 +- .../inventory/host_vars/router-bgp-base.yml | 66 +- .../host_vars/router-bgp-v4-evpn.yml | 5 +- .../host_vars/router-bgp-v4-v6-evpn.yml | 8 +- .../router-bgp-vrf-address-families.yml | 116 +- .../host_vars/router-bgp-vrf-lite.yml | 8 +- .../intended/configs/host1.cfg | 91 + .../inventory/host_vars/host1/router-bgp.yml | 101 + .../docs/tables/router-bgp.md | 1157 ++++++++- .../j2templates/eos/router-bgp.j2 | 946 +++++++- .../schema/eos_cli_config_gen.schema.yml | 2115 ++++++++++++++--- .../schema_fragments/router_bgp.schema.yml | 1745 ++++++++++++-- 15 files changed, 5612 insertions(+), 772 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md index eda3a26d336..688a680c3f1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md @@ -230,7 +230,6 @@ router bgp 65101 aggregate-address 2.2.1.0/24 redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP redistribute connected rcf Router_BGP_Connected() - redistribute ospf include leaked redistribute ospf match internal redistribute ospf match external redistribute ospf match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-1 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md index 8b71bbe071e..c9ebf612543 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md @@ -172,12 +172,12 @@ router bgp 65001 neighbor aa::2 rcf out VRF_AFIPV6_RCF_OUT() network aa::/64 no bgp redistribute-internal - redistribute connected rcf VRF_AFIPV6_RCF_CONNECTED() - redistribute isis include leaked - redistribute ospfv3 match external - redistribute ospfv3 match internal include leaked - redistribute ospfv3 match nssa-external - redistribute static route-map VRF_AFIPV6_RM_STATIC + redistribute connected rcf VRF_AFIPV6_RCF_CONNECTED() + redistribute isis include leaked + redistribute ospfv3 match internal include leaked + redistribute ospfv3 match external + redistribute ospfv3 match nssa-external + redistribute static route-map VRF_AFIPV6_RM_STATIC ! address-family ipv6 multicast bgp missing-policy direction in action deny diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg index 33d889f9403..a5bebbc4a54 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg @@ -90,7 +90,6 @@ router bgp 65101 aggregate-address 2.2.1.0/24 redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP redistribute connected rcf Router_BGP_Connected() - redistribute ospf include leaked redistribute ospf match internal redistribute ospf match external redistribute ospf match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-1 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg index 0a929a41058..d4c88660449 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg @@ -111,12 +111,12 @@ router bgp 65001 neighbor aa::2 rcf out VRF_AFIPV6_RCF_OUT() network aa::/64 no bgp redistribute-internal - redistribute connected rcf VRF_AFIPV6_RCF_CONNECTED() - redistribute isis include leaked - redistribute ospfv3 match external - redistribute ospfv3 match internal include leaked - redistribute ospfv3 match nssa-external - redistribute static route-map VRF_AFIPV6_RM_STATIC + redistribute connected rcf VRF_AFIPV6_RCF_CONNECTED() + redistribute isis include leaked + redistribute ospfv3 match internal include leaked + redistribute ospfv3 match external + redistribute ospfv3 match nssa-external + redistribute static route-map VRF_AFIPV6_RM_STATIC ! address-family ipv6 multicast bgp missing-policy direction in action deny diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-base.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-base.yml index f3ad8a3b4f0..571c8abc08a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-base.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-base.yml @@ -80,24 +80,25 @@ router_bgp: attribute_map: RM-ATTRIBUTE match_map: RM-MATCH advertise_only: true - redistribute_routes: - - source_protocol: ospf - include_leaked: true - - source_protocol: ospf - ospf_route_type: internal - - source_protocol: ospf - ospf_route_type: external - - source_protocol: ospf - ospf_route_type: nssa-external 1 - route_map: RM-REDISTRIBUTE-OSPF-NSSA-1 - include_leaked: true - - source_protocol: bgp + redistribute: + ospf: + match_internal: + enabled: true + match_external: + enabled: true + match_nssa_external: + enabled: true + nssa_type: 1 + route_map: RM-REDISTRIBUTE-OSPF-NSSA-1 + include_leaked: true + bgp: + enabled: true route_map: RM-REDISTRIBUTE-BGP - # this should not do anything as leaked is generated when source protocol is bgp - include_leaked: true - - source_protocol: connected + connected: + enabled: true rcf: Router_BGP_Connected() - - source_protocol: static + static: + enabled: true rcf: Router_BGP_Static() address_family_ipv4: networks: @@ -137,23 +138,28 @@ router_bgp: rcf_in: Address_Family_IPV4_In() - ip_address: 10.2.3.9 rcf_out: Address_Family_IPV4_Out() - redistribute_routes: - - source_protocol: ospf - include_leaked: true - ospf_route_type: internal - - source_protocol: ospf - ospf_route_type: external - route_map: RM-REDISTRIBUTE-OSPF-EXTERNAL - include_leaked: true - - source_protocol: ospf - ospf_route_type: nssa-external - - source_protocol: connected + redistribute: + ospf: + match_internal: + enabled: true + include_leaked: true + match_external: + enabled: true + route_map: RM-REDISTRIBUTE-OSPF-EXTERNAL + include_leaked: true + match_nssa_external: + enabled: true + connected: + enabled: true include_leaked: true rcf: Address_Family_IPV4_Connected() - - source_protocol: bgp - - source_protocol: static + bgp: + enabled: true + static: + enabled: true rcf: Address_Family_IPV4_Static() - - source_protocol: dynamic + dynamic: + enabled: true route_map: Address_Family_IPV4_Dynamic_RM address_family_ipv6: networks: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml index f09e3c1db25..84575cac4bc 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml @@ -70,8 +70,9 @@ router_bgp: peer_group: EVPN-OVERLAY-PEERS - ip_address: 10.255.251.1 peer_group: MLAG-IPv4-UNDERLAY-PEER - redistribute_routes: - - source_protocol: connected + redistribute: + connected: + enabled: true route_map: RM-CONN-2-BGP address_family_evpn: bgp: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-v6-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-v6-evpn.yml index 45445179323..a95b0e2726d 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-v6-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-v6-evpn.yml @@ -66,10 +66,12 @@ router_bgp: remote_as: 1 shutdown: false description: TEST - redistribute_routes: - - source_protocol: connected + redistribute: + connected: + enabled: true route_map: RM-CONN-2-BGP - - source_protocol: static + static: + enabled: true route_map: RM-STATIC-2-BGP address_family_evpn: peer_groups: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml index f2264e6d3c1..7cc4d420ece 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml @@ -36,14 +36,18 @@ router_bgp: activate: false additional_paths: receive: true - redistribute_routes: - - source_protocol: ospfv3 - ospf_route_type: external - - source_protocol: ospf - ospf_route_type: internal - - source_protocol: ospfv3 - ospf_route_type: nssa-external 2 - - source_protocol: isis + redistribute: + ospfv3: + match_external: + enabled: true + match_nssa_external: + enabled: true + nssa_type: 2 + ospf: + match_internal: + enabled: true + isis: + enabled: true rcf: Router_BGP_Isis() neighbors: - ip_address: aa::1 @@ -120,16 +124,21 @@ router_bgp: networks: - prefix: 2.3.4.0/24 route_map: BARFOO - redistribute_routes: - - source_protocol: ospf - ospf_route_type: external - - source_protocol: ospfv3 - ospf_route_type: internal - - source_protocol: ospf - ospf_route_type: nssa-external 1 - - source_protocol: connected + redistribute: + ospf: + match_external: + enabled: true + match_nssa_external: + enabled: true + nssa_type: 1 + ospfv3: + match_internal: + enabled: true + connected: + enabled: true rcf: VRF_AFIPV4_RCF_CONNECTED_1() - - source_protocol: static + static: + enabled: true route_map: VRF_AFIPV4_RM_STATIC_1 address_family_ipv6: bgp: @@ -155,19 +164,23 @@ router_bgp: rcf_out: VRF_AFIPV6_RCF_OUT() networks: - prefix: aa::/64 - redistribute_routes: - - source_protocol: ospfv3 - ospf_route_type: external - - source_protocol: ospfv3 - include_leaked: true - ospf_route_type: internal - - source_protocol: ospfv3 - ospf_route_type: nssa-external - - source_protocol: connected + redistribute: + ospfv3: + match_external: + enabled: true + match_internal: + enabled: true + include_leaked: true + match_nssa_external: + enabled: true + connected: + enabled: true rcf: VRF_AFIPV6_RCF_CONNECTED() - - source_protocol: static + static: + enabled: true route_map: VRF_AFIPV6_RM_STATIC - - source_protocol: isis + isis: + enabled: true include_leaked: true address_family_ipv4_multicast: bgp: @@ -186,16 +199,20 @@ router_bgp: networks: - prefix: 239.0.0.0/24 route_map: BARFOO - redistribute_routes: - - source_protocol: ospfv3 - ospf_route_type: external - - source_protocol: ospf - ospf_route_type: internal - - source_protocol: ospf - ospf_route_type: nssa-external 2 - - source_protocol: connected - rcf: VRF_AFIPV4MULTI_RCF_CONNECTED() - - source_protocol: static + redistribute: + ospfv3: + match_external: + enabled: true + ospf: + match_internal: + enabled: true + match_nssa_external: + enabled: true + nssa_type: 2 + connected: + enabled: true + static: + enabled: true route_map: VRF_AFIPV4MULTI_RM_STATIC address_family_ipv6_multicast: bgp: @@ -211,16 +228,19 @@ router_bgp: receive: true networks: - prefix: ff08:1::/64 - redistribute_routes: - - source_protocol: ospf - ospf_route_type: external - - source_protocol: ospfv3 - ospf_route_type: internal - - source_protocol: ospf - ospf_route_type: nssa-external - - source_protocol: connected - rcf: VRF_AFIPV6MULTI_RCF_CONNECTED() - - source_protocol: static + redistribute: + ospf: + match_external: + enabled: true + match_nssa_external: + enabled: true + ospfv3: + match_internal: + enabled: true + connected: + enabled: true + static: + enabled: true route_map: VRF_AFIPV6MULTI_RM_STATIC address_family_flow_spec_ipv4: bgp: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-lite.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-lite.yml index 61eb2d78548..99feac4493d 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-lite.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-lite.yml @@ -70,9 +70,11 @@ router_bgp: description: 'BGP Connection in passive mode' remote_as: 65003 passive: true - redistribute_routes: - - source_protocol: static - - source_protocol: ospf + redistribute: + static: + enabled: true + ospf: + enabled: true include_leaked: true route_map: RM-OSPF-TO-BGP address_family_ipv4: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/intended/configs/host1.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/intended/configs/host1.cfg index 4a55f4af29b..e0a60ccd781 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/intended/configs/host1.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/intended/configs/host1.cfg @@ -121,3 +121,94 @@ interface Ethernet11 ! ip community-list TEST1 permit 1000:1000 ip community-list TEST2 permit 2000:3000 +! +router bgp 65101 + router-id 192.168.255.3 + redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP + redistribute connected rcf Router_BGP_Connected() + redistribute ospf include leaked + redistribute ospf match internal + redistribute ospf match external + redistribute ospf match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-1 + redistribute static rcf Router_BGP_Static() + ! + address-family ipv4 + redistribute bgp leaked + redistribute connected include leaked rcf Address_Family_IPV4_Connected() + redistribute dynamic route-map Address_Family_IPV4_Dynamic_RM + redistribute ospf match internal include leaked + redistribute ospf match external include leaked route-map RM-REDISTRIBUTE-OSPF-EXTERNAL + redistribute ospf match nssa-external + redistribute static rcf Address_Family_IPV4_Static() + ! + address-family ipv4 multicast + redistribute attached-host + redistribute connected + redistribute isis include leaked rcf Router_BGP_Isis() + redistribute ospf match external + redistribute ospf match internal + redistribute ospf match nssa-external 2 + redistribute ospfv3 match external + redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC + ! + address-family ipv6 + redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP + redistribute connected rcf Address_Family_IPV6_Connected() + redistribute ospfv3 match external include leaked + redistribute ospfv3 match internal include leaked route-map RM-REDISTRIBUTE-OSPF-INTERNAL + redistribute ospfv3 match nssa-external 1 + redistribute static route-map RM-IPV6-STATIC-TO-BGP + ! + address-family ipv6 multicast + redistribute isis rcf Router_BGP_Isis() + redistribute ospf match internal + redistribute ospfv3 match external + redistribute ospfv3 match nssa-external 2 + ! + vrf Tenant_A + redistribute connected + redistribute ospf match external include leaked + redistribute ospfv3 match internal + redistribute ospfv3 match nssa-external + ! + vrf TENANT_A_PROJECT01 + redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP + redistribute connected + redistribute isis route-map Router_BGP_Isis + redistribute static rcf Router_BGP_Static() + ! + address-family ipv4 + redistribute connected rcf VRF_AFIPV4_RCF_CONNECTED() + redistribute ospf match external + redistribute ospf match nssa-external 1 + redistribute ospfv3 match internal + redistribute static route-map VRF_AFIPV4_RM_STATIC + ! + vrf TENANT_A_PROJECT02 + redistribute connected + redistribute isis + ! + address-family ipv6 + redistribute connected rcf VRF_AFIPV6_RCF_CONNECTED() + redistribute isis include leaked + redistribute ospfv3 match external + redistribute ospfv3 match internal include leaked + redistribute ospfv3 match nssa-external + redistribute static route-map VRF_AFIPV6_RM_STATIC + ! + vrf VRF03 + redistribute dynamic rcf VRF_RCF_DYNAMIC() + ! + address-family ipv4 multicast + redistribute connected + redistribute ospf match internal + redistribute ospf match nssa-external 2 + redistribute ospfv3 match external + redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC + ! + address-family ipv6 multicast + redistribute connected + redistribute ospf match external + redistribute ospf match nssa-external + redistribute ospfv3 match internal + redistribute static route-map VRF_AFIPV6MULTI_RM_STATIC diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/inventory/host_vars/host1/router-bgp.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/inventory/host_vars/host1/router-bgp.yml index 8518d8b5785..ce05512b40a 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/inventory/host_vars/host1/router-bgp.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen_deprecated_vars/inventory/host_vars/host1/router-bgp.yml @@ -1,4 +1,54 @@ router_bgp: + as: 65101 + router_id: 192.168.255.3 + redistribute_routes: + - source_protocol: ospf + include_leaked: true + - source_protocol: ospf + ospf_route_type: internal + - source_protocol: ospf + ospf_route_type: external + - source_protocol: ospf + ospf_route_type: nssa-external 1 + route_map: RM-REDISTRIBUTE-OSPF-NSSA-1 + include_leaked: true + - source_protocol: bgp + route_map: RM-REDISTRIBUTE-BGP + # this should not do anything as leaked is generated when source protocol is bgp + include_leaked: true + - source_protocol: connected + rcf: Router_BGP_Connected() + - source_protocol: static + rcf: Router_BGP_Static() + address_family_ipv4: + redistribute_routes: + - source_protocol: ospf + include_leaked: true + ospf_route_type: internal + - source_protocol: ospf + ospf_route_type: external + route_map: RM-REDISTRIBUTE-OSPF-EXTERNAL + include_leaked: true + - source_protocol: ospf + ospf_route_type: nssa-external + - source_protocol: connected + include_leaked: true + rcf: Address_Family_IPV4_Connected() + - source_protocol: bgp + - source_protocol: static + rcf: Address_Family_IPV4_Static() + - source_protocol: dynamic + route_map: Address_Family_IPV4_Dynamic_RM + address_family_ipv6_multicast: + redistribute_routes: + - source_protocol: ospfv3 + ospf_route_type: external + - source_protocol: ospf + ospf_route_type: internal + - source_protocol: ospfv3 + ospf_route_type: nssa-external 2 + - source_protocol: isis + rcf: Router_BGP_Isis() address_family_ipv4_multicast: redistribute_routes: - source_protocol: ospf @@ -48,10 +98,37 @@ router_bgp: route_map: RM-REDISTRIBUTE-BGP # this should not do anything as leaked is generated when source protocol is bgp include_leaked: true + address_family_ipv4: + redistribute_routes: + - source_protocol: connected + rcf: VRF_AFIPV4_RCF_CONNECTED() + - source_protocol: static + route_map: VRF_AFIPV4_RM_STATIC + - source_protocol: ospf + ospf_route_type: external + - source_protocol: ospfv3 + ospf_route_type: internal + - source_protocol: ospf + ospf_route_type: nssa-external 1 - name: TENANT_A_PROJECT02 redistribute_routes: - source_protocol: connected - source_protocol: isis + address_family_ipv6: + redistribute_routes: + - source_protocol: ospfv3 + ospf_route_type: external + - source_protocol: ospfv3 + include_leaked: true + ospf_route_type: internal + - source_protocol: ospfv3 + ospf_route_type: nssa-external + - source_protocol: connected + rcf: VRF_AFIPV6_RCF_CONNECTED() + - source_protocol: static + route_map: VRF_AFIPV6_RM_STATIC + - source_protocol: isis + include_leaked: true - name: Tenant_A redistribute_routes: - source_protocol: ospf @@ -66,3 +143,27 @@ router_bgp: redistribute_routes: - source_protocol: dynamic rcf: VRF_RCF_DYNAMIC() + address_family_ipv4_multicast: + redistribute_routes: + - source_protocol: ospfv3 + ospf_route_type: external + - source_protocol: ospf + ospf_route_type: internal + - source_protocol: ospf + ospf_route_type: nssa-external 2 + - source_protocol: connected + rcf: VRF_AFIPV4MULTI_RCF_CONNECTED() + - source_protocol: static + route_map: VRF_AFIPV4MULTI_RM_STATIC + address_family_ipv6_multicast: + redistribute_routes: + - source_protocol: ospf + ospf_route_type: external + - source_protocol: ospfv3 + ospf_route_type: internal + - source_protocol: ospf + ospf_route_type: nssa-external + - source_protocol: connected + rcf: VRF_AFIPV6MULTI_RCF_CONNECTED() + - source_protocol: static + route_map: VRF_AFIPV6MULTI_RM_STATIC diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index a8f3c6818fb..f3ccb48a58a 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -200,7 +200,74 @@ | [      summary_only](## "router_bgp.aggregate_addresses.[].summary_only") | Boolean | | | | | | [      attribute_map](## "router_bgp.aggregate_addresses.[].attribute_map") | String | | | | Route-map name. | | [      match_map](## "router_bgp.aggregate_addresses.[].match_map") | String | | | | Route-map name. | - | [  redistribute_routes](## "router_bgp.redistribute_routes") | List, items: Dictionary | | | | | + | [  redistribute](## "router_bgp.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [    attached_host](## "router_bgp.redistribute.attached_host") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.attached_host.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.attached_host.route_map") | String | | | | | + | [    bgp](## "router_bgp.redistribute.bgp") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.bgp.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.bgp.route_map") | String | | | | | + | [    connected](## "router_bgp.redistribute.connected") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.connected.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.connected.route_map") | String | | | | | + | [      rcf](## "router_bgp.redistribute.connected.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [      include_leaked](## "router_bgp.redistribute.connected.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [    dynamic](## "router_bgp.redistribute.dynamic") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.dynamic.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.dynamic.route_map") | String | | | | | + | [      rcf](## "router_bgp.redistribute.dynamic.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [    isis](## "router_bgp.redistribute.isis") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.isis.enabled") | Boolean | Required | | | | + | [      isis_level](## "router_bgp.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [      route_map](## "router_bgp.redistribute.isis.route_map") | String | | | | | + | [      rcf](## "router_bgp.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [      include_leaked](## "router_bgp.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [    ospf](## "router_bgp.redistribute.ospf") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [      match_external](## "router_bgp.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [        enabled](## "router_bgp.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.redistribute.ospf.match_external.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospf.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      match_internal](## "router_bgp.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [        enabled](## "router_bgp.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.redistribute.ospf.match_internal.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospf.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      match_nssa_external](## "router_bgp.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [        enabled](## "router_bgp.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [        nssa_type](## "router_bgp.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [        route_map](## "router_bgp.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospf.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      route_map](## "router_bgp.redistribute.ospf.route_map") | String | | | | | + | [      include_leaked](## "router_bgp.redistribute.ospf.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [    ospfv3](## "router_bgp.redistribute.ospfv3") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [      match_external](## "router_bgp.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [        enabled](## "router_bgp.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospfv3.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      match_internal](## "router_bgp.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [        enabled](## "router_bgp.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospfv3.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      match_nssa_external](## "router_bgp.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [        enabled](## "router_bgp.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [        nssa_type](## "router_bgp.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [        route_map](## "router_bgp.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.redistribute.ospfv3.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      route_map](## "router_bgp.redistribute.ospfv3.route_map") | String | | | | | + | [      include_leaked](## "router_bgp.redistribute.ospfv3.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [    rip](## "router_bgp.redistribute.rip") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.rip.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.rip.route_map") | String | | | | | + | [    static](## "router_bgp.redistribute.static") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.static.enabled") | Boolean | Required | | | | + | [      route_map](## "router_bgp.redistribute.static.route_map") | String | | | | | + | [      rcf](## "router_bgp.redistribute.static.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [      include_leaked](## "router_bgp.redistribute.static.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [    user](## "router_bgp.redistribute.user") | Dictionary | | | | | + | [      enabled](## "router_bgp.redistribute.user.enabled") | Boolean | Required | | | | + | [      rcf](## "router_bgp.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [  redistribute_routes](## "router_bgp.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [    - source_protocol](## "router_bgp.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [      route_map](## "router_bgp.redistribute_routes.[].route_map") | String | | | | | | [      rcf](## "router_bgp.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | @@ -405,7 +472,74 @@ | [          receive](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.receive") | Boolean | | | | Enable or disable reception of additional-paths. | | [          send](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send") | String | | | Valid Values:
- any
- backup
- ecmp
- limit
- disabled | Select an option to send multiple paths for same prefix through bgp updates.
any: Send any eligible path.
backup: Best path and installed backup path.
ecmp: All paths in best path ECMP group.
limit: Limit to n eligible paths.
disabled: Disable sending any paths. | | [          send_limit](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send_limit") | Integer | | | Min: 2
Max: 64 | Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. | - | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") | List, items: Dictionary | | | | | + | [    redistribute](## "router_bgp.address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [      attached_host](## "router_bgp.address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.attached_host.route_map") | String | | | | | + | [      bgp](## "router_bgp.address_family_ipv4.redistribute.bgp") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.bgp.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.bgp.route_map") | String | | | | | + | [      connected](## "router_bgp.address_family_ipv4.redistribute.connected") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.connected.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.connected.route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute.connected.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute.connected.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      dynamic](## "router_bgp.address_family_ipv4.redistribute.dynamic") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.dynamic.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.dynamic.route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute.dynamic.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [      isis](## "router_bgp.address_family_ipv4.redistribute.isis") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.isis.enabled") | Boolean | Required | | | | + | [        isis_level](## "router_bgp.address_family_ipv4.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.isis.route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      ospf](## "router_bgp.address_family_ipv4.redistribute.ospf") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [        match_external](## "router_bgp.address_family_ipv4.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospf.match_external.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospf.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        match_internal](## "router_bgp.address_family_ipv4.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospf.match_internal.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospf.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        match_nssa_external](## "router_bgp.address_family_ipv4.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [          nssa_type](## "router_bgp.address_family_ipv4.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospf.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.ospf.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospf.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      ospfv3](## "router_bgp.address_family_ipv4.redistribute.ospfv3") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [        match_external](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        match_internal](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        match_nssa_external](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [          enabled](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [          nssa_type](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [          route_map](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [          include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospfv3.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.ospfv3.route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute.ospfv3.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      rip](## "router_bgp.address_family_ipv4.redistribute.rip") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.rip.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.rip.route_map") | String | | | | | + | [      static](## "router_bgp.address_family_ipv4.redistribute.static") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.static.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute.static.route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute.static.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute.static.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      user](## "router_bgp.address_family_ipv4.redistribute.user") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | @@ -716,7 +850,46 @@ | [    networks](## "router_bgp.address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [      - prefix](## "router_bgp.address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [        route_map](## "router_bgp.address_family_ipv6_multicast.networks.[].route_map") | String | | | | | - | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") | List, items: Dictionary | | | | | + | [    redistribute](## "router_bgp.address_family_ipv6_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [      connected](## "router_bgp.address_family_ipv6_multicast.redistribute.connected") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.connected.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.connected.route_map") | String | | | | | + | [      isis](## "router_bgp.address_family_ipv6_multicast.redistribute.isis") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.isis.enabled") | Boolean | Required | | | | + | [        isis_level](## "router_bgp.address_family_ipv6_multicast.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.isis.route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv6_multicast.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        include_leaked](## "router_bgp.address_family_ipv6_multicast.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [      ospf](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [        match_external](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_external.route_map") | String | | | | | + | [        match_internal](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_internal.route_map") | String | | | | | + | [        match_nssa_external](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [          nssa_type](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospf.route_map") | String | | | | | + | [      ospfv3](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [        match_external](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [        match_internal](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [        match_nssa_external](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [          enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [          nssa_type](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [          route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.ospfv3.route_map") | String | | | | | + | [      static](## "router_bgp.address_family_ipv6_multicast.redistribute.static") | Dictionary | | | | | + | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.static.enabled") | Boolean | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.static.route_map") | String | | | | | + | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | | [        include_leaked](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | @@ -1075,7 +1248,74 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].prefix") | String | Required, Unique | | | IPv4 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") | List, items: Dictionary | | | | | + | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.attached_host.route_map") | String | | | | | + | [          bgp](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.bgp") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.bgp.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.bgp.route_map") | String | | | | | + | [          connected](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.connected") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.connected.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.connected.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.connected.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.connected.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          dynamic](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.dynamic") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.dynamic.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.dynamic.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.dynamic.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [          isis](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis.enabled") | Boolean | Required | | | | + | [            isis_level](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          ospf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_internal.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospf.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          ospfv3](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.ospfv3.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          rip](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.rip") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.rip.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.rip.route_map") | String | | | | | + | [          static](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.static") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.static.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.static.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.static.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.static.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          user](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -1109,7 +1349,57 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") | List, items: Dictionary | | | | | + | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv6.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.attached_host") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.attached_host.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.attached_host.route_map") | String | | | | | + | [          bgp](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.bgp") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.bgp.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.bgp.route_map") | String | | | | | + | [          connected](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.connected") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.connected.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.connected.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.connected.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.connected.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          dhcp](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dhcp") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dhcp.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dhcp.route_map") | String | | | | | + | [          dynamic](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dynamic") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dynamic.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dynamic.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.dynamic.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [          isis](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis.enabled") | Boolean | Required | | | | + | [            isis_level](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          ospfv3](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.ospfv3.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          static](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.static") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.static.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.static.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.static.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.static.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          user](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user.enabled") | Boolean | Required | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dhcp
- dynamic
- isis
- ospfv3
- static
- user | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -1132,7 +1422,53 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") | List, items: Dictionary | | | | | + | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host.route_map") | String | | | | | + | [          connected](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.connected") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.connected.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.connected.route_map") | String | | | | | + | [          isis](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis.enabled") | Boolean | Required | | | | + | [            isis_level](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          ospf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_external.route_map") | String | | | | | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_internal.route_map") | String | | | | | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospf.route_map") | String | | | | | + | [          ospfv3](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_internal.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [              include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.match_nssa_external.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.ospfv3.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          static](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | @@ -1155,7 +1491,46 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") | List, items: Dictionary | | | | | + | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | + | [          connected](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.connected") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.connected.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.connected.route_map") | String | | | | | + | [          isis](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis.enabled") | Boolean | Required | | | | + | [            isis_level](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis.isis_level") | String | | | Valid Values:
- level-1
- level-2
- level-1-2 | Redistribute IS-IS route level. | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis.route_map") | String | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.isis.include_leaked") | Boolean | | | | Include following routes while redistributing. | + | [          ospf](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.enabled") | Boolean | | | | Redistribute OSPF routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_external") | Dictionary | | | | Redistribute OSPF routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_external.route_map") | String | | | | | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_internal") | Dictionary | | | | Redistribute OSPF routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_internal.route_map") | String | | | | | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_nssa_external") | Dictionary | | | | Redistribute OSPF routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.match_nssa_external.route_map") | String | | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospf.route_map") | String | | | | | + | [          ospfv3](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.enabled") | Boolean | | | | Redistribute OSPFv3 routes. | + | [            match_external](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_external.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_external.route_map") | String | | | | | + | [            match_internal](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_internal") | Dictionary | | | | Redistribute OSPFv3 routes learned from internal sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_internal.enabled") | Boolean | Required | | | | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_internal.route_map") | String | | | | | + | [            match_nssa_external](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external") | Dictionary | | | | Redistribute OSPFv3 routes learned from external NSSA sources. | + | [              enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.enabled") | Boolean | Required | | | | + | [              nssa_type](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.nssa_type") | Integer | | | Valid Values:
- 1
- 2 | NSSA External Type Number. | + | [              route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.match_nssa_external.route_map") | String | | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.ospfv3.route_map") | String | | | | | + | [          static](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static") | Dictionary | | | | | + | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static.enabled") | Boolean | Required | | | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static.route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | @@ -1602,6 +1977,142 @@ # Route-map name. match_map: + + # Redistribute routes in to BGP. + redistribute: + attached_host: + enabled: + route_map: + bgp: + enabled: + route_map: + connected: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + dynamic: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + rip: + enabled: + route_map: + static: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + user: + enabled: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -2029,6 +2540,142 @@ # Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. send_limit: + + # Redistribute routes in to BGP. + redistribute: + attached_host: + enabled: + route_map: + bgp: + enabled: + route_map: + connected: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + dynamic: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + rip: + enabled: + route_map: + static: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + user: + enabled: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -2713,28 +3360,100 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: - redistribute_routes: - - source_protocol: - # Only applicable if `source_protocol` is `isis`. - include_leaked: + # Redistribute routes in to BGP. + redistribute: + connected: + enabled: + route_map: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: route_map: # RCF function name with parenthesis. # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. rcf: - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: - address_family_ipv6_sr_te: - neighbors: - - ip_address: - activate: - - # Inbound route-map name. + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + route_map: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + route_map: + static: + enabled: + route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: + address_family_ipv6_sr_te: + neighbors: + - ip_address: + activate: + + # Inbound route-map name. route_map_in: # Outbound route-map name. @@ -3452,6 +4171,142 @@ # IPv4 prefix "A.B.C.D/E". - prefix: route_map: + + # Redistribute routes in to BGP. + redistribute: + attached_host: + enabled: + route_map: + bgp: + enabled: + route_map: + connected: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + dynamic: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + rip: + enabled: + route_map: + static: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + user: + enabled: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -3538,6 +4393,107 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: + + # Redistribute routes in to BGP. + redistribute: + attached_host: + enabled: + route_map: + bgp: + enabled: + route_map: + connected: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + dhcp: + enabled: + route_map: + dynamic: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + static: + enabled: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + user: + enabled: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -3575,6 +4531,93 @@ # IPv6 prefix "A.B.C.D/E". - prefix: route_map: + + # Redistribute routes in to BGP. + redistribute: + attached_host: + enabled: + route_map: + connected: + enabled: + route_map: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + route_map: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Include following routes while redistributing. + include_leaked: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + + # Include following routes while redistributing. + include_leaked: + route_map: + + # Include following routes while redistributing. + include_leaked: + static: + enabled: + route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -3614,6 +4657,78 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: + + # Redistribute routes in to BGP. + redistribute: + connected: + enabled: + route_map: + isis: + enabled: + + # Redistribute IS-IS route level. + isis_level: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + rcf: + + # Include following routes while redistributing. + include_leaked: + ospf: + + # Redistribute OSPF routes. + enabled: + + # Redistribute OSPF routes learned from external sources. + match_external: + enabled: + route_map: + + # Redistribute OSPF routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Redistribute OSPF routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + route_map: + ospfv3: + + # Redistribute OSPFv3 routes. + enabled: + + # Redistribute OSPFv3 routes learned from external sources. + match_external: + enabled: + route_map: + + # Redistribute OSPFv3 routes learned from internal sources. + match_internal: + enabled: + route_map: + + # Redistribute OSPFv3 routes learned from external NSSA sources. + match_nssa_external: + enabled: + + # NSSA External Type Number. + nssa_type: + route_map: + route_map: + static: + enabled: + route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. redistribute_routes: - source_protocol: route_map: diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 207d502d5ea..5c3ed07b4db 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -474,8 +474,170 @@ router bgp {{ router_bgp.as }} {% endif %} {{ aggregate_address_cli }} {% endfor %} -{% for redistribute_route in router_bgp.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if router_bgp.redistribute is arista.avd.defined %} +{% set redistribute_var = router_bgp.redistribute %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} +{% set redistribute_bgp = "redistribute bgp leaked" %} +{% if redistribute_var.bgp.route_map is arista.avd.defined %} +{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} +{% endif %} + {{ redistribute_bgp }} +{% endif %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} +{% set redistribute_conn = redistribute_conn ~ " include leaked" %} +{% endif %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% elif redistribute_var.connected.rcf is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " rcf " ~ redistribute_var.connected.rcf %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} +{% set redistribute_dynamic = "redistribute dynamic" %} +{% if redistribute_var.dynamic.route_map is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} +{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} +{% endif %} + {{ redistribute_dynamic }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.rip.enabled is arista.avd.defined(true) %} +{% set redistribute_rip = "redistribute rip" %} +{% if redistribute_var.rip.route_map is arista.avd.defined %} +{% set redistribute_rip = redistribute_rip ~ " route-map " ~ redistribute_var.rip.route_map %} +{% endif %} + {{ redistribute_rip }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.include_leaked is arista.avd.defined(true) %} +{% set redistribute_static = redistribute_static ~ " include leaked" %} +{% endif %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% elif redistribute_var.static.rcf is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " rcf " ~ redistribute_var.static.rcf %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} +{% elif router_bgp.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in router_bgp.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -495,8 +657,8 @@ router bgp {{ router_bgp.as }} {% endif %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {# L2VPNs - (vxlan) vlan based #} {% if router_bgp.vlans is arista.avd.defined %} {# Force the ids to be string to follow the same ordering as on EOS #} @@ -1045,8 +1207,170 @@ router bgp {{ router_bgp.as }} {% elif router_bgp.address_family_ipv4.bgp.redistribute_internal is arista.avd.defined(false) %} no bgp redistribute-internal {% endif %} -{% for redistribute_route in router_bgp.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if router_bgp.address_family_ipv4.redistribute is arista.avd.defined %} +{% set redistribute_var = router_bgp.address_family_ipv4.redistribute %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} +{% set redistribute_bgp = "redistribute bgp leaked" %} +{% if redistribute_var.bgp.route_map is arista.avd.defined %} +{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} +{% endif %} + {{ redistribute_bgp }} +{% endif %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} +{% set redistribute_conn = redistribute_conn ~ " include leaked" %} +{% endif %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% elif redistribute_var.connected.rcf is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " rcf " ~ redistribute_var.connected.rcf %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} +{% set redistribute_dynamic = "redistribute dynamic" %} +{% if redistribute_var.dynamic.route_map is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} +{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} +{% endif %} + {{ redistribute_dynamic }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.rip.enabled is arista.avd.defined(true) %} +{% set redistribute_rip = "redistribute rip" %} +{% if redistribute_var.rip.route_map is arista.avd.defined %} +{% set redistribute_rip = redistribute_rip ~ " route-map " ~ redistribute_var.rip.route_map %} +{% endif %} + {{ redistribute_rip }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.include_leaked is arista.avd.defined(true) %} +{% set redistribute_static = redistribute_static ~ " include leaked" %} +{% endif %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% elif redistribute_var.static.rcf is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " rcf " ~ redistribute_var.static.rcf %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} +{% elif router_bgp.address_family_ipv4.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in router_bgp.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -1066,8 +1390,8 @@ router bgp {{ router_bgp.as }} {% endif %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {% endif %} {# address family ipv4 BGP Labeled-Unicast activation #} {% if router_bgp.address_family_ipv4_labeled_unicast is arista.avd.defined %} @@ -1886,8 +2210,99 @@ router bgp {{ router_bgp.as }} {% endif %} {{ network_cli }} {% endfor %} -{% for redistribute_route in router_bgp.address_family_ipv6_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if router_bgp.address_family_ipv6_multicast.redistribute is arista.avd.defined %} +{% set redistribute_var = router_bgp.address_family_ipv6_multicast.redistribute %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% elif router_bgp.address_family_ipv6_multicast.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in router_bgp.address_family_ipv6_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -1903,8 +2318,8 @@ router bgp {{ router_bgp.as }} {% set redistribute_route_cli = redistribute_route_cli ~ " rcf " ~ redistribute_route.rcf %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {% endif %} {# address family ipv6 sr-te activation #} {% if router_bgp.address_family_ipv6_sr_te is arista.avd.defined %} @@ -2594,7 +3009,7 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} @@ -2814,8 +3229,170 @@ router bgp {{ router_bgp.as }} {% elif vrf.address_family_ipv4.bgp.redistribute_internal is arista.avd.defined(false) %} no bgp redistribute-internal {% endif %} -{% for redistribute_route in vrf.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if vrf.address_family_ipv4.redistribute is arista.avd.defined %} +{% set redistribute_var = vrf.address_family_ipv4.redistribute %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} +{% set redistribute_bgp = "redistribute bgp leaked" %} +{% if redistribute_var.bgp.route_map is arista.avd.defined %} +{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} +{% endif %} + {{ redistribute_bgp }} +{% endif %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} +{% set redistribute_conn = redistribute_conn ~ " include leaked" %} +{% endif %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% elif redistribute_var.connected.rcf is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " rcf " ~ redistribute_var.connected.rcf %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} +{% set redistribute_dynamic = "redistribute dynamic" %} +{% if redistribute_var.dynamic.route_map is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} +{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} +{% endif %} + {{ redistribute_dynamic }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf = redistribute_ospf ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.rip.enabled is arista.avd.defined(true) %} +{% set redistribute_rip = "redistribute rip" %} +{% if redistribute_var.rip.route_map is arista.avd.defined %} +{% set redistribute_rip = redistribute_rip ~ " route-map " ~ redistribute_var.rip.route_map %} +{% endif %} + {{ redistribute_rip }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.include_leaked is arista.avd.defined(true) %} +{% set redistribute_static = redistribute_static ~ " include leaked" %} +{% endif %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% elif redistribute_var.static.rcf is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " rcf " ~ redistribute_var.static.rcf %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} +{% elif vrf.address_family_ipv4.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in vrf.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -2835,8 +3412,8 @@ router bgp {{ router_bgp.as }} {% endif %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {% endif %} {% if vrf.address_family_ipv4_multicast is arista.avd.defined %} ! @@ -2871,8 +3448,106 @@ router bgp {{ router_bgp.as }} {% endif %} {{ network_cli }} {% endfor %} -{% for redistribute_route in vrf.address_family_ipv4_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if vrf.address_family_ipv4_multicast.redistribute is arista.avd.defined %} +{% set redistribute_var = vrf.address_family_ipv4_multicast.redistribute %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% elif vrf.address_family_ipv4_multicast.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in vrf.address_family_ipv4_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -2890,8 +3565,8 @@ router bgp {{ router_bgp.as }} {% endif %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {% endif %} {% if vrf.address_family_ipv6 is arista.avd.defined %} ! @@ -2974,8 +3649,128 @@ router bgp {{ router_bgp.as }} {% elif vrf.address_family_ipv6.bgp.redistribute_internal is arista.avd.defined(false) %} no bgp redistribute-internal {% endif %} -{% for redistribute_route in vrf.address_family_ipv6.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if vrf.address_family_ipv6.redistribute is arista.avd.defined %} +{% set redistribute_var = vrf.address_family_ipv6.redistribute %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} +{% set redistribute_bgp = "redistribute bgp leaked" %} +{% if redistribute_var.bgp.route_map is arista.avd.defined %} +{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} +{% endif %} + {{ redistribute_bgp }} +{% endif %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} +{% set redistribute_conn = redistribute_conn ~ " include leaked" %} +{% endif %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% elif redistribute_var.connected.rcf is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " rcf " ~ redistribute_var.connected.rcf %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.dhcp.enabled is arista.avd.defined(true) %} +{% set redistribute_dhcp = "redistribute dhcp" %} +{% if redistribute_var.dhcp.route_map is arista.avd.defined %} +{% set redistribute_dhcp = redistribute_dhcp ~ " route-map " ~ redistribute_var.dhcp.route_map %} +{% endif %} + {{ redistribute_dhcp }} +{% endif %} +{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} +{% set redistribute_dynamic = "redistribute dynamic" %} +{% if redistribute_var.dynamic.route_map is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} +{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} +{% endif %} + {{ redistribute_dynamic }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.include_leaked is arista.avd.defined(true) %} +{% set redistribute_static = redistribute_static ~ " include leaked" %} +{% endif %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% elif redistribute_var.static.rcf is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " rcf " ~ redistribute_var.static.rcf %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} +{% elif vrf.address_family_ipv6.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in vrf.address_family_ipv6.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol == "ospfv3" %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -2994,9 +3789,9 @@ router bgp {{ router_bgp.as }} {% set redistribute_route_cli = redistribute_route_cli ~ " rcf " ~ redistribute_route.rcf %} {% endif %} {% endif %} - {{ redistribute_route_cli }} -{% endif %} -{% endfor %} + {{ redistribute_route_cli }} +{% endfor %} +{% endif %} {% endif %} {% if vrf.address_family_ipv6_multicast is arista.avd.defined %} ! @@ -3031,8 +3826,99 @@ router bgp {{ router_bgp.as }} {% endif %} {{ network_cli }} {% endfor %} -{% for redistribute_route in vrf.address_family_ipv6_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} -{% if redistribute_route.source_protocol is arista.avd.defined %} +{% if vrf.address_family_ipv6_multicast.redistribute is arista.avd.defined %} +{% set redistribute_var = vrf.address_family_ipv6_multicast.redistribute %} +{% if redistribute_var.connected.enabled is arista.avd.defined(true) %} +{% set redistribute_conn = "redistribute connected" %} +{% if redistribute_var.connected.route_map is arista.avd.defined %} +{% set redistribute_conn = redistribute_conn ~ " route-map " ~ redistribute_var.connected.route_map %} +{% endif %} + {{ redistribute_conn }} +{% endif %} +{% if redistribute_var.isis.enabled is arista.avd.defined(true) %} +{% set redistribute_isis = "redistribute isis" %} +{% if redistribute_var.isis.isis_level is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " " ~ redistribute_var.isis.isis_level %} +{% endif %} +{% if redistribute_var.isis.include_leaked is arista.avd.defined(true) %} +{% set redistribute_isis = redistribute_isis ~ " include leaked" %} +{% endif %} +{% if redistribute_var.isis.route_map is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " route-map " ~ redistribute_var.isis.route_map %} +{% elif redistribute_var.isis.rcf is arista.avd.defined %} +{% set redistribute_isis = redistribute_isis ~ " rcf " ~ redistribute_var.isis.rcf %} +{% endif %} + {{ redistribute_isis }} +{% endif %} +{% if redistribute_var.ospf.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf" %} +{% if redistribute_var.ospf.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% elif redistribute_var.ospf.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf = "redistribute ospf match internal" %} +{% if redistribute_var.ospf.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospf = redistribute_ospf ~ " route-map " ~ redistribute_var.ospf.match_internal.route_map %} +{% endif %} + {{ redistribute_ospf }} +{% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3" %} +{% if redistribute_var.ospfv3.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% elif redistribute_var.ospfv3.match_internal.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3 = "redistribute ospfv3 match internal" %} +{% if redistribute_var.ospfv3.match_internal.route_map is arista.avd.defined %} +{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " route-map " ~ redistribute_var.ospfv3.match_internal.route_map %} +{% endif %} + {{ redistribute_ospfv3 }} +{% endif %} +{% if redistribute_var.ospfv3.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match external" %} +{% if redistribute_var.ospfv3.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospfv3_match = "redistribute ospfv3 match nssa-external" %} +{% if redistribute_var.ospfv3.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospfv3_match }} +{% endif %} +{% if redistribute_var.static.enabled is arista.avd.defined(true) %} +{% set redistribute_static = "redistribute static" %} +{% if redistribute_var.static.route_map is arista.avd.defined %} +{% set redistribute_static = redistribute_static ~ " route-map " ~ redistribute_var.static.route_map %} +{% endif %} + {{ redistribute_static }} +{% endif %} +{% elif vrf.address_family_ipv6_multicast.redistribute_routes is arista.avd.defined %} +{% for redistribute_route in vrf.address_family_ipv6_multicast.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} {% if redistribute_route.source_protocol in ["ospf", "ospfv3"] %} {% if redistribute_route.ospf_route_type is arista.avd.defined %} @@ -3050,8 +3936,8 @@ router bgp {{ router_bgp.as }} {% endif %} {% endif %} {{ redistribute_route_cli }} -{% endif %} -{% endfor %} +{% endfor %} +{% endif %} {% endif %} {% if vrf.eos_cli is arista.avd.defined %} ! diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index d5c3e7eaad6..bb233624d94 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -12545,10 +12545,247 @@ keys: match_map: type: str description: Route-map name. + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA + sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -13236,93 +13473,333 @@ keys: type: str description: Apply the configurations only to the routes matching the prefix list. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, - `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is one of `connected`, `static`, - `isis`, `user`, `dynamic`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' - address_family_ipv4_labeled_unicast: - type: dict - keys: - aigp_session: - type: dict - keys: - confederation: - type: bool - ebgp: - type: bool - ibgp: - type: bool - bgp: + redistribute: type: dict + description: Redistribute routes in to BGP. keys: - additional_paths: + attached_host: type: dict - $ref: eos_cli_config_gen#/$defs/bgp_additional_paths - missing_policy: + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: type: dict - description: Missing policy configuration for all address-families. keys: - direction_in: - description: Missing policy inbound direction. - type: dict - keys: - action: - description: Missing policy action. - type: str - required: true - valid_values: - - deny - - permit - - deny-in-out - include_community_list: - type: bool + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA + sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, + `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is one of `connected`, `static`, + `isis`, `user`, `dynamic`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' + address_family_ipv4_labeled_unicast: + type: dict + keys: + aigp_session: + type: dict + keys: + confederation: + type: bool + ebgp: + type: bool + ibgp: + type: bool + bgp: + type: dict + keys: + additional_paths: + type: dict + $ref: eos_cli_config_gen#/$defs/bgp_additional_paths + missing_policy: + type: dict + description: Missing policy configuration for all address-families. + keys: + direction_in: + description: Missing policy inbound direction. + type: dict + keys: + action: + description: Missing policy action. + type: str + required: true + valid_values: + - deny + - permit + - deny-in-out + include_community_list: + type: bool description: Include community-list references in missing policy decision. include_prefix_list: @@ -14380,10 +14857,150 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA + sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -15360,36 +15977,342 @@ keys: keys: enabled: type: bool - required: true - isis_level: - type: str - description: Redistribute IS-IS route level. - valid_values: - - level-1 - - level-2 - - level-1-2 - route_map: - type: str - rcf: - type: str - description: 'RCF function name with parenthesis. + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is one of `connected`, + `dynamic`, `isis`, `static` and `user`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' + aggregate_addresses: + type: list + primary_key: prefix + items: + type: dict + keys: + prefix: + type: str + description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I". + advertise_only: + type: bool + as_set: + type: bool + summary_only: + type: bool + attribute_map: + type: str + match_map: + type: str + address_family_ipv4: + type: dict + keys: + bgp: + type: dict + keys: + missing_policy: + type: dict + keys: + direction_in_action: + type: str + valid_values: + - deny + - deny-in-out + - permit + direction_out_action: + type: str + valid_values: + - deny + - deny-in-out + - permit + additional_paths: + type: dict + $ref: eos_cli_config_gen#/$defs/bgp_additional_paths + keys: + install: + type: bool + description: Install BGP backup path. + install_ecmp_primary: + type: bool + description: Allow additional path with ECMP primary path. + redistribute_internal: + type: bool + description: Allow redistribution of iBGP routes into an Interior + Gateway Protocol (IGP). EOS default is true. + neighbors: + type: list + primary_key: ip_address + items: + type: dict + keys: + ip_address: + type: str + activate: + type: bool + route_map_in: + type: str + description: Inbound route-map name. + route_map_out: + type: str + description: Outbound route-map name. + rcf_in: + type: str + description: 'Inbound RCF function name with parenthesis. - Example: MyFunction(myarg). + Example: MyFunction(myarg).' + rcf_out: + type: str + description: 'Outbound RCF function name with parenthesis. - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence.' - include_leaked: - description: Include following routes while redistributing. - type: bool - ospf: + Example: MyFunction(myarg).' + prefix_list_in: + type: str + description: Inbound prefix-list name. + prefix_list_out: + type: str + description: Outbound prefix-list name. + next_hop: + type: dict + keys: + address_family_ipv6: + type: dict + keys: + enabled: + type: bool + required: true + originate: + type: bool + additional_paths: + type: dict + $ref: eos_cli_config_gen#/$defs/bgp_additional_paths + networks: + type: list + primary_key: prefix + items: + type: dict + keys: + prefix: + type: str + description: IPv4 prefix "A.B.C.D/E". + route_map: + type: str + redistribute: type: dict + description: Redistribute routes in to BGP. keys: - enabled: - type: bool - description: Redistribute OSPF routes. - match_external: - description: Redistribute OSPF routes learned from external - sources. + attached_host: type: dict keys: enabled: @@ -15397,12 +16320,15 @@ keys: required: true route_map: type: str - include_leaked: - description: Include following routes while redistributing. + bgp: + type: dict + keys: + enabled: type: bool - match_internal: - description: Redistribute OSPF routes learned from internal - sources. + required: true + route_map: + type: str + connected: type: dict keys: enabled: @@ -15410,196 +16336,270 @@ keys: required: true route_map: type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' include_leaked: description: Include following routes while redistributing. type: bool - match_nssa_external: - description: Redistribute OSPF routes learned from external - NSSA sources. + dynamic: type: dict keys: enabled: type: bool required: true - nssa_type: - description: NSSA External Type Number. - type: int - convert_types: - - str + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. valid_values: - - 1 - - 2 + - level-1 + - level-2 + - level-1-2 route_map: type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' include_leaked: description: Include following routes while redistributing. type: bool - route_map: - type: str - include_leaked: - description: Include following routes while redistributing. - type: bool - ospfv3: - type: dict - keys: - enabled: - type: bool - description: Redistribute OSPFv3 routes. - match_external: - description: Redistribute OSPFv3 routes learned from external - sources. + ospf: type: dict keys: enabled: type: bool - required: true + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool route_map: type: str include_leaked: description: Include following routes while redistributing. type: bool - match_internal: - description: Redistribute OSPFv3 routes learned from internal - sources. + ospfv3: type: dict keys: enabled: type: bool - required: true + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool route_map: type: str include_leaked: description: Include following routes while redistributing. type: bool - match_nssa_external: - description: Redistribute OSPFv3 routes learned from external - NSSA sources. + rip: type: dict keys: enabled: type: bool required: true - nssa_type: - description: NSSA External Type Number. - type: int - convert_types: - - str - valid_values: - - 1 - - 2 route_map: type: str - include_leaked: - description: Include following routes while redistributing. + static: + type: dict + keys: + enabled: type: bool - route_map: - type: str - include_leaked: - description: Include following routes while redistributing. - type: bool - rip: - type: dict - keys: - enabled: - type: bool - required: true - route_map: - type: str - static: - type: dict - keys: - enabled: - type: bool - required: true - route_map: - type: str - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence.' - include_leaked: - type: bool - description: Include following routes while redistributing. - user: - type: dict - keys: - enabled: - type: bool - required: true - rcf: - type: str - description: 'RCF function name with parenthesis. + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. - Example: MyFunction(myarg). + Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence.' - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - route_map: - type: str - include_leaked: - type: bool - rcf: - type: str - description: 'RCF function name with parenthesis. + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: 'RCF function name with parenthesis. - Example: MyFunction(myarg). + Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: 'RCF function name with parenthesis. - Only applicable if `source_protocol` is one of `connected`, - `dynamic`, `isis`, `static` and `user`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. + Example: MyFunction(myarg). - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. - ' - aggregate_addresses: - type: list - primary_key: prefix - items: - type: dict - keys: - prefix: - type: str - description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I". - advertise_only: - type: bool - as_set: - type: bool - summary_only: - type: bool - attribute_map: - type: str - match_map: - type: str - address_family_ipv4: + Only applicable if `source_protocol` is one of `connected`, + `dynamic`, `isis`, `static` and `user`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' + address_family_ipv6: type: dict keys: bgp: @@ -15666,17 +16666,6 @@ keys: prefix_list_out: type: str description: Outbound prefix-list name. - next_hop: - type: dict - keys: - address_family_ipv6: - type: dict - keys: - enabled: - type: bool - required: true - originate: - type: bool additional_paths: type: dict $ref: eos_cli_config_gen#/$defs/bgp_additional_paths @@ -15688,143 +16677,197 @@ keys: keys: prefix: type: str - description: IPv4 prefix "A.B.C.D/E". - route_map: - type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user + description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str - include_leaked: - type: bool - rcf: - type: str - description: 'RCF function name with parenthesis. + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. - Example: MyFunction(myarg). + Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + dhcp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. - Only applicable if `source_protocol` is one of `connected`, - `dynamic`, `isis`, `static` and `user`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. + Example: MyFunction(myarg). - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. - ' - address_family_ipv6: - type: dict - keys: - bgp: - type: dict - keys: - missing_policy: + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + static: type: dict keys: - direction_in_action: + enabled: + type: bool + required: true + route_map: type: str - valid_values: - - deny - - deny-in-out - - permit - direction_out_action: + rcf: type: str - valid_values: - - deny - - deny-in-out - - permit - additional_paths: + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + type: bool + description: Include following routes while redistributing. + user: type: dict - $ref: eos_cli_config_gen#/$defs/bgp_additional_paths keys: - install: - type: bool - description: Install BGP backup path. - install_ecmp_primary: + enabled: type: bool - description: Allow additional path with ECMP primary path. - redistribute_internal: - type: bool - description: Allow redistribution of iBGP routes into an Interior - Gateway Protocol (IGP). EOS default is true. - neighbors: - type: list - primary_key: ip_address - items: - type: dict - keys: - ip_address: - type: str - activate: - type: bool - route_map_in: - type: str - description: Inbound route-map name. - route_map_out: - type: str - description: Outbound route-map name. - rcf_in: - type: str - description: 'Inbound RCF function name with parenthesis. + required: true + rcf: + type: str + description: 'RCF function name with parenthesis. - Example: MyFunction(myarg).' - rcf_out: - type: str - description: 'Outbound RCF function name with parenthesis. + Example: MyFunction(myarg). - Example: MyFunction(myarg).' - prefix_list_in: - type: str - description: Inbound prefix-list name. - prefix_list_out: - type: str - description: Outbound prefix-list name. - additional_paths: - type: dict - $ref: eos_cli_config_gen#/$defs/bgp_additional_paths - networks: - type: list - primary_key: prefix - items: - type: dict - keys: - prefix: - type: str - description: IPv6 prefix "A:B:C:D:E:F:G:H/I". - route_map: - type: str + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -15926,10 +16969,172 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -16029,10 +17234,152 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence.' + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPFv3 routes learned from internal + sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external + NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index ab551ecaf12..8e2f4c62fe3 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -745,10 +745,236 @@ keys: match_map: type: str description: Route-map name. + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: True + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -1422,117 +1648,343 @@ keys: prefix_list: type: str description: Apply the configurations only to the routes matching the prefix list. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: True - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dynamic" - - "isis" - - "ospf" - - "ospfv3" - - "rip" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - address_family_ipv4_labeled_unicast: - type: dict - keys: - aigp_session: - type: dict - keys: - confederation: - type: bool - ebgp: - type: bool - ibgp: - type: bool - bgp: + redistribute: type: dict + description: Redistribute routes in to BGP. keys: - additional_paths: + attached_host: type: dict - $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" - missing_policy: + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: type: dict - description: Missing policy configuration for all address-families. keys: - direction_in: - description: Missing policy inbound direction. - type: dict - keys: - action: - description: Missing policy action. - type: str - required: true - valid_values: - - deny - - permit - - deny-in-out - include_community_list: - type: bool - description: Include community-list references in missing policy decision. - include_prefix_list: - type: bool - description: Include prefix-list references in missing policy decision. - include_sub_route_map: - type: bool - description: Include sub-route-map references in missing policy decision. - direction_out: - description: Missing policy outbound direction. - type: dict - keys: - action: - description: Missing policy action. - type: str - required: true - valid_values: - - deny - - permit - - deny-in-out - include_community_list: - type: bool - description: Include community-list references in missing policy decision. - include_prefix_list: - type: bool - description: Include prefix-list references in missing policy decision. - include_sub_route_map: - type: bool - description: Include sub-route-map references in missing policy decision. - next_hop_unchanged: - type: bool - graceful_restart: - type: bool + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: True + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dynamic" + - "isis" + - "ospf" + - "ospfv3" + - "rip" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + address_family_ipv4_labeled_unicast: + type: dict + keys: + aigp_session: + type: dict + keys: + confederation: + type: bool + ebgp: + type: bool + ibgp: + type: bool + bgp: + type: dict + keys: + additional_paths: + type: dict + $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" + missing_policy: + type: dict + description: Missing policy configuration for all address-families. + keys: + direction_in: + description: Missing policy inbound direction. + type: dict + keys: + action: + description: Missing policy action. + type: str + required: true + valid_values: + - deny + - permit + - deny-in-out + include_community_list: + type: bool + description: Include community-list references in missing policy decision. + include_prefix_list: + type: bool + description: Include prefix-list references in missing policy decision. + include_sub_route_map: + type: bool + description: Include sub-route-map references in missing policy decision. + direction_out: + description: Missing policy outbound direction. + type: dict + keys: + action: + description: Missing policy action. + type: str + required: true + valid_values: + - deny + - permit + - deny-in-out + include_community_list: + type: bool + description: Include community-list references in missing policy decision. + include_prefix_list: + type: bool + description: Include prefix-list references in missing policy decision. + include_sub_route_map: + type: bool + description: Include sub-route-map references in missing policy decision. + next_hop_unchanged: + type: bool + graceful_restart: + type: bool label_local_termination: type: str valid_values: @@ -2426,75 +2878,209 @@ keys: missing_policy: type: dict keys: - direction_in_action: - type: str - valid_values: - - "deny" - - "deny-in-out" - - "permit" - direction_out_action: + direction_in_action: + type: str + valid_values: + - "deny" + - "deny-in-out" + - "permit" + direction_out_action: + type: str + valid_values: + - "deny" + - "deny-in-out" + - "permit" + additional_paths: + type: dict + keys: + receive: + type: bool + neighbors: + type: list + primary_key: ip_address + items: + type: dict + keys: + ip_address: + type: str + activate: + type: bool + route_map_in: + type: str + description: Inbound route-map name. + route_map_out: + type: str + description: Outbound route-map name. + additional_paths: + type: dict + keys: + receive: + type: bool + peer_groups: + type: list + primary_key: name + items: + type: dict + keys: + name: + type: str + description: Peer-group name. + activate: + type: bool + additional_paths: + type: dict + keys: + receive: + type: bool + networks: + type: list + primary_key: prefix + items: + type: dict + keys: + prefix: + type: str + description: IPv6 prefix "A:B:C:D:E:F:G:H/I". + route_map: + type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: type: str - valid_values: - - "deny" - - "deny-in-out" - - "permit" - additional_paths: + static: type: dict keys: - receive: + enabled: type: bool - neighbors: - type: list - primary_key: ip_address - items: - type: dict - keys: - ip_address: - type: str - activate: - type: bool - route_map_in: - type: str - description: Inbound route-map name. - route_map_out: - type: str - description: Outbound route-map name. - additional_paths: - type: dict - keys: - receive: - type: bool - peer_groups: - type: list - primary_key: name - items: - type: dict - keys: - name: - type: str - description: Peer-group name. - activate: - type: bool - additional_paths: - type: dict - keys: - receive: - type: bool - networks: - type: list - primary_key: prefix - items: - type: dict - keys: - prefix: - type: str - description: IPv6 prefix "A:B:C:D:E:F:G:H/I". - route_map: - type: str + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -3655,84 +4241,310 @@ keys: - "permit" direction_out_action: type: str - valid_values: - - "deny" - - "deny-in-out" - - "permit" - additional_paths: + valid_values: + - "deny" + - "deny-in-out" + - "permit" + additional_paths: + type: dict + $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" + keys: + install: + type: bool + description: Install BGP backup path. + install_ecmp_primary: + type: bool + description: Allow additional path with ECMP primary path. + redistribute_internal: + type: bool + description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. + neighbors: + type: list + primary_key: ip_address + items: + type: dict + keys: + ip_address: + type: str + activate: + type: bool + route_map_in: + type: str + description: Inbound route-map name. + route_map_out: + type: str + description: Outbound route-map name. + rcf_in: + type: str + description: |- + Inbound RCF function name with parenthesis. + Example: MyFunction(myarg). + rcf_out: + type: str + description: |- + Outbound RCF function name with parenthesis. + Example: MyFunction(myarg). + prefix_list_in: + type: str + description: Inbound prefix-list name. + prefix_list_out: + type: str + description: Outbound prefix-list name. + next_hop: + type: dict + keys: + address_family_ipv6: + type: dict + keys: + enabled: + type: bool + required: true + originate: + type: bool + additional_paths: + type: dict + $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" + networks: + type: list + primary_key: prefix + items: + type: dict + keys: + prefix: + type: str + description: IPv4 prefix "A.B.C.D/E". + route_map: + type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + rip: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + static: type: dict - $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" keys: - install: + enabled: type: bool - description: Install BGP backup path. - install_ecmp_primary: + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: type: bool - description: Allow additional path with ECMP primary path. - redistribute_internal: - type: bool - description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. - neighbors: - type: list - primary_key: ip_address - items: - type: dict - keys: - ip_address: - type: str - activate: - type: bool - route_map_in: - type: str - description: Inbound route-map name. - route_map_out: - type: str - description: Outbound route-map name. - rcf_in: - type: str - description: |- - Inbound RCF function name with parenthesis. - Example: MyFunction(myarg). - rcf_out: - type: str - description: |- - Outbound RCF function name with parenthesis. - Example: MyFunction(myarg). - prefix_list_in: - type: str - description: Inbound prefix-list name. - prefix_list_out: - type: str - description: Outbound prefix-list name. - next_hop: - type: dict - keys: - address_family_ipv6: - type: dict - keys: - enabled: - type: bool - required: true - originate: - type: bool - additional_paths: - type: dict - $ref: "eos_cli_config_gen#/$defs/bgp_additional_paths" - networks: - type: list - primary_key: prefix - items: - type: dict - keys: - prefix: - type: str - description: IPv4 prefix "A.B.C.D/E". - route_map: - type: str + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -3851,10 +4663,181 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + bgp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + dhcp: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + dynamic: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + type: bool + description: Include following routes while redistributing. + user: + type: dict + keys: + enabled: + type: bool + required: true + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -3950,10 +4933,164 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + route_map: + type: str + include_leaked: + description: Include following routes while redistributing. + type: bool + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: @@ -4047,10 +5184,144 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + connected: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + isis: + type: dict + keys: + enabled: + type: bool + required: true + isis_level: + type: str + description: Redistribute IS-IS route level. + valid_values: + - level-1 + - level-2 + - level-1-2 + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + include_leaked: + description: Include following routes while redistributing. + type: bool + ospf: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPF routes. + match_external: + description: Redistribute OSPF routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPF routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPF routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + ospfv3: + type: dict + keys: + enabled: + type: bool + description: Redistribute OSPFv3 routes. + match_external: + description: Redistribute OSPFv3 routes learned from external sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_internal: + description: Redistribute OSPFv3 routes learned from internal sources. + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str + match_nssa_external: + description: Redistribute OSPFv3 routes learned from external NSSA sources. + type: dict + keys: + enabled: + type: bool + required: true + nssa_type: + description: NSSA External Type Number. + type: int + convert_types: + - str + valid_values: + - 1 + - 2 + route_map: + type: str + route_map: + type: str + static: + type: dict + keys: + enabled: + type: bool + required: true + route_map: + type: str redistribute_routes: type: list primary_key: source_protocol allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute items: type: dict keys: From 4fcdd76a1fb2c03e42f2bbc6e876a60289454d7d Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Fri, 4 Oct 2024 04:30:09 -0700 Subject: [PATCH 2/8] improve the schema --- .../docs/tables/router-bgp.md | 342 ++++----- .../schema/eos_cli_config_gen.schema.yml | 704 +++++++++--------- .../schema_fragments/router_bgp.schema.yml | 614 +++++++-------- 3 files changed, 830 insertions(+), 830 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index f3ccb48a58a..30e3f062ac7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -472,6 +472,12 @@ | [          receive](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.receive") | Boolean | | | | Enable or disable reception of additional-paths. | | [          send](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send") | String | | | Valid Values:
- any
- backup
- ecmp
- limit
- disabled | Select an option to send multiple paths for same prefix through bgp updates.
any: Send any eligible path.
backup: Best path and installed backup path.
ecmp: All paths in best path ECMP group.
limit: Limit to n eligible paths.
disabled: Disable sending any paths. | | [          send_limit](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send_limit") | Integer | | | Min: 2
Max: 64 | Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | + | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [    redistribute](## "router_bgp.address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [      attached_host](## "router_bgp.address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -539,12 +545,6 @@ | [      user](## "router_bgp.address_family_ipv4.redistribute.user") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | | [        rcf](## "router_bgp.address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | - | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | - | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | - | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | - | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [  address_family_ipv4_labeled_unicast](## "router_bgp.address_family_ipv4_labeled_unicast") | Dictionary | | | | | | [    aigp_session](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session") | Dictionary | | | | | | [      confederation](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session.confederation") | Boolean | | | | | @@ -673,6 +673,12 @@ | [        route_map_out](## "router_bgp.address_family_ipv4_multicast.neighbors.[].route_map_out") | String | | | | Outbound route-map name. | | [        additional_paths](## "router_bgp.address_family_ipv4_multicast.neighbors.[].additional_paths") | Dictionary | | | | | | [          receive](## "router_bgp.address_family_ipv4_multicast.neighbors.[].additional_paths.receive") | Boolean | | | | | + | [    redistribute_routes](## "router_bgp.address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      - source_protocol](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | | | + | [        route_map](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | + | [        rcf](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | + | [        ospf_route_type](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [    redistribute](## "router_bgp.address_family_ipv4_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [      attached_host](## "router_bgp.address_family_ipv4_multicast.redistribute.attached_host") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4_multicast.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -715,12 +721,6 @@ | [      static](## "router_bgp.address_family_ipv4_multicast.redistribute.static") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [        route_map](## "router_bgp.address_family_ipv4_multicast.redistribute.static.route_map") | String | | | | | - | [    redistribute_routes](## "router_bgp.address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [      - source_protocol](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | | | - | [        route_map](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | - | [        include_leaked](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | - | [        rcf](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | - | [        ospf_route_type](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [  address_family_ipv4_sr_te](## "router_bgp.address_family_ipv4_sr_te") | Dictionary | | | | | | [    neighbors](## "router_bgp.address_family_ipv4_sr_te.neighbors") | List, items: Dictionary | | | | | | [      - ip_address](## "router_bgp.address_family_ipv4_sr_te.neighbors.[].ip_address") | String | Required, Unique | | | | @@ -850,6 +850,12 @@ | [    networks](## "router_bgp.address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [      - prefix](## "router_bgp.address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [        route_map](## "router_bgp.address_family_ipv6_multicast.networks.[].route_map") | String | | | | | + | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      - source_protocol](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | + | [        include_leaked](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | + | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | + | [        rcf](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | + | [        ospf_route_type](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [    redistribute](## "router_bgp.address_family_ipv6_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [      connected](## "router_bgp.address_family_ipv6_multicast.redistribute.connected") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.connected.enabled") | Boolean | Required | | | | @@ -889,12 +895,6 @@ | [      static](## "router_bgp.address_family_ipv6_multicast.redistribute.static") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv6_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute.static.route_map") | String | | | | | - | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [      - source_protocol](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | - | [        include_leaked](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | - | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | - | [        rcf](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | - | [        ospf_route_type](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [  address_family_ipv6_sr_te](## "router_bgp.address_family_ipv6_sr_te") | Dictionary | | | | | | [    neighbors](## "router_bgp.address_family_ipv6_sr_te.neighbors") | List, items: Dictionary | | | | | | [      - ip_address](## "router_bgp.address_family_ipv6_sr_te.neighbors.[].ip_address") | String | Required, Unique | | | | @@ -1248,6 +1248,12 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].prefix") | String | Required, Unique | | | IPv4 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. | + | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -1315,12 +1321,6 @@ | [          user](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | - | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | - | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | | - | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. | - | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [      address_family_ipv6](## "router_bgp.vrfs.[].address_family_ipv6") | Dictionary | | | | | | [        bgp](## "router_bgp.vrfs.[].address_family_ipv6.bgp") | Dictionary | | | | | | [          missing_policy](## "router_bgp.vrfs.[].address_family_ipv6.bgp.missing_policy") | Dictionary | | | | | @@ -1349,6 +1349,12 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dhcp
- dynamic
- isis
- ospfv3
- static
- user | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].include_leaked") | Boolean | | | | | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. | + | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospfv3'.
| | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv6.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.attached_host") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -1399,12 +1405,6 @@ | [          user](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user.enabled") | Boolean | Required | | | | | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dhcp
- dynamic
- isis
- ospfv3
- static
- user | | - | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].route_map") | String | | | | | - | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].include_leaked") | Boolean | | | | | - | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. | - | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospfv3'.
| | [      address_family_ipv4_multicast](## "router_bgp.vrfs.[].address_family_ipv4_multicast") | Dictionary | | | | | | [        bgp](## "router_bgp.vrfs.[].address_family_ipv4_multicast.bgp") | Dictionary | | | | | | [          missing_policy](## "router_bgp.vrfs.[].address_family_ipv4_multicast.bgp.missing_policy") | Dictionary | | | | | @@ -1422,6 +1422,12 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | + | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -1468,12 +1474,6 @@ | [          static](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | - | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | - | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | - | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | - | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [      address_family_ipv6_multicast](## "router_bgp.vrfs.[].address_family_ipv6_multicast") | Dictionary | | | | | | [        bgp](## "router_bgp.vrfs.[].address_family_ipv6_multicast.bgp") | Dictionary | | | | | | [          missing_policy](## "router_bgp.vrfs.[].address_family_ipv6_multicast.bgp.missing_policy") | Dictionary | | | | | @@ -1491,6 +1491,12 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | + | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [          connected](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.connected") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.connected.enabled") | Boolean | Required | | | | @@ -1530,12 +1536,6 @@ | [          static](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute.static.route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | - | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | - | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | - | [            rcf](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | - | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [      address_family_flow_spec_ipv4](## "router_bgp.vrfs.[].address_family_flow_spec_ipv4") | Dictionary | | | | | | [        bgp](## "router_bgp.vrfs.[].address_family_flow_spec_ipv4.bgp") | Dictionary | | | | | | [          missing_policy](## "router_bgp.vrfs.[].address_family_flow_spec_ipv4.bgp.missing_policy") | Dictionary | | | | | @@ -2540,6 +2540,25 @@ # Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. send_limit: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -2673,25 +2692,6 @@ # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. rcf: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv4_labeled_unicast: aigp_session: confederation: @@ -2986,6 +2986,25 @@ route_map_out: additional_paths: receive: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -3058,25 +3077,6 @@ static: enabled: route_map: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is `isis`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv4_sr_te: neighbors: - ip_address: @@ -3360,6 +3360,25 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + route_map: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -3429,25 +3448,6 @@ static: enabled: route_map: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - - # Only applicable if `source_protocol` is `isis`. - include_leaked: - route_map: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv6_sr_te: neighbors: - ip_address: @@ -4171,6 +4171,23 @@ # IPv4 prefix "A.B.C.D/E". - prefix: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -4304,23 +4321,6 @@ # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. rcf: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv6: bgp: missing_policy: @@ -4393,6 +4393,23 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -4491,23 +4508,6 @@ # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. rcf: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospfv3'. - ospf_route_type: address_family_ipv4_multicast: bgp: missing_policy: @@ -4531,6 +4531,25 @@ # IPv6 prefix "A.B.C.D/E". - prefix: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -4615,25 +4634,6 @@ static: enabled: route_map: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is `isis`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv6_multicast: bgp: missing_policy: @@ -4657,6 +4657,25 @@ # IPv6 prefix "A:B:C:D:E:F:G:H/I". - prefix: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -4726,25 +4745,6 @@ static: enabled: route_map: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is `isis`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_flow_spec_ipv4: bgp: missing_policy: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index bb233624d94..2adc0944d56 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -13473,6 +13473,61 @@ keys: type: str description: Apply the configurations only to the routes matching the prefix list. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, + `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is one of `connected`, `static`, + `isis`, `user`, `dynamic`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -13709,61 +13764,6 @@ keys: `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.' - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, - `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is one of `connected`, `static`, - `isis`, `user`, `dynamic`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' address_family_ipv4_labeled_unicast: type: dict keys: @@ -14227,6 +14227,48 @@ keys: keys: receive: type: bool + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is `isis`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -14371,48 +14413,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is `isis`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' address_family_ipv4_sr_te: type: dict keys: @@ -14857,6 +14857,54 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - connected + - isis + - ospf + - ospfv3 + - static + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + route_map: + type: str + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is `isis`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -14993,64 +15041,16 @@ keys: required: true route_map: type: str - redistribute_routes: + address_family_ipv6_sr_te: + type: dict + keys: + neighbors: type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute + primary_key: ip_address items: type: dict keys: - source_protocol: - type: str - valid_values: - - connected - - isis - - ospf - - ospfv3 - - static - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - route_map: - type: str - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is `isis`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' - address_family_ipv6_sr_te: - type: dict - keys: - neighbors: - type: list - primary_key: ip_address - items: - type: dict - keys: - ip_address: + ip_address: type: str activate: type: bool @@ -16308,6 +16308,59 @@ keys: description: IPv4 prefix "A.B.C.D/E". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. + + Only applicable if `source_protocol` is one of `connected`, + `dynamic`, `isis`, `static` and `user`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -16546,59 +16599,6 @@ keys: `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.' - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user - route_map: - type: str - include_leaked: - type: bool - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. - - Only applicable if `source_protocol` is one of `connected`, - `dynamic`, `isis`, `static` and `user`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. - - ' address_family_ipv6: type: dict keys: @@ -16680,6 +16680,57 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dhcp + - dynamic + - isis + - ospfv3 + - static + - user + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. + + Only applicable if `source_protocol` is one of `connected`, + `dynamic`, `isis`, `static` and `user`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -16860,57 +16911,6 @@ keys: `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.' - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dhcp - - dynamic - - isis - - ospfv3 - - static - - user - route_map: - type: str - include_leaked: - type: bool - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. - - Only applicable if `source_protocol` is one of `connected`, - `dynamic`, `isis`, `static` and `user`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospfv3''. - - ' address_family_ipv4_multicast: type: dict keys: @@ -16969,6 +16969,55 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - connected + - isis + - ospf + - ospfv3 + - static + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. + + Only applicable if `source_protocol` is `isis`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -17127,55 +17176,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - connected - - isis - - ospf - - ospfv3 - - static - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. - - Only applicable if `source_protocol` is `isis`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. - - ' address_family_ipv6_multicast: type: dict keys: @@ -17234,6 +17234,54 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - connected + - isis + - ospf + - ospfv3 + - static + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. + + Only applicable if `source_protocol` is `isis`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -17372,54 +17420,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - connected - - isis - - ospf - - ospfv3 - - static - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. - - Only applicable if `source_protocol` is `isis`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. - - ' address_family_flow_spec_ipv4: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 8e2f4c62fe3..951cf837a89 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1648,6 +1648,53 @@ keys: prefix_list: type: str description: Apply the configurations only to the routes matching the prefix list. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: True + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dynamic" + - "isis" + - "ospf" + - "ospfv3" + - "rip" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -1870,53 +1917,6 @@ keys: RCF function name with parenthesis. Example: MyFunction(myarg). `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: True - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dynamic" - - "isis" - - "ospf" - - "ospfv3" - - "rip" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv4_labeled_unicast: type: dict keys: @@ -2347,6 +2347,42 @@ keys: keys: receive: type: bool + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is `isis`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -2485,42 +2521,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is `isis`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv4_sr_te: type: dict keys: @@ -2943,6 +2943,48 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "connected" + - "isis" + - "ospf" + - "ospfv3" + - "static" + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + route_map: + type: str + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is `isis`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -3073,48 +3115,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "connected" - - "isis" - - "ospf" - - "ospfv3" - - "static" - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - route_map: - type: str - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is `isis`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv6_sr_te: type: dict keys: @@ -4315,12 +4315,58 @@ keys: description: IPv4 prefix "A.B.C.D/E". route_map: type: str - redistribute: - type: dict - description: Redistribute routes in to BGP. - keys: - attached_host: - type: dict + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dynamic" + - "isis" + - "ospf" + - "ospfv3" + - "rip" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + redistribute: + type: dict + description: Redistribute routes in to BGP. + keys: + attached_host: + type: dict keys: enabled: type: bool @@ -4537,52 +4583,6 @@ keys: RCF function name with parenthesis. Example: MyFunction(myarg). `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dynamic" - - "isis" - - "ospf" - - "ospfv3" - - "rip" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv6: type: dict keys: @@ -4663,6 +4663,51 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dhcp" + - "dynamic" + - "isis" + - "ospfv3" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -4830,51 +4875,6 @@ keys: RCF function name with parenthesis. Example: MyFunction(myarg). `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dhcp" - - "dynamic" - - "isis" - - "ospfv3" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `dynamic`, `isis`, `static` and `user`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospfv3'. address_family_ipv4_multicast: type: dict keys: @@ -4933,6 +4933,49 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "connected" + - "isis" + - "ospf" + - "ospfv3" + - "static" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is `isis`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -5083,49 +5126,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "connected" - - "isis" - - "ospf" - - "ospfv3" - - "static" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is `isis`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv6_multicast: type: dict keys: @@ -5184,6 +5184,48 @@ keys: description: IPv6 prefix "A:B:C:D:E:F:G:H/I". route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "connected" + - "isis" + - "ospf" + - "ospfv3" + - "static" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is `isis`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -5314,48 +5356,6 @@ keys: required: true route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "connected" - - "isis" - - "ospf" - - "ospfv3" - - "static" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is `isis`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_flow_spec_ipv4: type: dict keys: From eb0457634eba277ef43edfa88a2567af96d7b866 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Fri, 4 Oct 2024 05:26:01 -0700 Subject: [PATCH 3/8] fix the diff for address_family_ipv4 --- .../docs/tables/router-bgp.md | 50 ++++---- .../schema/eos_cli_config_gen.schema.yml | 110 +++++++++--------- .../schema_fragments/router_bgp.schema.yml | 94 +++++++-------- 3 files changed, 127 insertions(+), 127 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 30e3f062ac7..64a5c8878aa 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -472,12 +472,6 @@ | [          receive](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.receive") | Boolean | | | | Enable or disable reception of additional-paths. | | [          send](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send") | String | | | Valid Values:
- any
- backup
- ecmp
- limit
- disabled | Select an option to send multiple paths for same prefix through bgp updates.
any: Send any eligible path.
backup: Best path and installed backup path.
ecmp: All paths in best path ECMP group.
limit: Limit to n eligible paths.
disabled: Disable sending any paths. | | [          send_limit](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send_limit") | Integer | | | Min: 2
Max: 64 | Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. | - | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | - | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | - | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | - | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | - | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [    redistribute](## "router_bgp.address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [      attached_host](## "router_bgp.address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -545,6 +539,12 @@ | [      user](## "router_bgp.address_family_ipv4.redistribute.user") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | | [        rcf](## "router_bgp.address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | + | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [  address_family_ipv4_labeled_unicast](## "router_bgp.address_family_ipv4_labeled_unicast") | Dictionary | | | | | | [    aigp_session](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session") | Dictionary | | | | | | [      confederation](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session.confederation") | Boolean | | | | | @@ -2540,25 +2540,6 @@ # Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. send_limit: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -2692,6 +2673,25 @@ # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. rcf: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: address_family_ipv4_labeled_unicast: aigp_session: confederation: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index 2adc0944d56..5b5105a8ff0 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -13473,61 +13473,6 @@ keys: type: str description: Apply the configurations only to the routes matching the prefix list. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, - `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is one of `connected`, `static`, - `isis`, `user`, `dynamic`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -13764,6 +13709,61 @@ keys: `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.' + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, + `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is one of `connected`, `static`, + `isis`, `user`, `dynamic`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' address_family_ipv4_labeled_unicast: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 951cf837a89..cbbbf9c89d7 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1648,53 +1648,6 @@ keys: prefix_list: type: str description: Apply the configurations only to the routes matching the prefix list. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: True - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dynamic" - - "isis" - - "ospf" - - "ospfv3" - - "rip" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -1917,6 +1870,53 @@ keys: RCF function name with parenthesis. Example: MyFunction(myarg). `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: True + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dynamic" + - "isis" + - "ospf" + - "ospfv3" + - "rip" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv4_labeled_unicast: type: dict keys: From 7a449010e1e1853a5418c01af564fc9e264e46b4 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Mon, 7 Oct 2024 14:52:02 +0530 Subject: [PATCH 4/8] improve the coverage --- .../documentation/devices/router-bgp-evpn.md | 32 +++++ .../devices/router-bgp-v4-evpn.md | 24 +++- .../router-bgp-vrf-address-families.md | 66 ++++++---- .../intended/configs/router-bgp-evpn.cfg | 32 +++++ .../intended/configs/router-bgp-v4-evpn.cfg | 24 +++- .../router-bgp-vrf-address-families.cfg | 66 ++++++---- .../inventory/host_vars/router-bgp-evpn.yml | 115 ++++++++++++++++++ .../host_vars/router-bgp-v4-evpn.yml | 83 ++++++++++++- .../router-bgp-vrf-address-families.yml | 111 ++++++++++++++++- 9 files changed, 501 insertions(+), 52 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index e9b5ca50e24..1e1f18d4b83 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -218,6 +218,18 @@ router bgp 65101 neighbor 192.168.255.3 allowas-in 5 neighbor 192.168.255.3 maximum-routes 52000 warning-limit 2000 warning-only neighbor 192.168.255.3 missing-policy address-family all direction in action deny + redistribute attached-host route-map RM_BGP_EVPN + redistribute connected include leaked + redistribute dynamic route-map RM_BGP_EVPN + redistribute isis level-2 include leaked route-map RM_BGP_EVPN + redistribute ospf match internal include leaked route-map RM_BGP_EVPN + redistribute ospf match external include leaked route-map RM_BGP_EVPN + redistribute ospfv3 include leaked route-map RM_BGP_EVPN + redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN + redistribute ospfv3 match nssa-external route-map RM_BGP_EVPN + redistribute rip route-map RM_BGP_EVPN + redistribute static include leaked + redistribute user rcf RCF_BGP_EVPN() ! vlan 2488 rd 145.245.21.0:1 @@ -319,6 +331,26 @@ router bgp 65101 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate + redistribute attached-host route-map RM_BGP_EVPN_IPV4 + redistribute bgp leaked route-map RM_BGP_EVPN_IPV4 + redistribute connected route-map RM_BGP_EVPN_IPV4 + redistribute dynamic rcf RCF_BGP_EVPN_IPV4() + redistribute isis level-1 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match nssa-external 2 route-map RM_BGP_EVPN_IPV4 + redistribute rip route-map RM_BGP_EVPN_IPV4 + redistribute static include leaked route-map RM_BGP_EVPN_IPV4 + redistribute user rcf RCF_BGP_EVPN_IPV4() + ! + address-family ipv4 multicast + redistribute ospf route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match internal route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match external route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match nssa-external 1 route-map RM_BGP_EVPN_IPV4M ! vrf TENANT_A_PROJECT01 rd 192.168.255.3:11 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md index eec67360f99..2d80e4f7d9c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md @@ -224,6 +224,10 @@ router bgp 65101 neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS redistribute connected route-map RM-CONN-2-BGP + redistribute dynamic rcf RCF-CONN-2-BGP() + redistribute isis level-2 include leaked rcf RCF-CONN-2-BGP() + redistribute ospfv3 match internal include leaked route-map RM-CONN-2-BGP + redistribute ospfv3 match nssa-external route-map RM-CONN-2-BGP ! vlan-aware-bundle B-ELAN-201 rd 192.168.255.3:20201 @@ -255,6 +259,9 @@ router bgp 65101 neighbor MLAG-IPv4-UNDERLAY-PEER activate neighbor TEST_PEER_GRP next-hop address-family ipv6 originate neighbor TEST_PEER_GRP activate + redistribute isis level-1 include leaked rcf Address_Family_IPV4_ISIS() + redistribute ospf match internal include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match internal include leaked route-map RM_BGP_EVPN_IPV4 ! address-family ipv4 multicast redistribute attached-host route-map AFIPV4M_ATTACHED_HOST @@ -268,12 +275,25 @@ router bgp 65101 ! address-family ipv6 redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP - redistribute connected rcf Address_Family_IPV6_Connected() + redistribute connected include leaked rcf Address_Family_IPV6_Connected() + redistribute dynamic route-map RM-REDISTRIBUTE-DYNAMIC + redistribute isis level-1-2 rcf RCF_Address_Family_IPV6_ISIS() redistribute ospfv3 match internal include leaked route-map RM-REDISTRIBUTE-OSPF-INTERNAL redistribute ospfv3 match external include leaked - redistribute ospfv3 match nssa-external 1 + redistribute ospfv3 match nssa-external 1 route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL redistribute static route-map RM-IPV6-STATIC-TO-BGP ! + address-family ipv6 multicast + redistribute connected route-map RM-address_family_ipv6_multicast-Connected + redistribute isis include leaked route-map RM-address_family_ipv6_multicast-ISIS + redistribute ospf route-map RM-address_family_ipv6_multicast-OSPF + redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospfv3 route-map RM-address_family_ipv6_multicast-OSPFv3 + redistribute ospfv3 match external route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute ospfv3 match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute static route-map RM-address_family_ipv6_multicast-Static + ! vrf TENANT_A_PROJECT01 rd 192.168.255.3:11 route-target import evpn 11:11 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md index c9ebf612543..a6a6086906c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md @@ -107,7 +107,9 @@ router bgp 65001 redistribute bgp leaked route-map RM_VRF_BGP redistribute connected include leaked rcf RCF_VRF_CONNECTED() redistribute isis level-2 rcf RCF_VRF_ISIS() - redistribute ospf match nssa-external route-map RM_VRF_OSPFV3 + redistribute ospf match internal include leaked route-map RM_VRF_OSPF + redistribute ospf match external include leaked route-map RM_VRF_OSPF + redistribute ospf match nssa-external 1 include leaked route-map RM_VRF_OSPF redistribute ospfv3 match internal include leaked route-map RM_VRF_OSPF redistribute rip route-map RM_VRF_RIP redistribute static route-map RM_VRF_STATIC @@ -136,11 +138,20 @@ router bgp 65001 neighbor 1.2.3.4 additional-paths send any network 2.3.4.0/24 route-map BARFOO no bgp redistribute-internal - redistribute connected rcf VRF_AFIPV4_RCF_CONNECTED_1() - redistribute ospf match external - redistribute ospf match nssa-external 1 - redistribute ospfv3 match internal - redistribute static route-map VRF_AFIPV4_RM_STATIC_1 + redistribute attached-host route-map VRF_AFIPV4_RM_HOST + redistribute bgp leaked route-map VRF_AFIPV4_RM_BGP + redistribute connected include leaked rcf VRF_AFIPV4_RCF_CONNECTED_1() + redistribute dynamic route-map VRF_AFIPV4_RM_DYNAMIC + redistribute isis level-1 include leaked rcf VRF_AFIPV4_RCF_ISIS() + redistribute ospf include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match internal include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match nssa-external 2 route-map VRF_AFIPV4_RM_OSPF + redistribute rip route-map VRF_AFIPV4_RM_RIP + redistribute static include leaked route-map VRF_AFIPV4_RM_STATIC_1 + redistribute user rcf VRF_AFIPV4_RCF_USER() ! address-family ipv4 multicast bgp missing-policy direction in action permit @@ -150,10 +161,15 @@ router bgp 65001 neighbor 1.2.3.4 route-map BAR out neighbor 1.2.3.4 additional-paths receive network 239.0.0.0/24 route-map BARFOO - redistribute connected - redistribute ospf match internal - redistribute ospf match nssa-external 2 - redistribute ospfv3 match external + redistribute attached-host route-map VRF_AFIPV4MULTI_RM_HOST + redistribute connected route-map VRF_AFIPV4MULTI_RM_CONNECTED + redistribute isis level-1 include leaked route-map VRF_AFIPV4MULTI_RM_ISIS + redistribute ospf match internal route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospfv3 match internal route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospfv3 match external route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC ! address-family ipv6 @@ -185,24 +201,30 @@ router bgp 65001 bgp additional-paths receive neighbor aa::1 additional-paths receive network ff08:1::/64 - redistribute connected - redistribute ospf match external - redistribute ospf match nssa-external - redistribute ospfv3 match internal + redistribute connected route-map VRF_AFIPV6MULTI_RM_CONNECTED + redistribute isis level-1-2 include leaked route-map VRF_AFIPV6MULTI_RM_ISIS + redistribute ospf route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospfv3 match internal route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospfv3 match external route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute static route-map VRF_AFIPV6MULTI_RM_STATIC ! vrf VRF02 neighbor 1.1.1.1 additional-paths receive neighbor 1.1.1.1 additional-paths send ecmp limit 24 - redistribute attached-host - redistribute bgp leaked - redistribute connected - redistribute dynamic - redistribute isis level-2 route-map RM_VRF_ISIS - redistribute ospf include leaked - redistribute ospfv3 match external + redistribute attached-host route-map RM_VRF_HOST + redistribute bgp leaked route-map RM_VRF_BGP + redistribute connected include leaked route-map RM_VRF_CONNECTED + redistribute dynamic route-map RM_VRF_DYNAMIC + redistribute isis level-2 include leaked route-map RM_VRF_ISIS + redistribute ospf include leaked route-map RM_VRF_OSPF + redistribute ospfv3 include leaked route-map RM_VRF_OSPFv3 + redistribute ospfv3 match external include leaked route-map RM_VRF_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map RM_VRF_OSPFv3 redistribute rip - redistribute static + redistribute static include leaked redistribute user ! address-family ipv4 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index 8eb90b10bc1..a4b4c178a4e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -41,6 +41,18 @@ router bgp 65101 neighbor 192.168.255.3 allowas-in 5 neighbor 192.168.255.3 maximum-routes 52000 warning-limit 2000 warning-only neighbor 192.168.255.3 missing-policy address-family all direction in action deny + redistribute attached-host route-map RM_BGP_EVPN + redistribute connected include leaked + redistribute dynamic route-map RM_BGP_EVPN + redistribute isis level-2 include leaked route-map RM_BGP_EVPN + redistribute ospf match internal include leaked route-map RM_BGP_EVPN + redistribute ospf match external include leaked route-map RM_BGP_EVPN + redistribute ospfv3 include leaked route-map RM_BGP_EVPN + redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN + redistribute ospfv3 match nssa-external route-map RM_BGP_EVPN + redistribute rip route-map RM_BGP_EVPN + redistribute static include leaked + redistribute user rcf RCF_BGP_EVPN() ! vlan 2488 rd 145.245.21.0:1 @@ -142,6 +154,26 @@ router bgp 65101 ! address-family ipv4 no neighbor EVPN-OVERLAY-PEERS activate + redistribute attached-host route-map RM_BGP_EVPN_IPV4 + redistribute bgp leaked route-map RM_BGP_EVPN_IPV4 + redistribute connected route-map RM_BGP_EVPN_IPV4 + redistribute dynamic rcf RCF_BGP_EVPN_IPV4() + redistribute isis level-1 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match nssa-external 2 route-map RM_BGP_EVPN_IPV4 + redistribute rip route-map RM_BGP_EVPN_IPV4 + redistribute static include leaked route-map RM_BGP_EVPN_IPV4 + redistribute user rcf RCF_BGP_EVPN_IPV4() + ! + address-family ipv4 multicast + redistribute ospf route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match internal route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match external route-map RM_BGP_EVPN_IPV4M + redistribute ospfv3 match nssa-external 1 route-map RM_BGP_EVPN_IPV4M ! vrf TENANT_A_PROJECT01 rd 192.168.255.3:11 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg index c939750c0a9..a632fbb0211 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg @@ -52,6 +52,10 @@ router bgp 65101 neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS redistribute connected route-map RM-CONN-2-BGP + redistribute dynamic rcf RCF-CONN-2-BGP() + redistribute isis level-2 include leaked rcf RCF-CONN-2-BGP() + redistribute ospfv3 match internal include leaked route-map RM-CONN-2-BGP + redistribute ospfv3 match nssa-external route-map RM-CONN-2-BGP ! vlan-aware-bundle B-ELAN-201 rd 192.168.255.3:20201 @@ -83,6 +87,9 @@ router bgp 65101 neighbor MLAG-IPv4-UNDERLAY-PEER activate neighbor TEST_PEER_GRP next-hop address-family ipv6 originate neighbor TEST_PEER_GRP activate + redistribute isis level-1 include leaked rcf Address_Family_IPV4_ISIS() + redistribute ospf match internal include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match internal include leaked route-map RM_BGP_EVPN_IPV4 ! address-family ipv4 multicast redistribute attached-host route-map AFIPV4M_ATTACHED_HOST @@ -96,12 +103,25 @@ router bgp 65101 ! address-family ipv6 redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP - redistribute connected rcf Address_Family_IPV6_Connected() + redistribute connected include leaked rcf Address_Family_IPV6_Connected() + redistribute dynamic route-map RM-REDISTRIBUTE-DYNAMIC + redistribute isis level-1-2 rcf RCF_Address_Family_IPV6_ISIS() redistribute ospfv3 match internal include leaked route-map RM-REDISTRIBUTE-OSPF-INTERNAL redistribute ospfv3 match external include leaked - redistribute ospfv3 match nssa-external 1 + redistribute ospfv3 match nssa-external 1 route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL redistribute static route-map RM-IPV6-STATIC-TO-BGP ! + address-family ipv6 multicast + redistribute connected route-map RM-address_family_ipv6_multicast-Connected + redistribute isis include leaked route-map RM-address_family_ipv6_multicast-ISIS + redistribute ospf route-map RM-address_family_ipv6_multicast-OSPF + redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospfv3 route-map RM-address_family_ipv6_multicast-OSPFv3 + redistribute ospfv3 match external route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute ospfv3 match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute static route-map RM-address_family_ipv6_multicast-Static + ! vrf TENANT_A_PROJECT01 rd 192.168.255.3:11 route-target import evpn 11:11 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg index d4c88660449..8ab733618cf 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg @@ -46,7 +46,9 @@ router bgp 65001 redistribute bgp leaked route-map RM_VRF_BGP redistribute connected include leaked rcf RCF_VRF_CONNECTED() redistribute isis level-2 rcf RCF_VRF_ISIS() - redistribute ospf match nssa-external route-map RM_VRF_OSPFV3 + redistribute ospf match internal include leaked route-map RM_VRF_OSPF + redistribute ospf match external include leaked route-map RM_VRF_OSPF + redistribute ospf match nssa-external 1 include leaked route-map RM_VRF_OSPF redistribute ospfv3 match internal include leaked route-map RM_VRF_OSPF redistribute rip route-map RM_VRF_RIP redistribute static route-map RM_VRF_STATIC @@ -75,11 +77,20 @@ router bgp 65001 neighbor 1.2.3.4 additional-paths send any network 2.3.4.0/24 route-map BARFOO no bgp redistribute-internal - redistribute connected rcf VRF_AFIPV4_RCF_CONNECTED_1() - redistribute ospf match external - redistribute ospf match nssa-external 1 - redistribute ospfv3 match internal - redistribute static route-map VRF_AFIPV4_RM_STATIC_1 + redistribute attached-host route-map VRF_AFIPV4_RM_HOST + redistribute bgp leaked route-map VRF_AFIPV4_RM_BGP + redistribute connected include leaked rcf VRF_AFIPV4_RCF_CONNECTED_1() + redistribute dynamic route-map VRF_AFIPV4_RM_DYNAMIC + redistribute isis level-1 include leaked rcf VRF_AFIPV4_RCF_ISIS() + redistribute ospf include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match internal include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match nssa-external 2 route-map VRF_AFIPV4_RM_OSPF + redistribute rip route-map VRF_AFIPV4_RM_RIP + redistribute static include leaked route-map VRF_AFIPV4_RM_STATIC_1 + redistribute user rcf VRF_AFIPV4_RCF_USER() ! address-family ipv4 multicast bgp missing-policy direction in action permit @@ -89,10 +100,15 @@ router bgp 65001 neighbor 1.2.3.4 route-map BAR out neighbor 1.2.3.4 additional-paths receive network 239.0.0.0/24 route-map BARFOO - redistribute connected - redistribute ospf match internal - redistribute ospf match nssa-external 2 - redistribute ospfv3 match external + redistribute attached-host route-map VRF_AFIPV4MULTI_RM_HOST + redistribute connected route-map VRF_AFIPV4MULTI_RM_CONNECTED + redistribute isis level-1 include leaked route-map VRF_AFIPV4MULTI_RM_ISIS + redistribute ospf match internal route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospfv3 match internal route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospfv3 match external route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC ! address-family ipv6 @@ -124,24 +140,30 @@ router bgp 65001 bgp additional-paths receive neighbor aa::1 additional-paths receive network ff08:1::/64 - redistribute connected - redistribute ospf match external - redistribute ospf match nssa-external - redistribute ospfv3 match internal + redistribute connected route-map VRF_AFIPV6MULTI_RM_CONNECTED + redistribute isis level-1-2 include leaked route-map VRF_AFIPV6MULTI_RM_ISIS + redistribute ospf route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospfv3 match internal route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospfv3 match external route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute static route-map VRF_AFIPV6MULTI_RM_STATIC ! vrf VRF02 neighbor 1.1.1.1 additional-paths receive neighbor 1.1.1.1 additional-paths send ecmp limit 24 - redistribute attached-host - redistribute bgp leaked - redistribute connected - redistribute dynamic - redistribute isis level-2 route-map RM_VRF_ISIS - redistribute ospf include leaked - redistribute ospfv3 match external + redistribute attached-host route-map RM_VRF_HOST + redistribute bgp leaked route-map RM_VRF_BGP + redistribute connected include leaked route-map RM_VRF_CONNECTED + redistribute dynamic route-map RM_VRF_DYNAMIC + redistribute isis level-2 include leaked route-map RM_VRF_ISIS + redistribute ospf include leaked route-map RM_VRF_OSPF + redistribute ospfv3 include leaked route-map RM_VRF_OSPFv3 + redistribute ospfv3 match external include leaked route-map RM_VRF_OSPFv3 + redistribute ospfv3 match nssa-external 1 route-map RM_VRF_OSPFv3 redistribute rip - redistribute static + redistribute static include leaked redistribute user ! address-family ipv4 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml index e6814086c98..8f4da07094f 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-evpn.yml @@ -70,6 +70,51 @@ router_bgp: action: deny maximum_routes_warning_limit: 2000 maximum_routes_warning_only: true + redistribute: + attached_host: + enabled: true + route_map: RM_BGP_EVPN + connected: + enabled: true + include_leaked: true + dynamic: + enabled: true + route_map: RM_BGP_EVPN + isis: + enabled: true + isis_level: level-2 + include_leaked: true + route_map: RM_BGP_EVPN + ospf: + match_internal: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN + match_external: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN + ospfv3: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN + match_external: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN + match_nssa_external: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN + rip: + enabled: true + route_map: RM_BGP_EVPN + static: + enabled: true + include_leaked: true + user: + enabled: true + rcf: RCF_BGP_EVPN() redistribute_routes: address_family_evpn: neighbor_default: @@ -163,10 +208,80 @@ router_bgp: send: any layer_2_fec_in_place_update: enabled: true + address_family_ipv4_multicast: + redistribute: + ospf: + enabled: true + route_map: RM_BGP_EVPN_IPV4M + ospfv3: + match_external: + enabled: true + route_map: RM_BGP_EVPN_IPV4M + match_nssa_external: + enabled: true + nssa_type: 1 + route_map: RM_BGP_EVPN_IPV4M + match_internal: + enabled: true + route_map: RM_BGP_EVPN_IPV4M address_family_ipv4: peer_groups: - name: EVPN-OVERLAY-PEERS activate: false + redistribute: + attached_host: + enabled: true + route_map: RM_BGP_EVPN_IPV4 + bgp: + enabled: true + route_map: RM_BGP_EVPN_IPV4 + connected: + enabled: true + route_map: RM_BGP_EVPN_IPV4 + dynamic: + enabled: true + rcf: RCF_BGP_EVPN_IPV4() + isis: + enabled: true + isis_level: level-1 + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + ospf: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + match_external: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + match_nssa_external: + enabled: true + include_leaked: true + nssa_type: 1 + route_map: RM_BGP_EVPN_IPV4 + ospfv3: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + match_external: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + match_nssa_external: + enabled: true + include_leaked: true + nssa_type: 2 + route_map: RM_BGP_EVPN_IPV4 + rip: + enabled: true + route_map: RM_BGP_EVPN_IPV4 + static: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + user: + enabled: true + rcf: RCF_BGP_EVPN_IPV4() vlan_aware_bundles: ## Tenant_A ## - name: TENANT_A_PROJECT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml index 84575cac4bc..f9f09b7f535 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-v4-evpn.yml @@ -74,6 +74,23 @@ router_bgp: connected: enabled: true route_map: RM-CONN-2-BGP + dynamic: + enabled: true + rcf: RCF-CONN-2-BGP() + isis: + enabled: true + isis_level: level-2 + include_leaked: true + rcf: RCF-CONN-2-BGP() + ospfv3: + match_internal: + enabled: true + include_leaked: true + route_map: RM-CONN-2-BGP + match_nssa_external: + enabled: true + include_leaked: true + route_map: RM-CONN-2-BGP address_family_evpn: bgp: additional_paths: @@ -98,6 +115,8 @@ router_bgp: match_nssa_external: enabled: true nssa_type: 1 + include_leaked: true + route_map: RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL static: enabled: true route_map: RM-IPV6-STATIC-TO-BGP @@ -106,7 +125,47 @@ router_bgp: route_map: RM-REDISTRIBUTE-BGP connected: enabled: true + include_leaked: true rcf: Address_Family_IPV6_Connected() + dynamic: + enabled: true + route_map: RM-REDISTRIBUTE-DYNAMIC + isis: + enabled: true + isis_level: level-1-2 + rcf: RCF_Address_Family_IPV6_ISIS() + address_family_ipv6_multicast: + redistribute: + connected: + enabled: true + route_map: RM-address_family_ipv6_multicast-Connected + isis: + enabled: true + include_leaked: true + route_map: RM-address_family_ipv6_multicast-ISIS + ospf: + enabled: true + route_map: RM-address_family_ipv6_multicast-OSPF + match_external: + enabled: true + route_map: RM-address_family_ipv6_multicast-OSPF-External + match_nssa_external: + enabled: true + nssa_type: 2 + route_map: RM-address_family_ipv6_multicast-OSPF-External + ospfv3: + enabled: true + route_map: RM-address_family_ipv6_multicast-OSPFv3 + match_external: + enabled: true + route_map: RM-address_family_ipv6_multicast-OSPFv3-External + match_nssa_external: + enabled: true + nssa_type: 2 + route_map: RM-address_family_ipv6_multicast-OSPFv3-External + static: + enabled: true + route_map: RM-address_family_ipv6_multicast-Static address_family_ipv4_multicast: redistribute: attached_host: @@ -150,6 +209,22 @@ router_bgp: address_family_ipv6: enabled: true originate: true + redistribute: + isis: + enabled: true + isis_level: level-1 + include_leaked: true + rcf: Address_Family_IPV4_ISIS() + ospf: + match_internal: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 + ospfv3: + match_internal: + enabled: true + include_leaked: true + route_map: RM_BGP_EVPN_IPV4 vlan_aware_bundles: ## Tenant_A ## - name: TENANT_A_PROJECT01 @@ -257,10 +332,12 @@ router_bgp: - prefix: 10.0.0.0/8 - prefix: 100.64.0.0/10 route_map: RM-10.2.3.4 - redistribute_routes: - - source_protocol: connected + redistribute: + connected: + enabled: true rcf: VRF_AFIPV4_RCF_CONNECTED() - - source_protocol: static + static: + enabled: true route_map: VRF_AFIPV4_RM_STATIC redistribute: connected: diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml index 7cc4d420ece..f554f3c292c 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/router-bgp-vrf-address-families.yml @@ -74,9 +74,19 @@ router_bgp: enabled: true route_map: RM_VRF_RIP ospf: + match_internal: + enabled: true + include_leaked: true + route_map: RM_VRF_OSPF + match_external: + enabled: true + include_leaked: true + route_map: RM_VRF_OSPF match_nssa_external: enabled: true - route_map: RM_VRF_OSPFV3 + nssa_type: 1 + include_leaked: true + route_map: RM_VRF_OSPF ospfv3: match_internal: enabled: true @@ -125,21 +135,61 @@ router_bgp: - prefix: 2.3.4.0/24 route_map: BARFOO redistribute: + user: + enabled: true + rcf: VRF_AFIPV4_RCF_USER() + attached_host: + enabled: true + route_map: VRF_AFIPV4_RM_HOST + bgp: + enabled: true + route_map: VRF_AFIPV4_RM_BGP + dynamic: + enabled: true + route_map: VRF_AFIPV4_RM_DYNAMIC ospf: + enabled: true + include_leaked: true + route_map: VRF_AFIPV4_RM_OSPF match_external: enabled: true + include_leaked: true + route_map: VRF_AFIPV4_RM_OSPF match_nssa_external: enabled: true nssa_type: 1 + include_leaked: true + route_map: VRF_AFIPV4_RM_OSPF ospfv3: match_internal: enabled: true + include_leaked: true + route_map: VRF_AFIPV4_RM_OSPF + match_external: + enabled: true + include_leaked: true + route_map: VRF_AFIPV4_RM_OSPF + match_nssa_external: + enabled: true + include_leaked: true + nssa_type: 2 + route_map: VRF_AFIPV4_RM_OSPF connected: enabled: true + include_leaked: true rcf: VRF_AFIPV4_RCF_CONNECTED_1() static: enabled: true + include_leaked: true route_map: VRF_AFIPV4_RM_STATIC_1 + isis: + enabled: true + isis_level: level-1 + include_leaked: true + rcf: VRF_AFIPV4_RCF_ISIS() + rip: + enabled: true + route_map: VRF_AFIPV4_RM_RIP address_family_ipv6: bgp: missing_policy: @@ -200,20 +250,42 @@ router_bgp: - prefix: 239.0.0.0/24 route_map: BARFOO redistribute: + attached_host: + enabled: true + route_map: VRF_AFIPV4MULTI_RM_HOST ospfv3: + match_internal: + enabled: true + route_map: VRF_AFIPV4MULTI_RM_OSPFv3 match_external: enabled: true + route_map: VRF_AFIPV4MULTI_RM_OSPFv3 + match_nssa_external: + enabled: true + nssa_type: 1 + route_map: VRF_AFIPV4MULTI_RM_OSPFv3 ospf: match_internal: enabled: true + route_map: VRF_AFIPV4MULTI_RM_OSPF + match_external: + enabled: true + route_map: VRF_AFIPV4MULTI_RM_OSPF match_nssa_external: enabled: true nssa_type: 2 + route_map: VRF_AFIPV4MULTI_RM_OSPF connected: enabled: true + route_map: VRF_AFIPV4MULTI_RM_CONNECTED static: enabled: true route_map: VRF_AFIPV4MULTI_RM_STATIC + isis: + enabled: true + isis_level: level-1 + include_leaked: true + route_map: VRF_AFIPV4MULTI_RM_ISIS address_family_ipv6_multicast: bgp: additional_paths: @@ -230,18 +302,37 @@ router_bgp: - prefix: ff08:1::/64 redistribute: ospf: + enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPF match_external: enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPF match_nssa_external: enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPF + nssa_type: 1 ospfv3: match_internal: enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPFv3 + match_external: + enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPFv3 + match_nssa_external: + enabled: true + route_map: VRF_AFIPV6MULTI_RM_OSPFv3 + nssa_type: 1 connected: enabled: true + route_map: VRF_AFIPV6MULTI_RM_CONNECTED static: enabled: true route_map: VRF_AFIPV6MULTI_RM_STATIC + isis: + enabled: true + isis_level: level-1-2 + include_leaked: true + route_map: VRF_AFIPV6MULTI_RM_ISIS address_family_flow_spec_ipv4: bgp: missing_policy: @@ -278,28 +369,46 @@ router_bgp: redistribute: dynamic: enabled: true + route_map: RM_VRF_DYNAMIC user: enabled: true static: enabled: true + include_leaked: true rip: enabled: true ospf: enabled: true include_leaked: true + route_map: RM_VRF_OSPF ospfv3: + enabled: true + include_leaked: true + route_map: RM_VRF_OSPFv3 match_external: enabled: true + include_leaked: true + route_map: RM_VRF_OSPFv3 + match_nssa_external: + enabled: true + nssa_type: 1 + include_leaked: true + route_map: RM_VRF_OSPFv3 isis: enabled: true isis_level: level-2 route_map: RM_VRF_ISIS + include_leaked: true connected: enabled: true + include_leaked: true + route_map: RM_VRF_CONNECTED bgp: enabled: true + route_map: RM_VRF_BGP attached_host: enabled: true + route_map: RM_VRF_HOST - name: VRF03 address_family_ipv4: From 3768537e49fe70ee42212380f0ca770d25ef8676 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Mon, 7 Oct 2024 16:11:55 +0530 Subject: [PATCH 5/8] updated the schema order --- .../docs/tables/router-bgp.md | 100 ++++----- .../schema/eos_cli_config_gen.schema.yml | 208 +++++++++--------- .../schema_fragments/router_bgp.schema.yml | 180 +++++++-------- 3 files changed, 244 insertions(+), 244 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 64a5c8878aa..18d7308a0cd 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -472,6 +472,12 @@ | [          receive](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.receive") | Boolean | | | | Enable or disable reception of additional-paths. | | [          send](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send") | String | | | Valid Values:
- any
- backup
- ecmp
- limit
- disabled | Select an option to send multiple paths for same prefix through bgp updates.
any: Send any eligible path.
backup: Best path and installed backup path.
ecmp: All paths in best path ECMP group.
limit: Limit to n eligible paths.
disabled: Disable sending any paths. | | [          send_limit](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send_limit") | Integer | | | Min: 2
Max: 64 | Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | + | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | + | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | + | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | + | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [    redistribute](## "router_bgp.address_family_ipv4.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [      attached_host](## "router_bgp.address_family_ipv4.redistribute.attached_host") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -539,12 +545,6 @@ | [      user](## "router_bgp.address_family_ipv4.redistribute.user") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv4.redistribute.user.enabled") | Boolean | Required | | | | | [        rcf](## "router_bgp.address_family_ipv4.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | - | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | - | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | - | [        rcf](## "router_bgp.address_family_ipv4.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | - | [        ospf_route_type](## "router_bgp.address_family_ipv4.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [  address_family_ipv4_labeled_unicast](## "router_bgp.address_family_ipv4_labeled_unicast") | Dictionary | | | | | | [    aigp_session](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session") | Dictionary | | | | | | [      confederation](## "router_bgp.address_family_ipv4_labeled_unicast.aigp_session.confederation") | Boolean | | | | | @@ -1422,12 +1422,6 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | - | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | - | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | - | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | - | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | - | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [        redistribute](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute") | Dictionary | | | | Redistribute routes in to BGP. | | [          attached_host](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.attached_host.enabled") | Boolean | Required | | | | @@ -1474,6 +1468,12 @@ | [          static](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.route_map") | String | | | | | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | + | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | + | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | + | [            rcf](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is `isis`. | + | [            ospf_route_type](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].ospf_route_type") | String | | | Valid Values:
- external
- internal
- nssa-external
- nssa-external 1
- nssa-external 2 | Routes learned by the OSPF protocol.
The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'.
| | [      address_family_ipv6_multicast](## "router_bgp.vrfs.[].address_family_ipv6_multicast") | Dictionary | | | | | | [        bgp](## "router_bgp.vrfs.[].address_family_ipv6_multicast.bgp") | Dictionary | | | | | | [          missing_policy](## "router_bgp.vrfs.[].address_family_ipv6_multicast.bgp.missing_policy") | Dictionary | | | | | @@ -2540,6 +2540,25 @@ # Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. send_limit: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -2673,25 +2692,6 @@ # Example: MyFunction(myarg). # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. rcf: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: address_family_ipv4_labeled_unicast: aigp_session: confederation: @@ -4531,25 +4531,6 @@ # IPv6 prefix "A.B.C.D/E". - prefix: route_map: - # This key is deprecated. - # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. - redistribute_routes: - - source_protocol: - route_map: - - # Only applicable if `source_protocol` is `isis`. - include_leaked: - - # RCF function name with parenthesis. - # Example: MyFunction(myarg). - # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - # Only applicable if `source_protocol` is `isis`. - rcf: - - # Routes learned by the OSPF protocol. - # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. - ospf_route_type: # Redistribute routes in to BGP. redistribute: @@ -4634,6 +4615,25 @@ static: enabled: route_map: + # This key is deprecated. + # Support will be removed in AVD version 6.0.0. + # Use redistribute instead. + redistribute_routes: + - source_protocol: + route_map: + + # Only applicable if `source_protocol` is `isis`. + include_leaked: + + # RCF function name with parenthesis. + # Example: MyFunction(myarg). + # `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + # Only applicable if `source_protocol` is `isis`. + rcf: + + # Routes learned by the OSPF protocol. + # The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. + ospf_route_type: address_family_ipv6_multicast: bgp: missing_policy: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index 942e49ae60b..500a3ca7477 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -13480,6 +13480,61 @@ keys: type: str description: Apply the configurations only to the routes matching the prefix list. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - bgp + - connected + - dynamic + - isis + - ospf + - ospfv3 + - rip + - static + - user + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, + `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` takes + precedence. + + Only applicable if `source_protocol` is one of `connected`, `static`, + `isis`, `user`, `dynamic`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' and + ''ospfv3''. + + ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -13716,61 +13771,6 @@ keys: `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.' - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - bgp - - connected - - dynamic - - isis - - ospf - - ospfv3 - - rip - - static - - user - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, - `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` takes - precedence. - - Only applicable if `source_protocol` is one of `connected`, `static`, - `isis`, `user`, `dynamic`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' and - ''ospfv3''. - - ' address_family_ipv4_labeled_unicast: type: dict keys: @@ -16976,55 +16976,6 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - attached-host - - connected - - isis - - ospf - - ospfv3 - - static - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: 'RCF function name with parenthesis. - - Example: MyFunction(myarg). - - `route_map` and `rcf` are mutually exclusive. `route_map` - takes precedence. - - Only applicable if `source_protocol` is `isis`.' - ospf_route_type: - type: str - valid_values: - - external - - internal - - nssa-external - - nssa-external 1 - - nssa-external 2 - description: 'Routes learned by the OSPF protocol. - - The `ospf_route_type` is valid for source_protocols ''ospf'' - and ''ospfv3''. - - ' redistribute: type: dict description: Redistribute routes in to BGP. @@ -17183,6 +17134,55 @@ keys: required: true route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - attached-host + - connected + - isis + - ospf + - ospfv3 + - static + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: 'RCF function name with parenthesis. + + Example: MyFunction(myarg). + + `route_map` and `rcf` are mutually exclusive. `route_map` + takes precedence. + + Only applicable if `source_protocol` is `isis`.' + ospf_route_type: + type: str + valid_values: + - external + - internal + - nssa-external + - nssa-external 1 + - nssa-external 2 + description: 'Routes learned by the OSPF protocol. + + The `ospf_route_type` is valid for source_protocols ''ospf'' + and ''ospfv3''. + + ' address_family_ipv6_multicast: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index cbbbf9c89d7..893af62ff55 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -1648,6 +1648,53 @@ keys: prefix_list: type: str description: Apply the configurations only to the routes matching the prefix list. + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: True + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "bgp" + - "connected" + - "dynamic" + - "isis" + - "ospf" + - "ospfv3" + - "rip" + - "static" + - "user" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -1870,53 +1917,6 @@ keys: RCF function name with parenthesis. Example: MyFunction(myarg). `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: True - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "bgp" - - "connected" - - "dynamic" - - "isis" - - "ospf" - - "ospfv3" - - "rip" - - "static" - - "user" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv4_labeled_unicast: type: dict keys: @@ -4933,49 +4933,6 @@ keys: description: IPv6 prefix "A.B.C.D/E". route_map: type: str - redistribute_routes: - type: list - primary_key: source_protocol - allow_duplicate_primary_key: true - deprecation: - warning: true - remove_in_version: 6.0.0 - new_key: redistribute - items: - type: dict - keys: - source_protocol: - type: str - valid_values: - - "attached-host" - - "connected" - - "isis" - - "ospf" - - "ospfv3" - - "static" - route_map: - type: str - include_leaked: - type: bool - description: Only applicable if `source_protocol` is `isis`. - rcf: - type: str - description: |- - RCF function name with parenthesis. - Example: MyFunction(myarg). - `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. - Only applicable if `source_protocol` is `isis`. - ospf_route_type: - type: str - valid_values: - - "external" - - "internal" - - "nssa-external" - - "nssa-external 1" - - "nssa-external 2" - description: | - Routes learned by the OSPF protocol. - The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. redistribute: type: dict description: Redistribute routes in to BGP. @@ -5126,6 +5083,49 @@ keys: required: true route_map: type: str + redistribute_routes: + type: list + primary_key: source_protocol + allow_duplicate_primary_key: true + deprecation: + warning: true + remove_in_version: 6.0.0 + new_key: redistribute + items: + type: dict + keys: + source_protocol: + type: str + valid_values: + - "attached-host" + - "connected" + - "isis" + - "ospf" + - "ospfv3" + - "static" + route_map: + type: str + include_leaked: + type: bool + description: Only applicable if `source_protocol` is `isis`. + rcf: + type: str + description: |- + RCF function name with parenthesis. + Example: MyFunction(myarg). + `route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. + Only applicable if `source_protocol` is `isis`. + ospf_route_type: + type: str + valid_values: + - "external" + - "internal" + - "nssa-external" + - "nssa-external 1" + - "nssa-external 2" + description: | + Routes learned by the OSPF protocol. + The `ospf_route_type` is valid for source_protocols 'ospf' and 'ospfv3'. address_family_ipv6_multicast: type: dict keys: From 063c725793ccf8013ea2f55d5821f6e298852f93 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Tue, 8 Oct 2024 07:36:18 -0700 Subject: [PATCH 6/8] fix the config order --- .../documentation/devices/router-bgp-base.md | 2 +- .../documentation/devices/router-bgp-evpn.md | 16 +- .../devices/router-bgp-v4-evpn.md | 10 +- .../router-bgp-vrf-address-families.md | 18 +- .../intended/configs/router-bgp-base.cfg | 2 +- .../intended/configs/router-bgp-evpn.cfg | 16 +- .../intended/configs/router-bgp-v4-evpn.cfg | 10 +- .../router-bgp-vrf-address-families.cfg | 18 +- .../j2templates/eos/router-bgp.j2 | 322 +++++++++--------- 9 files changed, 207 insertions(+), 207 deletions(-) diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md index 688a680c3f1..8c400cf4e4f 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-base.md @@ -228,12 +228,12 @@ router bgp 65101 aggregate-address 1.1.1.0/24 advertise-only aggregate-address 1.12.1.0/24 as-set summary-only attribute-map RM-ATTRIBUTE match-map RM-MATCH advertise-only aggregate-address 2.2.1.0/24 - redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP redistribute connected rcf Router_BGP_Connected() redistribute ospf match internal redistribute ospf match external redistribute ospf match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-1 redistribute static rcf Router_BGP_Static() + redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP ! address-family ipv4 bgp additional-paths install diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md index 1e1f18d4b83..c11883dfe71 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-evpn.md @@ -218,17 +218,17 @@ router bgp 65101 neighbor 192.168.255.3 allowas-in 5 neighbor 192.168.255.3 maximum-routes 52000 warning-limit 2000 warning-only neighbor 192.168.255.3 missing-policy address-family all direction in action deny - redistribute attached-host route-map RM_BGP_EVPN redistribute connected include leaked - redistribute dynamic route-map RM_BGP_EVPN redistribute isis level-2 include leaked route-map RM_BGP_EVPN redistribute ospf match internal include leaked route-map RM_BGP_EVPN redistribute ospf match external include leaked route-map RM_BGP_EVPN redistribute ospfv3 include leaked route-map RM_BGP_EVPN redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN - redistribute ospfv3 match nssa-external route-map RM_BGP_EVPN - redistribute rip route-map RM_BGP_EVPN + redistribute ospfv3 match nssa-external include leaked route-map RM_BGP_EVPN redistribute static include leaked + redistribute rip route-map RM_BGP_EVPN + redistribute attached-host route-map RM_BGP_EVPN + redistribute dynamic route-map RM_BGP_EVPN redistribute user rcf RCF_BGP_EVPN() ! vlan 2488 @@ -335,16 +335,16 @@ router bgp 65101 redistribute bgp leaked route-map RM_BGP_EVPN_IPV4 redistribute connected route-map RM_BGP_EVPN_IPV4 redistribute dynamic rcf RCF_BGP_EVPN_IPV4() + redistribute user rcf RCF_BGP_EVPN_IPV4() redistribute isis level-1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospf include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospfv3 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospfv3 match nssa-external 2 route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match nssa-external 2 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute rip route-map RM_BGP_EVPN_IPV4 redistribute static include leaked route-map RM_BGP_EVPN_IPV4 - redistribute user rcf RCF_BGP_EVPN_IPV4() ! address-family ipv4 multicast redistribute ospf route-map RM_BGP_EVPN_IPV4M diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md index 2d80e4f7d9c..fb0b6440244 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-v4-evpn.md @@ -224,10 +224,10 @@ router bgp 65101 neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS redistribute connected route-map RM-CONN-2-BGP - redistribute dynamic rcf RCF-CONN-2-BGP() redistribute isis level-2 include leaked rcf RCF-CONN-2-BGP() redistribute ospfv3 match internal include leaked route-map RM-CONN-2-BGP - redistribute ospfv3 match nssa-external route-map RM-CONN-2-BGP + redistribute ospfv3 match nssa-external include leaked route-map RM-CONN-2-BGP + redistribute dynamic rcf RCF-CONN-2-BGP() ! vlan-aware-bundle B-ELAN-201 rd 192.168.255.3:20201 @@ -280,18 +280,18 @@ router bgp 65101 redistribute isis level-1-2 rcf RCF_Address_Family_IPV6_ISIS() redistribute ospfv3 match internal include leaked route-map RM-REDISTRIBUTE-OSPF-INTERNAL redistribute ospfv3 match external include leaked - redistribute ospfv3 match nssa-external 1 route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL + redistribute ospfv3 match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL redistribute static route-map RM-IPV6-STATIC-TO-BGP ! address-family ipv6 multicast redistribute connected route-map RM-address_family_ipv6_multicast-Connected redistribute isis include leaked route-map RM-address_family_ipv6_multicast-ISIS redistribute ospf route-map RM-address_family_ipv6_multicast-OSPF - redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External - redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External redistribute ospfv3 route-map RM-address_family_ipv6_multicast-OSPFv3 redistribute ospfv3 match external route-map RM-address_family_ipv6_multicast-OSPFv3-External redistribute ospfv3 match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External redistribute static route-map RM-address_family_ipv6_multicast-Static ! vrf TENANT_A_PROJECT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md index a6a6086906c..a4501a4f6db 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/router-bgp-vrf-address-families.md @@ -142,16 +142,16 @@ router bgp 65001 redistribute bgp leaked route-map VRF_AFIPV4_RM_BGP redistribute connected include leaked rcf VRF_AFIPV4_RCF_CONNECTED_1() redistribute dynamic route-map VRF_AFIPV4_RM_DYNAMIC + redistribute user rcf VRF_AFIPV4_RCF_USER() redistribute isis level-1 include leaked rcf VRF_AFIPV4_RCF_ISIS() redistribute ospf include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF redistribute ospfv3 match internal include leaked route-map VRF_AFIPV4_RM_OSPF redistribute ospfv3 match external include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospfv3 match nssa-external 2 route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match nssa-external 2 include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF redistribute rip route-map VRF_AFIPV4_RM_RIP redistribute static include leaked route-map VRF_AFIPV4_RM_STATIC_1 - redistribute user rcf VRF_AFIPV4_RCF_USER() ! address-family ipv4 multicast bgp missing-policy direction in action permit @@ -165,11 +165,11 @@ router bgp 65001 redistribute connected route-map VRF_AFIPV4MULTI_RM_CONNECTED redistribute isis level-1 include leaked route-map VRF_AFIPV4MULTI_RM_ISIS redistribute ospf match internal route-map VRF_AFIPV4MULTI_RM_OSPF - redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF - redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF redistribute ospfv3 match internal route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute ospfv3 match external route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC ! address-family ipv6 @@ -204,11 +204,11 @@ router bgp 65001 redistribute connected route-map VRF_AFIPV6MULTI_RM_CONNECTED redistribute isis level-1-2 include leaked route-map VRF_AFIPV6MULTI_RM_ISIS redistribute ospf route-map VRF_AFIPV6MULTI_RM_OSPF - redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF - redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF redistribute ospfv3 match internal route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute ospfv3 match external route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF redistribute static route-map VRF_AFIPV6MULTI_RM_STATIC ! vrf VRF02 @@ -222,7 +222,7 @@ router bgp 65001 redistribute ospf include leaked route-map RM_VRF_OSPF redistribute ospfv3 include leaked route-map RM_VRF_OSPFv3 redistribute ospfv3 match external include leaked route-map RM_VRF_OSPFv3 - redistribute ospfv3 match nssa-external 1 route-map RM_VRF_OSPFv3 + redistribute ospfv3 match nssa-external 1 include leaked route-map RM_VRF_OSPFv3 redistribute rip redistribute static include leaked redistribute user diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg index a5bebbc4a54..077eec33333 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-base.cfg @@ -88,12 +88,12 @@ router bgp 65101 aggregate-address 1.1.1.0/24 advertise-only aggregate-address 1.12.1.0/24 as-set summary-only attribute-map RM-ATTRIBUTE match-map RM-MATCH advertise-only aggregate-address 2.2.1.0/24 - redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP redistribute connected rcf Router_BGP_Connected() redistribute ospf match internal redistribute ospf match external redistribute ospf match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-1 redistribute static rcf Router_BGP_Static() + redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP ! address-family ipv4 bgp additional-paths install diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg index a4b4c178a4e..fe35ae278b1 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-evpn.cfg @@ -41,17 +41,17 @@ router bgp 65101 neighbor 192.168.255.3 allowas-in 5 neighbor 192.168.255.3 maximum-routes 52000 warning-limit 2000 warning-only neighbor 192.168.255.3 missing-policy address-family all direction in action deny - redistribute attached-host route-map RM_BGP_EVPN redistribute connected include leaked - redistribute dynamic route-map RM_BGP_EVPN redistribute isis level-2 include leaked route-map RM_BGP_EVPN redistribute ospf match internal include leaked route-map RM_BGP_EVPN redistribute ospf match external include leaked route-map RM_BGP_EVPN redistribute ospfv3 include leaked route-map RM_BGP_EVPN redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN - redistribute ospfv3 match nssa-external route-map RM_BGP_EVPN - redistribute rip route-map RM_BGP_EVPN + redistribute ospfv3 match nssa-external include leaked route-map RM_BGP_EVPN redistribute static include leaked + redistribute rip route-map RM_BGP_EVPN + redistribute attached-host route-map RM_BGP_EVPN + redistribute dynamic route-map RM_BGP_EVPN redistribute user rcf RCF_BGP_EVPN() ! vlan 2488 @@ -158,16 +158,16 @@ router bgp 65101 redistribute bgp leaked route-map RM_BGP_EVPN_IPV4 redistribute connected route-map RM_BGP_EVPN_IPV4 redistribute dynamic rcf RCF_BGP_EVPN_IPV4() + redistribute user rcf RCF_BGP_EVPN_IPV4() redistribute isis level-1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospf include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospfv3 include leaked route-map RM_BGP_EVPN_IPV4 redistribute ospfv3 match external include leaked route-map RM_BGP_EVPN_IPV4 - redistribute ospfv3 match nssa-external 2 route-map RM_BGP_EVPN_IPV4 + redistribute ospfv3 match nssa-external 2 include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match external include leaked route-map RM_BGP_EVPN_IPV4 + redistribute ospf match nssa-external 1 include leaked route-map RM_BGP_EVPN_IPV4 redistribute rip route-map RM_BGP_EVPN_IPV4 redistribute static include leaked route-map RM_BGP_EVPN_IPV4 - redistribute user rcf RCF_BGP_EVPN_IPV4() ! address-family ipv4 multicast redistribute ospf route-map RM_BGP_EVPN_IPV4M diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg index a632fbb0211..68deb039a0e 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-v4-evpn.cfg @@ -52,10 +52,10 @@ router bgp 65101 neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS redistribute connected route-map RM-CONN-2-BGP - redistribute dynamic rcf RCF-CONN-2-BGP() redistribute isis level-2 include leaked rcf RCF-CONN-2-BGP() redistribute ospfv3 match internal include leaked route-map RM-CONN-2-BGP - redistribute ospfv3 match nssa-external route-map RM-CONN-2-BGP + redistribute ospfv3 match nssa-external include leaked route-map RM-CONN-2-BGP + redistribute dynamic rcf RCF-CONN-2-BGP() ! vlan-aware-bundle B-ELAN-201 rd 192.168.255.3:20201 @@ -108,18 +108,18 @@ router bgp 65101 redistribute isis level-1-2 rcf RCF_Address_Family_IPV6_ISIS() redistribute ospfv3 match internal include leaked route-map RM-REDISTRIBUTE-OSPF-INTERNAL redistribute ospfv3 match external include leaked - redistribute ospfv3 match nssa-external 1 route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL + redistribute ospfv3 match nssa-external 1 include leaked route-map RM-REDISTRIBUTE-OSPF-NSSA-EXTERNAL redistribute static route-map RM-IPV6-STATIC-TO-BGP ! address-family ipv6 multicast redistribute connected route-map RM-address_family_ipv6_multicast-Connected redistribute isis include leaked route-map RM-address_family_ipv6_multicast-ISIS redistribute ospf route-map RM-address_family_ipv6_multicast-OSPF - redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External - redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External redistribute ospfv3 route-map RM-address_family_ipv6_multicast-OSPFv3 redistribute ospfv3 match external route-map RM-address_family_ipv6_multicast-OSPFv3-External redistribute ospfv3 match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPFv3-External + redistribute ospf match external route-map RM-address_family_ipv6_multicast-OSPF-External + redistribute ospf match nssa-external 2 route-map RM-address_family_ipv6_multicast-OSPF-External redistribute static route-map RM-address_family_ipv6_multicast-Static ! vrf TENANT_A_PROJECT01 diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg index 8ab733618cf..caa1db1d32d 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/router-bgp-vrf-address-families.cfg @@ -81,16 +81,16 @@ router bgp 65001 redistribute bgp leaked route-map VRF_AFIPV4_RM_BGP redistribute connected include leaked rcf VRF_AFIPV4_RCF_CONNECTED_1() redistribute dynamic route-map VRF_AFIPV4_RM_DYNAMIC + redistribute user rcf VRF_AFIPV4_RCF_USER() redistribute isis level-1 include leaked rcf VRF_AFIPV4_RCF_ISIS() redistribute ospf include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF redistribute ospfv3 match internal include leaked route-map VRF_AFIPV4_RM_OSPF redistribute ospfv3 match external include leaked route-map VRF_AFIPV4_RM_OSPF - redistribute ospfv3 match nssa-external 2 route-map VRF_AFIPV4_RM_OSPF + redistribute ospfv3 match nssa-external 2 include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match external include leaked route-map VRF_AFIPV4_RM_OSPF + redistribute ospf match nssa-external 1 include leaked route-map VRF_AFIPV4_RM_OSPF redistribute rip route-map VRF_AFIPV4_RM_RIP redistribute static include leaked route-map VRF_AFIPV4_RM_STATIC_1 - redistribute user rcf VRF_AFIPV4_RCF_USER() ! address-family ipv4 multicast bgp missing-policy direction in action permit @@ -104,11 +104,11 @@ router bgp 65001 redistribute connected route-map VRF_AFIPV4MULTI_RM_CONNECTED redistribute isis level-1 include leaked route-map VRF_AFIPV4MULTI_RM_ISIS redistribute ospf match internal route-map VRF_AFIPV4MULTI_RM_OSPF - redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF - redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF redistribute ospfv3 match internal route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute ospfv3 match external route-map VRF_AFIPV4MULTI_RM_OSPFv3 redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV4MULTI_RM_OSPFv3 + redistribute ospf match external route-map VRF_AFIPV4MULTI_RM_OSPF + redistribute ospf match nssa-external 2 route-map VRF_AFIPV4MULTI_RM_OSPF redistribute static route-map VRF_AFIPV4MULTI_RM_STATIC ! address-family ipv6 @@ -143,11 +143,11 @@ router bgp 65001 redistribute connected route-map VRF_AFIPV6MULTI_RM_CONNECTED redistribute isis level-1-2 include leaked route-map VRF_AFIPV6MULTI_RM_ISIS redistribute ospf route-map VRF_AFIPV6MULTI_RM_OSPF - redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF - redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF redistribute ospfv3 match internal route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute ospfv3 match external route-map VRF_AFIPV6MULTI_RM_OSPFv3 redistribute ospfv3 match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPFv3 + redistribute ospf match external route-map VRF_AFIPV6MULTI_RM_OSPF + redistribute ospf match nssa-external 1 route-map VRF_AFIPV6MULTI_RM_OSPF redistribute static route-map VRF_AFIPV6MULTI_RM_STATIC ! vrf VRF02 @@ -161,7 +161,7 @@ router bgp 65001 redistribute ospf include leaked route-map RM_VRF_OSPF redistribute ospfv3 include leaked route-map RM_VRF_OSPFv3 redistribute ospfv3 match external include leaked route-map RM_VRF_OSPFv3 - redistribute ospfv3 match nssa-external 1 route-map RM_VRF_OSPFv3 + redistribute ospfv3 match nssa-external 1 include leaked route-map RM_VRF_OSPFv3 redistribute rip redistribute static include leaked redistribute user diff --git a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 index 5c3ed07b4db..737ef84924b 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 +++ b/python-avd/pyavd/_eos_cli_config_gen/j2templates/eos/router-bgp.j2 @@ -476,20 +476,6 @@ router bgp {{ router_bgp.as }} {% endfor %} {% if router_bgp.redistribute is arista.avd.defined %} {% set redistribute_var = router_bgp.redistribute %} -{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} -{% set redistribute_host = "redistribute attached-host" %} -{% if redistribute_var.attached_host.route_map is arista.avd.defined %} -{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} -{% endif %} - {{ redistribute_host }} -{% endif %} -{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} -{% set redistribute_bgp = "redistribute bgp leaked" %} -{% if redistribute_var.bgp.route_map is arista.avd.defined %} -{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} -{% endif %} - {{ redistribute_bgp }} -{% endif %} {% if redistribute_var.connected.enabled is arista.avd.defined(true) %} {% set redistribute_conn = "redistribute connected" %} {% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} @@ -502,15 +488,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_conn }} {% endif %} -{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} -{% set redistribute_dynamic = "redistribute dynamic" %} -{% if redistribute_var.dynamic.route_map is arista.avd.defined %} -{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} -{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} -{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} -{% endif %} - {{ redistribute_dynamic }} -{% endif %} {% if redistribute_var.isis.enabled is arista.avd.defined(true) %} {% set redistribute_isis = "redistribute isis" %} {% if redistribute_var.isis.isis_level is arista.avd.defined %} @@ -603,20 +580,13 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} -{% if redistribute_var.rip.enabled is arista.avd.defined(true) %} -{% set redistribute_rip = "redistribute rip" %} -{% if redistribute_var.rip.route_map is arista.avd.defined %} -{% set redistribute_rip = redistribute_rip ~ " route-map " ~ redistribute_var.rip.route_map %} -{% endif %} - {{ redistribute_rip }} -{% endif %} {% if redistribute_var.static.enabled is arista.avd.defined(true) %} {% set redistribute_static = "redistribute static" %} {% if redistribute_var.static.include_leaked is arista.avd.defined(true) %} @@ -629,6 +599,36 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_static }} {% endif %} +{% if redistribute_var.rip.enabled is arista.avd.defined(true) %} +{% set redistribute_rip = "redistribute rip" %} +{% if redistribute_var.rip.route_map is arista.avd.defined %} +{% set redistribute_rip = redistribute_rip ~ " route-map " ~ redistribute_var.rip.route_map %} +{% endif %} + {{ redistribute_rip }} +{% endif %} +{% if redistribute_var.attached_host.enabled is arista.avd.defined(true) %} +{% set redistribute_host = "redistribute attached-host" %} +{% if redistribute_var.attached_host.route_map is arista.avd.defined %} +{% set redistribute_host = redistribute_host ~ " route-map " ~ redistribute_var.attached_host.route_map %} +{% endif %} + {{ redistribute_host }} +{% endif %} +{% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} +{% set redistribute_dynamic = "redistribute dynamic" %} +{% if redistribute_var.dynamic.route_map is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " route-map " ~ redistribute_var.dynamic.route_map %} +{% elif redistribute_var.dynamic.rcf is arista.avd.defined %} +{% set redistribute_dynamic = redistribute_dynamic ~ " rcf " ~ redistribute_var.dynamic.rcf %} +{% endif %} + {{ redistribute_dynamic }} +{% endif %} +{% if redistribute_var.bgp.enabled is arista.avd.defined(true) %} +{% set redistribute_bgp = "redistribute bgp leaked" %} +{% if redistribute_var.bgp.route_map is arista.avd.defined %} +{% set redistribute_bgp = redistribute_bgp ~ " route-map " ~ redistribute_var.bgp.route_map %} +{% endif %} + {{ redistribute_bgp }} +{% endif %} {% if redistribute_var.user.enabled is arista.avd.defined(true) %} {% set redistribute_user = "redistribute user" %} {% if redistribute_var.user.rcf is arista.avd.defined %} @@ -1244,6 +1244,13 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_dynamic }} {% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} {% if redistribute_var.isis.enabled is arista.avd.defined(true) %} {% set redistribute_isis = "redistribute isis" %} {% if redistribute_var.isis.isis_level is arista.avd.defined %} @@ -1278,29 +1285,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospf }} {% endif %} -{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match external" %} -{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} -{% endif %} -{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} -{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} {% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} {% set redistribute_ospfv3 = "redistribute ospfv3" %} {% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} @@ -1336,13 +1320,36 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} {% if redistribute_var.rip.enabled is arista.avd.defined(true) %} {% set redistribute_rip = "redistribute rip" %} {% if redistribute_var.rip.route_map is arista.avd.defined %} @@ -1362,13 +1369,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_static }} {% endif %} -{% if redistribute_var.user.enabled is arista.avd.defined(true) %} -{% set redistribute_user = "redistribute user" %} -{% if redistribute_var.user.rcf is arista.avd.defined %} -{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} -{% endif %} - {{ redistribute_user }} -{% endif %} {% elif router_bgp.address_family_ipv4.redistribute_routes is arista.avd.defined %} {% for redistribute_route in router_bgp.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} @@ -2109,7 +2109,7 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} @@ -2247,23 +2247,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospf }} {% endif %} -{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match external" %} -{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} -{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} {% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} {% set redistribute_ospfv3 = "redistribute ospfv3" %} {% if redistribute_var.ospfv3.route_map is arista.avd.defined %} @@ -2294,6 +2277,23 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} {% if redistribute_var.static.enabled is arista.avd.defined(true) %} {% set redistribute_static = "redistribute static" %} {% if redistribute_var.static.route_map is arista.avd.defined %} @@ -3051,7 +3051,7 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} @@ -3266,6 +3266,13 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_dynamic }} {% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} {% if redistribute_var.isis.enabled is arista.avd.defined(true) %} {% set redistribute_isis = "redistribute isis" %} {% if redistribute_var.isis.isis_level is arista.avd.defined %} @@ -3300,29 +3307,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospf }} {% endif %} -{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match external" %} -{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} -{% endif %} -{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} -{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} {% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} {% set redistribute_ospfv3 = "redistribute ospfv3" %} {% if redistribute_var.ospfv3.include_leaked is arista.avd.defined(true) %} @@ -3358,13 +3342,36 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.include_leaked is arista.avd.defined(true) %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " include leaked" %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} {% if redistribute_var.rip.enabled is arista.avd.defined(true) %} {% set redistribute_rip = "redistribute rip" %} {% if redistribute_var.rip.route_map is arista.avd.defined %} @@ -3384,13 +3391,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_static }} {% endif %} -{% if redistribute_var.user.enabled is arista.avd.defined(true) %} -{% set redistribute_user = "redistribute user" %} -{% if redistribute_var.user.rcf is arista.avd.defined %} -{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} -{% endif %} - {{ redistribute_user }} -{% endif %} {% elif vrf.address_family_ipv4.redistribute_routes is arista.avd.defined %} {% for redistribute_route in vrf.address_family_ipv4.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} @@ -3492,23 +3492,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospf }} {% endif %} -{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match external" %} -{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} -{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} {% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} {% set redistribute_ospfv3 = "redistribute ospfv3" %} {% if redistribute_var.ospfv3.route_map is arista.avd.defined %} @@ -3539,6 +3522,23 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} {% if redistribute_var.static.enabled is arista.avd.defined(true) %} {% set redistribute_static = "redistribute static" %} {% if redistribute_var.static.route_map is arista.avd.defined %} @@ -3665,6 +3665,13 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_bgp }} {% endif %} +{% if redistribute_var.dhcp.enabled is arista.avd.defined(true) %} +{% set redistribute_dhcp = "redistribute dhcp" %} +{% if redistribute_var.dhcp.route_map is arista.avd.defined %} +{% set redistribute_dhcp = redistribute_dhcp ~ " route-map " ~ redistribute_var.dhcp.route_map %} +{% endif %} + {{ redistribute_dhcp }} +{% endif %} {% if redistribute_var.connected.enabled is arista.avd.defined(true) %} {% set redistribute_conn = "redistribute connected" %} {% if redistribute_var.connected.include_leaked is arista.avd.defined(true) %} @@ -3677,13 +3684,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_conn }} {% endif %} -{% if redistribute_var.dhcp.enabled is arista.avd.defined(true) %} -{% set redistribute_dhcp = "redistribute dhcp" %} -{% if redistribute_var.dhcp.route_map is arista.avd.defined %} -{% set redistribute_dhcp = redistribute_dhcp ~ " route-map " ~ redistribute_var.dhcp.route_map %} -{% endif %} - {{ redistribute_dhcp }} -{% endif %} {% if redistribute_var.dynamic.enabled is arista.avd.defined(true) %} {% set redistribute_dynamic = "redistribute dynamic" %} {% if redistribute_var.dynamic.route_map is arista.avd.defined %} @@ -3693,6 +3693,13 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_dynamic }} {% endif %} +{% if redistribute_var.user.enabled is arista.avd.defined(true) %} +{% set redistribute_user = "redistribute user" %} +{% if redistribute_var.user.rcf is arista.avd.defined %} +{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} +{% endif %} + {{ redistribute_user }} +{% endif %} {% if redistribute_var.isis.enabled is arista.avd.defined(true) %} {% set redistribute_isis = "redistribute isis" %} {% if redistribute_var.isis.isis_level is arista.avd.defined %} @@ -3743,7 +3750,7 @@ router bgp {{ router_bgp.as }} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " " ~ redistribute_var.ospfv3.match_nssa_external.nssa_type %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.include_leaked is arista.avd.defined(true) %} -{% set redistribute_ospfv3 = redistribute_ospfv3 ~ " include leaked" %} +{% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " include leaked" %} {% endif %} {% if redistribute_var.ospfv3.match_nssa_external.route_map is arista.avd.defined %} {% set redistribute_ospfv3_match = redistribute_ospfv3_match ~ " route-map " ~ redistribute_var.ospfv3.match_nssa_external.route_map %} @@ -3762,13 +3769,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_static }} {% endif %} -{% if redistribute_var.user.enabled is arista.avd.defined(true) %} -{% set redistribute_user = "redistribute user" %} -{% if redistribute_var.user.rcf is arista.avd.defined %} -{% set redistribute_user = redistribute_user ~ " rcf " ~ redistribute_var.user.rcf %} -{% endif %} - {{ redistribute_user }} -{% endif %} {% elif vrf.address_family_ipv6.redistribute_routes is arista.avd.defined %} {% for redistribute_route in vrf.address_family_ipv6.redistribute_routes | arista.avd.natural_sort('source_protocol') %} {% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %} @@ -3863,23 +3863,6 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospf }} {% endif %} -{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match external" %} -{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} -{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} -{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} -{% endif %} -{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} -{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} -{% endif %} - {{ redistribute_ospf_match }} -{% endif %} {% if redistribute_var.ospfv3.enabled is arista.avd.defined(true) %} {% set redistribute_ospfv3 = "redistribute ospfv3" %} {% if redistribute_var.ospfv3.route_map is arista.avd.defined %} @@ -3910,6 +3893,23 @@ router bgp {{ router_bgp.as }} {% endif %} {{ redistribute_ospfv3_match }} {% endif %} +{% if redistribute_var.ospf.match_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match external" %} +{% if redistribute_var.ospf.match_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.enabled is arista.avd.defined(true) %} +{% set redistribute_ospf_match = "redistribute ospf match nssa-external" %} +{% if redistribute_var.ospf.match_nssa_external.nssa_type is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " " ~ redistribute_var.ospf.match_nssa_external.nssa_type %} +{% endif %} +{% if redistribute_var.ospf.match_nssa_external.route_map is arista.avd.defined %} +{% set redistribute_ospf_match = redistribute_ospf_match ~ " route-map " ~ redistribute_var.ospf.match_nssa_external.route_map %} +{% endif %} + {{ redistribute_ospf_match }} +{% endif %} {% if redistribute_var.static.enabled is arista.avd.defined(true) %} {% set redistribute_static = "redistribute static" %} {% if redistribute_var.static.route_map is arista.avd.defined %} From b0a3fd1e5aa9c57e0ea81e90032827f974512921 Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Tue, 8 Oct 2024 07:39:39 -0700 Subject: [PATCH 7/8] fix the type of source_protocol --- ansible_collections/arista/avd/docs/porting-guides/5.x.x.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ansible_collections/arista/avd/docs/porting-guides/5.x.x.md b/ansible_collections/arista/avd/docs/porting-guides/5.x.x.md index e38fe7af8a3..e79c96768f2 100644 --- a/ansible_collections/arista/avd/docs/porting-guides/5.x.x.md +++ b/ansible_collections/arista/avd/docs/porting-guides/5.x.x.md @@ -995,12 +995,12 @@ As of AVD 5.0.0 the automatic conversion from both of the previous models has be # New data model router_bgp: redistribute_routes: - - source_procol: connected + - source_protocol: connected - source_protocol: static vrfs: - name: test redistribute_routes: - - source_procol: connected + - source_protocol: connected - source_protocol: static # New data model From cb1d6e96a85adf526efa69003adc767384c63fbe Mon Sep 17 00:00:00 2001 From: Mahesh Kumar Date: Wed, 9 Oct 2024 05:08:45 -0700 Subject: [PATCH 8/8] updated the deprecation key name --- .../docs/tables/router-bgp.md | 40 +++++++++---------- .../schema/eos_cli_config_gen.schema.yml | 20 +++++----- .../schema_fragments/router_bgp.schema.yml | 20 +++++----- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md index 18d7308a0cd..cfbf6be44d3 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/docs/tables/router-bgp.md @@ -267,7 +267,7 @@ | [    user](## "router_bgp.redistribute.user") | Dictionary | | | | | | [      enabled](## "router_bgp.redistribute.user.enabled") | Boolean | Required | | | | | [      rcf](## "router_bgp.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [  redistribute_routes](## "router_bgp.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [  redistribute_routes](## "router_bgp.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.redistribute instead. | | [    - source_protocol](## "router_bgp.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [      route_map](## "router_bgp.redistribute_routes.[].route_map") | String | | | | | | [      rcf](## "router_bgp.redistribute_routes.[].rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence.
Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `user`, `dynamic`. | @@ -472,7 +472,7 @@ | [          receive](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.receive") | Boolean | | | | Enable or disable reception of additional-paths. | | [          send](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send") | String | | | Valid Values:
- any
- backup
- ecmp
- limit
- disabled | Select an option to send multiple paths for same prefix through bgp updates.
any: Send any eligible path.
backup: Best path and installed backup path.
ecmp: All paths in best path ECMP group.
limit: Limit to n eligible paths.
disabled: Disable sending any paths. | | [          send_limit](## "router_bgp.address_family_ipv4.neighbors.[].additional_paths.send_limit") | Integer | | | Min: 2
Max: 64 | Number of paths to send through bgp updates. For this setting, `send` must be set to `limit` or `ecmp`. | - | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.address_family_ipv4.redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [        route_map](## "router_bgp.address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | | [        include_leaked](## "router_bgp.address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is one of `connected`, `static`, `isis`, `ospf`, `ospfv3`. | @@ -673,7 +673,7 @@ | [        route_map_out](## "router_bgp.address_family_ipv4_multicast.neighbors.[].route_map_out") | String | | | | Outbound route-map name. | | [        additional_paths](## "router_bgp.address_family_ipv4_multicast.neighbors.[].additional_paths") | Dictionary | | | | | | [          receive](## "router_bgp.address_family_ipv4_multicast.neighbors.[].additional_paths.receive") | Boolean | | | | | - | [    redistribute_routes](## "router_bgp.address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [    redistribute_routes](## "router_bgp.address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.address_family_ipv4_multicast.redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | | | | [        route_map](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | | [        include_leaked](## "router_bgp.address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | @@ -822,7 +822,7 @@ | [      user](## "router_bgp.address_family_ipv6.redistribute.user") | Dictionary | | | | | | [        enabled](## "router_bgp.address_family_ipv6.redistribute.user.enabled") | Boolean | Required | | | | | [        rcf](## "router_bgp.address_family_ipv6.redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [    redistribute_routes](## "router_bgp.address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [    redistribute_routes](## "router_bgp.address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.address_family_ipv6.redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv6.redistribute_routes.[].source_protocol") | String | Required | | | | | [        route_map](## "router_bgp.address_family_ipv6.redistribute_routes.[].route_map") | String | | | | | | [        include_leaked](## "router_bgp.address_family_ipv6.redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -850,7 +850,7 @@ | [    networks](## "router_bgp.address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [      - prefix](## "router_bgp.address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [        route_map](## "router_bgp.address_family_ipv6_multicast.networks.[].route_map") | String | | | | | - | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [    redistribute_routes](## "router_bgp.address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.address_family_ipv6_multicast.redistribute instead. | | [      - source_protocol](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | | [        include_leaked](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | | [        route_map](## "router_bgp.address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | @@ -1203,7 +1203,7 @@ | [        user](## "router_bgp.vrfs.[].redistribute.user") | Dictionary | | | | | | [          enabled](## "router_bgp.vrfs.[].redistribute.user.enabled") | Boolean | Required | | | | | [          rcf](## "router_bgp.vrfs.[].redistribute.user.rcf") | String | | | | RCF function name with parenthesis.
Example: MyFunction(myarg).
`route_map` and `rcf` are mutually exclusive. `route_map` takes precedence. | - | [      redistribute_routes](## "router_bgp.vrfs.[].redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [      redistribute_routes](## "router_bgp.vrfs.[].redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.vrfs[].redistribute instead. | | [        - source_protocol](## "router_bgp.vrfs.[].redistribute_routes.[].source_protocol") | String | Required | | | | | [          route_map](## "router_bgp.vrfs.[].redistribute_routes.[].route_map") | String | | | | | | [          include_leaked](## "router_bgp.vrfs.[].redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -1248,7 +1248,7 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv4.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].prefix") | String | Required, Unique | | | IPv4 prefix "A.B.C.D/E". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.vrfs[].address_family_ipv4.redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dynamic
- isis
- ospf
- ospfv3
- rip
- static
- user | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4.redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -1349,7 +1349,7 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.vrfs[].address_family_ipv6.redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- bgp
- connected
- dhcp
- dynamic
- isis
- ospfv3
- static
- user | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6.redistribute_routes.[].include_leaked") | Boolean | | | | | @@ -1468,7 +1468,7 @@ | [          static](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static") | Dictionary | | | | | | [            enabled](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.enabled") | Boolean | Required | | | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute.static.route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.vrfs[].address_family_ipv4_multicast.redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- attached-host
- connected
- isis
- ospf
- ospfv3
- static | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv4_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | @@ -1491,7 +1491,7 @@ | [        networks](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks") | List, items: Dictionary | | | | | | [          - prefix](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].prefix") | String | Required, Unique | | | IPv6 prefix "A:B:C:D:E:F:G:H/I". | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.networks.[].route_map") | String | | | | | - | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use redistribute instead. | + | [        redistribute_routes](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes") deprecated | List, items: Dictionary | | | | This key is deprecated. Support will be removed in AVD version 6.0.0. Use router_bgp.vrfs[].address_family_ipv6_multicast.redistribute instead. | | [          - source_protocol](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].source_protocol") | String | Required | | Valid Values:
- connected
- isis
- ospf
- ospfv3
- static | | | [            route_map](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].route_map") | String | | | | | | [            include_leaked](## "router_bgp.vrfs.[].address_family_ipv6_multicast.redistribute_routes.[].include_leaked") | Boolean | | | | Only applicable if `source_protocol` is `isis`. | @@ -2112,7 +2112,7 @@ rcf: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -2542,7 +2542,7 @@ send_limit: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.address_family_ipv4.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -2988,7 +2988,7 @@ receive: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.address_family_ipv4_multicast.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -3315,7 +3315,7 @@ rcf: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.address_family_ipv6.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -3362,7 +3362,7 @@ route_map: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.address_family_ipv6_multicast.redistribute instead. redistribute_routes: - source_protocol: @@ -4071,7 +4071,7 @@ rcf: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.vrfs[].redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -4173,7 +4173,7 @@ route_map: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.vrfs[].address_family_ipv4.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -4395,7 +4395,7 @@ route_map: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.vrfs[].address_family_ipv6.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -4617,7 +4617,7 @@ route_map: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.vrfs[].address_family_ipv4_multicast.redistribute instead. redistribute_routes: - source_protocol: route_map: @@ -4659,7 +4659,7 @@ route_map: # This key is deprecated. # Support will be removed in AVD version 6.0.0. - # Use redistribute instead. + # Use router_bgp.vrfs[].address_family_ipv6_multicast.redistribute instead. redistribute_routes: - source_protocol: route_map: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml index 500a3ca7477..f3ed3842527 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/eos_cli_config_gen.schema.yml @@ -12792,7 +12792,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.redistribute items: type: dict keys: @@ -13487,7 +13487,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv4.redistribute items: type: dict keys: @@ -14241,7 +14241,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv4_multicast.redistribute items: type: dict keys: @@ -14756,7 +14756,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv6.redistribute items: type: dict keys: @@ -14871,7 +14871,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv6_multicast.redistribute items: type: dict keys: @@ -16169,7 +16169,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].redistribute items: type: dict keys: @@ -16322,7 +16322,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv4.redistribute items: type: dict keys: @@ -16694,7 +16694,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv6.redistribute items: type: dict keys: @@ -17141,7 +17141,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv4_multicast.redistribute items: type: dict keys: @@ -17248,7 +17248,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv6_multicast.redistribute items: type: dict keys: diff --git a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml index 893af62ff55..580d015d5b5 100644 --- a/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml +++ b/python-avd/pyavd/_eos_cli_config_gen/schema/schema_fragments/router_bgp.schema.yml @@ -974,7 +974,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.redistribute items: type: dict keys: @@ -1655,7 +1655,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv4.redistribute items: type: dict keys: @@ -2354,7 +2354,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv4_multicast.redistribute items: type: dict keys: @@ -2841,7 +2841,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv6.redistribute items: type: dict keys: @@ -2950,7 +2950,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.address_family_ipv6_multicast.redistribute items: type: dict keys: @@ -4177,7 +4177,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].redistribute items: type: dict keys: @@ -4322,7 +4322,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv4.redistribute items: type: dict keys: @@ -4670,7 +4670,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv6.redistribute items: type: dict keys: @@ -5090,7 +5090,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv4_multicast.redistribute items: type: dict keys: @@ -5191,7 +5191,7 @@ keys: deprecation: warning: true remove_in_version: 6.0.0 - new_key: redistribute + new_key: router_bgp.vrfs[].address_family_ipv6_multicast.redistribute items: type: dict keys: