diff options
author | khramshinr <khramshinr@gmail.com> | 2024-05-21 20:02:31 +0600 |
---|---|---|
committer | khramshinr <khramshinr@gmail.com> | 2024-05-21 20:02:31 +0600 |
commit | e50b7afc9d5b727d04933116ccf364a2b9a48c30 (patch) | |
tree | 474c1a1d29615723686df7d38cbdebd2b0d78257 /python/vyos/qos | |
parent | 9f55afc424b2c7cb885ea5b917e899141123de1c (diff) | |
download | vyos-1x-e50b7afc9d5b727d04933116ccf364a2b9a48c30.tar.gz vyos-1x-e50b7afc9d5b727d04933116ccf364a2b9a48c30.zip |
T6373: QoS Policy Limiter - classes for marked traffic do not work
Diffstat (limited to 'python/vyos/qos')
-rw-r--r-- | python/vyos/qos/base.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/python/vyos/qos/base.py b/python/vyos/qos/base.py index 87927ba9d..98e486e42 100644 --- a/python/vyos/qos/base.py +++ b/python/vyos/qos/base.py @@ -247,9 +247,15 @@ class QoSBase: filter_cmd_base += ' protocol all' if 'match' in cls_config: - is_filtered = False + has_filter = False for index, (match, match_config) in enumerate(cls_config['match'].items(), start=1): filter_cmd = filter_cmd_base + if not has_filter: + for key in ['mark', 'vif', 'ip', 'ipv6']: + if key in match_config: + has_filter = True + break + if self.qostype == 'shaper' and 'prio ' not in filter_cmd: filter_cmd += f' prio {index}' if 'mark' in match_config: @@ -332,13 +338,12 @@ class QoSBase: cls = int(cls) filter_cmd += f' flowid {self._parent:x}:{cls:x}' self._cmd(filter_cmd) - is_filtered = True vlan_expression = "match.*.vif" match_vlan = jmespath.search(vlan_expression, cls_config) if any(tmp in ['exceed', 'bandwidth', 'burst'] for tmp in cls_config) \ - and is_filtered: + and has_filter: # For "vif" "basic match" is used instead of "action police" T5961 if not match_vlan: filter_cmd += f' action police' |