datapath: Allow a packet with no input port to omit OVS_KEY_ATTR_IN_PORT.
authorBen Pfaff <blp@nicira.com>
Thu, 8 Sep 2011 23:30:20 +0000 (16:30 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 8 Sep 2011 23:30:20 +0000 (16:30 -0700)
commit18886b60bc7face9e08bc7ef06da365ee5c39e0a
treeafa53c577dde76aaffb160626787ee0c1785d9b9
parent0fe255dfbf37fa7ddc23c2593c512c092b0f61d7
datapath: Allow a packet with no input port to omit OVS_KEY_ATTR_IN_PORT.

When ovs-vswitchd executes actions on a synthesized packet, that is, on a
packet that is not being forwarded from any particular port but is being
generated by ovs-vswitchd itself or by an OpenFlow controller (using a
OFPT_PACKET_OUT message with an in_port of OFPP_NONE), there is no good
choice for the in_port to pass to the kernel in the flow in the
OVS_PACKET_CMD_EXECUTE message.  This commit allows ovs-vswitchd to omit
the in_port entirely in this case.

This fixes a bug in OFPT_PACKET_OUT: using an in_port of OFPP_NONE would
cause the packet to be dropped by the kernel, since that's an invalid
input port.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
Reported-by: Aaron Rosen <arosen@clemson.edu>
datapath/flow.c
datapath/flow.h
lib/dpif-netdev.c
lib/odp-util.c