From ff1963daf4d5a23e5f9476710e983ab781210608 Mon Sep 17 00:00:00 2001 From: John Kacur Date: Tue, 27 Sep 2022 12:59:54 -0400 Subject: [PATCH 1/2] 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 bdaa70ffc156..21a70cf1d37d 100755 --- a/tuna-cmd.py +++ b/tuna-cmd.py @@ -25,7 +25,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 31707c9cb69c..84419c957b1b 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