diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/qos.py | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/src/conf_mode/qos.py b/src/conf_mode/qos.py index dca713283..1be2c283f 100755 --- a/src/conf_mode/qos.py +++ b/src/conf_mode/qos.py @@ -21,7 +21,9 @@ from netifaces import interfaces  from vyos.base import Warning  from vyos.config import Config +from vyos.configdep import set_dependents, call_dependents  from vyos.configdict import dict_merge +from vyos.ifconfig import Section  from vyos.qos import CAKE  from vyos.qos import DropTail  from vyos.qos import FairQueue @@ -83,6 +85,18 @@ def get_config(config=None):                                 get_first_key=True,                                 no_tag_node_value_mangle=True) +    if 'interface' in qos: +        for ifname, if_conf in qos['interface'].items(): +            if_node = Section.get_config_path(ifname) + +            if not if_node: +                continue + +            path = f'interfaces {if_node}' +            if conf.exists(f'{path} mirror') or conf.exists(f'{path} redirect'): +                type_node = path.split(" ")[1] # return only interface type node +                set_dependents(type_node, conf, ifname) +      if 'policy' in qos:          for policy in qos['policy']:              # when calling defaults() we need to use the real CLI node, thus we @@ -245,6 +259,8 @@ def apply(qos):              tmp = shaper_type(interface)              tmp.update(shaper_config, direction) +    call_dependents() +      return None  if __name__ == '__main__': | 
