summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/templates/frr/isisd.frr.j25
-rw-r--r--interface-definitions/include/isis/protocol-common-config.xml.i35
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_isis.py15
3 files changed, 54 insertions, 1 deletions
diff --git a/data/templates/frr/isisd.frr.j2 b/data/templates/frr/isisd.frr.j2
index 1e1cc3c27..5570caaa7 100644
--- a/data/templates/frr/isisd.frr.j2
+++ b/data/templates/frr/isisd.frr.j2
@@ -178,7 +178,7 @@ advertise-passive-only
{% for priority, priority_limit_options in fast_reroute.lfa.local.priority_limit.items() %}
{% for level in priority_limit_options %}
fast-reroute priority-limit {{ priority }} {{ level | replace('_', '-') }}
-{% endfor %}
+{% endfor %}
{% endfor %}
{% endif %}
{% if fast_reroute.lfa.local.tiebreaker is vyos_defined %}
@@ -233,6 +233,9 @@ fast-reroute remote-lfa prefix-list {{ prefix_list }}
{% endfor %}
{% endfor %}
{% endif %}
+{% if topology is vyos_defined %}
+topology {{ topology }}
+{% endif %}
{% if level is vyos_defined('level-2') %}
is-type level-2-only
{% elif level is vyos_defined %}
diff --git a/interface-definitions/include/isis/protocol-common-config.xml.i b/interface-definitions/include/isis/protocol-common-config.xml.i
index 404f03cb5..0e79ca5f2 100644
--- a/interface-definitions/include/isis/protocol-common-config.xml.i
+++ b/interface-definitions/include/isis/protocol-common-config.xml.i
@@ -165,6 +165,41 @@
</properties>
</leafNode>
#include <include/isis/ldp-sync-protocol.xml.i>
+<leafNode name="topology">
+ <properties>
+ <help>Configure IS-IS topologies</help>
+ <completionHelp>
+ <list>ipv4-multicast ipv4-mgmt ipv6-unicast ipv6-multicast ipv6-mgmt ipv6-dstsrc</list>
+ </completionHelp>
+ <valueHelp>
+ <format>ipv4-multicast</format>
+ <description>Use IPv4 multicast topology</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv4-mgmt</format>
+ <description>Use IPv4 management topology</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6-unicast</format>
+ <description>Use IPv6 unicast topology</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6-multicast</format>
+ <description>Use IPv6 multicast topology</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6-mgmt</format>
+ <description>Use IPv6 management topology</description>
+ </valueHelp>
+ <valueHelp>
+ <format>ipv6-dstsrc</format>
+ <description>Use IPv6 dst-src topology</description>
+ </valueHelp>
+ <constraint>
+ <regex>(ipv4-multicast|ipv4-mgmt|ipv6-unicast|ipv6-multicast|ipv6-mgmt|ipv6-dstsrc)</regex>
+ </constraint>
+ </properties>
+</leafNode>
<node name="fast-reroute">
<properties>
<help>IS-IS fast reroute configuration</help>
diff --git a/smoketest/scripts/cli/test_protocols_isis.py b/smoketest/scripts/cli/test_protocols_isis.py
index 0fd18a6da..9c57f2020 100755
--- a/smoketest/scripts/cli/test_protocols_isis.py
+++ b/smoketest/scripts/cli/test_protocols_isis.py
@@ -395,5 +395,20 @@ class TestProtocolsISIS(VyOSUnitTestSHIM.TestCase):
self.cli_delete(['policy', 'prefix-list', prefix_list])
self.cli_commit()
+ def test_isis_10_topology(self):
+ topologies = ['ipv4-multicast', 'ipv4-mgmt', 'ipv6-unicast', 'ipv6-multicast', 'ipv6-mgmt']
+ interface = 'lo'
+
+ # Set a basic IS-IS config
+ self.cli_set(base_path + ['net', net])
+
+ self.cli_set(base_path + ['interface', interface])
+ for topology in topologies:
+ self.cli_set(base_path + ['topology', topology])
+ self.cli_commit()
+ tmp = self.getFRRconfig(f'router isis {domain}', daemon='isisd')
+ self.assertIn(f' net {net}', tmp)
+ self.assertIn(f' topology {topology}', tmp)
+
if __name__ == '__main__':
unittest.main(verbosity=2)