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 <b...@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@openvswitch.org http://openvswitch.org/mailman/listinfo/dev