[ovs-dev] [PATCH v6 1/2] dpif-netdev: Properly create exact match masks.
Ben Pfaff
blp at nicira.com
Wed Dec 11 18:36:18 UTC 2013
On Mon, Dec 09, 2013 at 06:35:57PM -0800, Jarno Rajahalme wrote:
> Normally OVS userspace supplies a mask along with a flow key for each
> new data path flow that should be created. OVS also provides an
> option to disable the kernel wildcarding, in which case the flows are
> created without a mask. When kernel wildcarding is disabled, the
> datapath should use exact match, i.e. not wildcard any bits in the
> flow key. Currently, what happens with the userspace datapath instead
> is that a datapath flow with mostly empty mask is created (i.e., most
> fields are wildcarded), as the current code does not examine the given
> mask key length to find out that the mask key is actually empty. This
> results in the same datapath flow matching on packets of multiple
> different flows, wrong actions being processed, and stats being
> incorrect.
>
> This patch refactors userspace datapath code to explicitly initialize
> a suitable exact match mask when a flow put without a mask is
> executed.
>
> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
>
> v6: - Unwildcard all fields whose prerequisities are met, add test case
> to prevent future regressions.
>
> v5: - Split dpif_netdev_flow_mask_from_nlattrs() to
> dpif_netdev_flow_from_nlattrs() and dpif_netdev_mask_from_nlattrs()
> and make the latter to require non-zero mask_key_len.
> - Make dp_netdev_flow_add() to initialize an exact match mask if no
> wildcards are given. This reflects the kernel datapath behavior.
Acked-by: Ben Pfaff <blp at nicira.com>
More information about the dev
mailing list