Hi Flavio,
Thanks for reviewing. My comments are below.

On Thursday 23 June 2016 10:33 PM, Flaviof wrote:


On Thu, Jun 23, 2016 at 1:05 AM, <bscha...@redhat.com <mailto:bscha...@redhat.com>> wrote:

    From: Russell Bryant <russ...@ovn.org <mailto:russ...@ovn.org>>

    +/* Return true if the address sets match, false otherwise. */
    +static bool
    +address_sets_match(struct address_set *addr_set,
    +                   const struct sbrec_address_set *addr_set_rec)


- make both parameters const  (const struct sbrec_address_set *)

- why not call these addr_set1 and addr_set2 ?

I agree. addr_set1 and addr_set2 is more readable.


    +static void
    +update_address_sets(struct controller_ctx *ctx)
    +{
    +    /* 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 agree.

    +
    +
    +/* OVN_Northbound and OVN_Southbound have an identical
    Address_Set table.
    + * We always update OVN_Southbound to match the current data in
    + * OVN_Northbound. */
    +static void
    +sync_address_sets(struct northd_context *ctx)
    +{
    +    struct shash sb_address_sets =
    SHASH_INITIALIZER(&sb_address_sets);
    +
    +    const struct sbrec_address_set *sb_address_set;
    +    SBREC_ADDRESS_SET_FOR_EACH (sb_address_set, ctx->ovnsb_idl) {
    +        shash_add(&sb_address_sets, sb_address_set->name,
    sb_address_set);
    +    }
    +
    +    const struct nbrec_address_set *nb_address_set;
    +    NBREC_ADDRESS_SET_FOR_EACH (nb_address_set, ctx->ovnnb_idl) {
    +        sb_address_set = shash_find_and_delete(&sb_address_sets,
    +  nb_address_set->name);
    +        if (!sb_address_set) {
    +            sb_address_set =
    sbrec_address_set_insert(ctx->ovnsb_txn);
    + sbrec_address_set_set_name(sb_address_set, nb_address_set->name);
    +        }
    +


I'm still wrapping my head around ctx and txn but I thought of asking a dumb question here: In cases when hash_find_and_delete returns a non-null sb_address_set, is there a need to clean anything up before calling sbrec_address_set_set_addresses? If so, this override may be causing a leak?
I think, shash_find_and_delete returns a db rec. It seems to me that there is no need for a cleanup. I will confirm it anyways. Thanks for pointing it out.



    +  <table name="Address_Set" title="Address Sets">
    +    <p>
    +      Each row in this table represents a named set of addresses.
    +      An address set may contain MAC, IPv4, or IPv6 addresses.


... and also IPv4 + IPv6 cidr (w.x.y.z/N), right?
Yes. I will update the documentation to include these as well. Thanks.

    diff --git a/tests/ovn.at <http://ovn.at> b/tests/ovn.at
    <http://ovn.at>
    index 4f72107..59f9307 100644
    --- a/tests/ovn.at <http://ovn.at>
    +++ b/tests/ovn.at <http://ovn.at>
    @@ -649,6 +649,8 @@ done
     ovn-nbctl acl-add lsw0 from-lport 1000 'eth.type == 0x1234' drop
     ovn-nbctl acl-add lsw0 from-lport 1000 'eth.type == 0x1235 &&
    inport == "lp11"' drop
     ovn-nbctl acl-add lsw0 to-lport 1000 'eth.type == 0x1236 &&
    outport == "lp33"' drop
    +ovn-nbctl create Address_Set name=set1
    addresses=\"f0:00:00:00:00:11\",\"f0:00:00:00:00:21\",\"f0:00:00:00:00:31\"
    +ovn-nbctl acl-add lsw0 to-lport 1000 'eth.type == 0x1237 &&
    eth.src == $set1 && outport == "lp33"' drop



it would be good to add some more tests to exercise the delete and update codepaths.
If you think it would help, I could take a stab at them.
I agree. I even saw your pull request. Thanks.

Thank you,
Babu
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to