summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfett0 <fernando.gmaidana@gmail.com>2025-07-25 15:48:03 +0000
committerChristian Breunig <christian@breunig.cc>2025-07-28 19:49:19 +0200
commit8a4c637628f5d971732d2f501d35c0ee5cf9ade9 (patch)
tree1cd7c29d06bce53b46810d061946b9eb6c8227c4
parentfd2df0f1b34609fea5dc186b3898a0c786e1bf2b (diff)
downloadvyos-1x-8a4c637628f5d971732d2f501d35c0ee5cf9ade9.tar.gz
vyos-1x-8a4c637628f5d971732d2f501d35c0ee5cf9ade9.zip
isis: T7639: add SRv6 locator support
-rw-r--r--data/templates/frr/isisd.frr.j25
-rw-r--r--interface-definitions/include/isis/protocol-common-config.xml.i19
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_isis.py20
3 files changed, 44 insertions, 0 deletions
diff --git a/data/templates/frr/isisd.frr.j2 b/data/templates/frr/isisd.frr.j2
index eb14aade6..a4ea28942 100644
--- a/data/templates/frr/isisd.frr.j2
+++ b/data/templates/frr/isisd.frr.j2
@@ -130,6 +130,11 @@ advertise-passive-only
{% if segment_routing.maximum_label_depth is vyos_defined %}
segment-routing node-msd {{ segment_routing.maximum_label_depth }}
{% endif %}
+{% if segment_routing.srv6.locator is vyos_defined %}
+ segment-routing srv6
+ locator {{ segment_routing.srv6.locator }}
+ exit
+{% endif %}
{% if segment_routing.global_block is vyos_defined %}
{% if segment_routing.local_block is vyos_defined %}
segment-routing global-block {{ segment_routing.global_block.low_label_value }} {{ segment_routing.global_block.high_label_value }} local-block {{ segment_routing.local_block.low_label_value }} {{ segment_routing.local_block.high_label_value }}
diff --git a/interface-definitions/include/isis/protocol-common-config.xml.i b/interface-definitions/include/isis/protocol-common-config.xml.i
index e0a7e62b6..969330a2e 100644
--- a/interface-definitions/include/isis/protocol-common-config.xml.i
+++ b/interface-definitions/include/isis/protocol-common-config.xml.i
@@ -289,6 +289,25 @@
#include <include/segment-routing-label-value.xml.i>
</children>
</node>
+ <node name="srv6">
+ <properties>
+ <help>Segment-Routing SRv6 configuration</help>
+ </properties>
+ <children>
+ <leafNode name="locator">
+ <properties>
+ <help>Specify SRv6 locator</help>
+ <valueHelp>
+ <format>txt</format>
+ <description>SRv6 locator name</description>
+ </valueHelp>
+ <constraint>
+ #include <include/constraint/alpha-numeric-hyphen-underscore.xml.i>
+ </constraint>
+ </properties>
+ </leafNode>
+ </children>
+ </node>
<leafNode name="maximum-label-depth">
<properties>
<help>Maximum MPLS labels allowed for this router</help>
diff --git a/smoketest/scripts/cli/test_protocols_isis.py b/smoketest/scripts/cli/test_protocols_isis.py
index 18f475fa9..54f4e513b 100755
--- a/smoketest/scripts/cli/test_protocols_isis.py
+++ b/smoketest/scripts/cli/test_protocols_isis.py
@@ -418,5 +418,25 @@ class TestProtocolsISIS(VyOSUnitTestSHIM.TestCase):
self.assertIn(f' net {net}', tmp)
self.assertIn(f' topology {topology}', tmp)
+ def test_isis_11_srv6(self):
+ locator = "TEST"
+ interface = 'lo'
+
+ self.cli_set(base_path + ['net', net])
+ self.cli_set(base_path + ['interface', interface])
+ self.cli_set(base_path + ['segment-routing', 'srv6', 'locator', locator])
+
+ # Commit main ISIS changes
+ self.cli_commit()
+
+ # Verify main ISIS changes
+ tmp = self.getFRRconfig(f'router isis {domain}', endsection='^exit')
+ self.assertIn(f' net {net}', tmp)
+ self.assertIn(f' segment-routing srv6', tmp)
+ self.assertIn(f' locator {locator}', tmp)
+
+ # Commit for isis
+ self.cli_commit()
+
if __name__ == '__main__':
unittest.main(verbosity=2)