On Jul 15, 2013, at 2:14 PM, Jesse Gross <je...@nicira.com> wrote:

> On Mon, Jul 15, 2013 at 11:06 AM, Ben Pfaff <b...@nicira.com> wrote:
>>    * I am not sure that set_arp() is called in a context where there is
>>      guaranteed to be a full Ethernet+IP ARP header present in the packet,
>>      given megaflows.
> 
> This is a larger problem with all actions that I had mentioned before
> but it slipped through the cracks.
> 
> I think the correct solution here is to have the kernel reject flows
> that might not be safe (i.e. you can't modify a TCP header if there
> isn't an exact match on the IP protocol). This is pretty easy to do
> (just use the masked flow for validation) and consistent with how
> things are done elsewhere.
> 
> However, from an OpenFlow perspective we've traditionally allowed such
> a flow but just trimmed out these actions during flow setup. I believe
> that this will continue to work OK because we need to unmask fields in
> order to generate a set action, so we should both satisfy the kernel's
> dependency requirements and be able to do the trimming. Justin, do you
> agree?

Yes.  The code for the set actions un-wildcards the IP proto (and the ethertype 
is always un-wildcarded).  For the generic set action, the NXM code should 
enforce prerequisites, which will then be un-wildcarded as well.  If there are 
cases where this doesn't happen, I would consider them bugs in userspace.

--Justin


_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to