From: Ondrej Lichtner <olichtne(a)redhat.com>
All devices now contain information about their driver. This value is
either the driver name returned by ethtool, or 'loopback' in case of a
loopback device. This also adds a dependency on ethtool.
Signed-off-by: Ondrej Lichtner <olichtne(a)redhat.com>
---
lnst/Slave/InterfaceManager.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/lnst/Slave/InterfaceManager.py b/lnst/Slave/InterfaceManager.py
index 8bb4553..c815d5f 100644
--- a/lnst/Slave/InterfaceManager.py
+++ b/lnst/Slave/InterfaceManager.py
@@ -13,6 +13,7 @@ olichtne(a)redhat.com (Ondrej Lichtner)
"""
import logging
+import re
from lnst.Slave.NetConfigDevice import NetConfigDevice
from lnst.Slave.NetConfigCommon import get_option
from lnst.Common.NetUtils import normalize_hwaddr
@@ -271,6 +272,7 @@ class Device(object):
self._netns = None
self._peer = None
self._mtu = None
+ self._driver = None
self._if_manager = if_manager
@@ -285,6 +287,9 @@ class Device(object):
self._netns = None
self._mtu = nl_msg.get_attr("IFLA_MTU")
+ if self._driver is None:
+ self._driver = self._ethtool_get_driver()
+
self._initialized = True
def update_netlink(self, nl_msg):
@@ -315,6 +320,9 @@ class Device(object):
if self._conf_dict:
self._conf_dict["name"] = self._name
+ if self._driver is None:
+ self._driver = self._ethtool_get_driver()
+
self._initialized = True
#return an update message that will be sent to the controller
@@ -485,3 +493,10 @@ class Device(object):
def get_netns(self):
return self._netns
+
+ def _ethtool_get_driver(self):
+ if self._ifi_type == 772: #loopback ifi type
+ return 'loopback'
+ out, _ = exec_cmd("ethtool -i %s" % self._name, False, False, False)
+ match = re.search("^driver: (.*)$", out, re.MULTILINE)
+ return match.group(1)
--
2.1.0