On 6/28/2018 5:03 PM, William Tu wrote:
On Thu, Jun 28, 2018 at 4:01 PM, Greg Rose <[email protected]> wrote:
The key value is always zero in ip_tunnel_lookup() for all OVS
tunnels but in received packets it is set. Just ignore it for
the ip_tunnel_lookup() in the same manner as erspan_rcv().
Fixes: 8e53509c ("gre: introduce native tunnel support for ERSPAN")
Signed-off-by: Greg Rose <[email protected]>
---
datapath/linux/compat/ip_gre.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/datapath/linux/compat/ip_gre.c b/datapath/linux/compat/ip_gre.c
index df0217e..5670bdf 100644
--- a/datapath/linux/compat/ip_gre.c
+++ b/datapath/linux/compat/ip_gre.c
@@ -272,7 +272,7 @@ static int __ipgre_rcv(struct sk_buff *skb, const struct
tnl_ptk_info *tpi,
iph = ip_hdr(skb);
tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags,
- iph->saddr, iph->daddr, tpi->key);
+ iph->saddr, iph->daddr, 0);
if (tunnel) {
if (__iptunnel_pull_header(skb, hdr_len, tpi->proto,
--
1.8.3.1
looking at the rpl_ip_tunnel_lookup, how come we did not return the
collect_md_tun?
skip_key_lookup:
if (cand)
return cand;
+ t = rcu_dereference(itn->collect_md_tun);
+ if (t && t->dev->flags & IFF_UP)
return t;
Good catch!!! That was added in the 4.3 timeframe and I just missed it
during the backport. That explains
a lot.
So that means I can also put back the key for the lookup in erspan_rcv()
as well. Good work!
I'll spin up V2 of the series.
Thanks,
- Greg
if (itn->fb_tunnel_dev && itn->fb_tunnel_dev->flags & IFF_UP)
---
OVS is using the collect_md mode tunnel device.
The lookup can have key, and since there is no other gre tunnel device
has this key, it will in the end return the collect_md_tun device, which
is the "gre_sys"
Can you try adding the code above?
Thanks
William
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev