On Fri, Jan 10, 2014 at 05:03:54PM +0000, John Hurley wrote:
> I found a bug in OVS where a send to meter instruction can be accepted when
> the meter ID does not exist. This causes a seg fault in our setup.
> 
> It occurs if we add a new meter and then add a flow rule to send matches to
> that meter. If this flow rule is then modified to send the traffic to a
> meter that does not exist, OVS will overwrite the actions and accept the
> new (incorrect) meter ID.
> 
> I believe this is caused by add_flow function in ofproto.c calling
> ofproto_check_ofpacts which in turn calls 'ofpacts_check' to verify the
> actions and then does a check for a valid meter.
> The modify_flows__ function, however, only calls 'ofpacts_check'.
> 
> Replacing the line in the modify_flows__ function in ofproto.c:
> 
> error = ofpacts_check(fm->ofpacts, fm->ofpacts_len, &fm->match.flow,
>                               u16_to_ofp(ofproto->max_ports),
> rule->table_id);
> 
> with
> 
> error = ofproto_check_ofpacts(ofproto, fm->ofpacts, fm->ofpacts_len,
>                                   &fm->match.flow, rule->table_id);
> 
> fixes the issue - it returns a meter error if the modify rule has an
> invalid meter.

Thanks.  I sent out a patch for review:
        http://openvswitch.org/pipermail/dev/2014-January/035883.html
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to