Ben Pfaff <b...@ovn.org> wrote on 07/28/2016 04:23:57 PM: > From: Ben Pfaff <b...@ovn.org> > To: Ryan Moats/Omaha/IBM@IBMUS > Cc: dev@openvswitch.org > Date: 07/28/2016 04:24 PM > Subject: Re: [ovs-dev] [PATCH] ovn-controller: Remove flows created > for now deleted SB database rows. > > 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 >
Works for me... Ryan _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev