diff options
| author | Cheeze_It <none@none.com> | 2022-09-13 16:10:22 -0700 | 
|---|---|---|
| committer | Cheeze_It <none@none.com> | 2022-09-13 17:50:36 -0700 | 
| commit | bc3cfe6e3397615e188e38af7dbc1911dc81b3d0 (patch) | |
| tree | 28caf48183f503069cf81d9f1ad7f98e032a2b31 | |
| parent | d283048d3858e95b37df96f0a8acb5fc4223aa43 (diff) | |
| download | vyos-1x-bc3cfe6e3397615e188e38af7dbc1911dc81b3d0.tar.gz vyos-1x-bc3cfe6e3397615e188e38af7dbc1911dc81b3d0.zip | |
isis: T4693: Fix ISIS segment routing configurations
This change is to fix a bug in which ISIS segment routing was broken due to a refactor.
This change also is going to introduce a smoketest to make sure this is caught in the future.
| -rw-r--r-- | data/templates/frr/isisd.frr.j2 | 24 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_protocols_isis.py | 47 | 
2 files changed, 59 insertions, 12 deletions
| diff --git a/data/templates/frr/isisd.frr.j2 b/data/templates/frr/isisd.frr.j2 index 8e95348bc..709484c98 100644 --- a/data/templates/frr/isisd.frr.j2 +++ b/data/templates/frr/isisd.frr.j2 @@ -124,23 +124,23 @@ router isis VyOS {{ 'vrf ' + vrf if vrf is vyos_defined }}  {%         for prefix, prefix_config in segment_routing.prefix.items() %}  {%             if prefix_config.absolute is vyos_defined %}  {%                 if prefix_config.absolute.value is vyos_defined %} - segment-routing prefix {{ prefixes }} absolute {{ prefix_config.absolute.value }} + segment-routing prefix {{ prefix }} absolute {{ prefix_config.absolute.value }}  {%                     if prefix_config.absolute.explicit_null is vyos_defined %} - segment-routing prefix {{ prefixes }} absolute {{ prefix_config.absolute.value }} explicit-null + segment-routing prefix {{ prefix }} absolute {{ prefix_config.absolute.value }} explicit-null  {%                     endif %}  {%                     if prefix_config.absolute.no_php_flag is vyos_defined %} - segment-routing prefix {{ prefixes }} absolute {{ prefix_config.absolute.value }} no-php-flag + segment-routing prefix {{ prefix }} absolute {{ prefix_config.absolute.value }} no-php-flag  {%                     endif %}  {%                 endif %} -{%                 if prefix_config.index is vyos_defined %} -{%                     if prefix_config.index.value is vyos_defined %} - segment-routing prefix {{ prefixes }} index {{ prefix_config.index.value }} -{%                         if prefix_config.index.explicit_null is vyos_defined %} - segment-routing prefix {{ prefixes }} index {{ prefix_config.index.value }} explicit-null -{%                         endif %} -{%                         if prefix_config.index.no_php_flag is vyos_defined %} - segment-routing prefix {{ prefixes }} index {{ prefix_config.index.value }} no-php-flag -{%                         endif %} +{%             endif %} +{%             if prefix_config.index is vyos_defined %} +{%                 if prefix_config.index.value is vyos_defined %} + segment-routing prefix {{ prefix }} index {{ prefix_config.index.value }} +{%                     if prefix_config.index.explicit_null is vyos_defined %} + segment-routing prefix {{ prefix }} index {{ prefix_config.index.value }} explicit-null +{%                     endif %} +{%                     if prefix_config.index.no_php_flag is vyos_defined %} + segment-routing prefix {{ prefix }} index {{ prefix_config.index.value }} no-php-flag  {%                     endif %}  {%                 endif %}  {%             endif %} diff --git a/smoketest/scripts/cli/test_protocols_isis.py b/smoketest/scripts/cli/test_protocols_isis.py index ee4be0b37..e4bb9e1f8 100755 --- a/smoketest/scripts/cli/test_protocols_isis.py +++ b/smoketest/scripts/cli/test_protocols_isis.py @@ -262,5 +262,52 @@ class TestProtocolsISIS(VyOSUnitTestSHIM.TestCase):              self.assertIn(f' isis bfd', tmp)              self.assertIn(f' isis bfd profile {bfd_profile}', tmp) +    def test_isis_07_segment_routing_configuration(self): +        global_block_low = "1000" +        global_block_high = "1999" +        local_block_low = "2000" +        local_block_high = "2999" +        interface = 'lo' +        maximum_stack_size = '5' +        prefix_one = '192.168.0.1/32' +        prefix_two = '192.168.0.2/32' +        prefix_three = '192.168.0.3/32' +        prefix_four = '192.168.0.4/32' +        prefix_one_value = '1' +        prefix_two_value = '2' +        prefix_three_value = '60000' +        prefix_four_value = '65000' + +        self.cli_set(base_path + ['net', net]) +        self.cli_set(base_path + ['interface', interface]) +        self.cli_set(base_path + ['segment-routing', 'enable']) +        self.cli_set(base_path + ['segment-routing', 'maximum-label-depth', maximum_stack_size]) +        self.cli_set(base_path + ['segment-routing', 'global-block', 'low-label-value', global_block_low]) +        self.cli_set(base_path + ['segment-routing', 'global-block', 'high-label-value', global_block_high]) +        self.cli_set(base_path + ['segment-routing', 'local-block', 'low-label-value', local_block_low]) +        self.cli_set(base_path + ['segment-routing', 'local-block', 'high-label-value', local_block_high]) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_one, 'index', 'value', prefix_one_value]) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_one, 'index', 'explicit-null']) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_two, 'index', 'value', prefix_two_value]) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_two, 'index', 'no-php-flag']) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_three, 'absolute', 'value',  prefix_three_value]) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_three, 'absolute', 'explicit-null']) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_four, 'absolute', 'value', prefix_four_value]) +        self.cli_set(base_path + ['segment-routing', 'prefix', prefix_four, 'absolute', 'no-php-flag']) +         +        # Commit all changes +        self.cli_commit() + +        # Verify all changes +        tmp = self.getFRRconfig(f'router isis {domain}', daemon='isisd') +        self.assertIn(f' net {net}', tmp) +        self.assertIn(f' segment-routing on', tmp) +        self.assertIn(f' segment-routing global-block {global_block_low} {global_block_high} local-block {local_block_low} {local_block_high}', tmp) +        self.assertIn(f' segment-routing node-msd {maximum_stack_size}', tmp) +        self.assertIn(f' segment-routing prefix {prefix_one} index {prefix_one_value} explicit-null', tmp) +        self.assertIn(f' segment-routing prefix {prefix_two} index {prefix_two_value} no-php-flag', tmp) +        self.assertIn(f' segment-routing prefix {prefix_three} absolute {prefix_three_value} explicit-null', tmp) +        self.assertIn(f' segment-routing prefix {prefix_four} absolute {prefix_four_value} no-php-flag', tmp) +  if __name__ == '__main__':      unittest.main(verbosity=2) | 
