summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/templates/frr/bgpd.frr.tmpl21
-rw-r--r--interface-definitions/include/bgp/protocol-common-config.xml.i17
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_bgp.py6
3 files changed, 40 insertions, 4 deletions
diff --git a/data/templates/frr/bgpd.frr.tmpl b/data/templates/frr/bgpd.frr.tmpl
index 51235e4cb..7adb007c8 100644
--- a/data/templates/frr/bgpd.frr.tmpl
+++ b/data/templates/frr/bgpd.frr.tmpl
@@ -357,14 +357,27 @@ router bgp {{ local_as }} {{ 'vrf ' ~ vrf if vrf is defined and vrf is not none
rd vpn export {{ afi_config.rd.vpn.export }}
{% endif %}
{% if afi_config.route_target is defined and afi_config.route_target is not none %}
+{% if afi_config.route_target.vpn is defined and afi_config.route_target.vpn is not none %}
+{% if afi_config.route_target.vpn.both is defined and afi_config.route_target.vpn.both is not none %}
+ route-target vpn both {{ afi_config.route_target.vpn.both }}
+{% else %}
+{% if afi_config.route_target.vpn.export is defined and afi_config.route_target.vpn.export is not none %}
+ route-target vpn export {{ afi_config.route_target.vpn.export }}
+{% endif %}
+{% if afi_config.route_target.vpn.import is defined and afi_config.route_target.vpn.import is not none %}
+ route-target vpn import {{ afi_config.route_target.vpn.import }}
+{% endif %}
+{% endif %}
+{% endif %}
{% if afi_config.route_target.both is defined and afi_config.route_target.both is not none %}
route-target both {{ afi_config.route_target.both }}
-{% endif %}
-{% if afi_config.route_target.export is defined and afi_config.route_target.export is not none %}
+{% else %}
+{% if afi_config.route_target.export is defined and afi_config.route_target.export is not none %}
route-target export {{ afi_config.route_target.export }}
-{% endif %}
-{% if afi_config.route_target.import is defined and afi_config.route_target.import is not none %}
+{% endif %}
+{% if afi_config.route_target.import is defined and afi_config.route_target.import is not none %}
route-target import {{ afi_config.route_target.import }}
+{% endif %}
{% endif %}
{% endif %}
{% if afi_config.vni is defined and afi_config.vni is not none %}
diff --git a/interface-definitions/include/bgp/protocol-common-config.xml.i b/interface-definitions/include/bgp/protocol-common-config.xml.i
index 53be8b553..6fb9adf93 100644
--- a/interface-definitions/include/bgp/protocol-common-config.xml.i
+++ b/interface-definitions/include/bgp/protocol-common-config.xml.i
@@ -118,6 +118,23 @@
</children>
</tagNode>
#include <include/bgp/afi-rd.xml.i>
+ <node name="route-target">
+ <properties>
+ <help>Specify route distinguisher</help>
+ </properties>
+ <children>
+ <node name="vpn">
+ <properties>
+ <help>Between current address-family and VPN</help>
+ </properties>
+ <children>
+ #include <include/bgp/route-target-both.xml.i>
+ #include <include/bgp/route-target-export.xml.i>
+ #include <include/bgp/route-target-import.xml.i>
+ </children>
+ </node>
+ </children>
+ </node>
<node name="redistribute">
<properties>
<help>Redistribute routes from other protocols into BGP</help>
diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py
index 4149b0bdd..d1492e831 100755
--- a/smoketest/scripts/cli/test_protocols_bgp.py
+++ b/smoketest/scripts/cli/test_protocols_bgp.py
@@ -732,6 +732,8 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
vrf_name = 'red'
label = 'auto'
rd = f'{neighbor}:{ASN}'
+ rt_export = f'{neighbor}:1002'
+ rt_import = f'{neighbor}:1003'
self.cli_set(base_path + ['local-as', ASN])
# testing only one AFI is sufficient as it's generic code
@@ -741,6 +743,8 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
self.cli_set(base_path + ['address-family', afi, 'label', 'vpn', 'export', label])
self.cli_set(base_path + ['address-family', 'ipv4-unicast', 'rd', 'vpn', 'export', rd])
+ self.cli_set(base_path + ['address-family', 'ipv4-unicast', 'route-target', 'vpn', 'export', rt_export])
+ self.cli_set(base_path + ['address-family', 'ipv4-unicast', 'route-target', 'vpn', 'import', rt_import])
# commit changes
self.cli_commit()
@@ -757,6 +761,8 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
self.assertIn(f' address-family ipv4 unicast', frrconfig)
self.assertIn(f' rd vpn export {rd}', frrconfig)
+ self.assertIn(f' rt vpn export {rt_export}', frrconfig)
+ self.assertIn(f' rt vpn import {rt_import}', frrconfig)
if __name__ == '__main__':
unittest.main(verbosity=2) \ No newline at end of file