]> git.proxmox.com Git - mirror_ovs.git/commit
tunnel: make tun_key_to_attr aware of tunnel type.
authorWilliam Tu <u9012063@gmail.com>
Mon, 14 May 2018 18:46:47 +0000 (11:46 -0700)
committerBen Pfaff <blp@ovn.org>
Mon, 14 May 2018 23:21:03 +0000 (16:21 -0700)
commitc6d872013786253377ef7ac279d1a386f958ed7f
tree7086a4331e755f4d762a6f470c2aad19502daebc
parent07aec2ac19930b05370d813ff5a44e20c2908498
tunnel: make tun_key_to_attr aware of tunnel type.

When there is a flow rule which forwards a packet from geneve
port to another tunnel port, ex: gre, the tun_metadata carried
from the geneve port might affect the outgoing port.  For example,
the datapath action from geneve port output to gre port (1) shows:
  set(tunnel(tun_id=0x7b,dst=2.2.2.2,ttl=64,
    geneve({class=0xffff,type=0,len=4,0x123}),flags(df|key))),1
Where the geneve(...) should not exist.

When using kernel's tunnel port, this triggers an error saying:
"Multiple metadata blocks provided", when there is a rule forwarding
the geneve packet to vxlan/erspan tunnel port.  A userspace test case
using geneve and gre also demonstrates the issue.

The patch makes the tun_key_to_attr aware of the tunnel type. So only
the relevant output tunnel's options are set.

Reported-by: Xiaoyan Jin <xiaoyanj@vmware.com>
Signed-off-by: William Tu <u9012063@gmail.com>
Cc: Greg Rose <gvrose8192@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
lib/dpif.c
lib/odp-util.c
lib/odp-util.h
manpages.mk
ofproto/ofproto-dpif-xlate.c
ofproto/tunnel.c
ofproto/tunnel.h
tests/tunnel.at