[ovs-dev] [PATCH 2/6] ofproto: Make 'importance' immutable.

Ben Pfaff blp at nicira.com
Fri Jul 3 00:42:15 UTC 2015


Applied to master, thanks!

On Thu, Jul 02, 2015 at 05:50:48AM -0700, Jarno Rajahalme wrote:
> Acked-by: Jarno Rajahalme <jrajahalme at nicira.com>
> 
>   Jarno
> 
> > On Jun 24, 2015, at 10:57 AM, Ben Pfaff <blp at nicira.com> wrote:
> > 
> > OpenFlow provides no means to change the importance of a flow after it is
> > added, so make it immutable so that it is reasonable to read it without
> > locking.
> > 
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> > ofproto/ofproto-provider.h | 2 +-
> > ofproto/ofproto.c          | 5 ++---
> > 2 files changed, 3 insertions(+), 4 deletions(-)
> > 
> > diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
> > index 527823a..495f787 100644
> > --- a/ofproto/ofproto-provider.h
> > +++ b/ofproto/ofproto-provider.h
> > @@ -354,7 +354,7 @@ struct rule {
> >     uint16_t idle_timeout OVS_GUARDED; /* In seconds from ->used. */
> > 
> >     /* Eviction precedence. */
> > -    uint16_t importance OVS_GUARDED;
> > +    const uint16_t importance;
> > 
> >     /* Removal reason for sending flow removed message.
> >      * Used only if 'flags' has OFPUTIL_FF_SEND_FLOW_REM set and if the
> > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> > index 278c97f..d48c31c 100644
> > --- a/ofproto/ofproto.c
> > +++ b/ofproto/ofproto.c
> > @@ -4633,7 +4633,7 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> >     ovs_mutex_lock(&rule->mutex);
> >     rule->idle_timeout = fm->idle_timeout;
> >     rule->hard_timeout = fm->hard_timeout;
> > -    rule->importance = fm->importance;
> > +    *CONST_CAST(uint16_t *, &rule->importance) = fm->importance;
> >     rule->removed_reason = OVS_OFPRR_NONE;
> > 
> >     *CONST_CAST(uint8_t *, &rule->table_id) = table_id;
> > @@ -4649,7 +4649,6 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> > 
> >     /* Copy values from old rule for modify semantics. */
> >     if (old_rule && fm->delete_reason != OFPRR_EVICTION) {
> > -        /*  'fm' says that  */
> >         bool change_cookie = (fm->modify_cookie
> >                               && fm->new_cookie != OVS_BE64_MAX
> >                               && fm->new_cookie != old_rule->flow_cookie);
> > @@ -4658,7 +4657,7 @@ replace_rule_create(struct ofproto *ofproto, struct ofputil_flow_mod *fm,
> >         if (fm->command != OFPFC_ADD) {
> >             rule->idle_timeout = old_rule->idle_timeout;
> >             rule->hard_timeout = old_rule->hard_timeout;
> > -            rule->importance = old_rule->importance;
> > +            *CONST_CAST(uint16_t *, &rule->importance) = old_rule->importance;
> >             rule->flags = old_rule->flags;
> >             rule->created = old_rule->created;
> >         }
> > -- 
> > 2.1.3
> > 
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> 



More information about the dev mailing list