bugfix: bridgedomain sync
When a bridge-domain has a BVI, it will not sync/add the interfaces to the bridge. As an example: bridgedomains: bd1001: bvi: loop1001 interfaces: [ tap1001 ] mtu: 9000 taps: tap1001: host: bridge: br0 mac: 02:fe:83:97:f4:7f mtu: 9000 name: vpp-bd1001 Before this change, the 'tap1001' would get created, but if the BVI 'loop1001' was correctly set up on the bridge, the code would continue and skip over enumerating config_bridge_iface. After this change, both the BVI will be checked (and added if not present), AND all interfaces will be enumerated (and added if not present).
This commit is contained in:
@ -1092,17 +1092,15 @@ class Reconciler:
|
||||
|
||||
if "bvi" in config_bridge_iface:
|
||||
bviname = config_bridge_iface["bvi"]
|
||||
if (
|
||||
if not (
|
||||
bviname in self.vpp.cache["interface_names"]
|
||||
and self.vpp.cache["interface_names"][bviname].sw_if_index
|
||||
== bvi_sw_if_index
|
||||
):
|
||||
continue
|
||||
cli = f"set interface l2 bridge {bviname} {int(instance)} bvi"
|
||||
self.cli["sync"].append(cli)
|
||||
|
||||
if not "interfaces" in config_bridge_iface:
|
||||
continue
|
||||
if "interfaces" in config_bridge_iface:
|
||||
for member_ifname in config_bridge_iface["interfaces"]:
|
||||
member_ifname, _member_iface = interface.get_by_name(
|
||||
self.cfg, member_ifname
|
||||
@ -1115,7 +1113,9 @@ class Reconciler:
|
||||
operation = "pop 2"
|
||||
elif interface.is_sub(self.cfg, member_ifname):
|
||||
operation = "pop 1"
|
||||
cli = f"set interface l2 tag-rewrite {member_ifname} {operation}"
|
||||
cli = (
|
||||
f"set interface l2 tag-rewrite {member_ifname} {operation}"
|
||||
)
|
||||
self.cli["sync"].append(cli)
|
||||
return True
|
||||
|
||||
|
Reference in New Issue
Block a user