diff options
| -rw-r--r-- | python/vyos/ethtool.py | 4 | ||||
| -rwxr-xr-x | src/migration-scripts/interfaces/20-to-21 | 7 | 
2 files changed, 10 insertions, 1 deletions
| diff --git a/python/vyos/ethtool.py b/python/vyos/ethtool.py index d45c9c272..80bb56fa2 100644 --- a/python/vyos/ethtool.py +++ b/python/vyos/ethtool.py @@ -16,6 +16,7 @@  import re  from json import loads +from vyos.utils.network import interface_exists  from vyos.utils.process import popen  # These drivers do not support using ethtool to change the speed, duplex, or @@ -64,6 +65,9 @@ class Ethtool:      def __init__(self, ifname):          # Get driver used for interface +        if not interface_exists(ifname): +            raise ValueError(f'Interface "{ifname}" does not exist!') +          out, _ = popen(f'ethtool --driver {ifname}')          driver = re.search(r'driver:\s(\w+)', out)          if driver: diff --git a/src/migration-scripts/interfaces/20-to-21 b/src/migration-scripts/interfaces/20-to-21 index 14ad0fe4d..05a0c7237 100755 --- a/src/migration-scripts/interfaces/20-to-21 +++ b/src/migration-scripts/interfaces/20-to-21 @@ -1,6 +1,6 @@  #!/usr/bin/env python3  # -# Copyright (C) 2021 VyOS maintainers and contributors +# Copyright (C) 2021-2024 VyOS maintainers and contributors  #  # This program is free software; you can redistribute it and/or modify  # it under the terms of the GNU General Public License version 2 or later as @@ -22,6 +22,7 @@ from sys import argv  from vyos.ethtool import Ethtool  from vyos.configtree import ConfigTree +from vyos.utils.network import interface_exists  if len(argv) < 2:      print("Must specify file name!") @@ -38,6 +39,10 @@ if not config.exists(base):      exit(0)  for ifname in config.list_nodes(base): +    # Bail out early if interface vanished from system +    if not interface_exists(ifname): +        continue +      eth = Ethtool(ifname)      # If GRO is enabled by the Kernel - we reflect this on the CLI. If GRO is | 
