diff options
| -rw-r--r-- | python/vyos/configverify.py | 24 | ||||
| -rw-r--r-- | smoketest/scripts/cli/base_interfaces_test.py | 10 | ||||
| -rwxr-xr-x | src/conf_mode/interfaces-ethernet.py | 15 | 
3 files changed, 28 insertions, 21 deletions
| diff --git a/python/vyos/configverify.py b/python/vyos/configverify.py index 7f49aa9af..760255d0e 100644 --- a/python/vyos/configverify.py +++ b/python/vyos/configverify.py @@ -67,22 +67,22 @@ def verify_mtu_ipv6(config):          min_mtu = 1280          if int(config['mtu']) < min_mtu:              interface = config['ifname'] -            error_msg = f'IPv6 address will be configured on interface "{interface}" ' \ -                        f'thus the minimum MTU requirement is {min_mtu}!' +            error_msg = f'IPv6 address will be configured on interface "{interface}",\n' \ +                        f'the required minimum MTU is {min_mtu}!' -            for address in (dict_search('address', config) or []): -                if address in ['dhcpv6'] or is_ipv6(address): -                    raise ConfigError(error_msg) +            if 'address' in config: +                for address in config['address']: +                    if address in ['dhcpv6'] or is_ipv6(address): +                        raise ConfigError(error_msg) -            tmp = dict_search('ipv6.address', config) -            if tmp and 'no_default_link_local' not in tmp: -                raise ConfigError('link-local ' + error_msg) +            tmp = dict_search('ipv6.address.no_default_link_local', config) +            if tmp == None: raise ConfigError('link-local ' + error_msg) -            if tmp and 'autoconf' in tmp: -                raise ConfigError(error_msg) +            tmp = dict_search('ipv6.address.autoconf', config) +            if tmp != None: raise ConfigError(error_msg) -            if tmp and 'eui64' in tmp: -                raise ConfigError(error_msg) +            tmp = dict_search('ipv6.address.eui64', config) +            if tmp != None: raise ConfigError(error_msg)  def verify_vrf(config):      """ diff --git a/smoketest/scripts/cli/base_interfaces_test.py b/smoketest/scripts/cli/base_interfaces_test.py index edb604dbf..6a5b9c4ee 100644 --- a/smoketest/scripts/cli/base_interfaces_test.py +++ b/smoketest/scripts/cli/base_interfaces_test.py @@ -246,11 +246,19 @@ class BasicInterfaceTest:              for intf in self._interfaces:                  base = self._base_path + [intf]                  self.cli_set(base + ['mtu', self._mtu]) -                self.cli_set(base + ['ipv6', 'address', 'no-default-link-local'])                  for option in self._options.get(intf, []):                      self.cli_set(base + option.split()) +            # check validate() - can not set low MTU if 'no-default-link-local' +            # is not set on CLI +            with self.assertRaises(ConfigSessionError): +                self.cli_commit() + +            for intf in self._interfaces: +                base = self._base_path + [intf] +                self.cli_set(base + ['ipv6', 'address', 'no-default-link-local']) +              # commit interface changes              self.cli_commit() diff --git a/src/conf_mode/interfaces-ethernet.py b/src/conf_mode/interfaces-ethernet.py index 81ed36bf2..2a094af52 100755 --- a/src/conf_mode/interfaces-ethernet.py +++ b/src/conf_mode/interfaces-ethernet.py @@ -72,6 +72,13 @@ def verify(ethernet):      ifname = ethernet['ifname']      verify_interface_exists(ifname) +    verify_mtu(ethernet) +    verify_mtu_ipv6(ethernet) +    verify_dhcpv6(ethernet) +    verify_address(ethernet) +    verify_vrf(ethernet) +    verify_eapol(ethernet) +    verify_mirror(ethernet)      ethtool = Ethtool(ifname)      # No need to check speed and duplex keys as both have default values. @@ -111,14 +118,6 @@ def verify(ethernet):              raise ConfigError(f'Driver only supports a maximum TX ring-buffer '\                                f'size of "{max_tx}" bytes!') -    verify_mtu(ethernet) -    verify_mtu_ipv6(ethernet) -    verify_dhcpv6(ethernet) -    verify_address(ethernet) -    verify_vrf(ethernet) -    verify_eapol(ethernet) -    verify_mirror(ethernet) -      # verify offloading capabilities      if dict_search('offload.rps', ethernet) != None:          if not os.path.exists(f'/sys/class/net/{ifname}/queues/rx-0/rps_cpus'): | 
