summaryrefslogtreecommitdiff
path: root/python/vyos/qos/fairqueue.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2023-01-01 08:18:10 +0100
committerGitHub <noreply@github.com>2023-01-01 08:18:10 +0100
commit6574b0dd5a5c7616ac4b17619d5f2c29a691616d (patch)
tree1aeda3c69dc87a8b69172fbd6fa3f4011602cdbe /python/vyos/qos/fairqueue.py
parent182adaf56a5573d32d79d3c21e24007f5c18fb2b (diff)
parentbebec647c3d04f42d471d4aed1a3b98bf82732b8 (diff)
downloadvyos-1x-6574b0dd5a5c7616ac4b17619d5f2c29a691616d.tar.gz
vyos-1x-6574b0dd5a5c7616ac4b17619d5f2c29a691616d.zip
Merge pull request #1663 from c-po/t4284-qos
QoS: T4284: re-implementation using XML and Python
Diffstat (limited to 'python/vyos/qos/fairqueue.py')
-rw-r--r--python/vyos/qos/fairqueue.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/python/vyos/qos/fairqueue.py b/python/vyos/qos/fairqueue.py
new file mode 100644
index 000000000..f41d098fb
--- /dev/null
+++ b/python/vyos/qos/fairqueue.py
@@ -0,0 +1,31 @@
+# Copyright 2022 VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+from vyos.qos.base import QoSBase
+
+class FairQueue(QoSBase):
+ # https://man7.org/linux/man-pages/man8/tc-sfq.8.html
+ def update(self, config, direction):
+ tmp = f'tc qdisc add dev {self._interface} root sfq'
+
+ if 'hash_interval' in config:
+ tmp += f' perturb {config["hash_interval"]}'
+ if 'queue_limit' in config:
+ tmp += f' limit {config["queue_limit"]}'
+
+ self._cmd(tmp)
+
+ # call base class
+ super().update(config, direction)