- if (!shash_add_once(&new_mirrors, cfg->name, cfg)) {
- VLOG_WARN("bridge %s: %s specified twice as mirror",
- br->name, cfg->name);
- }
- }
-
- /* Get rid of deleted mirrors and add new mirrors. */
- SHASH_FOR_EACH (node, &old_mirrors) {
- if (!shash_find(&new_mirrors, node->name)) {
- mirror_destroy(node->data);
- }
- }
- SHASH_FOR_EACH (node, &new_mirrors) {
- struct mirror *mirror = shash_find_data(&old_mirrors, node->name);
- if (!mirror) {
- mirror = mirror_create(br, node->name);
- if (!mirror) {
- break;
- }
+ struct mirror *m = mirror_find_by_uuid(br, &cfg->header_.uuid);
+ if (m) {
+ mirror_reconfigure_one(m, cfg);
+ } else {
+ mirror_create(br, cfg);