summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-09-24 22:08:21 +0200
committerChristian Poessinger <christian@poessinger.com>2019-09-24 22:08:21 +0200
commit0588f5409f57a8d8577bc9bd23c393487fd2987b (patch)
treee51f4d72af89d7918ba5cd2adca01f4b4e5040b8 /python
parent1dc92ac5a36b2e1f3e1f8dc2248e68892bfda248 (diff)
downloadvyos-1x-0588f5409f57a8d8577bc9bd23c393487fd2987b.tar.gz
vyos-1x-0588f5409f57a8d8577bc9bd23c393487fd2987b.zip
Python/ifconfig: T1557: add STPIf class (spanning tree) bridge member
Diffstat (limited to 'python')
-rw-r--r--python/vyos/ifconfig.py66
1 files changed, 41 insertions, 25 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py
index a959e55d8..a77cde5e7 100644
--- a/python/vyos/ifconfig.py
+++ b/python/vyos/ifconfig.py
@@ -641,6 +641,47 @@ class DummyIf(Interface):
super().__init__(ifname, type='dummy')
+class STPIf(Interface):
+ """
+ A spanning-tree capable interface. This applies only to bridge port member
+ interfaces!
+ """
+ def __init__(self, ifname):
+ super().__init__(ifname)
+
+ def set_path_cost(self, cost):
+ """
+ Set interface path cost, only relevant for STP enabled interfaces
+
+ Example:
+
+ >>> from vyos.ifconfig import Interface
+ >>> Interface('eth0').set_path_cost(4)
+ """
+ if not os.path.isfile('/sys/class/net/{}/brport/path_cost'
+ .format(self._ifname)):
+ raise TypeError('{} is not a bridge port member'.format(self._ifname))
+
+ return self._write_sysfs('/sys/class/net/{}/brport/path_cost'
+ .format(self._ifname), cost)
+
+ def set_path_priority(self, priority):
+ """
+ Set interface path priority, only relevant for STP enabled interfaces
+
+ Example:
+
+ >>> from vyos.ifconfig import Interface
+ >>> Interface('eth0').set_path_priority(4)
+ """
+ if not os.path.isfile('/sys/class/net/{}/brport/priority'
+ .format(self._ifname)):
+ raise TypeError('{} is not a bridge port member'.format(self._ifname))
+
+ return self._write_sysfs('/sys/class/net/{}/brport/priority'
+ .format(self._ifname), priority)
+
+
class BridgeIf(Interface):
"""
@@ -774,31 +815,6 @@ class BridgeIf(Interface):
cmd = 'ip link set dev {} nomaster'.format(interface)
self._cmd(cmd)
- def set_path_cost(self, interface, cost):
- """
- Set interface path cost, only relevant for STP enabled interfaces
-
- Example:
-
- >>> from vyos.ifconfig import Interface
- >>> Interface('eth0').path_cost(4)
- """
- return self._write_sysfs('/sys/class/net/{}/brif/{}/path_cost'
- .format(self._ifname, interface), cost)
-
- def set_path_priority(self, interface, priority):
- """
- Set interface path priority, only relevant for STP enabled interfaces
-
- Example:
-
- >>> from vyos.ifconfig import Interface
- >>> Interface('eth0').priority(4)
- """
- return self._write_sysfs('/sys/class/net/{}/brif/{}/priority'
- .format(self._ifname, interface), priority)
-
-
class VLANIf(Interface):
"""
This class handels the creation and removal of a VLAN interface. It serves