openvswitch: Reset tunnel key between input and output.
It doesn't make sense to output a tunnel packet using the same parameters that it was received with since that will generally just result in the packet going back to us. As a result, userspace assumes that the tunnel key is cleared when transitioning through the switch. In the majority of cases this doesn't matter since a packet is either going to a tunnel port (in which the key is overwritten with new values) or to a non-tunnel port (in which case the key is ignored). However, it's theoreticaly possible that userspace could rely on the documented behavior, so this corrects it. Signed-off-by: Jesse Gross <jesse@nicira.com>
This commit is contained in:
Родитель
42415c90ce
Коммит
36bf5cc66d
|
@ -535,6 +535,7 @@ int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts);
|
struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts);
|
||||||
|
|
||||||
|
OVS_CB(skb)->tun_key = NULL;
|
||||||
return do_execute_actions(dp, skb, acts->actions,
|
return do_execute_actions(dp, skb, acts->actions,
|
||||||
acts->actions_len, false);
|
acts->actions_len, false);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче