On 06/05/14 at 10:02pm, Ben Pfaff wrote:
> Each of these functions had only a single caller, and breaking them out as
> separate functions didn't seem to many the code clearer.
> 
> I added a new function meter_insert_rule(): oftable_insert_rule() had used
> members of struct meter directly, which worked because it was after the
> definition of struct meter.  So there was a choice to either move the
> definition of struct meter earlier or add a helper function; I chose the
> latter.
> 
> Signed-off-by: Ben Pfaff <b...@nicira.com>
[...]
> -
> -static void
> -do_add_flow(struct ofproto *ofproto, struct ofconn *ofconn,
> -            const struct ofp_header *request, uint32_t buffer_id,
> -            struct rule *rule)
> -    OVS_REQUIRES(ofproto_mutex)
> -{
> -    struct ofopgroup *group;
> +    if (fm->hard_timeout || fm->idle_timeout) {
> +        list_insert(&ofproto->expirable, &rule->expirable);
> +    }
> +    cookies_insert(ofproto, rule);
> +    eviction_group_add_rule(rule);
> +    if (actions->provider_meter_id != UINT32_MAX) {
> +        meter_insert_rule(rule);
> +    }
> -    oftable_insert_rule(rule);
> +    fat_rwlock_wrlock(&table->cls.rwlock);
> +    classifier_insert(&table->cls, CONST_CAST(struct cls_rule *, &rule->cr));
> +    fat_rwlock_unlock(&table->cls.rwlock);


I noticed the change in order of exposing the rule to the
eviction group and inserting the meter rule plus inserting the
classifier. Is that a problem?

> +/* Finds the meter invoked by 'rule''s actions and adds 'rule' to the meter's
> + * list of rules. */
> +static void
> +meter_insert_rule(struct rule *rule)
> +{

Would it make sense to pass the rule_actions into the function
directly?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to