On Mon, Jun 23, 2014 at 02:38:50PM -0700, Ben Pfaff wrote:
> On Sat, Jun 14, 2014 at 08:33:13AM +0900, Simon Horman wrote:
> > Previously the out_port of a flow monitor was
> > checked in ofmonitor_report() using ofoperation_has_out_port().
> > 
> > When ofoperation_has_out_port() was removed so was the call to
> > it in ofmonitor_report() thus flow monitor updates are longer
> > filtered on the out_port.
> > 
> > This restores filtering on the out_port by using
> > ofproto_rule_has_out_port to check the actions of the rule.
> > If the actions have been changed by a modify actions then
> > ofpacts_output_to_port() is also used to check the old actions.
> > 
> > This patch also adds a test to exercise out_ports for flow monitors.
> > 
> > This resolves what appears to be a regression introduced by
> > b20f4073eecd4761 ("ofproto: Do straightforward removal of asynchronous flow
> > operations.")
> > 
> > Signed-off-by: Simon Horman <ho...@verge.net.au>
> 
> Good catch.  Thank you!
> 
> In modify_flows__(), moving the destruction of 'actions' later wasn't
> necessary, because rule_actions_destroy() postpones the actual
> destruction until the next RCU grace period, but it is less confusing
> to readers to "destroy" it after the last use, so I'm happy to move it
> later.  However, in that case we should move it after the *actual*
> last use, so I folded in this incremental:

Thanks.

> 
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index 50ba91a..458703d 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -4202,9 +4202,9 @@ modify_flows__(struct ofproto *ofproto, struct 
> ofputil_flow_mod *fm,
>          }
>  
>          if (change_actions) {
> -            rule_actions_destroy(actions);
>              learned_cookies_inc(ofproto, rule_get_actions(rule));
>              learned_cookies_dec(ofproto, actions, &dead_cookies);
> +            rule_actions_destroy(actions);
>          }
>      }
>      learned_cookies_flush(ofproto, &dead_cookies);
> 
> With that change, I applied this to master.
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to