summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-09-04 11:39:01 +0200
committerChristian Poessinger <christian@poessinger.com>2021-09-04 11:39:01 +0200
commit27e53fbcd843c3aad27db9e97f9060ae6dfcc5ee (patch)
treea146614f861e60d4cc6fe7055dd256b77754aa90
parent5bde11aceffd3d7fca99e582b16555fc0c584410 (diff)
downloadvyos-1x-27e53fbcd843c3aad27db9e97f9060ae6dfcc5ee.tar.gz
vyos-1x-27e53fbcd843c3aad27db9e97f9060ae6dfcc5ee.zip
op-mode: T3619: bugfix "show interfaces" for VLANs
Commit 31169fa8a7 ("vyos.ifconfig: T3619: only set offloading options if supported by NIC") always instantiated an object of the Ethtool class for an ethernet object - this is right as a real ethernet interface is managed by Ethtool. Unfortunately the script used for "show interface" determindes the "base class" for an interface by its name, so eth0 -> Ethernet, eth0.10 -> Ethernet. This assumption is incorrect as a VLAN interface can not have the physical parameters changed of its underlaying interface. This can only be done for eth0. There is no need for the op-mode script to determine the implementation class for an interface at this level, as we are only interested in the state of the interface and it's IP addresses - which is a common operation valid for every interface on VyOS.
-rwxr-xr-xsrc/op_mode/show_interfaces.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/op_mode/show_interfaces.py b/src/op_mode/show_interfaces.py
index 2eaaa34f8..1707d8669 100755
--- a/src/op_mode/show_interfaces.py
+++ b/src/op_mode/show_interfaces.py
@@ -69,10 +69,9 @@ def filtered_interfaces(ifnames, iftypes, vif, vrrp):
if ifnames and ifname not in ifnames:
continue
- # return the class which can handle this interface name
- klass = Section.klass(ifname)
- # connect to the interface
- interface = klass(ifname, create=False, debug=False)
+ # As we are only "reading" from the interface - we must use the
+ # generic base class which exposes all the data via a common API
+ interface = Interface(ifname, create=False, debug=False)
if iftypes and interface.definition['section'] not in iftypes:
continue