diff options
| author | ciaens <commits@ciaens.com> | 2026-10-19 14:04:07 +0200 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2026-11-05 23:21:40 +0100 |
| commit | fc6fa8c6683988d09ed4f53ec69cc7a96ed03a41 (patch) | |
| tree | 2b77e0a851fd9df0431274896b304971610d78b4 /smoketest/scripts/cli/test_service_https.py | |
| parent | 69494046c5fc9c3c8e0f310e14a7c31d326af7ca (diff) | |
| download | vyos-1x-fc6fa8c6683988d09ed4f53ec69cc7a96ed03a41.tar.gz vyos-1x-fc6fa8c6683988d09ed4f53ec69cc7a96ed03a41.zip | |
interfaces: T6393: install tc filters for every source of a target
When an interface is used as the mirror target of other interfaces, its
commit installs the tc(8) mirror filters on their behalf, so that mirroring
works even if the target did not exist yet when the sources were configured.
is_mirror_intf() however only remembered the last source it found, ignored
the target's own mirror configuration whenever it had sources, and did not
consider VLAN sub-interfaces or "redirect" at all.
Return all sources (including vif, vif-s, vif-c and redirecting interfaces),
found by walking the interfaces dictionary once instead of calling
list_nodes() and exists() per node, and apply the interface's own
configuration plus one set of filters per source. A source whose target does
not exist yet is skipped with a warning, the target installs the filter once
it exists.
Only sources missing a filter into the target are touched (each configured
direction is checked), so a commit of the target no longer drops and re-adds
the qdiscs of every source. A filter left behind by a re-created target is
reported by tc as "*" and replaced.
A redirecting source may carry a QoS policy: its dictionary gets the "qos"
marker of get_interface_dict(), and only the mirred filters are removed
instead of the qdiscs. This also drops the stale redirect filter once
"redirect" is deleted from a shaped interface.
Diffstat (limited to 'smoketest/scripts/cli/test_service_https.py')
0 files changed, 0 insertions, 0 deletions
