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 e5af150ef9e..f5868f84fbb 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
@@ -58,6 +58,7 @@ ASN Notation: asplain
| update wait-install |
| no bgp default ipv4-unicast |
| no bgp default ipv4-unicast transport ipv6 |
+| no bgp redistribute-internal |
| distance bgp 20 200 200 |
| maximum-paths 32 ecmp 32 |
| bgp route-reflector preserve-attributes always |
@@ -218,6 +219,7 @@ router bgp 65101
neighbor 192.0.3.9 peer group TEST
neighbor 192.0.3.9 remote-as 65438
no neighbor 192.0.3.9 bfd
+ no bgp redistribute-internal
aggregate-address 1.1.1.0/24 advertise-only
aggregate-address 1.12.1.0/24 as-set advertise-map ADV-MAP supress-map SUP-MAP summary-only attribute-map RM-ATTRIBUTE match-map RM-MATCH advertise-only
aggregate-address 2.2.1.0/24
@@ -240,6 +242,7 @@ router bgp 65101
network 10.0.0.0/8
network 172.16.0.0/12
network 192.168.0.0/16 route-map RM-FOO-MATCH
+ no bgp redistribute-internal
redistribute bgp leaked
redistribute connected include leaked rcf Address_Family_IPV4_Connected()
redistribute dynamic route-map Address_Family_IPV4_Dynamic_RM
@@ -257,6 +260,7 @@ router bgp 65101
neighbor 2001:db8::2 rcf out Address_Family_IPV6_Out()
network 2001:db8:100::/40
network 2001:db8:200::/40 route-map RM-BAR-MATCH
+ bgp redistribute-internal
redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP
redistribute connected rcf Address_Family_IPV6_Connected()
redistribute ospfv3 match external include leaked
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 899c35026da..a946f78b25b 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
@@ -86,6 +86,7 @@ router bgp 65001
redistribute ospfv3 match nssa-external 2
!
vrf VRF01
+ no bgp redistribute-internal
!
address-family flow-spec ipv4
bgp missing-policy direction in action permit
@@ -107,6 +108,7 @@ router bgp 65001
neighbor 1.2.3.4 route-map FOO in
neighbor 1.2.3.4 route-map BAR out
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
@@ -139,6 +141,7 @@ router bgp 65001
neighbor aa::2 rcf in VRF_AFIPV6_RCF_IN()
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
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 8adef52a489..ff39bcc46ef 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
@@ -87,6 +87,7 @@ router bgp 65101
neighbor 192.0.3.9 peer group TEST
neighbor 192.0.3.9 remote-as 65438
no neighbor 192.0.3.9 bfd
+ no bgp redistribute-internal
aggregate-address 1.1.1.0/24 advertise-only
aggregate-address 1.12.1.0/24 as-set advertise-map ADV-MAP supress-map SUP-MAP summary-only attribute-map RM-ATTRIBUTE match-map RM-MATCH advertise-only
aggregate-address 2.2.1.0/24
@@ -109,6 +110,7 @@ router bgp 65101
network 10.0.0.0/8
network 172.16.0.0/12
network 192.168.0.0/16 route-map RM-FOO-MATCH
+ no bgp redistribute-internal
redistribute bgp leaked
redistribute connected include leaked rcf Address_Family_IPV4_Connected()
redistribute dynamic route-map Address_Family_IPV4_Dynamic_RM
@@ -126,6 +128,7 @@ router bgp 65101
neighbor 2001:db8::2 rcf out Address_Family_IPV6_Out()
network 2001:db8:100::/40
network 2001:db8:200::/40 route-map RM-BAR-MATCH
+ bgp redistribute-internal
redistribute bgp leaked route-map RM-REDISTRIBUTE-BGP
redistribute connected rcf Address_Family_IPV6_Connected()
redistribute ospfv3 match external include leaked
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 3e6970776f1..5c350a203bb 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
@@ -39,6 +39,7 @@ router bgp 65001
redistribute ospfv3 match nssa-external 2
!
vrf VRF01
+ no bgp redistribute-internal
!
address-family flow-spec ipv4
bgp missing-policy direction in action permit
@@ -60,6 +61,7 @@ router bgp 65001
neighbor 1.2.3.4 route-map FOO in
neighbor 1.2.3.4 route-map BAR out
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
@@ -92,6 +94,7 @@ router bgp 65001
neighbor aa::2 rcf in VRF_AFIPV6_RCF_IN()
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
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 f021a8e55b6..785e8c74e70 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
@@ -28,6 +28,7 @@ router_bgp:
always: true
bestpath:
d_path: true
+ redistribute_internal: false
listen_ranges:
# should render
- prefix: 10.10.10.0/24
@@ -98,6 +99,8 @@ router_bgp:
- prefix: 172.16.0.0/12
- prefix: 192.168.0.0/16
route_map: RM-FOO-MATCH
+ bgp:
+ redistribute_internal: false
peer_groups:
- name: foo
prefix_list_in: PL-BAR-v4-IN
@@ -136,6 +139,8 @@ router_bgp:
- prefix: 2001:db8:100::/40
- prefix: 2001:db8:200::/40
route_map: RM-BAR-MATCH
+ bgp:
+ redistribute_internal: true
peer_groups:
- name: baz
prefix_list_in: PL-BAR-v6-IN
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 7931694c36a..f8866197d5f 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
@@ -40,6 +40,8 @@ router_bgp:
activate: false
vrfs:
- name: VRF01
+ bgp:
+ redistribute_internal: false
address_family_ipv4:
bgp:
missing_policy:
@@ -50,6 +52,7 @@ router_bgp:
receive: true
send:
ecmp_limit: 4
+ redistribute_internal: false
neighbors:
- ip_address: 1.2.3.4
activate: true
@@ -79,6 +82,7 @@ router_bgp:
receive: true
send:
any: true
+ redistribute_internal: false
neighbors:
- ip_address: aa::1
activate: true
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 f436f7ccd87..d84744ee8df 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
@@ -41,6 +41,7 @@
| [ always](## "router_bgp.bgp.route_reflector_preserve_attributes.always") | Boolean | | | | |
| [ bestpath](## "router_bgp.bgp.bestpath") | Dictionary | | | | |
| [ d_path](## "router_bgp.bgp.bestpath.d_path") | Boolean | | | | |
+ | [ redistribute_internal](## "router_bgp.bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ listen_ranges](## "router_bgp.listen_ranges") | List, items: Dictionary | | | | Improved "listen_ranges" data model to support multiple listen ranges and additional filter capabilities.
|
| [ - prefix](## "router_bgp.listen_ranges.[].prefix") | String | | | | IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I". |
| [ peer_id_include_router_id](## "router_bgp.listen_ranges.[].peer_id_include_router_id") | Boolean | | | | Include router ID as part of peer filter. |
@@ -319,6 +320,8 @@
| [ networks](## "router_bgp.address_family_ipv4.networks") | List, items: Dictionary | | | | |
| [ - prefix](## "router_bgp.address_family_ipv4.networks.[].prefix") | String | Required, Unique | | | IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I". |
| [ route_map](## "router_bgp.address_family_ipv4.networks.[].route_map") | String | | | | Route-map name. |
+ | [ bgp](## "router_bgp.address_family_ipv4.bgp") | Dictionary | | | | |
+ | [ redistribute_internal](## "router_bgp.address_family_ipv4.bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ peer_groups](## "router_bgp.address_family_ipv4.peer_groups") | List, items: Dictionary | | | | |
| [ - name](## "router_bgp.address_family_ipv4.peer_groups.[].name") | String | Required, Unique | | | Peer-group name. |
| [ activate](## "router_bgp.address_family_ipv4.peer_groups.[].activate") | Boolean | | | | |
@@ -386,6 +389,8 @@
| [ networks](## "router_bgp.address_family_ipv6.networks") | List, items: Dictionary | | | | |
| [ - prefix](## "router_bgp.address_family_ipv6.networks.[].prefix") | String | Required, Unique | | | IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I". |
| [ route_map](## "router_bgp.address_family_ipv6.networks.[].route_map") | String | | | | Route-map name. |
+ | [ bgp](## "router_bgp.address_family_ipv6.bgp") | Dictionary | | | | |
+ | [ redistribute_internal](## "router_bgp.address_family_ipv6.bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ peer_groups](## "router_bgp.address_family_ipv6.peer_groups") | List, items: Dictionary | | | | |
| [ - name](## "router_bgp.address_family_ipv6.peer_groups.[].name") | String | Required, Unique | | | Peer-group name. |
| [ activate](## "router_bgp.address_family_ipv6.peer_groups.[].activate") | Boolean | | | | |
@@ -567,6 +572,8 @@
| [ source_interface](## "router_bgp.address_family_vpn_ipv6.neighbor_default_encapsulation_mpls_next_hop_self.source_interface") | String | | | | |
| [ vrfs](## "router_bgp.vrfs") | List, items: Dictionary | | | | |
| [ - name](## "router_bgp.vrfs.[].name") | String | Required, Unique | | | VRF name. |
+ | [ bgp](## "router_bgp.vrfs.[].bgp") | Dictionary | | | | |
+ | [ redistribute_internal](## "router_bgp.vrfs.[].bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ rd](## "router_bgp.vrfs.[].rd") | String | | | | Route distinguisher. |
| [ evpn_multicast](## "router_bgp.vrfs.[].evpn_multicast") | Boolean | | | | |
| [ evpn_multicast_address_family](## "router_bgp.vrfs.[].evpn_multicast_address_family") | Dictionary | | | | Enable per-AF EVPN multicast settings. |
@@ -685,6 +692,7 @@
| [ ecmp](## "router_bgp.vrfs.[].address_family_ipv4.bgp.additional_paths.send.ecmp") | Boolean | | | | |
| [ ecmp_limit](## "router_bgp.vrfs.[].address_family_ipv4.bgp.additional_paths.send.ecmp_limit") | Integer | | | Min: 2
Max: 64 | Amount of ECMP paths to send. |
| [ limit](## "router_bgp.vrfs.[].address_family_ipv4.bgp.additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. |
+ | [ redistribute_internal](## "router_bgp.vrfs.[].address_family_ipv4.bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ neighbors](## "router_bgp.vrfs.[].address_family_ipv4.neighbors") | List, items: Dictionary | | | | |
| [ - ip_address](## "router_bgp.vrfs.[].address_family_ipv4.neighbors.[].ip_address") | String | Required, Unique | | | |
| [ activate](## "router_bgp.vrfs.[].address_family_ipv4.neighbors.[].activate") | Boolean | | | | |
@@ -722,6 +730,7 @@
| [ ecmp](## "router_bgp.vrfs.[].address_family_ipv6.bgp.additional_paths.send.ecmp") | Boolean | | | | |
| [ ecmp_limit](## "router_bgp.vrfs.[].address_family_ipv6.bgp.additional_paths.send.ecmp_limit") | Integer | | | Min: 2
Max: 64 | Amount of ECMP paths to send. |
| [ limit](## "router_bgp.vrfs.[].address_family_ipv6.bgp.additional_paths.send.limit") | Integer | | | Min: 2
Max: 64 | Amount of paths to send. |
+ | [ redistribute_internal](## "router_bgp.vrfs.[].address_family_ipv6.bgp.redistribute_internal") | Boolean | | | | Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true. |
| [ neighbors](## "router_bgp.vrfs.[].address_family_ipv6.neighbors") | List, items: Dictionary | | | | |
| [ - ip_address](## "router_bgp.vrfs.[].address_family_ipv6.neighbors.[].ip_address") | String | Required, Unique | | | |
| [ activate](## "router_bgp.vrfs.[].address_family_ipv6.neighbors.[].activate") | Boolean | | | | |
@@ -894,6 +903,9 @@
bestpath:
d_path:
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
+
# Improved "listen_ranges" data model to support multiple listen ranges and additional filter capabilities.
listen_ranges:
@@ -1429,6 +1441,10 @@
# Route-map name.
route_map:
+ bgp:
+
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
peer_groups:
# Peer-group name.
@@ -1575,6 +1591,10 @@
# Route-map name.
route_map:
+ bgp:
+
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
peer_groups:
# Peer-group name.
@@ -1888,6 +1908,10 @@
# VRF name.
- name:
+ bgp:
+
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
# Route distinguisher.
rd:
@@ -2134,6 +2158,9 @@
# Amount of paths to send.
limit:
+
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
neighbors:
- ip_address:
activate:
@@ -2199,6 +2226,9 @@
# Amount of paths to send.
limit:
+
+ # Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
+ redistribute_internal:
neighbors:
- ip_address:
activate:
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json
index ed0e94ac0b7..3b89d8f53f0 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.jsonschema.json
@@ -17757,6 +17757,11 @@
"^_.+$": {}
},
"title": "Bestpath"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,
@@ -19579,6 +19584,21 @@
},
"title": "Networks"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"peer_groups": {
"type": "array",
"items": {
@@ -20058,6 +20078,21 @@
},
"title": "Networks"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"peer_groups": {
"type": "array",
"items": {
@@ -21389,6 +21424,21 @@
"description": "VRF name.",
"title": "Name"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"rd": {
"type": "string",
"description": "Route distinguisher.",
@@ -22124,6 +22174,11 @@
"^_.+$": {}
},
"title": "Additional Paths"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,
@@ -22397,6 +22452,11 @@
"^_.+$": {}
},
"title": "Additional Paths"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml
index e388045d8d4..625969244f4 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/eos_cli_config_gen.schema.yml
@@ -10638,6 +10638,10 @@ keys:
keys:
d_path:
type: bool
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior Gateway
+ Protocol (IGP). EOS default is true.
listen_ranges:
type: list
description: 'Improved "listen_ranges" data model to support multiple listen
@@ -11740,6 +11744,13 @@ keys:
route_map:
description: Route-map name.
type: str
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior
+ Gateway Protocol (IGP). EOS default is true.
peer_groups:
type: list
primary_key: name
@@ -12026,6 +12037,13 @@ keys:
route_map:
description: Route-map name.
type: str
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior
+ Gateway Protocol (IGP). EOS default is true.
peer_groups:
type: list
primary_key: name
@@ -12744,6 +12762,13 @@ keys:
description: VRF name.
convert_types:
- int
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior
+ Gateway Protocol (IGP). EOS default is true.
rd:
type: str
description: Route distinguisher.
@@ -13249,6 +13274,10 @@ keys:
- str
min: 2
max: 64
+ 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
@@ -13411,6 +13440,10 @@ keys:
- str
min: 2
max: 64
+ 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
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_bgp.schema.yml b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_bgp.schema.yml
index ff75a836d0b..3ec015ef64d 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_bgp.schema.yml
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/schemas/schema_fragments/router_bgp.schema.yml
@@ -150,6 +150,9 @@ keys:
keys:
d_path:
type: bool
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
listen_ranges:
type: list
description: |
@@ -1210,6 +1213,12 @@ keys:
route_map:
description: Route-map name.
type: str
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
peer_groups:
type: list
primary_key: name
@@ -1490,6 +1499,12 @@ keys:
route_map:
description: Route-map name.
type: str
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
peer_groups:
type: list
primary_key: name
@@ -2207,6 +2222,12 @@ keys:
description: VRF name.
convert_types:
- int
+ bgp:
+ type: dict
+ keys:
+ redistribute_internal:
+ type: bool
+ description: Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.
rd:
type: str
description: Route distinguisher.
@@ -2674,6 +2695,9 @@ keys:
- str
min: 2
max: 64
+ 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
@@ -2829,6 +2853,9 @@ keys:
- str
min: 2
max: 64
+ 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
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-bgp.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-bgp.j2
index 55416453c06..005bf4f554f 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-bgp.j2
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/router-bgp.j2
@@ -65,6 +65,9 @@ ASN Notation: {{ router_bgp.as_notation | arista.avd.default('asplain') }}
{% elif router_bgp.bgp.default.ipv4_unicast_transport_ipv6 is arista.avd.defined(false) %}
| no bgp default ipv4-unicast transport ipv6 |
{% endif %}
+{% if router_bgp.bgp.redistribute_internal is arista.avd.defined(false) %}
+| no bgp redistribute-internal |
+{% endif %}
{% if router_bgp.distance.external_routes is arista.avd.defined %}
{% set distance_cli = "distance bgp " ~ router_bgp.distance.external_routes %}
{% if router_bgp.distance.internal_routes is arista.avd.defined and router_bgp.distance.local_routes is arista.avd.defined %}
diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-bgp.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-bgp.j2
index fa4e06baa9b..d3fabe4d51e 100644
--- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-bgp.j2
+++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/router-bgp.j2
@@ -390,6 +390,11 @@ router bgp {{ router_bgp.as }}
{{ link_bandwidth_cli }}
{% endif %}
{% endfor %}
+{% if router_bgp.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% elif router_bgp.bgp.redistribute_internal is arista.avd.defined(false) %}
+ no bgp redistribute-internal
+{% endif %}
{% for aggregate_address in router_bgp.aggregate_addresses | arista.avd.natural_sort('prefix') %}
{% set aggregate_address_cli = "aggregate-address " ~ aggregate_address.prefix %}
{% if aggregate_address.as_set is arista.avd.defined(true) %}
@@ -861,6 +866,11 @@ router bgp {{ router_bgp.as }}
network {{ network.prefix }}
{% endif %}
{% endfor %}
+{% if router_bgp.address_family_ipv4.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% 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 %}
{% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %}
@@ -1027,6 +1037,11 @@ router bgp {{ router_bgp.as }}
network {{ network.prefix }}
{% endif %}
{% endfor %}
+{% if router_bgp.address_family_ipv6.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% elif router_bgp.address_family_ipv6.bgp.redistribute_internal is arista.avd.defined(false) %}
+ no bgp redistribute-internal
+{% endif %}
{% for redistribute_route in router_bgp.address_family_ipv6.redistribute_routes | arista.avd.natural_sort('source_protocol') %}
{% if redistribute_route.source_protocol is arista.avd.defined %}
{% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %}
@@ -1600,6 +1615,11 @@ router bgp {{ router_bgp.as }}
network {{ network.prefix }}
{% endif %}
{% endfor %}
+{% if vrf.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% elif vrf.bgp.redistribute_internal is arista.avd.defined(false) %}
+ no bgp redistribute-internal
+{% endif %}
{% for aggregate_address in vrf.aggregate_addresses | arista.avd.natural_sort('prefix') %}
{% set aggregate_address_cli = "aggregate-address " ~ aggregate_address.prefix %}
{% if aggregate_address.as_set is arista.avd.defined(true) %}
@@ -1766,6 +1786,11 @@ router bgp {{ router_bgp.as }}
{% endif %}
{{ network_cli }}
{% endfor %}
+{% if vrf.address_family_ipv4.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% 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 %}
{% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %}
@@ -1900,6 +1925,11 @@ router bgp {{ router_bgp.as }}
{% endif %}
{{ network_cli }}
{% endfor %}
+{% if vrf.address_family_ipv6.bgp.redistribute_internal is arista.avd.defined(true) %}
+ bgp redistribute-internal
+{% 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 %}
{% set redistribute_route_cli = "redistribute " ~ redistribute_route.source_protocol %}
diff --git a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
index cea341de10a..6dc77d5441f 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
+++ b/ansible_collections/arista/avd/roles/eos_designs/schemas/eos_designs.jsonschema.json
@@ -34815,6 +34815,11 @@
"^_.+$": {}
},
"title": "Bestpath"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,
@@ -36637,6 +36642,21 @@
},
"title": "Networks"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"peer_groups": {
"type": "array",
"items": {
@@ -37116,6 +37136,21 @@
},
"title": "Networks"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"peer_groups": {
"type": "array",
"items": {
@@ -38447,6 +38482,21 @@
"description": "VRF name.",
"title": "Name"
},
+ "bgp": {
+ "type": "object",
+ "properties": {
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
+ }
+ },
+ "additionalProperties": false,
+ "patternProperties": {
+ "^_.+$": {}
+ },
+ "title": "BGP"
+ },
"rd": {
"type": "string",
"description": "Route distinguisher.",
@@ -39182,6 +39232,11 @@
"^_.+$": {}
},
"title": "Additional Paths"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,
@@ -39455,6 +39510,11 @@
"^_.+$": {}
},
"title": "Additional Paths"
+ },
+ "redistribute_internal": {
+ "type": "boolean",
+ "description": "Allow redistribution of iBGP routes into an Interior Gateway Protocol (IGP). EOS default is true.",
+ "title": "Redistribute Internal"
}
},
"additionalProperties": false,