mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
yanger: expand VLAN ranges from bridge global output
bridge -j vlan global show can return VLAN ranges as
{"vlan": 1, "vlanEnd": 3} instead of individual entries.
The vlans dict was only keyed on the start value, causing
port VLANs 2 and 3 to be reported as "Unexpected".
Also fix typo in error message (brpvlans -> brpvlan).
This commit is contained in:
@@ -275,8 +275,9 @@ def vlans_add_memberships(iplink, vlans):
|
||||
continue
|
||||
|
||||
for brpvlan in brpvlans["vlans"]:
|
||||
if not (vlan := vlans.get(brpvlan["vlan"])):
|
||||
LOG.error(f"Unexpected vlan {brpvlans['vlan']} on {port}")
|
||||
vid = brpvlan["vlan"]
|
||||
if not (vlan := vlans.get(vid)):
|
||||
LOG.error(f"Unexpected vlan {vid} on {port}")
|
||||
continue
|
||||
|
||||
if "Egress Untagged" in brpvlan.get("flags", []):
|
||||
@@ -291,17 +292,18 @@ def vlans(iplink):
|
||||
|
||||
mctldata = mctl_queriers()
|
||||
|
||||
vlans = {
|
||||
v["vlan"]: {
|
||||
"vid": v["vlan"],
|
||||
"untagged": [],
|
||||
"tagged": [],
|
||||
|
||||
"multicast": multicast(iplink, v, mctldata),
|
||||
"multicast-filters": multicast_filters(iplink, v["vlan"]),
|
||||
}
|
||||
for v in brgvlans[0]["vlans"]
|
||||
}
|
||||
vlans = {}
|
||||
for v in brgvlans[0]["vlans"]:
|
||||
start = v["vlan"]
|
||||
end = v.get("vlanEnd", start)
|
||||
for vid in range(start, end + 1):
|
||||
vlans[vid] = {
|
||||
"vid": vid,
|
||||
"untagged": [],
|
||||
"tagged": [],
|
||||
"multicast": multicast(iplink, v, mctldata),
|
||||
"multicast-filters": multicast_filters(iplink, vid),
|
||||
}
|
||||
|
||||
vlans_add_memberships(iplink, vlans)
|
||||
return list(vlans.values())
|
||||
|
||||
Reference in New Issue
Block a user