diff options
| -rw-r--r-- | python/vyos/ifconfig/macsec.py | 4 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_macsec.py | 26 | 
2 files changed, 20 insertions, 10 deletions
| diff --git a/python/vyos/ifconfig/macsec.py b/python/vyos/ifconfig/macsec.py index 9329c5ee7..bde1d9aec 100644 --- a/python/vyos/ifconfig/macsec.py +++ b/python/vyos/ifconfig/macsec.py @@ -45,6 +45,10 @@ class MACsecIf(Interface):          # create tunnel interface          cmd  = 'ip link add link {source_interface} {ifname} type {type}'.format(**self.config)          cmd += f' cipher {self.config["security"]["cipher"]}' + +        if 'encrypt' in self.config["security"]: +            cmd += ' encrypt on' +          self._cmd(cmd)          # Check if using static keys diff --git a/smoketest/scripts/cli/test_interfaces_macsec.py b/smoketest/scripts/cli/test_interfaces_macsec.py index ea0f00071..6e57fdfd4 100755 --- a/smoketest/scripts/cli/test_interfaces_macsec.py +++ b/smoketest/scripts/cli/test_interfaces_macsec.py @@ -14,7 +14,6 @@  # You should have received a copy of the GNU General Public License  # along with this program.  If not, see <http://www.gnu.org/licenses/>. -import os  import re  import unittest @@ -26,6 +25,7 @@ from vyos.ifconfig import Section  from vyos.utils.process import cmd  from vyos.utils.file import read_file  from vyos.utils.network import get_interface_config +from vyos.utils.network import interface_exists  from vyos.utils.process import process_named_running  PROCESS_NAME = 'wpa_supplicant' @@ -35,10 +35,6 @@ def get_config_value(interface, key):      tmp = re.findall(r'\n?{}=(.*)'.format(key), tmp)      return tmp[0] -def get_cipher(interface): -    tmp = get_interface_config(interface) -    return tmp['linkinfo']['info_data']['cipher_suite'].lower() -  class MACsecInterfaceTest(BasicInterfaceTest.TestCase):      @classmethod      def setUpClass(cls): @@ -117,6 +113,10 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):              tmp = read_file(f'/sys/class/net/{interface}/mtu')              self.assertEqual(tmp, '1460') +            # Encryption enabled? +            tmp = get_interface_config(interface) +            self.assertTrue(tmp['linkinfo']['info_data']['encrypt']) +          # Check for running process          self.assertTrue(process_named_running(PROCESS_NAME)) @@ -141,7 +141,8 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          self.assertIn(interface, interfaces())          # Verify proper cipher suite (T4537) -        self.assertEqual(cipher, get_cipher(interface)) +        tmp = get_interface_config(interface) +        self.assertEqual(cipher, tmp['linkinfo']['info_data']['cipher_suite'].lower())      def test_macsec_gcm_aes_256(self):          src_interface = 'eth0' @@ -164,7 +165,8 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          self.assertIn(interface, interfaces())          # Verify proper cipher suite (T4537) -        self.assertEqual(cipher, get_cipher(interface)) +        tmp = get_interface_config(interface) +        self.assertEqual(cipher, tmp['linkinfo']['info_data']['cipher_suite'].lower())      def test_macsec_source_interface(self):          # Ensure source-interface can bot be part of any other bond or bridge @@ -205,7 +207,7 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          peer_mac = '00:11:22:33:44:55'          self.cli_set(self._base_path + [interface]) -         # Encrypt link +        # Encrypt link          self.cli_set(self._base_path + [interface, 'security', 'encrypt'])          # check validate() - source interface is mandatory @@ -262,8 +264,12 @@ class MACsecInterfaceTest(BasicInterfaceTest.TestCase):          # final commit and verify          self.cli_commit()          self.assertIn(interface, interfaces()) -        self.assertEqual(cipher2, get_cipher(interface)) -        self.assertTrue(os.path.isdir(f'/sys/class/net/{interface}')) +        self.assertTrue(interface_exists(interface)) + +        tmp = get_interface_config(interface) +        self.assertEqual(cipher, tmp['linkinfo']['info_data']['cipher_suite'].lower()) +        # Encryption enabled? +        self.assertTrue(tmp['linkinfo']['info_data']['encrypt'])  if __name__ == '__main__':      unittest.main(verbosity=2) | 
