hmap_init(&lports->by_uuid);
}
-void
+bool
lport_index_remove(struct lport_index *lports, const struct uuid *uuid)
{
const struct lport *port_ = lport_lookup_by_uuid(lports, uuid);
hmap_remove(&lports->by_key, &port->key_node);
hmap_remove(&lports->by_uuid, &port->uuid_node);
free(port);
+ return true;
}
+ return false;
}
void
hmap_remove(&lports->by_uuid, &port->uuid_node);
free(port);
}
+ lflow_reset_processing();
}
static void
uuid_hash(&pb->header_.uuid));
memcpy(&p->uuid, &pb->header_.uuid, sizeof p->uuid);
p->pb = pb;
+ lflow_reset_processing();
}
void
} else {
SBREC_PORT_BINDING_FOR_EACH_TRACKED (pb, ovnsb_idl) {
if (sbrec_port_binding_is_deleted(pb)) {
- lport_index_remove(lports, &pb->header_.uuid);
+ while (lport_index_remove(lports, &pb->header_.uuid)) {
+ ;
+ }
+ lflow_reset_processing();
} else {
consider_lport_index(lports, pb);
}
hmap_remove(&mcgroups->by_uuid, &mcgroup->uuid_node);
free(mcgroup);
}
+ lflow_reset_processing();
}
void
uuid_hash(&mg->header_.uuid));
memcpy(&m->uuid, &mg->header_.uuid, sizeof m->uuid);
m->mg = mg;
+ lflow_reset_processing();
}
void
SBREC_MULTICAST_GROUP_FOR_EACH_TRACKED (mg, ovnsb_idl) {
if (sbrec_multicast_group_is_deleted(mg)) {
mcgroup_index_remove(mcgroups, &mg->header_.uuid);
+ lflow_reset_processing();
} else {
consider_mcgroup_index(mcgroups, mg);
}