> On Fri, Mar 14, 2014 at 04:19:52PM +0900, Simon Horman wrote:
>> When creating a flow in the datapath as the result of an upcall
>> the match itself is the match supplied in the upcall while
>> the mask of the match, if supplied, is generated based on the
>> flow and mask composed during action translation.
>> 
>> In the case of, for example a UDP packet, the match will include
>> of L2, L3 and L4 fields. However, if the flow is cleared in
>> flow_push_mpls() then the mask that is synthesised from it will
>> not include L3 and L4 fields. This seems incorrect and the kernel
>> datapath complains about this mismatch.
>> 
>> Signed-off-by: Simon Horman <ho...@verge.net.au>
> 
> The goal of clearing the fields is to ensure that later flow tables
> can't match on fields that aren't visible anymore.  That's important for
> accurate OpenFlow implementation, so I'd rather not change it.  On the

probably compose_mpls_push_action should clear these fields
in base_flow as well?

YAMAMOTO Takashi

> other hand, I see the point you're making, but I don't immediately
> understand why it happens that way.  After all, I can change fields with
> OpenFlow actions and the datapath flows work out OK, why doesn't this
> work out OK too?  Do you understand the reason?
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to