> > +    /* Remember the names of all address sets currently in
> > expr_address_sets
> > +     * so we can detect address sets that have been deleted. */
> > +    struct sset cur_address_sets = SSET_INITIALIZER(&cur_address_sets);
> >

> This sset is not an address_set, but address_set names (or keys).
> How about renaming this variable to cur_address_set_names ?


I think I'm agree with Flavio.


> +            if (!address_sets_match(addr_set, addr_set_rec)) {> +            
>     expr_macros_remove(&expr_address_sets, addr_set_rec->name);> +            
>     address_set_destroy(addr_set);> +                addr_set = NULL;> +      
>           create_set = true;> +            }


nit: is 'addr_set = NULL;' necessary here, seems it will be assigned later:


> +            addr_set = xzalloc(sizeof *addr_set);
> +            addr_set->n_addresses = addr_set_rec->n_addresses;
> +            if (addr_set_rec->n_addresses) {
> +                addr_set->addresses = xmalloc(addr_set_rec->n_addresses
> +                                              * sizeof 
> addr_set->addresses[0]);
> +                size_t i;
> +                for (i = 0; i < addr_set_rec->n_addresses; i++) {
> +                    addr_set->addresses[i] = 
> xstrdup(addr_set_rec->addresses[i]);
> +                }
> +            }
> +            shash_add(&local_address_sets, addr_set_rec->name, addr_set);
> +
> +            expr_macros_add(&expr_address_sets, addr_set_rec->name,
> +                            (const char * const *) addr_set->addresses,
> +                            addr_set->n_addresses);


So it's possible to create an empty Address_Set, right? What shall we
do with an empty Address_Set?


> +    SSET_FOR_EACH_SAFE (cur_node, next_node, &cur_address_sets) {
> +        expr_macros_remove(&expr_address_sets, cur_node);
> +
> +        struct address_set *addr_set
> +            = shash_find_and_delete(&local_address_sets, cur_node);
> +        address_set_destroy(addr_set);
> +
> +        struct sset_node *sset_node = SSET_NODE_FROM_NAME(cur_node);
> +        sset_delete(&cur_address_sets, sset_node);
> +    }
> +
> +    sset_destroy(&cur_address_sets);


I think you don't need manually call sset_delete, sset_destroy will do
it for you.


> +    SHASH_FOR_EACH_SAFE (node, next, &sb_address_sets) {
> +        sbrec_address_set_delete(node->data);
> +        shash_delete(&sb_address_sets, node);
> +    }
> +    shash_destroy(&sb_address_sets);


The same, you don't need manually call shash_delete, shash_destroy
will do it for you.


Thanks and have a nice day! :)

Zong Kai, LI
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to