summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/templates/frr/bgp.frr.tmpl6
-rw-r--r--interface-definitions/protocols-bgp.xml.in19
-rw-r--r--smoketest/configs/bgp-small-as4
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_bgp.py18
-rwxr-xr-xsrc/migration-scripts/quagga/6-to-78
5 files changed, 35 insertions, 20 deletions
diff --git a/data/templates/frr/bgp.frr.tmpl b/data/templates/frr/bgp.frr.tmpl
index 62c675291..ab0f94c33 100644
--- a/data/templates/frr/bgp.frr.tmpl
+++ b/data/templates/frr/bgp.frr.tmpl
@@ -155,6 +155,12 @@
{% if afi_config.unsuppress_map is defined and afi_config.unsuppress_map is not none %}
neighbor {{ neighbor }} unsuppress-map {{ afi_config.unsuppress_map }}
{% endif %}
+{% if afi_config.disable_send_community is defined and afi_config.disable_send_community.extended is defined %}
+ no neighbor {{ neighbor }} send-community extended
+{% endif %}
+{% if afi_config.disable_send_community is defined and afi_config.disable_send_community.standard is defined %}
+ no neighbor {{ neighbor }} send-community standard
+{% endif %}
neighbor {{ neighbor }} activate
exit-address-family
!
diff --git a/interface-definitions/protocols-bgp.xml.in b/interface-definitions/protocols-bgp.xml.in
index d7bc86aff..01463ed57 100644
--- a/interface-definitions/protocols-bgp.xml.in
+++ b/interface-definitions/protocols-bgp.xml.in
@@ -468,25 +468,6 @@
#include <include/bgp-description.xml.i>
#include <include/bgp-disable-capability-negotiation.xml.i>
#include <include/bgp-disable-connected-check.xml.i>
- <node name="disable-send-community">
- <properties>
- <help>Disable sending community attributes to this neighbor (IPv4)</help>
- </properties>
- <children>
- <leafNode name="extended">
- <properties>
- <help>Disable sending extended community attributes to this neighbor (IPv4)</help>
- <valueless/>
- </properties>
- </leafNode>
- <leafNode name="standard">
- <properties>
- <help>Disable sending standard community attributes to this neighbor (IPv4)</help>
- <valueless/>
- </properties>
- </leafNode>
- </children>
- </node>
#include <include/bgp-ebgp-multihop.xml.i>
<node name="interface">
<properties>
diff --git a/smoketest/configs/bgp-small-as b/smoketest/configs/bgp-small-as
index 61286c324..6b953a3f6 100644
--- a/smoketest/configs/bgp-small-as
+++ b/smoketest/configs/bgp-small-as
@@ -345,6 +345,10 @@ protocols {
}
}
neighbor 10.0.151.222 {
+ disable-send-community {
+ extended
+ standard
+ }
address-family {
ipv4-unicast {
default-originate {
diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py
index 4c4abc600..833ca8311 100755
--- a/smoketest/scripts/cli/test_protocols_bgp.py
+++ b/smoketest/scripts/cli/test_protocols_bgp.py
@@ -48,6 +48,7 @@ neighbor_config = {
'local_as' : '300',
'route_map_in' : route_map_in,
'route_map_out': route_map_out,
+ 'no_send_comm_ext' : '',
},
'192.0.2.2' : {
'remote_as' : '200',
@@ -57,6 +58,7 @@ neighbor_config = {
'cap_strict' : '',
'pfx_list_in' : prefix_list_in,
'pfx_list_out' : prefix_list_out,
+ 'no_send_comm_std' : '',
},
'192.0.2.3' : {
'description' : 'foo bar baz',
@@ -78,6 +80,7 @@ neighbor_config = {
'local_as' : '300',
'route_map_in' : route_map_in,
'route_map_out': route_map_out,
+ 'no_send_comm_std' : '',
},
'2001:db8::2' : {
'remote_as' : '456',
@@ -87,6 +90,7 @@ neighbor_config = {
'cap_strict' : '',
'pfx_list_in' : prefix_list_in6,
'pfx_list_out' : prefix_list_out6,
+ 'no_send_comm_ext' : '',
},
}
@@ -108,6 +112,7 @@ peer_group_config = {
'local_as' : '300',
'pfx_list_in' : prefix_list_in,
'pfx_list_out' : prefix_list_out,
+ 'no_send_comm_ext' : '',
},
'baz' : {
'cap_dynamic' : '',
@@ -194,7 +199,10 @@ class TestProtocolsBGP(unittest.TestCase):
self.assertIn(f' neighbor {peer} prefix-list {peer_config["pfx_list_in"]} in', frrconfig)
if 'pfx_list_out' in peer_config:
self.assertIn(f' neighbor {peer} prefix-list {peer_config["pfx_list_out"]} out', frrconfig)
-
+ if 'no_send_comm_std' in peer_config:
+ self.assertIn(f' no neighbor {peer} send-community', frrconfig)
+ if 'no_send_comm_ext' in peer_config:
+ self.assertIn(f' no neighbor {peer} send-community extended', frrconfig)
def test_bgp_01_simple(self):
router_id = '127.0.0.1'
@@ -272,6 +280,10 @@ class TestProtocolsBGP(unittest.TestCase):
self.session.set(base_path + ['neighbor', peer, 'address-family', afi, 'prefix-list', 'import', peer_config["pfx_list_in"]])
if 'pfx_list_out' in peer_config:
self.session.set(base_path + ['neighbor', peer, 'address-family', afi, 'prefix-list', 'export', peer_config["pfx_list_out"]])
+ if 'no_send_comm_std' in peer_config:
+ self.session.set(base_path + ['neighbor', peer, 'address-family', afi, 'disable-send-community', 'standard'])
+ if 'no_send_comm_ext' in peer_config:
+ self.session.set(base_path + ['neighbor', peer, 'address-family', afi, 'disable-send-community', 'extended'])
# commit changes
self.session.commit()
@@ -327,6 +339,10 @@ class TestProtocolsBGP(unittest.TestCase):
self.session.set(base_path + ['peer-group', peer_group, 'address-family', 'ipv4-unicast', 'prefix-list', 'import', config["pfx_list_in"]])
if 'pfx_list_out' in config:
self.session.set(base_path + ['peer-group', peer_group, 'address-family', 'ipv4-unicast', 'prefix-list', 'export', config["pfx_list_out"]])
+ if 'no_send_comm_std' in config:
+ self.session.set(base_path + ['peer-group', peer_group, 'address-family', 'ipv4-unicast', 'disable-send-community', 'standard'])
+ if 'no_send_comm_ext' in config:
+ self.session.set(base_path + ['peer-group', peer_group, 'address-family', 'ipv4-unicast', 'disable-send-community', 'extended'])
# commit changes
self.session.commit()
diff --git a/src/migration-scripts/quagga/6-to-7 b/src/migration-scripts/quagga/6-to-7
index 3a229b5df..f7aca0d2b 100755
--- a/src/migration-scripts/quagga/6-to-7
+++ b/src/migration-scripts/quagga/6-to-7
@@ -46,6 +46,14 @@ if asn_list:
if not config.exists(bgp_base + [neighbor_type]):
continue
for neighbor in config.list_nodes(bgp_base + [neighbor_type]):
+ # T2844 - add IPv4 AFI disable-send-community support
+ send_comm_path = bgp_base + [neighbor_type, neighbor, 'disable-send-community']
+ if config.exists(send_comm_path):
+ new_base = bgp_base + [neighbor_type, neighbor, 'address-family', 'ipv4-unicast']
+ config.set(new_base)
+ config.copy(send_comm_path, new_base + ['disable-send-community'])
+ config.delete(send_comm_path)
+
cap_dynamic = False
for afi in ['ipv4-unicast', 'ipv6-unicast']:
afi_path = bgp_base + [neighbor_type, neighbor, 'address-family', afi, 'capability', 'dynamic']