Upstream OVS is not going to have patch vports. So there is no need to have special loop-detection in OVS.
Signed-off-by: Pravin B Shelar <[email protected]> --- net/openvswitch/actions.c | 45 +-------------------------------------------- 1 files changed, 1 insertions(+), 44 deletions(-) diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 8eaaea9..f10aaf8 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -406,54 +406,11 @@ static int do_execute_actions(struct datapath *dp, struct sk_buff *skb, return 0; } -/* We limit the number of times that we pass into execute_actions() - * to avoid blowing out the stack in the event that we have a loop. */ -#define MAX_LOOPS 5 - -struct loop_counter { - u8 count; /* Count. */ - bool looping; /* Loop detected? */ -}; - -static DEFINE_PER_CPU(struct loop_counter, loop_counters); - -static int loop_suppress(struct datapath *dp, struct sw_flow_actions *actions) -{ - if (net_ratelimit()) - pr_warn("%s: flow looped %d times, dropping\n", - dp_name(dp), MAX_LOOPS); - actions->actions_len = 0; - return -ELOOP; -} - /* Execute a list of actions against 'skb'. */ int execute_actions(struct datapath *dp, struct sk_buff *skb) { struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts); - struct loop_counter *loop; - int error; - - /* Check whether we've looped too much. */ - loop = &__get_cpu_var(loop_counters); - if (unlikely(++loop->count > MAX_LOOPS)) - loop->looping = true; - if (unlikely(loop->looping)) { - error = loop_suppress(dp, acts); - kfree_skb(skb); - goto out_loop; - } - error = do_execute_actions(dp, skb, acts->actions, + return do_execute_actions(dp, skb, acts->actions, acts->actions_len, false); - - /* Check whether sub-actions looped too much. */ - if (unlikely(loop->looping)) - error = loop_suppress(dp, acts); - -out_loop: - /* Decrement loop counter. */ - if (!--loop->count) - loop->looping = false; - - return error; } -- 1.7.1 _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
