• Simon Horman's avatar
    openvswitch: Sample action without side effects · 651887b0
    Simon Horman authored
    The sample action is rather generic, allowing arbitrary actions to be
    executed based on a probability. However its use, within the Open
    vSwitch
    code-base is limited: only a single user-space action is ever nested.
    
    A consequence of the current implementation of sample actions is that
    depending on weather the sample action executed (due to its probability)
    any side-effects of nested actions may or may not be present before
    executing subsequent actions.  This has the potential to complicate
    verification of valid actions by the (kernel) datapath. And indeed
    adding support for push and pop MPLS actions inside sample actions
    is one case where such case.
    
    In order to allow all supported actions to be continue to be nested
    inside sample actions without the potential need for complex
    verification code this patch changes the implementation of the sample
    action in the kernel datapath so that sample actions are more like
    a function call and any side effects of nested actions are not
    present when executing subsequent actions.
    
    With the above in mind the motivation for this change is twofold:
    
    * To contain side-effects the sample action in the hope of making it
      easier to deal with in the future and;
    * To avoid some rather complex verification code introduced in the MPLS
      datapath patch.
    Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
    Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
    Signed-off-by: default avatarPravin B Shelar <pshelar@nicira.com>
    651887b0
actions.c 14.7 KB