dpif-netdev: Skip also xregs when building a mask.
authorJarno Rajahalme <jrajahalme@nicira.com>
Fri, 17 Jul 2015 22:18:43 +0000 (15:18 -0700)
committerJarno Rajahalme <jrajahalme@nicira.com>
Fri, 17 Jul 2015 22:18:43 +0000 (15:18 -0700)
When no mask is passed in, dpif_netdev_mask_from_nlattrs() builds a
mask from all possible fields whose prerequisites are met.  OpenFlow
metadata is not relevant for a datapath flow, so we skip registers and
metadata.  Do this for XREGs as well.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
lib/dpif-netdev.c

index a2bd1b9..5a4fb69 100644 (file)
@@ -1894,6 +1894,7 @@ dpif_netdev_mask_from_nlattrs(const struct nlattr *key, uint32_t key_len,
         for (id = 0; id < MFF_N_IDS; ++id) {
             /* Skip registers and metadata. */
             if (!(id >= MFF_REG0 && id < MFF_REG0 + FLOW_N_REGS)
+                && !(id >= MFF_XREG0 && id < MFF_XREG0 + FLOW_N_XREGS)
                 && id != MFF_METADATA) {
                 const struct mf_field *mf = mf_from_id(id);
                 if (mf_are_prereqs_ok(mf, flow)) {