On Thu, Jul 28, 2016 at 07:54:30PM +0000, Ryan Moats wrote: > Ensure that rows created for deleted port binding and > multicast group rows are cleared when doing full processing. > > Signed-off-by: Ryan Moats <rmo...@us.ibm.com>
I'm choosing to overlook storing UUIDs as strings in a set of strings. How about this simplification? --8<--------------------------cut here-------------------------->8-- diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c index 6bc0095..a4a8fcf 100644 --- a/ovn/controller/physical.c +++ b/ovn/controller/physical.c @@ -598,25 +598,22 @@ consider_mc_group(enum mf_field_id mff_ovn_geneve, sset_destroy(&remote_chassis); } +/* Deletes the flows whose UUIDs are in 'old' but not 'new', and then replaces + * 'old' by 'new'. */ static void rationalize_ssets_and_delete_flows(struct sset *old, struct sset *new) { - const char *uuid_s, *next_uuid; - SSET_FOR_EACH_SAFE (uuid_s, next_uuid, old) { + const char *uuid_s; + SSET_FOR_EACH (uuid_s, old) { if (!sset_find(new, uuid_s)) { struct uuid uuid; if (uuid_from_string(&uuid, uuid_s)) { ofctrl_remove_flows(&uuid); } - sset_find_and_delete(old, uuid_s); } } - SSET_FOR_EACH_SAFE (uuid_s, next_uuid, new) { - if (!sset_find(old, uuid_s)) { - sset_add(old, uuid_s); - } - sset_find_and_delete(new, uuid_s); - } + sset_swap(old, new); + sset_clear(new); } void _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev