bridge: fix reload when ports refer to aliased vlans on another bridge
authorFelix Fietkau <[email protected]>
Tue, 30 Sep 2025 09:30:32 +0000 (11:30 +0200)
committerFelix Fietkau <[email protected]>
Tue, 30 Sep 2025 09:30:47 +0000 (11:30 +0200)
When aliases are derived from bridge-vlan section, the device lookup needs
to be repeated on reload.

Signed-off-by: Felix Fietkau <[email protected]>
bridge.c

index 809060dea539ac1569b68871fd663c2415407621..0c5c430e7f6af4045cdbd72afc74c943335e8466 100644 (file)
--- a/bridge.c
+++ b/bridge.c
@@ -938,7 +938,16 @@ bridge_member_update(struct vlist_tree *tree, struct vlist_node *node_new,
                bm = container_of(node_new, struct bridge_member, node);
 
                if (node_old) {
+                       struct device *dev = bm->dev.dev;
+
                        free(bm);
+
+                       bm = container_of(node_old, struct bridge_member, node);
+                       if (!dev || dev == bm->dev.dev)
+                               return;
+
+                       bridge_remove_member(bm);
+                       device_add_user(&bm->dev, dev);
                        return;
                }
 
@@ -1302,7 +1311,7 @@ bridge_reload(struct device *dev, struct blob_attr *attr)
                          dev->ifname, diff[1], diff[0]);
                }
 
-               bridge_config_init(dev);
+               dev->config_pending = true;
        }
 
        free(bst->config_data);