diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-02-09 10:51:00 +0000 | 
|---|---|---|
| committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2024-02-09 10:51:00 +0000 | 
| commit | 2e8fa45c7f0663549edd118622b3381e7c428b2e (patch) | |
| tree | cf40bb04bf9c4c43dc3e38803cc42c92c4149fd6 | |
| parent | 98986278866f019d935ad56519a28907d60094fe (diff) | |
| download | vyos-1x-2e8fa45c7f0663549edd118622b3381e7c428b2e.tar.gz vyos-1x-2e8fa45c7f0663549edd118622b3381e7c428b2e.zip  | |
T6028: Fix QoS policy shaper wrong class_id_max and default_minor_id
The `class_id_max` is wrong due to `tmp.sort` of Strings
If we have class 5 and class 10 we get sorted max value 5, expected 10
```
>>> tmp = ['5', '10']
>>> tmp.sort()
>>> tmp
['10', '5']
>>>
>>> hex(5+1)
'0x6'
>>>
>>> hex(10+1)
'0xb'
>>>
```
This way we get wrong default maximum class value:
```
tc qdisc replace dev eth1 root handle 1: htb r2q 444 default 6
```
Expect:
```
tc qdisc replace dev eth1 root handle 1: htb r2q 444 default b
```
Fix this converting Strings to Integers and get max value.
| -rw-r--r-- | python/vyos/qos/trafficshaper.py | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/python/vyos/qos/trafficshaper.py b/python/vyos/qos/trafficshaper.py index 7d580baa2..8b0333c21 100644 --- a/python/vyos/qos/trafficshaper.py +++ b/python/vyos/qos/trafficshaper.py @@ -29,8 +29,9 @@ class TrafficShaper(QoSBase):          class_id_max = 0          if 'class' in config:              tmp = list(config['class']) -            tmp.sort() -            class_id_max = tmp[-1] +            # Convert strings to integers +            tmp = [int(x) for x in tmp] +            class_id_max = max(tmp)          r2q = 10          # bandwidth is a mandatory CLI node  | 
