• Jarno Rajahalme's avatar
    net: openvswitch: Support masked set actions. · 83d2b9ba
    Jarno Rajahalme authored
    OVS userspace already probes the openvswitch kernel module for
    OVS_ACTION_ATTR_SET_MASKED support.  This patch adds the kernel module
    implementation of masked set actions.
    
    The existing set action sets many fields at once.  When only a subset
    of the IP header fields, for example, should be modified, all the IP
    fields need to be exact matched so that the other field values can be
    copied to the set action.  A masked set action allows modification of
    an arbitrary subset of the supported header bits without requiring the
    rest to be matched.
    
    Masked set action is now supported for all writeable key types, except
    for the tunnel key.  The set tunnel action is an exception as any
    input tunnel info is cleared before action processing starts, so there
    is no tunnel info to mask.
    
    The kernel module converts all (non-tunnel) set actions to masked set
    actions.  This makes action processing more uniform, and results in
    less branching and duplicating the action processing code.  When
    returning actions to userspace, the fully masked set actions are
    converted back to normal set actions.  We use a kernel internal action
    code to be able to tell the userspace provided and converted masked
    set actions apart.
    Signed-off-by: default avatarJarno Rajahalme <jrajahalme@nicira.com>
    Acked-by: default avatarPravin B Shelar <pshelar@nicira.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    83d2b9ba
actions.c 24.3 KB