[ovs-dev] [PATCH v4 4/5] classifier: Make insert and replace take a const rule, too.

Jarno Rajahalme jrajahalme at nicira.com
Fri Nov 14 23:53:09 UTC 2014


On Nov 14, 2014, at 1:42 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Thu, Nov 13, 2014 at 11:56:16AM -0800, Jarno Rajahalme wrote:
>> classifier_remove() was recently changed to take a const struct
>> cls_rule *.  Make the corresponding change to classifier_replace() and
>> classifier_insert().  This simplifies existing calling sites in
>> ofproto.
>> 
>> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
> 
> The construct &CONST_CAST(...)->member looks odd to me, how about this incremental:
> 

I thought it was clever … but folded your incremental in anyway :-)

Thanks for the review!

Merging soon,

  Jarno

> diff --git a/lib/classifier.c b/lib/classifier.c
> index 4535f19..8fce7a9 100644
> --- a/lib/classifier.c
> +++ b/lib/classifier.c
> @@ -602,7 +602,7 @@ classifier_replace(struct classifier *cls, const struct cls_rule *rule)
>             /* No change in subtable's max priority or max count. */
> 
>             /* Make rule visible to iterators. */
> -            rculist_replace(&CONST_CAST(struct cls_rule *, rule)->node,
> +            rculist_replace(CONST_CAST(struct rculist *, &rule->node),
>                             &old->node);
> 
>             /* Return displaced rule.  Caller is responsible for keeping it
> @@ -613,7 +613,7 @@ classifier_replace(struct classifier *cls, const struct cls_rule *rule)
> 
>     /* Make rule visible to iterators. */
>     rculist_push_back(&subtable->rules_list,
> -                      &CONST_CAST(struct cls_rule *, rule)->node);
> +                      CONST_CAST(struct rculist *, &rule->node));
> 
>     /* Rule was added, not replaced.  Update 'subtable's 'max_priority' and
>      * 'max_count', if necessary.
> @@ -680,7 +680,7 @@ classifier_remove(struct classifier *cls, const struct cls_rule *rule)
>     CONST_CAST(struct cls_rule *, rule)->cls_match = NULL;
> 
>     /* Remove 'rule' from the subtable's rules list. */
> -    rculist_remove(&CONST_CAST(struct cls_rule *, rule)->node);
> +    rculist_remove(CONST_CAST(struct rculist *, &rule->node));
> 
>     INIT_CONTAINER(prev, rculist_back_protected(&cls_match->list), list);
>     INIT_CONTAINER(next, rculist_next(&cls_match->list), list);
> 
> Acked-by: Ben Pfaff <blp at nicira.com>




More information about the dev mailing list