[ovs-dev] [PATCH v2 2/2] Set datapath mask bits when setting a flow field.

Ben Pfaff blp at nicira.com
Tue Oct 15 16:52:25 UTC 2013


On Tue, Oct 15, 2013 at 09:19:52AM -0700, Jarno Rajahalme wrote:
> Since at the datapath interface we do not have set actions for
> individual fields, but larger sets of fields for a given protocol
> layer, the set action will in practice only ever apply to exactly
> matched flows for the given protocol layer.  For example, if the
> reg_load changes the IP TTL, the corresponding datapath action will
> rewrite also the IP addresses and TOS byte.  Since these other field
> values may not be explicity set, they depend on the incoming flow field

"explicitly"

> values, and are hence all of them are set in the wildcards masks, when
> the action is committed to the datapath.  For the rare case, where the
> reg_load action does not actually change the value, and no other flow
> field values are set (or loaded), the datapath action is skipped, and
> no mask bits are set.  Such a datapath flow should, however, be
> dependent on the specific field value, so the corresponding wildcard
> mask bits must be set, lest the datapath flow be applied to packets
> containing some other value in the field and the field value remain
> unchanged regardless of the incoming value.
> 
> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>

I understand why this adds mf_force_prereqs(), but I don't understand
why it removes the mf_write_subfield_flow() call from
nxm_execute_reg_move().  Can you explain?

Thanks,

Ben.



More information about the dev mailing list