diff options
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_vxlan.py | 27 | ||||
| -rwxr-xr-x | src/conf_mode/interfaces_vxlan.py | 2 | 
2 files changed, 29 insertions, 0 deletions
| diff --git a/smoketest/scripts/cli/test_interfaces_vxlan.py b/smoketest/scripts/cli/test_interfaces_vxlan.py index b2076b43b..05900a4ba 100755 --- a/smoketest/scripts/cli/test_interfaces_vxlan.py +++ b/smoketest/scripts/cli/test_interfaces_vxlan.py @@ -25,6 +25,7 @@ from vyos.utils.network import interface_exists  from vyos.utils.network import get_vxlan_vlan_tunnels  from vyos.utils.network import get_vxlan_vni_filter  from vyos.template import is_ipv6 +from vyos import ConfigError  from base_interfaces_test import BasicInterfaceTest  def convert_to_list(ranges_to_convert): @@ -114,6 +115,32 @@ class VXLANInterfaceTest(BasicInterfaceTest.TestCase):              self.assertEqual(Interface(interface).get_admin_state(), 'up')              ttl += 10 + +    def test_vxlan_group_remote_error(self): +        intf = 'vxlan60' +        options = [ +            'group 239.4.4.5', +            'mtu 1420', +            'remote 192.168.0.254', +            'source-address 192.168.0.1', +            'source-interface eth0', +            'vni 60' +        ] +        params = [] +        for option in options: +            opts = option.split() +            params.append(opts[0]) +            self.cli_set(self._base_path + [ intf ] + opts) + +        with self.assertRaises(ConfigSessionError) as cm: +            self.cli_commit() + +        exception = cm.exception +        self.assertIn('Both group and remote cannot be specified', str(exception)) +        for param in params: +            self.cli_delete(self._base_path + [intf, param]) + +      def test_vxlan_external(self):          interface = 'vxlan0'          source_address = '192.0.2.1' diff --git a/src/conf_mode/interfaces_vxlan.py b/src/conf_mode/interfaces_vxlan.py index 68646e8ff..256b65708 100755 --- a/src/conf_mode/interfaces_vxlan.py +++ b/src/conf_mode/interfaces_vxlan.py @@ -95,6 +95,8 @@ def verify(vxlan):      if 'group' in vxlan:          if 'source_interface' not in vxlan:              raise ConfigError('Multicast VXLAN requires an underlaying interface') +        if 'remote' in vxlan: +            raise ConfigError('Both group and remote cannot be specified')          verify_source_interface(vxlan)      if not any(tmp in ['group', 'remote', 'source_address', 'source_interface'] for tmp in vxlan): | 
