diff options
| -rw-r--r-- | data/templates/frr/ospf.frr.tmpl | 10 | ||||
| -rw-r--r-- | python/vyos/configverify.py | 22 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_protocols_ospf.py | 56 | 
3 files changed, 59 insertions, 29 deletions
| diff --git a/data/templates/frr/ospf.frr.tmpl b/data/templates/frr/ospf.frr.tmpl index 01a711259..37c21e146 100644 --- a/data/templates/frr/ospf.frr.tmpl +++ b/data/templates/frr/ospf.frr.tmpl @@ -14,7 +14,12 @@ interface {{ iface }}  {%         endif %}  {%       endif %}  {%     endif %} -{#     interval configurations all have default values #} +{%     if iface_config.cost is defined and iface_config.cost is not none %} + ip ospf cost {{ iface_config.cost }} +{%     endif %} +{%     if iface_config.priority is defined and iface_config.priority is not none %} + ip ospf priority {{ iface_config.priority }} +{%     endif %}  {%     if iface_config.hello_interval is defined and iface_config.hello_interval is not none %}   ip ospf hello-interval {{ iface_config.hello_interval }}  {%     endif %} @@ -36,6 +41,9 @@ interface {{ iface }}  {%     if iface_config.network is defined and iface_config.network is not none %}   ip ospf network {{ iface_config.network }}  {%     endif %} +{%     if iface_config.bandwidth is defined and iface_config.bandwidth is not none %} + bandwidth {{ iface_config.bandwidth }} +{%     endif %}  {%   endfor %}  {% endif %}  ! diff --git a/python/vyos/configverify.py b/python/vyos/configverify.py index abd91583d..a888791ba 100644 --- a/python/vyos/configverify.py +++ b/python/vyos/configverify.py @@ -217,17 +217,17 @@ def verify_vlan_config(config):          verify_vrf(vlan)      # 802.1ad (Q-in-Q) VLANs -    for vlan in config.get('vif_s', {}): -        vlan = config['vif_s'][vlan] -        verify_dhcpv6(vlan) -        verify_address(vlan) -        verify_vrf(vlan) - -        for vlan in config.get('vif_s', {}).get('vif_c', {}): -            vlan = config['vif_c'][vlan] -            verify_dhcpv6(vlan) -            verify_address(vlan) -            verify_vrf(vlan) +    for s_vlan in config.get('vif_s', {}): +        s_vlan = config['vif_s'][s_vlan] +        verify_dhcpv6(s_vlan) +        verify_address(s_vlan) +        verify_vrf(s_vlan) + +        for c_vlan in s_vlan.get('vif_c', {}): +            c_vlan = s_vlan['vif_c'][c_vlan] +            verify_dhcpv6(c_vlan) +            verify_address(c_vlan) +            verify_vrf(c_vlan)  def verify_accel_ppp_base_service(config):      """ diff --git a/smoketest/scripts/cli/test_protocols_ospf.py b/smoketest/scripts/cli/test_protocols_ospf.py index d47838d8c..ce30f6a7d 100755 --- a/smoketest/scripts/cli/test_protocols_ospf.py +++ b/smoketest/scripts/cli/test_protocols_ospf.py @@ -30,6 +30,9 @@ route_map = 'foo-bar-baz10'  def getFRROSPFconfig():      return cmd('vtysh -c "show run" | sed -n "/router ospf/,/^!/p"') +def getFRRInterfaceConfig(interface): +    return cmd(f'vtysh -c "show run" | sed -n "/^interface {interface}$/,/^!/p"') +  class TestProtocolsOSPF(unittest.TestCase):      def setUp(self):          self.session = ConfigSession(os.getpid()) @@ -232,24 +235,8 @@ class TestProtocolsOSPF(unittest.TestCase):              else:                  self.assertIn(f' redistribute {protocol} metric {metric} metric-type {metric_type} route-map {route_map}', frrconfig) - -    def test_ospf_09_area(self): -        area = '0' +    def test_ospf_09_virtual_link(self):          networks = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16'] -        for network in networks: -            self.session.set(base_path + ['area', area, 'network', network]) - -        # commit changes -        self.session.commit() - -        # Verify FRR ospfd configuration -        frrconfig = getFRROSPFconfig() -        self.assertIn(f'router ospf', frrconfig) -        for network in networks: -            self.assertIn(f' network {network} area {area}', frrconfig) - - -    def test_ospf_10_virtual_link(self):          area = '10'          shortcut = 'enable'          virtual_link = '192.0.2.1' @@ -263,6 +250,8 @@ class TestProtocolsOSPF(unittest.TestCase):          self.session.set(base_path + ['area', area, 'virtual-link', virtual_link, 'retransmit-interval', retransmit])          self.session.set(base_path + ['area', area, 'virtual-link', virtual_link, 'transmit-delay', transmit])          self.session.set(base_path + ['area', area, 'virtual-link', virtual_link, 'dead-interval', dead]) +        for network in networks: +            self.session.set(base_path + ['area', area, 'network', network])          # commit changes          self.session.commit() @@ -272,6 +261,39 @@ class TestProtocolsOSPF(unittest.TestCase):          self.assertIn(f'router ospf', frrconfig)          self.assertIn(f' area {area} shortcut {shortcut}', frrconfig)          self.assertIn(f' area {area} virtual-link {virtual_link} hello-interval {hello} retransmit-interval {retransmit} transmit-delay {transmit} dead-interval {dead}', frrconfig) +        for network in networks: +            self.assertIn(f' network {network} area {area}', frrconfig) + +    def test_ospf_10_interface_configureation(self): +        interfaces = Section.interfaces('ethernet') +        password = 'vyos1234' +        bandwidth = '10000' +        cost = '150' +        network = 'point-to-point' +        priority = '200' + +        for interface in interfaces: +            self.session.set(base_path + ['interface', interface, 'authentication', 'plaintext-password', password]) +            self.session.set(base_path + ['interface', interface, 'bandwidth', bandwidth]) +            self.session.set(base_path + ['interface', interface, 'bfd']) +            self.session.set(base_path + ['interface', interface, 'cost', cost]) +            self.session.set(base_path + ['interface', interface, 'mtu-ignore']) +            self.session.set(base_path + ['interface', interface, 'network', network]) +            self.session.set(base_path + ['interface', interface, 'priority', priority]) + +        # commit changes +        self.session.commit() + +        for interface in interfaces: +            config = getFRRInterfaceConfig(interface) +            self.assertIn(f'interface {interface}', config) +            self.assertIn(f' ip ospf authentication-key {password}', config) +            self.assertIn(f' ip ospf bfd', config) +            self.assertIn(f' ip ospf cost {cost}', config) +            self.assertIn(f' ip ospf mtu-ignore', config) +            self.assertIn(f' ip ospf network {network}', config) +            self.assertIn(f' ip ospf priority {priority}', config) +            self.assertIn(f' bandwidth {bandwidth}', config)  if __name__ == '__main__':      unittest.main(verbosity=2) | 
