From f2a28b05264fa9557192b73a1b888756748930ac Mon Sep 17 00:00:00 2001 From: John Kacur Date: Tue, 27 Sep 2022 12:59:54 -0400 Subject: [PATCH] tuna: Replace python_ethtool with builtin funtionality This patch replaces the dependency on python_ethtool with some simplified functions to achieve the same result. Reviewed-by: Federico Pellegrin - return 'tun' only if tun_flags exists Signed-off-by: John Kacur --- tuna-cmd.py | 2 +- tuna/gui/irqview.py | 2 +- tuna/new_eth.py | 37 +++++++++++++++++++++++++++++++++++++ tuna/tuna.py | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100755 tuna/new_eth.py diff --git a/tuna-cmd.py b/tuna-cmd.py index 9a3d3f32398b..b13b25b8a801 100755 --- a/tuna-cmd.py +++ b/tuna-cmd.py @@ -26,7 +26,7 @@ import fnmatch import gettext import locale from functools import reduce -import ethtool +import tuna.new_eth as ethtool import tuna.tuna_sched as tuna_sched import procfs from tuna import tuna, sysfs diff --git a/tuna/gui/irqview.py b/tuna/gui/irqview.py index 35fc3fd0b0ca..5143d6dc0df5 100755 --- a/tuna/gui/irqview.py +++ b/tuna/gui/irqview.py @@ -7,7 +7,7 @@ from gi.repository import Gtk from gi.repository import GObject import os from functools import reduce -import ethtool +import tuna.new_eth as ethtool import tuna.tuna_sched as tuna_sched import gi diff --git a/tuna/new_eth.py b/tuna/new_eth.py new file mode 100755 index 000000000000..98f9179d5695 --- /dev/null +++ b/tuna/new_eth.py @@ -0,0 +1,37 @@ +# Copyright (C) 2022 John Kacur +""" A few functions similar to ethtool """ +import os +import socket + +def get_active_devices(): + """ return a list of network devices """ + ret = [] + + for device in socket.if_nameindex(): + ret.append(device[1]) + + return ret + +def get_module(intf): + """ return the kernel module for the given network interface """ + if intf == 'lo': + return "" + myp = f'/sys/class/net/{intf}/device/driver' + if os.path.exists(myp): + return os.path.basename(os.readlink(myp)) + if os.path.exists(f'/sys/class/net/{intf}/bridge'): + return 'bridge' + if os.path.exists(f'/sys/class/net/{intf}/tun_flags'): + return 'tun' + return "" + +if __name__ == "__main__": + nics = get_active_devices() + print(f'nics = {nics}') + + for intf in nics: + driver = get_module(intf) + if driver: + print(f'{intf}, {driver}') + else: + print(f'{intf}') diff --git a/tuna/tuna.py b/tuna/tuna.py index 30a5a570c9d4..43adb84079e4 100755 --- a/tuna/tuna.py +++ b/tuna/tuna.py @@ -9,7 +9,7 @@ import sys import shlex import fnmatch import platform -import ethtool +import tuna.new_eth as ethtool import procfs from procfs import utilist from tuna import help -- 2.37.3